【问题标题】:Creating a cooldown system that works individually per user and not for the command itself Twitch/Node/TMI创建一个冷却系统,每个用户单独工作,而不是命令本身 Twitch/Node/TMI
【发布时间】:2021-08-23 18:36:21
【问题描述】:

您好,我一直在开发一个机器人,如果他们再次使用该命令,我想为用户设置 10 分钟的冷却时间该命令的用户并使其成为个人。

if(message == '!joinqueue') {

    if(!block) {
        
        client.say(channel, `@${user.username}, Joined The Queue!`);
    
        queue.push(`${user.username}`);

        console.log(queue);

        block = true
        setTimeout(() => {
            block = false;
        }, (60 * 10000))
    }
    else {
        client.say(channel, `@${user.username} Please Wait Before Doing This Command Again`)
    }

【问题讨论】:

  • 看起来你什么都没试过。一种方法是将block 从布尔值更改为字符串数组,其中字符串是用户唯一标识符。当您想要阻止某个用户时,将该用户的唯一 id 推送到数组中。当你想检查一个用户是否被阻止时,你检查数组是否有id。并且在取消设置块的超时中,您从数组中删除用户的 id。
  • @tao 我通常是 Javascript 新手 我想出了一个我认为可能比他们已经在队列中更容易的方法,然后他们不能重新加入,直到他们离开或通过我的第一个位置仍然普遍感到困惑你对我将如何做到这一点有任何建议
  • 无论手头的任务如何,也无论您在任何给定编程语言方面的技能如何,您都面临两种选择:a) 尝试编写代码或 b) 要求其他人为您编写代码,而无需甚至尝试。当您选择 a) 时,您是一名编码员,欢迎您提出问题。当您选择 b) 时,您是客户,您的问题在技术上是 题外话。只要问题表明在编码或研究手头的任务方面付出了相当大的努力,这里的大多数人都会帮助初学者和经验丰富的编码人员。

标签: javascript node.js twitch


【解决方案1】:

根据您显示的代码,这是一个将用户存储在block 中的版本(如我上面最初的评论中所述):

let block = [];

if(message === '!joinqueue') {
  if(!block.includes(user.username)) {
    client.say(channel, `@${user.username}, Joined The Queue!`);
    queue.push(user.username);
    block.push(user.username);
    setTimeout(() => {
        block = block.filter(u => u !== user.username);
    }, (60 * 10000))
  } else {
    client.say(channel, `@${user.username} Please Wait Before Doing This Command Again`)
  }
}

注意事项:

  • 只有当username 是唯一的用户标识符时,上述内容才能正常工作;如果不是,请使用另一个作为唯一标识符的字段;如果您没有,请在每个 user 中添加一个(您可以为此使用 uuid
  • 如果上述代码不起作用,您需要提供有关运行它的上下文的更多详细信息,最好创建一个mcve
  • 如果您的代码被放置在一个反复运行的函数中(在某个钩子上),那么在该函数之外初始化block 变量很重要。否则,您将在每次函数运行时重新初始化它,从而有效地丢失当前状态。

【讨论】:

    猜你喜欢
    • 2018-07-04
    • 2017-06-13
    • 2021-02-16
    • 2021-08-07
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    相关资源
    最近更新 更多