一段时间后 Discord Bot 崩溃了

Discord Bot crashed after some time

所以我有一个运行良好的 discord 机器人,但一段时间后(大约 30 分钟)机器人崩溃并显示以下错误消息:

Error: Unhandled "error" event. ([object Object])
   at Client.emit (events.js:186:19)
   at WebSocketConnection.onError (C:\Users\Paul\Desktop\Hype-Bot\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:374:17)
   at WebSocket.onError (C:\Users\Paul\Desktop\Hype-Bot\node_modules\ws\lib\event-target.js:128:16)
   at emitOne (events.js:116:13)
   at WebSocket.emit (events.js:211:7)
   at _receiver.cleanup (C:\Users\Paul\Desktop\Hype-Bot\node_modules\ws\lib\websocket.js:211:14)
   at Receiver.cleanup (C:\Users\Paul\Desktop\Hype-Bot\node_modules\ws\lib\receiver.js:557:13)
   at WebSocket.finalize (C:\Users\Paul\Desktop\Hype-Bot\node_modules\ws\lib\websocket.js:206:20)
   at emitOne (events.js:116:13)
   at TLSSocket.emit (events.js:211:7)
   at emitErrorNT (internal/streams/destroy.js:64:8)
   at _combinedTickCallback (internal/process/next_tick.js:138:11)
   at process._tickDomainCallback (internal/process/next_tick.js:218:9)

有人知道如何解决这个问题吗?

我一直在寻找在这类事情上需要帮助的人,瞧瞧,你来了。我也 运行 关注这个问题。当你的机器人向服务器发送一个叫做 heartbeat 的东西对他们说:i am online 时,你会发生网络错误。然后服务器会将其发回。如果它已发送并且没有从服务器返回消息,那么它将给您错误。您所要做的就是进入机器人文件夹中的以下路径 /node_modules/discord.js/src/client/websocket/WebSocketConnection.js 然后在该文件中转到如下所示的部分:

onError(error) {
    if (error && error.message === 'uWs client connection error') {
      this.reconnect();
      return;
    }
    /**
     * Emitted whenever the client's WebSocket encounters a connection error.
     * @event Client#error
     * @param {Error} error The encountered error
     */
    this.client.emit(Constants.Events.ERROR, error);
  }

我所做的是将其更改为:

onError(error) {
    if (error && error.message === 'uWs client connection error') {
      this.reconnect();
      return;
    }
    console.log("Attempting to reconnect!")
    return this.reconnect()
    /**
     * Emitted whenever the client's WebSocket encounters a connection error.
     * @event Client#error
     * @param {Error} error The encountered error
     */
    this.client.emit(Constants.Events.ERROR, error);
  }

希望对您有所帮助!

祝你好运,

赛杜斯