Discord. js обработка команд у меня не работает - PullRequest
0 голосов
/ 28 апреля 2020

Я создал Discord. js бот, я хотел разделить каждую команду с помощью fs , например ./commands/ping.js. Это сработало, но, почему-то, через час все вышло из строя. Я ничего не сделал с ботом, и никто не может получить доступ к коду - конечно же -. Бот работает и сообщения об ошибке нет. События, такие как готовность и сообщения, тоже работают, но команды, которые НАПРЯМУЮ В ФАЙЛАХ, не работают. Так, например, он сообщает, что «BOT запущен», но пинг. js не работает.

Вот индекс. js, но если вам нужно что-то еще для отладки, пожалуйста, комментарий!

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);
}

fs.readdir('./events/', (err, files) => {
  files.forEach(file => {
    const eventHandler = require(`./events/${file}`)
    const eventName = file.split('.')[0]
    client.on(eventName, (...args) => eventHandler(client, ...args))
  })
})

client.login(token);

Спасибо за все! ~ Акос

1 Ответ

1 голос
/ 01 мая 2020

Киан Здесь,

Это должно работать для вас :). Я попытался оставить некоторые комментарии, чтобы вы могли понять код, если у вас есть какие-либо проблемы с этим кодом, добавьте комментарий и плохо отредактируйте код, чтобы он работал

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();

fs.readdir("./commands/", (err, files) => {

    // check for errors
    if (err) console.log(err);

    // get name of file
    let jsfile = files.filter(f => f.split(".").pop() === "js");

    // if it cannot find any commands
    if (jsfile.length <= 0) {
        console.log("Couldn't find commands.");
        return;
    }

    // log the amount of files
    console.log(`Loading ${jsfile.length} commands!`);

    // load the command
    jsfile.forEach((f, i) => {
        // grab the module.exports from the file
        let props = require(`./commands/${f}`);
        console.log(`${i+1}: ${f} loaded!`);
        client.commands.set(props.name, props);
    });
});

// apparently this works so i'll leave it chief :)
fs.readdir('./events/', (err, files) => {
    files.forEach(file => {
        const eventHandler = require(`./events/${file}`)
        const eventName = file.split('.')[0]
        client.on(eventName, (...args) => eventHandler(client, ...args))
    })
})

client.login(token);

Иметь хороший ~ Unkwn

...