Discord.js Sharding,如何使用broadcastEval发送嵌入消息?

Discord.js Sharding,如何使用broadcastEval发送嵌入消息?,discord.js,sharding,Discord.js,Sharding,我正在尝试使用分片机器人将嵌入消息发送到特定频道。 使用以下代码,我成功地发送了一条简单的消息: client.shard.broadcastEval(` (异步()=>{ 让channel=等待这个.channels.get(“683353482748756047”); 频道发送(“你好”) })() `) 当我想发送嵌入消息时,问题就开始了。我尝试过这样传递变量: //创建了exampleEmbed client.shard.broadcastEval(` (异步()=>{ 让channe

我正在尝试使用分片机器人将嵌入消息发送到特定频道。 使用以下代码,我成功地发送了一条简单的消息:

client.shard.broadcastEval(`
(异步()=>{
让channel=等待这个.channels.get(“683353482748756047”);
频道发送(“你好”)
})()
`)
当我想发送嵌入消息时,问题就开始了。我尝试过这样传递变量:

//创建了exampleEmbed
client.shard.broadcastEval(`
(异步()=>{
让channel=等待这个.channels.get(“683353482748756047”);
channel.send(“${exampleEmbed}”)
})()
`)
但是消息是像“[object]”一样发送的

我考虑将channel对象返回到broadcastEval之外,然后发送我的变量,但我已经读到这是不可能的,因为您无法返回完整的discord对象


我应该如何发送嵌入消息?谢谢您的时间。

好的,我通过在broadcastEval中创建嵌入消息并使用“${}”语法将其隐藏,解决了这个问题

例如:

client.shard.broadcastEval(`
(异步()=>{
const Discord=require('Discord.js');
让channel=等待这个.channels.get(“683353482748756047”);
中频(信道){
//如果shard拥有此服务器,则继续。
let message=new Discord.RichEmbed()
.set缩略图(this.user.displayAvatarURL)
.setTitle(“标题”)
.addField(“有用的东西:”,“${有用的}”)
.addField(“另一个有用的东西:”,“${useful2}”)
.setTimestamp()文件
频道发送(消息)
}
})()

要使用broadcastEval发送嵌入消息,您需要对嵌入进行字符串化。在您的情况下:

client.shard.broadcastEval(`
(异步()=>{
const channel=wait this.channels.cache.get('683353482748756047');
中频(信道){
send({embed:${JSON.stringify(examplembed)}});
}
})();
`);

请记住,broadcastEval在所有碎片中运行代码,因此您需要检查通道是否存在,否则您将遇到错误。

ahm您现在可以发送工作代码吗,因为我也在为同样的问题而挣扎,但我无法真正理解您的解决方案文本您也可以这样做:``client.shard.broadcastEval(`(async(`)=>{const Discord=require('Discord.js');let channel=wait this.channels.get(“68335348274875647”);if(channel){channel.send(new Discord.RichEmbed(data))}}()```在我的示例中,这很有帮助,因为它有助于在父函数中形成富嵌入并将消息作为参数传递。