【发布时间】:2020-05-12 15:13:32
【问题描述】:
我一直在处理这个命令(我有一个问题),当用户说u?hi 时,机器人会在将你放入集合之前回复。然后,您将进入 20 秒的超时状态,当您处于超时状态时,如果您输入 u?hi,机器人会回复 gotta wait x seconds。当超时结束时,他们可以输入u?hi,然后循环继续。
但是,我遇到了一个问题。在我的代码中,在执行u?hi 之后,我进入了超时状态(就像我计划的那样)。但是,在超时期间,如果我输入u?hi,而让我们说超时1秒,而不是机器人说gotta wait 19 more seconds,机器人说gotta wait 19 more seconds,然后开始倒计时到0。这是什么我的意思是(截图):
这是我的代码:
const intervalSet = new Set();
bot.on("message", msg => {
let args = msg.content.substring(prefix.length).split(" ");
switch (args[0]) {
case "hi":
var interval = 20;
var intervalID;
if (intervalSet.has(msg.author.id)) {
intervalID = setInterval(() => {
interval -= 1;
if (interval !== 0 && args[0] === 'hi') {
msg.channel.send(`gotta wait ${interval} more seconds`);
}
if (interval === 0) {
clearInterval(intervalID);
msg.channel.send(`Ended`);
intervalSet.delete(msg.author.id);
}
}, 1000);
} else {
intervalSet.add(msg.author.id);
msg.channel.send("heyy");
}
}
});
我试过移动
if (interval !== 0 && args[0] === 'hi') {
msg.channel.send(`gotta wait ${interval} more seconds`);
}
部分到代码的其他地方并对其进行更改,但似乎没有任何效果。我能做些什么呢?
【问题讨论】:
标签: javascript bots discord.js