mirror of
https://github.com/ReVanced/revanced-bots.git
synced 2026-01-11 05:46:16 +00:00
fix(bots/discord): hanging process when disconnecting from API too many times
This commit is contained in:
@@ -37,4 +37,4 @@
|
||||
"@types/ws": "^8.5.10",
|
||||
"typed-emitter": "^2.1.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,9 @@
|
||||
},
|
||||
"useNodejsImportProtocol": {
|
||||
"level": "off"
|
||||
},
|
||||
"useNumberNamespace": {
|
||||
"level": "off"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,8 +35,6 @@ export default {
|
||||
data: new SlashCommandBuilder()
|
||||
.setName("my-command")
|
||||
.setDescription("My cool command")
|
||||
// Allowing this command to be used in DMs
|
||||
.setDMPermission(true)
|
||||
// DO NOT forget this line!
|
||||
.toJSON(),
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ withContext(on, 'disconnect', ({ api, config, logger }, reason, msg) => {
|
||||
)
|
||||
|
||||
if (api.disconnectCount >= (config.api.disconnectLimit ?? 3)) {
|
||||
console.error('Disconnected from bot API too many times')
|
||||
logger.fatal('Disconnected from bot API too many times')
|
||||
// We don't want the process hanging
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
@@ -49,19 +49,13 @@ export class ClientWebSocketManager {
|
||||
const timeout = setTimeout(() => {
|
||||
if (!this.ready) {
|
||||
this.#socket?.close(DisconnectReason.TooSlow)
|
||||
throw new Error('WebSocket connection was not readied in time')
|
||||
this._handleDisconnect(DisconnectReason.TooSlow, 'WebSocket connection was not readied in time')
|
||||
}
|
||||
}, this.timeout)
|
||||
|
||||
const errorBeforeReadyHandler = (err: Error) => {
|
||||
cleanup()
|
||||
throw err
|
||||
}
|
||||
|
||||
const closeBeforeReadyHandler = (code: number, reason: Buffer) => {
|
||||
clearTimeout(timeout)
|
||||
this._handleDisconnect(code, reason.toString())
|
||||
throw new Error('WebSocket connection closed before ready')
|
||||
cleanup()
|
||||
}
|
||||
|
||||
const readyHandler = () => {
|
||||
@@ -71,15 +65,14 @@ export class ClientWebSocketManager {
|
||||
rs()
|
||||
}
|
||||
|
||||
const socket = this.#socket
|
||||
const cleanup = () => {
|
||||
this.#socket.off('open', readyHandler)
|
||||
this.#socket.off('close', closeBeforeReadyHandler)
|
||||
this.#socket.off('error', errorBeforeReadyHandler)
|
||||
socket.off('open', readyHandler)
|
||||
socket.off('close', closeBeforeReadyHandler)
|
||||
clearTimeout(timeout)
|
||||
}
|
||||
|
||||
this.#socket.on('open', readyHandler)
|
||||
this.#socket.on('error', errorBeforeReadyHandler)
|
||||
this.#socket.on('close', closeBeforeReadyHandler)
|
||||
} catch (e) {
|
||||
rj(e)
|
||||
|
||||
@@ -25,8 +25,8 @@ const Options = {
|
||||
[
|
||||
'@semantic-release/npm',
|
||||
{
|
||||
npmPublish: false,
|
||||
}
|
||||
npmPublish: false,
|
||||
},
|
||||
],
|
||||
[
|
||||
'@semantic-release/git',
|
||||
|
||||
Reference in New Issue
Block a user