UNPKG

detritus-client-socket

Version:

A TypeScript NodeJS library to interact with Discord's Gateway

287 lines (286 loc) 8.94 kB
/// <reference types="node" /> import { URL } from 'url'; import { EventSpewer, BaseCollection, Timers } from 'detritus-utils'; import { BaseSocket } from './basesocket'; import { Bucket } from './bucket'; import { Decompressor } from './decompressor'; import { Socket as MediaSocket } from './media'; import { GatewayPackets } from './types'; import { CompressTypes, EncodingTypes, SocketStates } from './constants'; export interface SocketOptions { autoReconnect?: boolean; compress?: boolean | string; disabledEvents?: Array<string>; encoding?: string; guildSubscriptions?: boolean; identifyProperties?: IdentifyDataProperties; intents?: Array<number> | Array<string> | string | number; largeThreshold?: number; presence?: PresenceOptions; reconnectDelay?: number; reconnectMax?: number; shardCount?: number; shardId?: number; onIdentifyCheck?: () => boolean | Promise<boolean>; } export declare class Socket extends EventSpewer { readonly state: SocketStates; _heartbeat: { ack: boolean; lastAck: null | number; lastSent: null | number; interval: Timers.Interval; intervalTime: null | number; }; autoReconnect: boolean; bucket: Bucket; compress: CompressTypes; disabledEvents: Array<string>; discordTrace: Array<any>; decompressor: Decompressor | null; encoding: EncodingTypes; guildSubscriptions: boolean; identifyProperties: IdentifyDataProperties; intents: number; killed: boolean; largeThreshold: number; mediaGateways: BaseCollection<string, MediaSocket>; presence: PresenceOptions | null; reconnectDelay: number; reconnectMax: number; reconnects: number; resuming: boolean; sequence: number; sessionId: null | string; shardCount: number; shardId: number; socket: BaseSocket | null; token: string; url: URL | null; userId: null | string; onIdentifyCheck?(): boolean | Promise<boolean>; constructor(token: string, options?: SocketOptions); get closed(): boolean; get closing(): boolean; get connected(): boolean; get connecting(): boolean; setState(value: SocketStates): void; makePresence(options?: PresenceOptions): RawPresence; getIdentifyData(): IdentifyData; getResumeData(): ResumeData; cleanup(code?: string | number, reason?: string): void; connect(url?: null | string | URL): void; decode(data: any, uncompressed?: boolean): any; disconnect(code?: number, reason?: string): void; handle(data: any, uncompressed?: boolean): void; handleDispatch(name: string, data: any): void; kill(error?: Error): void; onClose(target: BaseSocket, code?: number, reason?: string): void; onError(target: BaseSocket, error: Error): void; onMessage(target: BaseSocket, data: any): void; onOpen(target: BaseSocket): void; ping(timeout?: number): Promise<any>; send(op: number, d: any, callback?: Function, direct?: boolean): void; heartbeat(fromInterval?: boolean): void; setHeartbeat(data: GatewayPackets.Hello): void; identify(): void; identifyTry(): Promise<void>; resume(): void; callConnect(channelId: string, callback?: Function): void; guildStreamCreate(guildId: string, options: { channelId: string; preferredRegion?: string; }, callback?: Function): void; lobbyConnect(lobbyId: string, lobbySecret: string, callback?: Function): void; lobbyDisconnect(lobbyId: string, callback?: Function): void; lobbyVoiceStatesUpdate(voiceStates: Array<{ lobbyId: string; selfDeaf: boolean; selfMute: boolean; }>, callback?: Function): void; requestGuildMembers(guildIds: Array<string> | string, options: { limit: number; nonce?: string; presences?: boolean; query: string; userIds?: Array<string>; }, callback?: Function): void; requestApplicationCommands(guildId: string, options: { applicationId?: string; applications: boolean; limit?: number; nonce: string; offset?: number; query?: string; }): void; setPresence(options?: PresenceOptions, callback?: Function): void; streamDelete(streamKey: string, callback?: Function): void; streamPing(streamKey: string, callback?: Function): void; streamSetPaused(streamKey: string, paused: boolean, callback?: Function): void; streamWatch(streamKey: string, callback?: Function): void; syncGuild(guildIds: Array<string>, callback?: Function): void; updateGuildSubscriptions(guildId: string, options?: { activities?: boolean; channels?: { [channelId: string]: Array<[number, number]>; }; members?: Array<string>; typing?: boolean; }, callback?: Function): void; voiceServerPing(callback?: Function): void; voiceStateUpdate(guildId?: null | string, channelId?: null | string, options?: { preferredRegion?: string; selfDeaf?: boolean; selfMute?: boolean; selfVideo?: boolean; }, callback?: Function): void; voiceConnect(guildId?: null | string, channelId?: null | string, options?: { forceMode?: string; receive?: boolean; selfDeaf?: boolean; selfMute?: boolean; selfVideo?: boolean; timeout?: number; video?: boolean; }): Promise<MediaSocket | null>; on(event: string | symbol, listener: (...args: any[]) => void): this; on(event: 'close', listener: (payload: { code: number; reason: string; }) => any): this; on(event: 'killed', listener: () => any): this; on(event: 'open', listener: (target: BaseSocket) => any): this; on(event: 'packet', listener: (packet: GatewayPackets.Packet) => any): this; on(event: 'ready', listener: () => any): this; on(event: 'socket', listener: (socket: BaseSocket) => any): this; on(event: 'state', listener: ({ state }: { state: SocketStates; }) => any): this; on(event: 'warn', listener: (error: Error) => any): this; } export interface IdentifyData { compress?: boolean; guild_subscriptions?: boolean; intents?: number; large_threshold?: number; presence?: RawPresence; properties: IdentifyDataProperties; shard?: Array<number>; token: string; } export interface IdentifyDataProperties { $browser?: string; $device?: string; $os?: string; os?: string; browser?: string; browser_user_agent?: string; browser_version?: string; client_build_number?: number; client_event_source?: string; client_version?: string; distro?: string; os_version?: string; os_arch?: string; release_channel?: string; window_manager?: string; } export interface RawPresenceActivity { application_id?: string; assets?: { large_image?: string; large_text?: string; small_image?: string; small_text?: string; }; details?: string; emoji?: { animated: boolean; id: null | string; name: string; }; flags?: number; id?: string; instance?: boolean; metadata?: { [key: string]: any; }; name: string; party?: { id?: string; size?: Array<[number, number]>; }; platform?: string; secrets?: { join?: string; match?: string; spectate?: string; }; session_id?: string; state?: string; sync_id?: string; timestamps?: { end?: number; start?: number; }; type: number; url?: string; } export interface RawPresence { activities: Array<RawPresenceActivity>; afk: boolean; since: null | number; status: string; } export interface ResumeData { seq?: null | number; session_id: null | string; token: string; } export interface PresenceActivityOptions { applicationId?: string; assets?: { largeImage?: string; largeText?: string; smallImage?: string; smallText?: string; }; details?: string; emoji?: { animated: boolean; id: null | string; name: string; }; flags?: number; metadata?: { [key: string]: any; }; name: string; party?: { id?: string; size?: Array<[number, number]>; }; platform?: string; secrets?: { join?: string; match?: string; spectate?: string; }; sessionId?: string; state?: string; syncId?: string; timestamps?: { end?: number; start?: number; }; type: number; url?: string; } export interface PresenceOptions { activities?: Array<PresenceActivityOptions>; activity?: PresenceActivityOptions; afk?: boolean; game?: PresenceActivityOptions; since?: null | number; status?: string; }