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

未处理的promise警告。怎么修?

何超英
2023-03-14

我有一个bot,它获取用户消息内容,删除用户消息,然后向消息发送私人消息。作者,然后在embed中发送用户消息的内容。在发送几条消息后,bot将发送2条消息,而不是1条,并显示警告。知道怎么修吗?

警告:

superadmin@vps-XXXXXX:~/path$节点test.js(节点: 1059)UnHandledPromiseRejtionWarning: DiscordAPIError:未知消息在请求Handler.execute(路径/node_modules/discord.js/src/rest/RequestHandler.js: 170:25)在进程TicksAndRej的(内部/进程/task_queues.js:97: 5)(节点: 1059)未处理的promise拒绝警告:未处理的promise拒绝。这个错误要么是由于抛出一个没有捕获块的异步函数,要么是由于拒绝了一个没有用. cat()处理的promise。若要在未处理的promise拒绝上终止节点进程,请使用CLI标志--unhanded-rej的拒绝=严格的(参见https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。将来,未处理的promise拒绝将以非零退出代码终止Node.js进程。

脚本:

const discord = require('discord.js');
const client = new discord.Client;

client.on('message', message => {
if (message.author === client.user && message.channel.id !== (508728211837026325)) {
  return;
}
if (message.channel.id == (508728211837026325)) {
  message.delete();
  message.author.send("Success!");
  message.channel.send({
    "embed": {
      "color": 61183,
      "description": message.content + "\n\nCreated by: " + "<@" + message.author.id + ">",
      "author": {
        "icon_url": "imgururl;",
        "url": "imgururl",
        "name": "test",
      },
      timestamp: new Date()
    }
  })
}
})
client.login('token');

共有2个答案

孔驰
2023-03-14

机器人正在被自己激活。

if (message.author === client.user && message.channel.id !== (508728211837026325))

# should probably be
if (message.author === client.user || message.channel.id !== (508728211837026325))

另一方面,通道id是一个twitter雪花,它可以像uint64一样大,对于javascript来说,这意味着你不能处理太大的id,因为限制9007199254740991,所以你应该使用字符串版本。

if (message.channel.id === "508728211837026325")
彭衡
2023-03-14

您描述的行为可能是由于您的bot同时启动了两次。事实上,如果您的机器人启动两次:

  • 您将收到未知消息警告,因为该消息已经被机器人的另一个实例删除。
  • 机器人发送信息两次。

阅读这篇文章,它会解决你的问题。

 类似资料:
  • 我得到这个错误- (节点:18420)未处理的PromisejectionWarning:TypeError:无法读取未定义的属性“name” (节点:18420)未处理的PromisejectionWarning:未处理的promise拒绝。此错误源于在没有catch块的情况下抛出异步函数的内部,或者拒绝使用未处理的promise。catch()。要在未处理的promise拒绝时终止节点进程,请

  • 我试图让Fastif-cookie工作在我的NestJS项目,我收到以下错误: (节点: 38325)未处理的promise拒绝警告:类型错误:无法读取未定义的属性“装饰请求” 未处理的PromisejectionWarning:未处理的promise拒绝。此错误源于在没有catch块的情况下抛出异步函数的内部,或者拒绝使用未处理的promise。catch()。要在未处理的promise拒绝时终

  • 当下面的代码错误(拒绝其promise)时,我会收到警告。HTTP函数似乎错误很好。我想,本身一定发生了什么事情,这在某种程度上避免了try-catch。 有人能开导我吗?(这是在几次尝试改变事情以使其工作之后。) NodeJS 11.13.0

  • 我试图执行下面的代码,但它在管道中抛出未处理的promise拒绝警告。在本地,它工作正常,没有任何问题。 日志错误:找不到进程“3224”。(节点:836)未处理的PromisejectionWarning:#(节点:836)未处理的PromisejectionWarning:未处理的promise拒绝。此错误源于在没有catch块的情况下抛出异步函数的内部,或者拒绝使用未处理的promise。c

  • 本文档介绍 DM 中各主要告警信息的处理方法。 高可用告警 DM_worker_offline 存在离线的 DM-worker 超过一小时会触发该告警。在高可用架构下,该告警可能不会直接中断任务,但是会提升任务中断的风险。处理告警可以查看对应 DM-worker 节点的工作状态,检查是否连通,并通过日志排查错误。 DM_DDL_error 处理 shard DDL 时出现错误,此时需要参考 DM

  • 我一直得到“UnhandledPromiseRejectionWarning:UnhandledPromiseRejection.此错误源于在没有catch块的异步函数内部抛出,或拒绝未用.catch()处理的Promission.(拒绝ID:2)” 我已经处理了所有的承诺,但错误仍然存在