![](/img/trans.png)
[英]How do I make it so my bot remembers what is said to it after I shut it off? I use discord.js for the bot
[英]How do I make a discord-bot stop replying after I write "shut up"?
我开始这个小项目只是为了我朋友的服务器的乐趣。 她希望机器人在她在服务器上说任何话时都回复她,并且她希望机器人在说“闭嘴”(无前缀)一小时后停止回复。 我目前有这个
client.on("message", function (message) {
const amyID = "blahblah";
const jayID = "blahblah";
if (message.author.id == (jayID)) {
if (message.content.includes("shut up")) {
message.reply("sorry...")
setTimeout(function () {
}, 60000)
} else {
client.commands.get('replyToAmy').execute(message);
}
}
})
setTimeout
似乎只适用于我对如何将其应用于client.on
位感到困惑的功能。 如果我删除setTimeout
,机器人将再次开始响应。 在用户说“闭嘴”后,如何让机器人停止响应一段时间?
一种方法是在client.on('message')
函数之外创建一个布尔变量。 然后,只要布尔变量设置为 true,机器人就会继续发送消息。 一旦用户告诉机器人停止,布尔变量设置为 false,您可以在指定时间创建一个.setTimeout()
,之后布尔变量将返回 true。 然后我们所要做的就是在每次发送消息时检查布尔变量是否为真。 代码可能如下所示:
let keepReplying = true
const userId = 'the users id'
client.on('message', message => {
if (message.author.id === userId) {
if (message.content === 'stop') {
keepReplying = false
setTimeout(() => { keepReplying = true }, 60000)
}
}
if (keepReplying) client.commands.get('replyToAmy').execute(message);
})
也许创建一个列表来包含说“闭嘴和时间戳”的用户,然后用于检查该列表中的用户并将时间与时间戳进行比较?
好吧,如果用户时间戳 > 1 hr 然后从列表中删除它
有更好的方法,但这是简单的方法。 而不是最有效的方法,因为这对许多用户来说太浪费了
但是从您的代码看来,您只是为一小部分用户制作了小项目,所以没有问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.