【问题标题】:ReferenceError: Discord is not defined; just when trying to kickReferenceError:未定义不和谐;就在想踢的时候
【发布时间】:2020-08-20 02:58:09
【问题描述】:

我不能用我的不和谐机器人踢任何人,因为这种情况正在发生,我知道为什么。 这是我在控制台中得到的:

ReferenceError: Discord 未定义
    在 Object.execute (C:\Users\alber\OneDrive\Escritorio\Bot discord\commands\kick.js:17:21)
    在客户端。 (C:\Users\alber\OneDrive\Escritorio\Bot discord\index.js:34:15)
    在 Client.emit (events.js:310:20)
    在 MessageCreateAction.handle (C:\Users\alber\OneDrive\Escritorio\Bot discord\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
ebsocket\handlers\MESSAGE_CREATE.js:4:32)
    在 WebSocketManager.handlePacket (C:\Users\alber\OneDrive\Escritorio\Bot discord\node_modules\discord.js\src\client\websocket\WebSocketManager.js:386:31)
    在 WebSocketShard.onPacket (C:\Users\alber\OneDrive\Escritorio\Bot discord\node_modules\discord.js\src\client\websocket\WebSocketShard.js:436:22)
    在 WebSocketShard.onMessage (C:\Users\alber\OneDrive\Escritorio\Bot discord\node_modules\discord.js\src\client\websocket\WebSocketShard.js:293:10)
    在 WebSocket.onMessage (C:\Users\alber\OneDrive\Escritorio\Bot discord\node_modules\ws\lib\event-target.js:120:16)
    在 WebSocket.emit (events.js:310:20)

这是代码的一部分:

const fs = require('fs');
const Discord = require('discord.js')
const { prefix, token } = require('./config.json');

const client = new Discord.Client();
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);
}

这是无效的踢命令(它只会在应该禁止某人时中断,其余的有效):

module.exports = {
    name: 'kick',
    description: 'kicks the mentioned user',
    execute(client, message, args){
    var kickUser = message.guild.member(message.mentions.users.first() || message.guild.members.fetch(args[0]))    
    if(!kickUser){
        return message.reply('¿no tageas a nadie? Kickear paraguayos es malardo.')
    }
    var kickReason = args.join(' ').slice(22)
    if(!message.member.hasPermission(['KICK_MEMBERS'])){
        return message.reply('enséñame los permisos que los vea yo que parece que no tienes.s')
    }
    if(kickUser.hasPermission(['KICK_MEMBERS'])){
        return message.reply('no puedes echar a alguien con permisos de admin.')
    }

    var kickEmbed = new Discord.RichEmbed()    
    .setDescription('Kick')
    .setColor('#35d4a7')
    .addField('Server', guild.name)
    .addField('Kickeado por', `@${message.author.id}`)
    .addField('A las', message.createdTimestamp)
    .addField('Motivo', kickReason)

    message.guild.member(kickUser).kick(kickReason)
    kickUser.send(kickEmbed)
    },
};

【问题讨论】:

    标签: javascript discord.js


    【解决方案1】:

    如果您没有编辑 kick 命令脚本中的任何内容,而是按原样复制到此处,那么您将缺少 Discord 类的 require 语句。

    尝试像在第一个代码块中所做的那样像 const Discord = require('discord.js'); 那样导入它。

    【讨论】:

      【解决方案2】:

      尝试在 kick 文件中定义 discord,

      
      const Discord = require("Discord")
      
      module.exports..........
      

      或者在exports.execute中调用它

      module.exports = {
          name: 'kick',
          description: 'kicks the mentioned user',
          execute(client, message, args, Discord){}
      }
      

      如果你在参数中调用它,你还必须将它应用到命令处理程序

      command.execute(client, message, args, Discord)
      

      【讨论】:

        【解决方案3】:

        正如其他答案所说,命令文件中没有定义不和谐。如果您想保存几行,只需将其放入您的 index.js 文件中即可。

        global.Discord = require('discord.js')
        

        我不确定这需要什么节点版本,但如果您使用的是 LTS,它应该可以工作。 在此错误中,该错误非常具有描述性,因此不需要堆栈溢出。尝试阅读错误并在下次解决它。它明确表示它没有定义。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-08-08
          • 1970-01-01
          • 2020-11-10
          • 2020-09-23
          • 2021-06-30
          • 2022-01-17
          • 1970-01-01
          • 2019-08-07
          相关资源
          最近更新 更多