larakazagumo
Version:
A shoukaku wrapper with built-in queue support.
132 lines (131 loc) • 5.11 kB
TypeScript
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;
}