Discord.js按顺序发送消息

Discord.js send messages in order

我有一个 discord 机器人,它会根据命令向一个频道发送多条消息。有些消息是图片,它们总是最后发送。

msg.channel.send({files: ["image.png"]});
for (var i in rules) {
    msg.channel.send({embed: rules[i]});
}
msg.channel.send({files: ["image2.png"]});
msg.channel.send({embed: embed1});
msg.channel.send({files: ["image3.png"]});
msg.channel.send({embed: embed2});

我希望消息按照代码的顺序发送。

TextChannel.send() returns 一个承诺,所以你可以只使用 async/await

// make sure your function is async
await msg.channel.send({files: ["image.png"]});
await msg.channel.send({files: ["image2.png"]});
await msg.channel.send({embed: embed1});
await msg.channel.send({files: ["image3.png"]});
await msg.channel.send({embed: embed2});

因为你使用的是异步函数,消息不会按照编码顺序发送,而是按照处理时间发送。

由于图片比短信大得多,因此在异步环境中最后发送。

您需要使用回调将这些函数变为同步,但我建议搜索一个本质上是同步的 discord 命令。