Discord JS:UnhandledPromiseRejectionWarning:错误:Shard 的客户端准备就绪时间过长

Posted

技术标签:

【中文标题】Discord JS:UnhandledPromiseRejectionWarning:错误:Shard 的客户端准备就绪时间过长【英文标题】:Discord JS: UnhandledPromiseRejectionWarning: Error: Shard's Client took too long to become ready 【发布时间】:2020-03-25 22:23:05 【问题描述】:

我有一个不和谐的机器人,它刚刚达到 2500 个服务器,它停止登录,因为显然有 2500 个限制,然后你需要使用分片,直到现在我才听说过。

所以我按照教程在我的机器人中添加了一个 ShardManager:

const  ShardingManager  = require('discord.js');
const settings = require('./settings.json');

const manager = new ShardingManager('./bot.js',  token: settings.token );

manager.spawn();
manager.on('launch', shard => console.log(`Launched shard $shard.id`));

现在我用那个文件启动了机器人,我认为它一切正常,但后来机器人又退出了,我收到了一封来自 discord 的电子邮件,说他们会重置令牌,因为它登录了大约 1000 24 小时内的次数。

我尝试再次启动机器人并观察了输出(因为我的永久节点 js 的错误日志似乎没有工作),我得到了错误:

(node:2465) UnhandledPromiseRejectionWarning: Error: Shard 1's Client took too long to become ready.
    at Timeout.setTimeout [as _onTimeout] (/var/discord-WriterBot/node_modules/d                                                                                                iscord.js/src/sharding/Shard.js:89:31)
    at ontimeout (timers.js:498:11)
    at tryOnTimeout (timers.js:323:5)
    at Timer.listOnTimeout (timers.js:290:5)
(node:2465) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch                                                                                                 block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)

分片 2 也是如此。

我在 ShardManager 上做错了吗?我不是很了解它,但我相信我正确地遵循了说明。

如果有帮助,这是完整的机器人代码:https://github.com/cwarwicker/discord-WriterBot

谢谢。

【问题讨论】:

您找到解决问题的方法了吗? 不,它有时仍然会掉线或无法加载某些分片,所以我只是重新启动它。 不好意思,但感谢您的回复。 一样,不知道怎么解决 discord.gg 聊天中的某个人现在也在问同样的问题.. 这实际上是一个非常好的问题 【参考方案1】:

我已经解决了这个错误以及SHARDING_READY_DIED 错误很长一段时间了。为了捕获错误,您必须在分片创建过程中添加错误事件侦听器。

manager.on('shardCreate', async (shard) => 
  console.log('Shard Launched')
  shard.on('error', (error) => 
     console.error(error)
  )
)

如果分片管理器上的respawn设置为true,分片会自动重启,父进程不会崩溃。

【讨论】:

以上是关于Discord JS:UnhandledPromiseRejectionWarning:错误:Shard 的客户端准备就绪时间过长的主要内容,如果未能解决你的问题,请参考以下文章

Discord 错误错误 Discord.js 中的无效令牌

Discord 仅识别 discord.js 中的“ping”命令

错误“const Discord = require(discord.js) ^ ReferenceError: discord is not defined”

(Discord 机器人)当用户加入 Discord 服务器(discord.js)时,如何发送欢迎消息?

Discord.js 和 discord.js-commando 防止命令在特定通道中运行

使用 Discord 按钮的建议命令 Discord.JS