Как заставить embed работать в обработчике команд в discordjs

#javascript #node.js #discord #discord.js

#javascript #node.js #Discord #discord.js

Вопрос:

Я успешно создал обработчик команд с помощью этого руководства

Но некоторые из них не работают вообще, когда я делаю это без embed, это работает, но не с embed, а скорее регистрирует сообщение об ошибке, которое я добавил, когда команда не работает Вот мои коды

server-info.js

 module.exports = {
    name: 'server',
    description: 'Display info about this server.',
    execute(message) {
        // message.channel.send(`Server name:${message.guild.name}nTotal members: ${message.guild.memberCount}`);
        const embed = new Discord.MessageEmbed()
    .setTitle(`Server Info for Bot Test`)
         message.channel.send(embed)
    }
};
 

index.js

 const fs = require('fs');
const Discord = require('discord.js')
const { prefix, token } = require('./setup.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);
        }
client.on('ready', () => {
    console.log("I have logged in!");
});
client.on('message', message =>{
    if (!message.content.startsWith(prefix) || message.author.bot) return;

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

if (!client.commands.has(command)) return;

try {
  client.commands.get(command).execute(message, args);
} catch (error) {
  console.error(error);
  message.reply('there was an error trying to execute that command!');
}
});
client.on('messageDelete', message => {     
message.channel.send(`A message by ${message.author.tag} was deleted, but we don't know by who yet.`);
});
client.on('guildMemberAdd', member => {
    const channel = member.guild.channels.cache.find(ch => ch.name === 'general');
    if (!channel) return;
    channel.send(`Welcome to the server, ${member}`);
});
client.login(token)
 

Это ошибка, которую я получаю

 ReferenceError: Discord is not defined
    at Object.execute (/storage/emulated/0/hash/commands/server-info.js:6:23)
    at Client.<anonymous> (/storage/emulated/0/hash/index.js:23:32)
    at Client.emit (events.js:315:20)
    at MessageCreateAction.handle (/storage/emulated/0/hash/node_modules/discord.js/src/client/actions/MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (/storage/emulated/0/hash/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (/storage/emulated/0/hash/node_modules/discord.js/src/client/websocket/WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (/storage/emulated/0/hash/node_modules/discord.js/src/client/websocket/WebSocketShard.js:444:22)
    at WebSocketShard.onMessage (/storage/emulated/0/hash/node_modules/discord.js/src/client/websocket/WebSocketShard.js:301:10)
    at WebSocket.onMessage (/storage/emulated/0/hash/node_modules/ws/lib/event-target.js:132:16)
    at WebSocket.emit (events.js:315:20)
 

скриншот, когда я запускаю команду в discord

Может ли кто-нибудь помочь в устранении этой проблемы? Я не могу найти проблему

Ответ №1:

Вам нужно добавить

 const Discord = require('discord.js');
 

в ваш командный файл:

 const Discord = require('discord.js');
module.exports = {
    name: 'server',
    description: 'Display info about this server.',
    execute(message) {
        // message.channel.send(`Server name:${message.guild.name}nTotal members: ${message.guild.memberCount}`);
        const embed = new Discord.MessageEmbed()
    .setTitle(`Server Info for Bot Test`)
         message.channel.send(embed)
    }
};
 

Ответ №2:

Это буквально говорит об этом в вашем коде, переменная «Discord» не определена в вашем server-info.js . Все, что вам нужно сделать, это:

 const Discord = require('discord.js');
 

Поместите это в начало вашего server-info.js