diff --git a/src/websocket/discord/shared.ts b/src/websocket/discord/shared.ts index c90ae4c..0a9345e 100644 --- a/src/websocket/discord/shared.ts +++ b/src/websocket/discord/shared.ts @@ -1,3 +1,4 @@ +import type { InternalRuntimeConfig, InternalRuntimeConfigHTTP } from '../../client/base'; import type { Awaitable, DeepPartial, Logger } from '../../common'; import type { APIGatewayBotInfo, @@ -73,6 +74,8 @@ export interface WorkerManagerOptions extends Omit>; + + getRC?(): Awaitable; } export interface ShardData { diff --git a/src/websocket/discord/workermanager.ts b/src/websocket/discord/workermanager.ts index 3a27c26..d2577fd 100644 --- a/src/websocket/discord/workermanager.ts +++ b/src/websocket/discord/workermanager.ts @@ -46,7 +46,7 @@ export class WorkerManager extends Map< return chunks; } - options: PickPartial, 'adapter' | 'handleWorkerMessage' | 'handlePayload'>; + options: PickPartial, 'adapter' | 'handleWorkerMessage' | 'handlePayload' | 'getRC'>; debugger?: Logger; connectQueue!: ConnectQueue; workerQueue: (() => void)[] = []; @@ -553,9 +553,11 @@ export class WorkerManager extends Map< } async start() { - const rc = await BaseClient.prototype.getRC(); + const rc = + ((await this.options.getRC?.()) as InternalRuntimeConfig | undefined) ?? + (await BaseClient.prototype.getRC()); - this.options.debug ||= rc.debug; + this.options.debug ||= rc.debug ?? false; this.options.intents ||= rc.intents ?? 0; this.options.token ??= rc.token; this.rest ??= new ApiHandler({