踢命令 DiscordJS v13

Kick Command DiscordJS v13

只要我的 args[0] 是一个角色和随机字母(不是用户),我就会不断出错。我该如何解决这个问题?或者我可以复制一些可以在 Kick 命令中使用的代码。在 Twitter 上联系我:KiseeIsHere(不是真的有必要,我只是添加更多文本,因为 stacklow 希望我添加更多详细信息。)

module.exports.run = async (client, message, args) => {

    const { MessageEmbed } = require('discord.js');

    if (!message.member.permissions.has("KICK_MEMBERS")) return message.channel.send("You don't have permission to kick people");
    if (!message.guild.me.permissions.has("KICK_MEMBERS")) return message.channel.send("I don't have permission to kick people.");
    
    if (!args[0]) return message.channel.send("Specify a member.");

    let member = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.guild.members.cache.find(x => x.user.username.toLowerCase() === args.slice(0).join(" ") || x.user.username === args[0]);

    if(member.id == client.user.id){
        return message.channel.send("I can't kick myself.")
      }
    
    if (message.member.roles.highest.comparePositionTo(message.mentions.members.first().roles.highest)<1) {
      return message.channel.send("I have lower role.");
    }

    if (message.member.id === member.id) return message.channel.send("I can't kick you.");

    if (message.mentions.roles) {
      return;
    }

    var args2 = args.slice(1).join(" ");
    if(!args2)
    {
      var args2 = "No reason provided.";
    }
    await member.kick({ reason : `${args2}`})
    const embed = new MessageEmbed()
    .setTitle("Member Kicked")
    .setDescription(`> ${member} just got kicked.`)
    .setColor('#00ff00')
    .setFooter(`Requested by ${message.author.username}`)
    .setTimestamp();

    message.channel.send({ embeds: [embed] }) 
  }


module.exports.config = {
    name: "kick",
    aliases: []
}

我在下面的命令中添加了一行代码,应该可以解决您的问题。

const {
    MessageEmbed
} = require('discord.js');

module.exports.run = async (client, message, args) => {
    if (!message.member.permissions.has("KICK_MEMBERS")) return message.channel.send("You don't have permission to kick people");
    if (!message.guild.me.permissions.has("KICK_MEMBERS")) return message.channel.send("I don't have permission to kick people.");

    if (!args[0]) return message.channel.send("Specify a member.");

    let member = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.guild.members.cache.find(x => x.user.username.toLowerCase() === args.slice(0).join(" ") || x.user.username === args[0]);

    // Just add the below line

    if (!member) return message.channel.send("That was not a member.")

    // If member doesn't return a member, then it will kill it


    if (member.id == client.user.id) {
        return message.channel.send("I can't kick myself.")
    }

    if (message.member.roles.highest.comparePositionTo(message.mentions.members.first().roles.highest) < 1) {
        return message.channel.send("I have lower role.");
    }

    if (message.member.id === member.id) return message.channel.send("I can't kick you.");

    if (message.mentions.roles) {
        return;
    }

    var args2 = args.slice(1).join(" ");
    if (!args2) {
        var args2 = "No reason provided.";
    }
    await member.kick({
        reason: `${args2}`
    })
    const embed = new MessageEmbed()
        .setTitle("Member Kicked")
        .setDescription(`> ${member} just got kicked.`)
        .setColor('#00ff00')
        .setFooter(`Requested by ${message.author.username}`)
        .setTimestamp();

    message.channel.send({
        embeds: [embed]
    })
}


module.exports.config = {
    name: "kick",
    aliases: []
}