Rework pacing, pause poll, add user search, voice overview, and DM list

This commit is contained in:
Fisto
2026-09-13 15:47:43 +02:00
parent 32201b34cf
commit 4e1046fae7
13 changed files with 539 additions and 81 deletions
+26
View File
@@ -31,6 +31,7 @@ export class CoreClient {
private nextId = 1;
private readonly pending = new Map<number, Pending>();
private readonly listeners = new Set<CoreEventListener>();
private readonly closeListeners = new Set<() => void>();
private constructor(private readonly socket: net.Socket) {
socket.setEncoding("utf-8");
@@ -52,6 +53,8 @@ export class CoreClient {
request.reject(new CoreError("DISCONNECTED", "core disconnected"));
}
this.pending.clear();
for (const listener of this.closeListeners) listener();
});
socket.on("error", () => socket.destroy());
@@ -109,6 +112,11 @@ export class CoreClient {
return () => this.listeners.delete(listener);
}
onClose(listener: () => void) {
this.closeListeners.add(listener);
return () => this.closeListeners.delete(listener);
}
/* Convenience actions */
async getState() {
@@ -146,6 +154,24 @@ export class CoreClient {
});
}
async voiceOverview(guildId: string) {
return this.request("voice.overview", { guildId });
}
async userSearch(query: string, guildId?: string, limit?: number) {
return this.request("user.search", {
query,
...(guildId ? { guildId } : {}),
...(limit ? { limit } : {})
});
}
async dmList(limit?: number) {
return this.request("dm.list", {
...(limit ? { limit } : {})
});
}
close() {
this.socket.destroy();
}