Бот не отвечает на команды (discord.js v12)

#node.js #discord #discord.js

Вопрос:

Я попытался выполнить тестовую команду client.on , которая сработала, но все остальное в моем обработчике команд не работает. Ничего не возвращается, я что-то делаю не так?

Проблема: Моя команда ping вообще ничего не делает.

Index.js файл

 require('dotenv').config();
const Discord = require('discord.js');
const { Client, Collection, Intents } = require('discord.js');
const config = require('./config.json');
const fs = require("fs");
const client = new Client({ disableMentions: 'everyone', partials: ['MESSAGE', 'CHANNEL', 'REACTION'], ws: { intents: Intents.ALL } });
const PREFIX = config.PREFIX;
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.commands = new Collection();



 

Файл Ping

 let config = require('../config.json');
const Discord = require('discord.js');
const { MessageEmbed } = require('discord.js');

module.exports = {
    name: 'ping',
    category: 'Info',
    description: 'Returns the bot's latency and API ping.',
    aliases: ['latency'],
    usage: 'ping',
    userperms: [],
    botperms: [],
    run: async (client, message, args) => {
        message.channel.send('🏓 Pinging....').then((msg) => {
            const pEmbed = new MessageEmbed()
                .setTitle('🏓 Pong!')
                .setColor('BLUE')
                .setDescription(
                    `Latency: ${Math.floor(
                        msg.createdTimestamp - message.createdTimestamp,
                    )}msnAPI Latency: ${client.ws.ping}ms`,
                );
            msg.edit(pEmbed);
        });
    },
};
 

Ответ №1:

Вам нужно добавить событие, которое будет срабатывать каждый раз при создании сообщения, и бот сможет его увидеть.

Примером в версии 12 может быть (с использованием message :

 client.on('message', message => {
  if (message.content.startsWith("!ping")) {
    message.channel.send('Pong!');
  }
});
 

В версии v13 message является устаревшим, поэтому используйте messageCreate :

 client.on('messageCreate', message => {
  if (message.content.startsWith("!ping")) {
    message.channel.send('Pong!');
  }
});
 

Комментарии:

1. Однако проблема не в этом, я сделал это заранее, и это сработало нормально. Моя проблема в том, что бот ничего не возвращает для module.exports

2. @ignshifts Вы имеете в виду, что не можете получить доступ к модулю в файле команды ?-?

3. Да, это ничего не дает

4. @ignshifts, что именно ничего не делает,вы пробовали if(message.content.startsWith('!ping') { client.commands.get('ping ).выполнить(клиент,сообщение, аргументы) }` или что-то еще, чтобы код в файле действительно выполнялся в событии

5. Файл ping, когда я запускаю команду, ничего не происходит. Я не говорю о создании команды для события или сообщения; Я сделал это заранее, как я уже говорил, и это сработало.