首页 > 解决方案 > ReferenceError:前缀未定义

问题描述

我正在编写一个不和谐的机器人,并且一直在实施一个禁令命令:启动机器人工作正常,但是一旦我运行“/ban”,我就会在控制台中收到错误。有什么修复吗?代码:

module.exports = {
    name: "ban",
    description: "Bans a member from the server",
    execute(message) {
        if(!message.member.hasPermission("BAN_MEMBERS")) return message.channel.send('You can\'t use that!');
        if(!message.guild.me.hasPermission("BAN_MEMBERS")) return message.channel.send('I don\'t have the right permissions.');
        
        const member = message.mentions.members.first() || message.guild.members.cache.get(args[0]);

        if (!args[0]) {
            return message.channel.send('Please specify a user!');
        }
        if (!member) {
            return message.channel.send('Cant find that user');
        }
        if (!member.bannable) {
            return message.channel.send('Cant ban that user');
        }
        let reason = args.slice(1).join(" ");
        if (!reason) {
            reason = 'Unspecified';
        }
        member.ban({ days: 7, reason: '${reason}' }).catch(err => { 
            message.channel.send('Something went wrong');
              console.log(err);
          });
        
        const banembed = new Discord.MessageEmbed()
          .setTitle('Member Banned')
          .setThumbnail(member.user.displayAvatarURL())
          .addField('User Banned', member)
          .addField('Kicked by', message.author)
          .addField('Reason', reason)
          .setFooter('Time kicked', client.user.displayAvatarURL())
          .setTimestamp();
  
          message.channel.send(banembed);
        }
    };

这是错误:

ReferenceError: args is not defined
at Object.execute (C:\Users\aweso\Documents\Projects\Vatox-BOT\commands\ban2.js:8:92)
at Client.<anonymous> (C:\Users\aweso\Documents\Projects\Vatox-BOT\index.js:67:11)
at Client.emit (node:events:327:20)
at MessageCreateAction.handle (C:\Users\aweso\Documents\Projects\Vatox-BOT\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
at Object.module.exports [as MESSAGE_CREATE] (C:\Users\aweso\Documents\Projects\Vatox-BOT\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
at WebSocketManager.handlePacket (C:\Users\aweso\Documents\Projects\Vatox-BOT\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
at WebSocketShard.onPacket (C:\Users\aweso\Documents\Projects\Vatox-BOT\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
at WebSocketShard.onMessage (C:\Users\aweso\Documents\Projects\Vatox-BOT\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
at WebSocket.onMessage (C:\Users\aweso\Documents\Projects\Vatox-BOT\node_modules\ws\lib\event-target.js:132:16)
at WebSocket.emit (node:events:327:20)

我知道明显的解决方法是定义“args”,但这是从已经定义 args 的 Index.js 执行的。

标签: javascriptnode.jsdiscord.js

解决方案


尝试在此处添加 args,并在 index.js 中的 parentesis 中添加:execute(message, args)


推荐阅读