当前位置: 首页 > 知识库问答 >
问题:

NodeJS错误与discord bot:UnhandledPromisejectionWarning:DiscordAPIError:无法发送空消息

桂高义
2023-03-14

所以我想做一个机器人,通过命令为我快速计算。我的前缀是da$h,命令是payment。例如,当我尝试命令da$h payment 1 1时,每次都会出现相同的错误。我正在使用mathjsnode btw。

我曾尝试将wait-before-send函数和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)未处理的PromisejectionWarning:DiscordAPIError:无法在项处发送空html" target="_blank">消息。要求gen.end(C:\Users\Admin\Desktop\coding\node\u modules\Discord.js\src\client\rest\RequestHandlers\Sequential.js:71:65),然后在进程中(C:\Users\Admin\Desktop\coding\node\u modules\snekfetch\src\index.js:204:21)_tickCallback(internal/process/next_tick.js:68:7)(节点:18876)未处理的PromisejectionWarning:未处理的promise拒绝。此错误源于在没有catch块的情况下抛出异步函数的内部,或者拒绝使用未处理的promise。catch()。(拒绝id:2)(节点:18876)[DEP0018]弃用警告:未处理的promise拒绝已弃用。将来,未处理的promise拒绝将终止节点。具有非零退出代码的js进程。

共有3个答案

齐昊焱
2023-03-14

您需要执行消息。频道为没有消息的嵌入发送({embed:embed})

齐驰
2023-03-14

我以前通常经历过这个错误,所以我在这里给你我的选择。首先,在新的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 })

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

江阳夏
2023-03-14

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

尝试使用,

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

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

 类似资料:
  • 我的机器人不能发送嵌入或常规文本信息,代码执行,但没有什么是发送在不和谐的通道。我遵循了JDA维基的设置,我不知道我做错了什么。 机器人登录码

  • 我正在处理一封使用phpmailer类的Web邮件。问题是我收到错误“SMTP错误:无法连接到SMTP主机。邮件未发送PHP邮件错误:SMTP错误:无法连接到SMTP主机。” 我的代码是: 有人想让我知道我错在哪里,我需要你对这个问题的关注。

  • 问题内容: 我正在使用位于此处的教程:http : //addyosmani.github.io/backbone-fundamentals/#create- a-simple-web-server 并添加了以下代码。 在启动服务器后,我收到一条错误消息,指出访问时的错误,我只是想知道是否有人对这个错误了解很多,因为Express和Node对我来说是新的? 问题答案: 我认为您缺少路线,您需要定义

  • 我正在使用postman查看Twilio中发送消息api的响应格式。我使用的Api是https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Messages。我已经输入了基本的身份验证参数(帐户\u Sid和AuthToken作为用户名和密码),json请求格式为 但我得到的错误是21603,上面写着“需要一个‘发件人’电话号码”。你能告诉我

  • 当我尝试使用PHP SMTP电子邮件服务器发送电子邮件时,发生了以下错误。 邮件程序错误:SMTP错误:无法进行身份验证。 下面是我使用的代码。 } 如何修复此错误。

  • 我订阅了 在我的例子中,用户没有通过身份验证,但从这里 虽然用户目标通常意味着一个经过身份验证的用户,但它并不是严格要求的。不与经过身份验证的用户关联的WebSocket会话可以订阅用户目的地。在这种情况下,@sendtouser注释的行为与broadcast=false完全相同,即只针对发送正在处理的消息的会话。 未捕获此异常。所以我尝试使用直接将其发送给用户。 我基本上想做的是: 某些内容应该