Rework pacing, pause poll, add user search, voice overview, and DM list
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user