Discord.js 按顺序发送消息
Posted
技术标签:
【中文标题】Discord.js 按顺序发送消息【英文标题】:Discord.js send messages in order 【发布时间】:2021-02-05 20:52:34 【问题描述】:我有一个不和谐的机器人,它会根据命令向一个频道发送多条消息。有些消息是图像,它们总是最后发送。
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);
我希望消息按代码顺序发送。
【问题讨论】:
【参考方案1】:因为你使用的是异步函数,所以消息不会按照编码顺序发送,而是按照处理时间发送。
由于图像比文本消息大得多,它们将在异步环境中最后发送。
您需要使用回调来使这些函数同步,但我建议搜索本质上是同步的不和谐命令。
【讨论】:
好的,我会调查的。 您不需要使用回调,您可以使用await
关键字更简单地实现它。 await
在当前消息完成发送之前不会开始发送下一条消息
@Samathingamajig 当我尝试这个时,它给了我这个错误:SyntaxError: await is only valid in async function
嗯,你需要使函数异步。 async function funcName() ...
或 const funcName = async() => ...
或类似名称,具体取决于您执行功能的方式【参考方案2】:
TextChannel.send()
返回一个承诺,所以你可以使用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);
【讨论】:
当我尝试这个时,它给了我这个错误:SyntaxError: await is only valid in async function
嗯,你需要使函数异步。 async function funcName() ...
或 const funcName = async() => ...
或类似名称,具体取决于您执行功能的方式以上是关于Discord.js 按顺序发送消息的主要内容,如果未能解决你的问题,请参考以下文章