Я не вижу в предоставленном вами коде ничего, что могло бы напрямую вызвать ошибку. Скорее всего, это происходит из ваших команд.
Для каждого случая переключения используйте что-то вроде этого:
bot.commands.get('help').execute(message, args).catch(console.error)
catch
должно помочь вам найти ошибку. Если нет, добавьте .catch(console.error)
везде, где вы вызываете асин c функции (те, которые возвращают обещание) в ваших командах.
Лично я считаю, что использовать намного проще и удобочитаемее. async
функции и await
вместо then
и catch
, так что вы также можете изменить свой код на что-то вроде этого:
// commands/help.js
module.exports = {
name: 'help',
async execute(message, args) {
// note how I use await here
await message.channel.send('some useful help message');
}
};
// your main file (probably index.js or something)
bot.on('message', async (message) => {
try {
// rest of code...
switch (args[0]) {
case 'help':
// use await here as well so that the errors get caught
await bot.commands.get('help').execute(message, args);
break;
// rest of commands
}
} catch (error) {
// log all errors
console.error(error)
}
});
Для получения дополнительной информации о необработанных отклонение обещания, см. этот ответ .