Ошибка NodeJS с ботом Discord: UnhandledPromiseRejectionWarning: DiscordAPIError: невозможно отправить пустое сообщение

Итак, я пытаюсь создать бота, который быстро выполняет за меня математические вычисления с помощью команд. Мой префикс da$h, а команда - оплата. Когда я, например, пробую команду da$h payment 1 + 1, каждый раз появляется одна и та же ошибка. Кстати, я использую mathjs узел.

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

const math = require('mathjs');
const Discord = require('discord.js');

exports.run =  (client, message, args, tools) => {

if (!args[0]) return   message.channel.send('Please input a calculation,');

let resp;
try {
    resp = math.evaluate(args.join(' '));
} catch (e) {
    return   message.channel.send('Sorry, please input a valid calculation');
}
const embed = new Discord.RichEmbed()
.setColor(0xffffff)
.setTitle('Math Calculation')
.addField('Input', `\`\`\`${args.join(' ')}\`\`\``)
.addField('Output', `\`\`\`js${resp}\`\`\``)

 message.channel.send(embed);

}

Вот ошибка, которую я получаю:

узел: 18876) UnhandledPromiseRejectionWarning: DiscordAPIError: невозможно отправить пустое сообщение на item.request.gen.end (C: \ Users \ Admin \ Desktop \ coding \ node_modules \ Discord.js \ src \ client \ rest \ RequestHandlers \ Sequential.js : 71: 65) затем (C: \ Users \ Admin \ Desktop \ coding \ node_modules \ snekfetch \ src \ index.js: 204: 21) в process._tickCallback (internal / process / next_tick.js: 68: 7) (узел: 18876) UnhandledPromiseRejectionWarning: необработанное отклонение обещания. Эта ошибка возникла либо из-за вызова асинхронной функции без блока catch, либо из-за отклонения обещания, которое не было обработано с помощью .catch (). (идентификатор отклонения: 2) (узел: 18876) [DEP0018] DeprecationWarning: необработанные отклонения обещаний устарели. В будущем необработанные отклонения обещаний завершат процесс Node.js с ненулевым кодом выхода.


person Vahagn    schedule 12.09.2019    source источник
comment
Вы пробовали ставить .catch() на все message.channel.send()?   -  person Ashvin Sharma    schedule 12.09.2019


Ответы (2)


Это встроенная ошибка пустого поля.

Попробуй использовать,

console.log(args.join(' '));
console.log(resp);

Затем вы можете узнать, что такое пустое поле.

person Pasan Kalhara    schedule 17.09.2020

Вам нужно сделать message.channel.send({embed: embed}) для вставок без сообщения

person Francois S.    schedule 12.09.2019
comment
Параметр options в TextChannel.send() разрешен для быть RichEmbed или Attachment. - person slothiful; 13.09.2019