Files
dc-recorder/docs/superpowers/specs/2026-05-15-selfbot-performance-feature-design.md

2.8 KiB

Selfbot Performance and Feature Optimization Design

Goal

Improve vendor/discord.js-selfbot-v13 and the app's Discord client setup for lower memory use, more stable REST behavior, lower voice hot-path allocation, and better observability while preserving the existing public API used by the bot.

Scope

This is an aggressive optimization pass. It includes app-level client configuration plus internal vendor patches in REST, voice, and gateway queue handling. Changes must remain compatible with existing imports from discord.js-selfbot-v13 and the current moderation/voice flows.

App Runtime Configuration

src/index.ts will instantiate Client with explicit low-memory options instead of using new Client() defaults. Message cache will be reduced or disabled because captured messages are persisted to the database. Sweepers will remove old message/thread cache entries. REST retry/timeouts will remain conservative to avoid bursty backlog sync behavior.

Vendor REST Improvements

src/rest/APIRequest.js currently uses a module-level Undici dispatcher and rebuilds expensive headers per request. The dispatcher will become per REST manager/client so proxy or client-specific settings cannot leak across clients. The x-super-properties header will be cached and reused while client properties remain unchanged. RequestHandler will add exponential backoff with jitter for network aborts and 5xx retries.

Vendor Voice Improvements

PacketHandler will clean all speaking timeouts during stream destruction. Voice stream cleanup will clear audio and video stream maps reliably. RTP/decrypt hot-path allocation will be reduced where possible without changing emitted packet payloads or stream API behavior.

Vendor Gateway Queue Improvements

WebSocketShard will replace repeated Array.shift() dequeue with a cursor-backed queue to avoid O(n) work under high gateway send volume. send(data, important) behavior will remain compatible, including priority insertion.

Observability

Vendor internals will emit or debug useful operational data where it does not create noisy logs by default: REST retry/backoff attempts, voice stream cleanup counts, and gateway queue size/rate-limit state. The app can wire these later if needed.

Error Handling

REST retry backoff must not bypass existing rate limit handling. Captcha and MFA retry paths keep their current behavior. Voice cleanup must ignore already-closed streams and never throw during disconnect. Gateway queue changes must clear queued state on destroy exactly as before.

Testing

Run pnpm run lint, pnpm run typecheck, and pnpm run test. If runtime Discord login/voice testing cannot be performed in this environment, report that limitation explicitly and identify the manual test path: login, message capture, backlog sync, voice connect, voice record, disconnect/reconnect.