首页 > 解决方案 > Discord bot“TypeError:无法读取未定义的属性‘执行’”错误

问题描述

const Discord = require('discord.js')

exports.kick = async(message , prefix , client) => {
    if(!message.member.hasPermission("KICK_MEMBERS")) return message.channel.send('Missing Permission! You need to have `KICK_MEMBERS` permissions in order kick this member.')

    if(!message.guild.me.hasPermission("KICK_MEMBERS")) return message.channel.send('Missing Permission! I need to have `KICK_MEMBERS` permissions to kick this member.')

    const args = message.content.slice(prefix.length).trim().split(' ');
    const command = args.shift().toLowerCase();

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

    if(!member){
      let err = "```css\n[ Agrument Error : You Have not mentioned the user on first args. ]\n```\n\n"

      let embed = new Discord.MessageEmbed()
      .setAuthor(`${client.user.username} Help Manual` , client.user.displayAvatarURL({format : "png"}))
      .setTitle(`${message.guild.name}`)
      .setDescription(err)
      .addField('Help Command:' , `\`\`\`\n${prefix}kick @user#0001 Reason\n\`\`\``)
      .setTimestamp()
      .setColor('RED')
      return message.channel.send(embed)
    }

    if(args[0] != `<@!${member.id}>`){

      let err = "```css\n[ Agrument Error : You Have not mentioned the user on first args. ]\n```"

      let embed = new Discord.MessageEmbed()
      .setAuthor(`${client.user.username} Help Manual` , client.user.displayAvatarURL({format : "png"}))
      .setTitle(`${message.guild.name}`)
      .setDescription(err)
      .addField('Help Command:' , `\`\`\`\n${prefix}kick @user#0001 Reason\n\`\`\``)
      .setTimestamp()
      .setColor('RED')
      return message.channel.send(embed)
    }

    if(member.id === message.author.id) return message.channel.send(`Why? No Just Say Why Do you want to kick yourself?`)

    let reason = args.slice(1).join(' ');
    if(!reason || reason.length <= 1){
      reason = "No Reason Was Provided."
    }

    if(!member.kickable){
      return message.channel.send(`I Don't Have Permissions to Kick ${member.user.username}`)
    }

    member.kick().then(() => {
      return message.channel.send(`Successfully Kicked ${member.user.username} for Reason ==> \`${reason}\``)
    }).catch(() => {
      return message.channel.send(`I Don't Have Permissions to Kick ${member.user.username}`)
    })
}

所以我正在尝试运行该命令,但每当我这样做时,它总是会出现错误“TypeError:无法读取未定义的属性'执行'”

这是我的主要代码

const Discord = require('discord.js');
const client = new Discord.Client();
const prefix = '-';
const fs = require('fs');

client.commands = new Discord.Collection();

const commandFiles = fs.readdirSync('./commands/').filter(file => file.endsWith('.js'));
for(const file of commandFiles){
    const command = require(`./commands/${file}`);

    client.commands.set(command.name, command);
}


client.once('ready', () => {
    console.log('Rem is online!');
});

client.on('message', message =>{
    if(!message.content.startsWith(prefix) || message.author.bot) return;

    const args = message.content.slice(prefix.length).split(/ +/);
    const command = args.shift().toLowerCase();

    if(command === 'kick'){
        client.commands.get('kick').execute(message, args);
    }
});

client.login('  ');

我在它们中都尝试过 .run 和 .execute ,但出现了错误。我怎样才能解决这个问题?

标签: discordbots

解决方案


推荐阅读