0

所以我正在尝试制作一个通过命令为我快速计算数学的机器人。我的前缀是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() 处理的承诺。(拒绝 ID:2)(节点:18876)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。

4

3 回答 3

0

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

尝试使用,

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

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

于 2020-09-17T19:05:22.183 回答
0

我通常在自己之前经历过这个错误,所以我在这里给你我的选择。首先,在新的 DiscordJS v13 中,似乎需要一个“内容”字段(有关更多信息,请在此处查看有关字段的文档),因此这可以防止机器人仅通过嵌入发送消息。要检查您的 DiscordJS 版本,请转到与您package.json位于同一文件夹中的文件夹index.js并检查是否显示以下版本: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 })

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

于 2021-09-30T19:07:03.100 回答
-1

您需要为message.channel.send({embed: embed})没有消息的嵌入做

于 2019-09-12T12:25:47.773 回答