Discord.js mod bot ban 命令无效

Discord.js mod bot ban command not working

我的 discord bot 的禁止命令不起作用,目前给我这个错误。我的角色 ID 是 853527575317708820 我不知道我做错了什么所以请帮帮我

这是命令:

Server is ready.
TigerShark Community#3557 Has logged in
(node:204) UnhandledPromiseRejectiontarning: DiscordAPTError: T
AEE RS
user_id: Value "<@!856413967595012127>" is not snowflake.
at RequestHandler.execute (/home/Tunner/TSC/node_modules/di
scoxd. js/src/rest/RequestHandler. js:154:13)
at processTicksAndRejections (internal/process/task
§5:97:5) :!
at async RequestHandler.push (/home/zunner/TSC/node
/discord. js/s1c/rest/RequestHandler. js:39:14)

这是我的代码:


module.exports = {
  name: 'ban',
  description: "Used to ban members from a server",
  async execute(client, message, args, Discord) {

    if (!(message.member.roles.cache.some(r => r.id === "853527575317708820"))) return

      let reason;
      const user = await client.users.fetch(args[0])
      if (!args[1])
      {
        reason = "Not specified"
      } else {
        reason = args[1]
      }

      const embed = new Discord.MessageEmbed()
      .setTitle(`${user.username} was banned!`)
      .setDescription(`${user.username} was banned by ${message.author.username} for: ${reason}`)
      .setColor("#f0db4f")
      .setFooter("Ban Command")
      .setTimestamp()

      message.channel.send(embed)
      message.guild.members.ban(user)
  }
}

您的命令几乎没有问题。

首先是如果提到用户,它不允许使用命令禁止用户,它只允许通过用户ID禁止。要解决此问题,只需执行以下操作:

const user = message.mentions.members.first() || await client.users.fetch(args[0])

您还应该添加检查是否找到用户,所以在您为 user

声明值之后
const user = message.mentions.members.first() || await client.users.fetch(args[0])
if(!user) return message.reply(`No user found`);

现在,如果您允许禁止提及和用户 ID,则可能会有不同的 user 值。因此,我建议您也将嵌入内容编辑为:

const embed = new Discord.MessageEmbed()
      .setTitle(`${user.user.username} was banned!`)
      .setDescription(`${user.user.username} was banned by ${message.author.username} for: ${reason}`)
      .setColor("#f0db4f")
      .setFooter("Ban Command")
      .setTimestamp()

这应该可以解决您的大部分问题,如果将来 undefined 有问题或者您在代码中遇到任何错误,我建议您这样做。通过向控制台 console.log(variable)console.log("This works?")

发送消息来进行一些调试

如果您使用的是 discord.js v12,您可以按照其他答案所说的去做,并通过提及 message.mentions.members.first() 吸引用户,但如果您使用的是 v13,那将不再有效

它给出该错误的原因是因为您需要单独通过用户 ID 获取用户,因此您可以这样做 client.users.fetch(args[0].replace('<@!', '').replace('>', '')) 以删除 <@!>(提及前缀)从它。