在继续代码之前让机器人等待一段时间
Posted
技术标签:
【中文标题】在继续代码之前让机器人等待一段时间【英文标题】:Make a bot wait for some time before continuing the code 【发布时间】:2021-12-03 06:57:05 【问题描述】:有没有办法让机器人在继续代码之前等待一段时间(例如 5 秒)?我需要类似的东西:
client.on('messageCreate', message =>
message.channel.send('1st message')
wait(5000)
message.channel.send('2nd message')
wait(5000)
message.channel.send('3rd message')
)
我尝试使用setInterval
,就像许多人建议的那样,但这似乎不是我的解决方案。
我也不能使用await setTimeout(time)
因为SyntaxError: await is only valid in async functions and the top level bodies of modules
和TypeError [ERR_INVALID_CALLBACK]: Callback must be a function. Received 5000
【问题讨论】:
这能回答你的问题吗? What is the javascript version of sleep()? setInterval 将以某种方式参与任何答案,如果您分享您的用法,也许我们可以找出问题所在。 @SvenEberth 如果我理解你建议的正确答案,它对我不起作用,即使我有最新的 node.js 版本! (TypeError [ERR_INVALID_CALLBACK]: Callback must be a function. Received 5000
)
@DanOswalt 基本上我需要发送一些消息,它们之间有一些短暂的延迟
function doThing() console.log('hi') setInterval(doThing, 5000);这不起作用?
【参考方案1】:
您可以使用 Node 的 Util 库 promisify setTimeout
。然后使messageCreate
回调异步。
const wait = require('util').promisify(setTimeout);
client.on('messageCreate', async message =>
message.channel.send('1st message')
await wait(5000)
message.channel.send('2nd message')
await wait(5000)
message.channel.send('3rd message')
)
【讨论】:
以上是关于在继续代码之前让机器人等待一段时间的主要内容,如果未能解决你的问题,请参考以下文章
(Discord.py)如何让机器人在一段时间后删除自己的消息?