我的禁令命令没有做任何事情 discord.js

时间:2021-03-29 15:49:49

标签: javascript node.js discord.js

我的禁止命令不起作用有人可以帮助我吗?这是我第一个使用 discord.js 的 discord 机器人。如果有人能告诉我为什么它不做任何事情并且在我做的时候不回复的错误 (a!ban @user),那么 a! 是我对机器人的前缀。

这是整个命令:

const Discord = require("discord.js");
const { MessageEmbed } = require("discord.js");
const { Color } = require("../../config.js");

module.exports = {
  name: "ban",
  aliases: [],
  description: "Ban A Member!",
  usage: "Ban <Mention Member>",
  run: async (client, message, args) => {
    //Start
    if (!message.member.hasPermission("BAN_MEMBERS"))
      return message.channel.send(
        `You Don't Have Permission To Use This Command!`
      );

    let Member = message.mentions.users.first();

    if (!Member)
      return message.channel.send(
        `Please Mention A Member That You Want To Ban!`
      );

    if (!message.guild.members.cache.get(Member.id))
      return message.channel.send(`Please Mention A Valid Member!`);

    if (Member.id === message.author.id)
      return message.channel.send(`You Can't Ban Your Self!`);

    if (Member.id === client.user.id)
      return message.channel.send(`Please Don't Ban Me ;-;`);

    if (Member.id === message.guild.owner.user.id)
      return message.channel.send(`You Can't Ban Owner Of Server xD!`);

    let Reason = args.slice(1).join(" ");

    let User = message.guild.member(Member);

    if (!User.bannable) return message.channel.send(`I Can't Ban That Member, Maybe They Are Higher Than My Role`);

    try {
      console.log(`Member Is Going To Get Ban!`);
      setTimeout(function() {
        User.ban({ reason: `${Reason || "No Reason Provided!"}` });
      }, 2000);
      let embed = new Discord.MessageEmbed()
        .setColor(Color)
        .setTitle(`Member Banned!`)
        .addField(`Moderator`, `${message.author.tag} (${message.author.id}`)
        .addField(`Banned Member`, `${Member.tag} (${Member.id})`)
        .addField(`Reason`, `${Reason || "No Reason Provided!"}`)
        .setFooter(`Requested by ${message.author.username}`);
      if (User && Member.bot === false)
        Member.send(
          `You Have Been Banned From **${message.guild.name}** For ${Reason ||
            "No Reason Provided!"}`
        );
      message.channel.send(embed);
      console.log(
        `User: ${Member.tag} (${Member.id}) Just Got Banned From ${
          message.guild.name
        } For ${Reason || "No Reason Provided!"}`
      );
    } catch (error) {
      return message.channel
        .send(
          `I Can't Ban That Member Maybe Member Has Higher Role Than Me & My Role Is Lower Than Member!`
        )
        .then(() => console.log(error));
    }

    //End
  }
};

1 个答案:

答案 0 :(得分:1)

您不应混合使用用户和成员。您不能禁止用户,只能禁止成员。如果您想禁止某个成员,您可以使用 mentions.members 代替 mentions.users

我已经重写了您的代码,它似乎可以正常工作:

module.exports = {
  name: "ban",
  aliases: [],
  description: "Ban A Member!",
  usage: "Ban <Mention Member>",
  run: async (client, message, args) => {
    if (!message.member.hasPermission('BAN_MEMBERS'))
      return message.channel.send(
        `You Don't Have Permission To Use This Command!`,
      );

    let member = message.mentions.members.first();

    if (!member)
      return message.channel.send(
        `Please Mention A Member That You Want To Ban!`,
      );

    if (member.id === message.author.id)
      return message.channel.send(`You Can't Ban Your Self!`);

    if (member.id === client.user.id)
      return message.channel.send(`Please Don't Ban Me ;-;`);

    if (member.id === message.guild.owner.user.id)
      return message.channel.send(`You Can't Ban Owner Of Server xD!`);

    let reason = args.slice(1).join(' ') || 'No Reason Provided!';

    if (!member.bannable)
      return message.channel.send(
        `I Can't Ban That Member, Maybe They Are Higher Than My Role`,
      );

    try {
      console.log(`Member Is Going To Get Ban!`);
      setTimeout(function () {
        member.ban({ reason });
      }, 2000);
      let embed = new Discord.MessageEmbed()
        .setColor(Color)
        .setTitle(`Member Banned!`)
        .addField(`Moderator`, `${message.author.tag} (${message.author.id}`)
        .addField(`Banned Member`, `${member.user.tag} (${member.id})`)
        .addField(`Reason`, reason)
        .setFooter(`Requested by ${message.author.username}`);
      if (member && !member.bot)
        member.send(
          `You Have Been Banned From **${message.guild.name}** For ${reason}`,
        );
      message.channel.send(embed);
      console.log(
        `User: ${member.tag} (${member.id}) Just Got Banned From ${message.guild.name} For ${reason}`,
      );
    } catch (error) {
      return message.channel
        .send(
          `I Can't Ban That Member Maybe Member Has Higher Role Than Me & My Role Is Lower Than Member!`,
        )
        .then(() => console.log(error));
    }
  }
};

enter image description here

相关问题