【发布时间】:2020-08-27 08:05:09
【问题描述】:
我现在正在处理一个命令,在使用一个命令(例如?hello)后,它会将你放入一个集合中。如果您再次使用该命令,您将收到一条消息(例如“请等待 10 秒再使用此命令。”)但是,如果您等待 10 秒,您可以再次使用该命令。
问题是,在 10 秒结束之前,每次我在 10 秒结束之前执行 ?hello 时,机器人总是说“请等待 10 秒,然后再使用此命令。”这意味着即使我已经等待了,比如说 8 秒,然后使用了该命令,机器人仍然会回复“请等待 10 秒,然后再使用此命令”。而不是“请在再次使用此命令之前等待 2 秒。”
我目前正在为此使用setTimeout(),但机器人没有倒计时。我已经尝试使用setInterval() 和for() 循环,但我不知道如何使用它们中的任何一个来完成这项工作。
我的基本代码适合 ?hello 命令
const helloSet = new Set();
bot.on('message', msg => {
let args = msg.content.substring(prefix.length).split(" ");
if(args[0] === 'hello'){
if(helloSet.has(msg.author.id)){
msg.channel.send(`Please wait 10 seconds before using this command again.`)
setTimeout(() => {
helloSet.delete(msg.author.id)
}, 10000)
} else {
msg.channel.send(`Hello!`)
helloSet.add(msg.author.id)
}
}
})
这里面没有计时器/倒计时的东西,所以当我使用?hello 命令时会发生这种情况。
User: ?hello
Bot: Hello!
User right after using ?hello: ?hello
Bot: Please wait 10 seconds before using this command again
User 8 seconds later: ?hello
Bot: Please wait 10 seconds before using this command again
*Even after I wait for 8 seconds, the bot still says wait 10 more seconds although I really only need to wait 2 more seconds.*
User after a total 10 seconds later: ?hello
Bot: Hello!
同样,我不太确定如何使用 setInterval() 之类的东西来实现 for() 循环,因为我已经尝试过了,但没有成功。
对于如何实现这一目标的任何帮助,我将不胜感激。非常感谢!
【问题讨论】:
标签: javascript discord.js