javascript - 角色列表命令发送对象而不是角色 discord.js
问题描述
它发送[object Object]
. 控制台中没有错误。
let embed = new Discord.MessageEmbed()
.setTitle('Availible Roles')
.setColor('RANDOM')
.setDescription(roles.array().join(' \n'));
message.channel.send(embed, { split: true });
其余代码
const Discord = require('discord.js');
const { prefix, token } = require('../config.json');
module.exports = {
name: '',
description: '',
execute(message, args, client) {
if (!message.content.startsWith(prefix) || message.author.bot) return;
const roles = message.guild.roles.cache.filter(c => c.name.startsWith('A'))
const arr = roles
.array()
.join('\n')
.match(/.{1,2048}/g);
for (let chunk of arr) {
// loop through every element (every 2048 characters)
let embed = new Discord.MessageEmbed()
.setTitle('Available Roles')
.setColor('RANDOM')
.setDescription(chunk);
message.channel.send(embed); // wait for the embed to be sent
}
},
};
常量角色 = message.guild.roles.cache.filter(c => c.name.startsWith('A'))
解决方案
你的问题是{ split: true }
。此选项可能会弄乱嵌入,因为它适用于常规短信。如果将其删除,则嵌入应该可以正常工作。
如果你担心角色太多,超过 2048 个字符的限制,你可以实现这个功能:
// array of your description split every 2048 characters
const arr = roles
.array()
.join('\n')
.match(/.{1,2048}/g);
for (let chunk of arr) {
// loop through every element (every 2048 characters)
let embed = new Discord.MessageEmbed()
.setTitle('Available Roles')
.setColor('RANDOM')
.setDescription(chunk);
await message.channel.send(embed); // wait for the embed to be sent
}
代码片段示例:
const string = 'Hello world! This is a string. Strings are very fun. Fun is also very, by definition, fun!'
// array of your description split every 20 characters
const arr = string.match(/.{1,20}/g);
for (let chunk of arr) {
// loop through every element (every 20 characters)
console.log(chunk)
}
推荐阅读
- api - curl 在 GET 调用中是否需要用于 API 身份验证的标头?
- arrays - 由于定义的指针,数组为非法索引输入
- python - 有没有办法在python中一次计算多个二维矩阵的L2范数?
- css - 悬停在其他前面的div
- html - 有没有办法在网上使用苹果 SF Symbols
- c - C syscall() 不能接受 void 指针
- typescript - Angular 8 - 如何调用全局方法?
- tkinter - 无法获得像 Tkinter Text 小部件中显示的文本来解释空格字符
- mysql - MySQL网络客户活动分析题
- laravel - 使用 laravel 5.2 和 php 5.6 登录到 docker 中的标准输出和文件