【问题标题】:DiscordJS how to detect inhuman commandsDiscordJS如何检测不人道的命令
【发布时间】:2021-03-17 15:56:15
【问题描述】:

我正在开发一个 Discord 机器人,它处理带有 rpg 元素的多人游戏 - 这些 rpg 元素允许用户在指定的时间间隔内执行不同的收入活动(最好的例子是 EPIC RPG)。

考虑到游戏是多人游戏并且几乎只基于间隔,我想阻止玩家使用任何自动化,这让他们能够以最小的努力获得最高排名并保持游戏公平!

我目前在一个小型测试服务器上运行它,并且已经有一个人使用了允许他每 10 秒发送这些命令的东西(编辑:来自他的个人用户帐户),在 16 小时内产生了超过 5000 个命令。他对他为达到这个结果所使用的任何细节都非常神秘。我还发现他甚至可以一次设置多个间隔,这与我尝试过的解决方案相反,接下来会描述。

我尝试了什么
实现一个在用户发送命令时随机生成的验证码,并在用户未能完成验证码时临时禁止 - 这只是部分解决方案,因为他仍然可以在做其他工作时使用自动化并在验证码弹出时传递验证码
实施奖励验证码,当用户在同一时间间隔连续两次发送命令时生成 - 这仅在有一个计时器时有效,设置更多计时器会对此进行计数

所以我现在要说的很明显的问题是:我如何检测这些命令的自动化(间隔模式?),以有效地用验证码惹恼那些机器人,直到他们宁愿放弃并手动玩?

如果有任何想法和建议,我将不胜感激!

PS:我很惊讶他连续数周和数月都没有这样做 - 每天发送 5000 条消息,即使我相信不是每天。 API 滥用是否违反了 Discord 的 ToS?

【问题讨论】:

    标签: automation discord.js bots captcha detection


    【解决方案1】:

    这是一个很容易回答的问题。 答案是:

    const Discord = require('discord.js');
    const client = new Discord.Client();
    
    let prefix = "!";
    
    client.on('ready', () => {console.log('I am Ready')});
    
    client.on('message', (message) => {
      if (!message.content.startsWith(prefix) || message.author.bot) return;
    
      var args = message.content.slice(prefix.length).split(/ +/);
      var commands = args.shift().toLowerCase();
    
      if (command === "ping") {
        return message.channel.send('Pong!');
      }
    })
    
    client.login('INSERT TOKEN HERE');
    
    

    因此,代码开头的 if 语句检查消息是否以前缀开头,以及消息是否由机器人发送。

    希望这有帮助。

    Happy Coding!
    

    【讨论】:

    • 您好,感谢您的快速回复!我想重要的是要提到他是从他的个人用户帐户(而不是机器人帐户)发送这些命令,所以不幸的是这个解决方案没有解决问题:(我已经按照 discordjs.guide 实施了这个解决方案,以防止我的机器人循环.
    猜你喜欢
    • 2018-09-18
    • 2021-10-30
    • 1970-01-01
    • 2021-01-15
    • 2021-03-03
    • 2021-11-03
    • 2023-01-26
    • 2021-07-06
    • 1970-01-01
    相关资源
    最近更新 更多