【问题标题】:NodeJS error with discord bot: UnhandledPromiseRejectionWarning: DiscordAPIError: Cannot send an empty message不和谐机器人的NodeJS错误:UnhandledPromiseRejectionWarning:DiscordAPIError:无法发送空消息
【发布时间】: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() 上?

标签: javascript discord discord.js mathjs


【解决方案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})

      【讨论】:

      猜你喜欢
      • 2021-05-05
      • 2020-01-25
      • 2019-12-10
      • 2022-11-02
      • 2021-12-15
      • 1970-01-01
      • 2020-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多