Ban/kick 命令在使用时崩溃

Ban/kick command crashes on use

所以,我正在制作一个 public discord 机器人,但我的脚本的一部分有问题。我的 kick/ban 命令是用来完成的 $ban @user 它必须在 ping 中完成。由于这是 public,我真的很想解决这个问题。我不希望一个人搞砸并使它崩溃以致所有服务器都崩溃。如果有人不在 ping 中执行 $ban user,它会使机器人崩溃。这是我的代码:

client.on("message", (message) => {
  if (message.content.startsWith("$kick")) {
    if (!message.member.roles.find("name", "MODS"))
      return;
    // Easy way to get member object though mentions.
    var member = message.mentions.members.first();
    // Kick
    member.kick().then((member) => {
      // Successmessage
      message.channel.send(":wave: " + member.displayName + " has been successfully kicked :point_right: ");
    }).catch(() => {
      // Failmessage
      message.channel.send("Access Denied");
    });
  }
});

我不希望我的 bot 一直崩溃以致破坏其他人的使用,有人可以帮忙吗?

我想当你输入 $ban user 时发生了什么(这没有被提及),后来当你分配 var member = message.mentions.members.first(); 时它给你 null (因为没有人被提及)。尝试确保 message.mentions.members 不为空。

干杯:)

当你没有提及时你的代码崩溃了,因为你没有抓住这个用例。

添加一个简单的 catch,例如 return,应该适合您:

client.on("message", (message) => {
    if (message.content.startsWith("$kick")) {
        if(!message.member.roles.find("name", "MODS"))
            return;
        // Easy way to get member object though mentions.
        var member= message.mentions.members.first();

        // No mentions catch
        if (member === undefined) return;

        // Kick
        member.kick().then((member) => {
            // Successmessage
            message.channel.send(":wave: " + member.displayName + " has been successfully kicked :point_right: ");
        }).catch(() => {
             // Failmessage
            message.channel.send("Access Denied");
        });
    }
});