Как создать обработку ошибок верхнего уровня в Discord.js ⇐ Javascript
-
Гость
Как создать обработку ошибок верхнего уровня в Discord.js
Иногда у бота возникает неожиданная ошибка, хотя бот уже работает, и у меня нет журнала каждый момент. Из-за этого я не знаю, откуда возникает ошибка. Поэтому я хочу реализовать обработку ошибок верхнего уровня, чтобы каждый раз, когда у бота возникает ошибка, он не выходил из строя и мог регистрировать ошибку в канале.
Чтобы сделать код более чистым и не повторять одно и то же, я хочу сохранить часть обработки ошибок на уровне обработчика команд, поскольку я хочу создать универсальный формат обработки ошибок без редактирования файла нижнего уровня ( команды, выполняемые обработчиком).
Ниже приведен мой код, часть await commandFile.run — это код, который обработчик выполняет командный файл. Я пробовал использовать метод catch, но он не работает, если при выполнении команды возникают ошибки.
client.on('interactionCreate', асинхронное взаимодействие => { если (interaction.isChatInputCommand()) { пусть args = []; for (i = 0; я { console.log('Ошибка выполнения:' + ошибка) }) console.log(`${interaction.member ?action.member.user.tag :action.user.tag} выполнила команду (косая черта): ${interaction}`); } если (interaction.isContextMenuCommand()) { пусть CommandFile = client.commands.get(interaction.commandName); if (commandFile) await CommandFile.run(client, Interaction, DefaultFooter, LocalMap); console.log(`${interaction.member ?action.member.user.tag :action.user.tag} выполнила команду (Контекст): ${interaction.commandName}`); } }) Для демонстрации ниже я также включил командный файл, который я намеренно использовал для возникновения ошибки:
const { SlashCommandBuilder } = require('discord.js'); модуль.экспорт = { запустить: async (клиент, взаимодействие, аргументы, DefaultFooter, LocalMap) => { взаимодействие.ответ({содержание: 'тест'}); взаимодействие.ответ({содержание: 'тест'}); возвращаться; }, конфигурация: новый SlashCommandBuilder() .setName('тест') .setDescription('тестирование') .setDefaultPermission(ложь) }
Иногда у бота возникает неожиданная ошибка, хотя бот уже работает, и у меня нет журнала каждый момент. Из-за этого я не знаю, откуда возникает ошибка. Поэтому я хочу реализовать обработку ошибок верхнего уровня, чтобы каждый раз, когда у бота возникает ошибка, он не выходил из строя и мог регистрировать ошибку в канале.
Чтобы сделать код более чистым и не повторять одно и то же, я хочу сохранить часть обработки ошибок на уровне обработчика команд, поскольку я хочу создать универсальный формат обработки ошибок без редактирования файла нижнего уровня ( команды, выполняемые обработчиком).
Ниже приведен мой код, часть await commandFile.run — это код, который обработчик выполняет командный файл. Я пробовал использовать метод catch, но он не работает, если при выполнении команды возникают ошибки.
client.on('interactionCreate', асинхронное взаимодействие => { если (interaction.isChatInputCommand()) { пусть args = []; for (i = 0; я { console.log('Ошибка выполнения:' + ошибка) }) console.log(`${interaction.member ?action.member.user.tag :action.user.tag} выполнила команду (косая черта): ${interaction}`); } если (interaction.isContextMenuCommand()) { пусть CommandFile = client.commands.get(interaction.commandName); if (commandFile) await CommandFile.run(client, Interaction, DefaultFooter, LocalMap); console.log(`${interaction.member ?action.member.user.tag :action.user.tag} выполнила команду (Контекст): ${interaction.commandName}`); } }) Для демонстрации ниже я также включил командный файл, который я намеренно использовал для возникновения ошибки:
const { SlashCommandBuilder } = require('discord.js'); модуль.экспорт = { запустить: async (клиент, взаимодействие, аргументы, DefaultFooter, LocalMap) => { взаимодействие.ответ({содержание: 'тест'}); взаимодействие.ответ({содержание: 'тест'}); возвращаться; }, конфигурация: новый SlashCommandBuilder() .setName('тест') .setDescription('тестирование') .setDefaultPermission(ложь) }
Мобильная версия