繁体   English   中英

我写“闭嘴”后如何让不和谐机器人停止回复?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM