UNPKG

larakazagumo

Version:

A shoukaku wrapper with built-in queue support.

132 lines (131 loc) 5.11 kB
import { EventEmitter } from 'events'; import { CreatePlayerOptions, KazagumoOptions as KazagumoOptionsOwO, KazagumoSearchOptions, KazagumoSearchResult, PlayerMovedChannels, PlayerMovedState } from './Modules/Interfaces'; import { Connector, Node, NodeOption, Player, PlayerUpdate, Shoukaku, ShoukakuOptions, TrackExceptionEvent, TrackStuckEvent, VoiceChannelOptions, WebSocketClosedEvent } from 'shoukaku'; import { KazagumoPlayer } from './Managers/KazagumoPlayer'; import { KazagumoTrack } from './Managers/Supports/KazagumoTrack'; import { KazagumoQueue } from './Managers/Supports/KazagumoQueue'; export interface KazagumoEvents { /** * Emitted when a track is going to play. * @event Kazagumo#playerStart */ playerStart: [player: KazagumoPlayer, track: KazagumoTrack]; /** * Emitted when an error occured while resolving track. * @event Kazagumo#playerResolveError */ playerResolveError: [player: KazagumoPlayer, track: KazagumoTrack, message?: string]; /** * Emitted when a player got destroyed. * @event Kazagumo#playerDestroy */ playerDestroy: [player: KazagumoPlayer]; /** * Emitted when a player created. * @event Kazagumo#playerCreate */ playerCreate: [player: KazagumoPlayer]; /** * Emitted when a track ended. * @event Kazagumo#playerEnd */ playerEnd: [player: KazagumoPlayer]; /** * Emitted when a player got empty. * @event Kazagumo#playerEmpty */ playerEmpty: [player: KazagumoPlayer]; /** * Emitted when a player got closed. * @event Kazagumo#playerClosed */ playerClosed: [player: KazagumoPlayer, data: WebSocketClosedEvent]; /** * Emitted when a player got stuck. * @event Kazagumo#playerStuck */ playerStuck: [player: KazagumoPlayer, data: TrackStuckEvent]; /** * Emitted when a player got resumed. * @event Kazagumo#playerResumed */ playerResumed: [player: KazagumoPlayer]; /** * Emitted only when you use playerMoved plugin and when the bot moved, joined, or left voice channel. * @event Kazagumo#playerMoved */ playerMoved: [player: KazagumoPlayer, state: PlayerMovedState, channels: PlayerMovedChannels]; /** * Emitted when an exception occured. * @event Kazagumo#playerException */ playerException: [player: KazagumoPlayer, data: TrackExceptionEvent]; /** * Emitted when a player updated. * @event Kazagumo#playerUpdate */ playerUpdate: [player: KazagumoPlayer, data: PlayerUpdate]; /** * Emitted for science purpose. * @event Kazagumo#playerUpdate */ /** * Emitted when a queue updated (track added, changed, etc). * @event Kazagumo#queueUpdate */ queueUpdate: [player: KazagumoPlayer, queue: KazagumoQueue]; } export declare interface Kazagumo { on<K extends keyof KazagumoEvents>(event: K, listener: (...args: KazagumoEvents[K]) => void): this; once<K extends keyof KazagumoEvents>(event: K, listener: (...args: KazagumoEvents[K]) => void): this; off<K extends keyof KazagumoEvents>(event: K, listener: (...args: KazagumoEvents[K]) => void): this; emit(event: string | symbol, ...args: any[]): boolean; } export declare class Kazagumo extends EventEmitter { KazagumoOptions: KazagumoOptionsOwO; /** Shoukaku instance */ shoukaku: Shoukaku; /** Kazagumo players */ readonly players: Map<string, KazagumoPlayer>; /** * Initialize a Kazagumo instance. * @param KazagumoOptions KazagumoOptions * @param connector Connector * @param nodes NodeOption[] * @param options ShoukakuOptions */ constructor(KazagumoOptions: KazagumoOptionsOwO, connector: Connector, nodes: NodeOption[], options?: ShoukakuOptions); protected createVoiceConnection(newPlayerOptions: VoiceChannelOptions, kazagumoPlayerOptions: CreatePlayerOptions): Promise<Player>; /** * Create a player. * @param options CreatePlayerOptions * @returns Promise<KazagumoPlayer> */ createPlayer<T extends KazagumoPlayer>(options: CreatePlayerOptions): Promise<T | KazagumoPlayer>; /** * Get a player by guildId. * @param guildId Guild ID * @returns KazagumoPlayer | undefined */ getPlayer<T extends KazagumoPlayer>(guildId: string): (T | KazagumoPlayer) | undefined; /** * Destroy a player. * @param guildId Guild ID * @returns void */ destroyPlayer<T extends KazagumoPlayer>(guildId: string): void; /** * Get the least used node. * @param group The group where you want to get the least used nodes there. Case-sensitive, catch the error when there is no such group * @returns Node */ getLeastUsedNode(group?: string): Promise<Node>; /** * Search a track by query or uri. * @param query Query * @param options KazagumoOptions * @returns Promise<KazagumoSearchResult> */ search(query: string, options?: KazagumoSearchOptions): Promise<KazagumoSearchResult>; private buildSearch; }