当前位置: 首页 > 知识库问答 >
问题:

不一致js Sharding,如何使用broadcastEval发送嵌入消息?

司迪
2023-03-14

我试图用分片机器人向特定频道发送嵌入消息。我已经成功地用这个代码发送了一个简单的消息:

client.shard.broadcastEval(`
      (async () => {
             let channel = await this.channels.get("683353482748756047"); 
             channel.send("Hello")
      })()
`)

当我想发送嵌入消息时,问题就开始了。我尝试过这样传递变量

//exampleEmbed is created
client.shard.broadcastEval(`
      (async () => {
             let channel = await this.channels.get("683353482748756047"); 
             channel.send('${exampleEmbed}')
      })()
`)

但是消息是像“[object]”一样发送的。

我想过将通道对象返回到广播Eval之外,然后发送我的变量,但是我已经读到这是不可能的,因为你不能返回完整的不和谐对象。

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

共有2个答案

鲁成天
2023-03-14

为了使用broadcastEval发送嵌入消息,您需要对嵌入消息进行字符串化。就你而言:

    client.shard.broadcastEval(`
        (async () => {
            const channel = await this.channels.cache.get('683353482748756047');
            if (channel) {
                channel.send({ embed: ${JSON.stringify(exampleEmbed)} });
            }
        })();
    `);

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

孟思远
2023-03-14

好的,我通过在broadcastEval中创建嵌入消息并使用“${}”语法对其进行poblate来解决它。

例子:

client.shard.broadcastEval(`
      (async () => {
             const Discord = require('discord.js');
             let channel = await this.channels.get("683353482748756047"); 
             if(channel){
                  //if shard has this server, then continue.
                  let message = new Discord.RichEmbed()
                  .setThumbnail(this.user.displayAvatarURL)
                  .setTitle('Title')
                  .addField("Something useful:", '${useful}')
                  .addField("Another useful thing:", '${useful2}')
                  .setTimestamp()
                    
                  channel.send(message)
             }
       })()
 类似资料:
  • 我只是想给加入服务器的新成员写一封欢迎信。我想在每次新成员加入时发送嵌入。但是,未发送嵌入。有人能帮我吗? 这是我的代码: 谢谢

  • 所以我想做一个命令,允许某人发送嵌入消息,他们可以决定描述和颜色,不需要标题。嵌入说明-颜色#00000)。那是我的代码: 但是它不起作用,而且我是不和谐的新手。js,有人能修好我的代码吗?

  • bot发送嵌入消息,但仅发送文本而不发送gif。我有一个单独的gif文件。json文件,因此当有人使用该命令时,会有不同的GIF。但由于某种原因,它不起作用。也许是因为天气原因。json文件?我真的不知道,请帮帮我。我的代码: 该代码为。json文件: (我知道,它只有一个gif。) 当两个文件都在一个文件夹中时,我在控制台中出现的错误:图片:https://i.stack.imgur.com/8

  • 我需要你的帮助。我正在用MQTT创建一个程序,它必须执行写在文件上的命令,并将结果发送到主题。我已经设法在终端上执行命令并打印结果,但是当我必须通过MQTT发送它时,它会创建两条消息,是否可以只发送带有结果的消息?我该怎么办?谢谢,我将放置代码,用于读取执行的命令的结果以及它发送给我的两条消息。

  • 如何在一条消息中发送多个嵌入?像这样发送多个: 输出: 我找不到任何关于发送多个嵌入的文档,在discord.js文件中提到了它,发送了一个嵌入列表。虽然我试过这个,但它也不起作用。

  • 我有一些不和谐的问题 我有3个嵌入:embed1、embed2、embed3,但当我尝试发送带有以下代码的消息的嵌入时: 我得到这个错误: (节点:24120)未处理的PromisejectionWarning:DiscordAPIError:无法发送空消息