【问题标题】:Cannot get bot to autoban new accounts on Discord无法让机器人自动禁止 Discord 上的新帐户
【发布时间】:2020-09-18 10:59:14
【问题描述】:

机器人非常简单,最终不需要我的任何输入。我希望机器人做的是检查加入的帐户的年龄,然后如果它们是过去 10 分钟内创建的新帐户,则禁止它们。我坚持的部分是计算我思考的时间。该机器人没有给出任何错误,只是没有禁止我创建的新帐户。出于测试目的,我将机器人放到我正在制作的没有其他人的新服务器上,并将时间更改为 14400 秒,以便在 10 天内完成,应该给我足够的时间来弄清楚怎么了。

这是我的代码:

const Discord = require("discord.js");
const client = new Discord.Client();

client.on("ready", () => {
  console.log("I am ready!");
});

client.on("message", (message) => {
  if (message.content.startsWith("ping")) {
    message.channel.send("pong!");
  }
});

client.on("guildMemberAdd", (member) => {
    if (Date.now() - member.user.createdAt <= 14400) {
        guildMember.ban({ days: 14, reason: 'New account' })
    }
});

client.login("Token");

member.client.user.createdAt 是我认为我遇到问题的部分。当我在 Date.now() 上运行调试时效果很好,但我似乎无法让它计算加入帐户的年龄。

我很确定这是我需要的属性,但我一定是错误地调用它。请原谅任何无知,我是js超级新手。

https://discord.js.org/#/docs/main/master/class/User?scrollTo=createdAt

我很想知道我做错了什么。谢谢!

【问题讨论】:

    标签: javascript discord discord.js


    【解决方案1】:

    终于找到问题所在了。这个问题实际上是多方面的。第一个问题是我认为它是以秒为单位计算的,但实际上它是以毫秒为单位计算的,因此 if 语句永远不会为真。一旦我通过将时间增加到 10 天(以毫秒为单位)来实现这一点,我在 guildMember 上得到了一个错误,因为它没有被定义。我将其更改为成员,然后在不能超过 7 天时出现错误。这是最终的工作代码。

    const Discord = require("discord.js");
    const client = new Discord.Client();
    
    client.on("ready", () => {
      console.log("I am ready!");
    });
    
    client.on("message", (message) => {
      if (message.content.startsWith("ping")) {
        message.channel.send("pong!");
      }
    });
    
    client.on("guildMemberAdd", (member) => {
        if (Date.now() - member.user.createdAt <= 864000000) {
            member.ban({ days: 7, reason: 'New account' })
        }
    });
    
    client.login("Token");

    【讨论】:

      【解决方案2】:

      你需要把“异步”让它工作

      const Discord = require("discord.js");
      const client = new Discord.Client();
      
      client.on("ready", () => {
        console.log("I am ready!");
      });
      
      client.on("message", (message) => {
        if (message.content.startsWith("ping")) {
          message.channel.send("pong!");
        }
      });
      
      client.on("guildMemberAdd", async member => {
          if (Date.now() - member.user.createdAt <= 1209600000) {
              member.ban({ days: 14, reason: 'New account' })
          }
      });
      
      client.login("Token");
      

      【讨论】:

        猜你喜欢
        • 2020-12-27
        • 2022-01-18
        • 2021-08-29
        • 2018-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-24
        • 2021-07-27
        相关资源
        最近更新 更多