Как мне ответить сообщением пользователю, когда он вызывает ошибку в моем боте Discord?

Я пытаюсь заставить своего бота Discord отвечать пользователю, сообщая ему, что произошла ошибка, если она произошла при выполнении команды. Я не уверен, как я должен получить свою переменную сообщения из командного сообщения в моем индексном файле из команды.

Я уже пытался использовать переменную сообщения в функции, которая запускается в моем файле index.js из командного файла, но когда она запускается, она говорит, что «сообщение» не определено. Я подозреваю, что это может быть то место, где я поставил свой .catch(). Вот код, который я использую.

//This is the area in my index that handles errors
bot.on('error', (err, message) => {
  console.error();
  message.reply("error here, possibly a rich presence");
});

//Heres the function with the .catch()
http.request(options, function(res) {
    var body = '';

    res.on('data', function (chunk) {
        body+= chunk;
    });

    res.on('end', function() {
       var jsondata = JSON.parse(body);
       var converteddate = new Date(jsondata.toTimestamp*1000)
       console.info(converteddate)
       var hours = converteddate.getHours();
       var minutes = "0" + converteddate.getMinutes();
       var finishedtime = hours + ':' + minutes.substr(-2);
        message.reply(finishedtime + " EST.")
})
}).end()
.catch(err => bot.emit('error', err, message));
}

Ожидаемый результат — запустить команду и, если есть какие-либо ошибки, уведомить о них пользователя. Спасибо за помощь!

Какова форма ввода («команда», которую он выполняет)? Если вы просто хотите напечатать ошибку, просто сделайте message.channel.send(err) в части bot.on. Но если вам нужно что-то еще, пожалуйста, добавьте детали к вашему вопросу. См. Как спросить и Минимальный пример

JackRed 28.05.2019 14:28

Он прослушивает сообщение, затем делает HTTP-запрос, а затем отвечает на сообщение его выводом.

Sbss1111 28.05.2019 22:46

в своем улове вы можете просто сделать: message.author.send("There was an error: "+err);

Mederic 29.05.2019 08:49
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
261
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Итак, во-первых, у вас возникла проблема с '}' (в конце ее не должно быть)

Затем простой пример, как поймать:

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function error() {
  await sleep(3000); // wait 5 sec for the sake of the example
  throw 'I have a problem';
}
console.info('starting')
error().catch((err) => console.info('The error:',err))

Я не уверен, что такое .end(), но я думаю, что вам это не нужно

Итак, здесь вы хотите сделать:

http.request(options, function(){
    // do something
    return 'text message'; // what you want to reply
}).catch((err) => err).then((msg) => message.reply(msg))

Вы можете получить доступ к сообщению, потому что в http.request не закрывается должным образом. Убедитесь, что вы запустили линтер и улучшите свой код, чтобы легко обнаружить лишние или незакрытые разделы в вашем коде.

что касается ответа пользователю, вы можете просто сделать:

message.author.send("There was an error: "+err);

Я бы попробовал что-то вроде этого:

http.request(options, (res) => {
    let body = '';
    res.on('data', (chunk) => {
        body+= chunk;
    });
    res.on('end', () => {
       const jsondata = JSON.parse(body);
       const converteddate = new Date(jsondata.toTimestamp*1000)
       console.info(converteddate)
       const hours = converteddate.getHours();
       const minutes = "0" + converteddate.getMinutes();
       const finishedtime = hours + ':' + minutes.substr(-2);
        message.reply(finishedtime + " EST.")
    })
}).catch(err => message.author.send("There was an error: "+err.toString()));

Если вы хотите использовать более глобальный подход, я бы создал обработчик ошибок и импортировал его. Однако я не вижу особой причины иметь общий, поскольку вы не выполняете с ним никаких конкретных действий.

Другие вопросы по теме