不和谐机器人的NodeJS错误:UnhandledPromiseRejectionWarning:DiscordAPIError:无法发送空消息

Posted

技术标签:

【中文标题】不和谐机器人的NodeJS错误:UnhandledPromiseRejectionWarning:DiscordAPIError:无法发送空消息【英文标题】:NodeJS error with discord bot: UnhandledPromiseRejectionWarning: DiscordAPIError: Cannot send an empty message 【发布时间】:2020-01-13 21:35:22 【问题描述】:

所以我正在尝试制作一个通过命令为我进行快速数学运算的机器人。我的前缀是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);


这是我不断收到的错误:

node: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:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。

【问题讨论】:

您是否尝试将.catch() 放在所有message.channel.send() 上? 【参考方案1】:

这是一个嵌入的空字段错误。

尝试使用,

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

然后你可以找到空字段是什么。

【讨论】:

【参考方案2】:

我通常在自己之前遇到过这个错误,所以我在这里给你我的选择。首先,在新的 DiscordJS v13 中,似乎需要一个“内容”字段(有关更多信息,请查看字段here 上的文档),因此这可以防止机器人仅通过嵌入发送消息.要检查您的 DiscordJS 版本,请转到与您的 index.js 位于同一文件夹中的 package.json 文件夹,并检查是否显示以下版本:13.0.013.0.1。如果是,请考虑在终端/命令提示符下运行以下命令:

npm uninstall discord.js

然后运行这个命令来安装一个只允许你发送嵌入的版本,比如v12.5.3

npm install discord.js@12.5.3

如果这对您不起作用,请考虑运行此代码以创建“内容”字段并发送嵌入:

... (Your rest code)
message.channel.send('Math Calculations',  embed: embed )

然后重新运行机器人。我很高兴知道这是否解决了您的问题。祝你的机器人好运!

【讨论】:

【参考方案3】:

对于没有消息的嵌入,您需要执行 message.channel.send(embed: embed)

【讨论】:

TextChannel.send()options 参数允许为RichEmbed 或Attachment 对象。

以上是关于不和谐机器人的NodeJS错误:UnhandledPromiseRejectionWarning:DiscordAPIError:无法发送空消息的主要内容,如果未能解决你的问题,请参考以下文章

不和谐机器人提到

如何使不和谐机器人将消息发送到不和谐 Node js 的特定频道机器人

我的不和谐机器人出现错误,请告诉我如何修复

不和谐的python音乐机器人(一元+的错误操作数类型:'dict')错误

运行不和谐机器人(JS)时的错误代码

我的不和谐机器人有某种角色错误