🏷️ Add typings
This commit is contained in:
parent
e90ccec8fd
commit
74b465c4a6
5 changed files with 156 additions and 25 deletions
|
@ -1,8 +1,9 @@
|
|||
{
|
||||
"name": "discord-player",
|
||||
"version": "3.0.0-beta.3",
|
||||
"version": "3.0.0-beta.4",
|
||||
"description": "Complete framework to facilitate music commands using discord.js v12",
|
||||
"main": "index.js",
|
||||
"types": "typings/index.d.ts",
|
||||
"scripts": {
|
||||
"test": "node index.js",
|
||||
"generate-docs": "node_modules/.bin/jsdoc --configure .jsdoc.json --verbose"
|
||||
|
|
|
@ -214,7 +214,9 @@ class Player extends EventEmitter {
|
|||
Object.keys(newFilters).forEach((filterName) => {
|
||||
queue.filters[filterName] = newFilters[filterName]
|
||||
})
|
||||
this._playYTDLStream(queue, true)
|
||||
this._playYTDLStream(queue, true).then(() => {
|
||||
resolve()
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -357,22 +359,17 @@ class Player extends EventEmitter {
|
|||
* client.player.pause(message);
|
||||
*/
|
||||
pause (message) {
|
||||
return new Promise((resolve, reject) => {
|
||||
// Get guild queue
|
||||
const queue = this.queues.find((g) => g.guildID === message.guild.id)
|
||||
if (!queue) return reject(new Error('Not playing'))
|
||||
// Pause the dispatcher
|
||||
queue.voiceConnection.dispatcher.pause()
|
||||
queue.paused = true
|
||||
// Resolve the guild queue
|
||||
resolve(queue.playing)
|
||||
})
|
||||
// Get guild queue
|
||||
const queue = this.queues.find((g) => g.guildID === message.guild.id)
|
||||
if (!queue) return this.emit('error', 'NotPlaying', message)
|
||||
// Pause the dispatcher
|
||||
queue.voiceConnection.dispatcher.pause()
|
||||
queue.paused = true
|
||||
}
|
||||
|
||||
/**
|
||||
* Resume the music in the server.
|
||||
* @param {Discord.Message} message
|
||||
* @returns {Queue}
|
||||
* @example
|
||||
* client.player.resume(message);
|
||||
*/
|
||||
|
@ -383,8 +380,6 @@ class Player extends EventEmitter {
|
|||
// Pause the dispatcher
|
||||
queue.voiceConnection.dispatcher.resume()
|
||||
queue.paused = false
|
||||
// Resolve the guild queue
|
||||
return queue
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -410,7 +405,6 @@ class Player extends EventEmitter {
|
|||
* Change the server volume.
|
||||
* @param {Discord.Message} message
|
||||
* @param {number} percent
|
||||
* @returns {Queue}
|
||||
* @example
|
||||
* client.player.setVolume(message, 90);
|
||||
*/
|
||||
|
@ -421,8 +415,6 @@ class Player extends EventEmitter {
|
|||
// Update volume
|
||||
queue.volume = percent
|
||||
queue.voiceConnection.dispatcher.setVolumeLogarithmic(queue.calculatedVolume / 200)
|
||||
// Return the queue
|
||||
return queue
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -439,7 +431,6 @@ class Player extends EventEmitter {
|
|||
/**
|
||||
* Clears the server queue.
|
||||
* @param {Discord.Message} message
|
||||
* @returns {Queue}
|
||||
*/
|
||||
clearQueue (message) {
|
||||
// Get guild queue
|
||||
|
@ -447,8 +438,6 @@ class Player extends EventEmitter {
|
|||
if (!queue) return this.emit('error', 'NotPlaying', message)
|
||||
// Clear queue
|
||||
queue.tracks = []
|
||||
// Return the queue
|
||||
return queue
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -501,7 +490,7 @@ class Player extends EventEmitter {
|
|||
/**
|
||||
* Shuffle the queue of the server.
|
||||
* @param {Discord.Message} message
|
||||
* @returns {}
|
||||
* @returns {Queue}
|
||||
*/
|
||||
shuffle (message) {
|
||||
// Get guild queue
|
||||
|
@ -715,8 +704,6 @@ module.exports = Player
|
|||
* @event Player#queueCreate
|
||||
* @param {Discord.Message} message
|
||||
* @param {Queue} queue
|
||||
* @param {Object} playlist
|
||||
* @param {Track} track
|
||||
*/
|
||||
|
||||
/**
|
||||
|
|
|
@ -54,7 +54,7 @@ class Queue extends EventEmitter {
|
|||
* Whether the stream is currently paused.
|
||||
* @type {boolean}
|
||||
*/
|
||||
this.paused = this.voiceConnection && this.voiceConnection.dispatcher && this.voiceConnection.dispatcher.paused;
|
||||
this.paused = this.voiceConnection && this.voiceConnection.dispatcher && this.voiceConnection.dispatcher.paused
|
||||
/**
|
||||
* Whether the repeat mode is enabled.
|
||||
* @type {boolean}
|
||||
|
|
21
tsconfig.json
Normal file
21
tsconfig.json
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"strict": true,
|
||||
"moduleResolution": "node",
|
||||
"declaration": false,
|
||||
"removeComments": false,
|
||||
"alwaysStrict": true,
|
||||
"pretty": false,
|
||||
"module": "commonjs",
|
||||
"target": "es2019",
|
||||
"lib": [
|
||||
"esnext",
|
||||
"esnext.array",
|
||||
"esnext.asynciterable",
|
||||
"esnext.intl",
|
||||
"esnext.symbol"
|
||||
],
|
||||
"sourceMap": false,
|
||||
"skipDefaultLibCheck": true
|
||||
}
|
||||
}
|
122
typings/index.d.ts
vendored
Normal file
122
typings/index.d.ts
vendored
Normal file
|
@ -0,0 +1,122 @@
|
|||
declare module 'discord-player' {
|
||||
import { EventEmitter } from 'events';
|
||||
import { Client, Collection, Message, MessageCollector, Snowflake, User, VoiceChannel, VoiceConnection } from 'discord.js';
|
||||
import { result as YtplPlaylist } from 'ytpl';
|
||||
import { Stream } from 'stream';
|
||||
|
||||
export const version: string;
|
||||
|
||||
class Util {
|
||||
static isVoiceEmpty(channel: VoiceChannel): boolean;
|
||||
static isSoundcloudLink(query: string): boolean;
|
||||
static isSpotifyLink(query: string): boolean;
|
||||
static isYTPlaylistLink(query: string): boolean;
|
||||
static isYTVideoLink(query: string): boolean;
|
||||
}
|
||||
|
||||
export class Player extends EventEmitter {
|
||||
constructor(client: Client, options?: PlayerOptions)
|
||||
|
||||
public client: Client;
|
||||
public util: Util;
|
||||
public options: PlayerOptions;
|
||||
public queues: Collection<Snowflake, Queue>;
|
||||
public filters: PlayerFilters;
|
||||
|
||||
public isPlaying(message: Message): boolean;
|
||||
public setFilters(message: Message, newFilters: Partial<Filters>): Promise<void>;
|
||||
public play(message: Message, query: string): Promise<void>;
|
||||
public pause(message: Message): void;
|
||||
public resume(message: Message): void;
|
||||
public stop(message: Message): void;
|
||||
public setVolume(message: Message, percent: number): void;
|
||||
public getQueue(message: Message): Queue;
|
||||
public clearQueue(message: Message): void;
|
||||
public skip(message: Message): void;
|
||||
public nowPlaying(message: Message): Track;
|
||||
public setRepeatMode(message: Message): boolean;
|
||||
public shuffle(message: Message): Queue;
|
||||
public remove(message: Message, trackOrPosition: Track|number): Track;
|
||||
public createProgressBar(message: Message, progressBarOptions: ProgressBarOptions): string;
|
||||
|
||||
public on<K extends keyof PlayerEvents>(event: K, listener: (...args: PlayerEvents[K]) => void): this;
|
||||
public once<K extends keyof PlayerEvents>(event: K, listener: (...args: PlayerEvents[K]) => void): this;
|
||||
public emit<K extends keyof PlayerEvents>(event: K, ...args: PlayerEvents[K]): boolean;
|
||||
}
|
||||
interface PlayerOptions {
|
||||
leaveOnEnd: boolean;
|
||||
leaveOnStop: boolean;
|
||||
leaveOnEmpty: boolean;
|
||||
leaveOnEmptyCooldown: number;
|
||||
}
|
||||
type Filters = 'bassboost' | '8D' | 'vaporwave' | 'nightcore'| 'phaser' | 'tremolo' | 'vibrato' | 'reverse' | 'treble' | 'normalizer' | 'surrounding' | 'pulsator' | 'subboost' | 'karaoke' | 'flanger' | 'gate' | 'haas' | 'mcompand';
|
||||
type FiltersStatuses = {
|
||||
[key in Filters]: boolean;
|
||||
}
|
||||
type PlayerFilters = {
|
||||
[key in Filters]: string
|
||||
}
|
||||
interface ProgressBarOptions {
|
||||
timecodes: boolean;
|
||||
}
|
||||
interface CustomPlaylist {
|
||||
tracks: Track[];
|
||||
duration: number;
|
||||
thumbnail: string;
|
||||
requestedBy: User;
|
||||
}
|
||||
type Playlist = YtplPlaylist & CustomPlaylist;
|
||||
interface PlayerEvents {
|
||||
searchResults: [Message, string, Track[]];
|
||||
searchInvalidResponse: [Message, string, Track[], string, MessageCollector];
|
||||
searchCancel: [Message, string, Track[]];
|
||||
noResults: [Message, string];
|
||||
playlistAdd: [Message, Queue, Playlist];
|
||||
trackAdd: [Message, Queue, Track];
|
||||
trackStart: [Message, Track];
|
||||
botDisconnect: [Message];
|
||||
channelEmpty: [Message, Queue];
|
||||
musicStop: [];
|
||||
queueCreate: [Message, Queue];
|
||||
queueEnd: [Message, Queue];
|
||||
error: [string, Message];
|
||||
}
|
||||
class Queue {
|
||||
constructor(guildID: string, message: Message, filters: PlayerFilters);
|
||||
|
||||
public guildID: string;
|
||||
public voiceConnection?: VoiceConnection;
|
||||
public stream: Stream;
|
||||
public tracks: Track[];
|
||||
public stopped: boolean;
|
||||
public lastSkipped: boolean;
|
||||
public volume: number;
|
||||
public paused: boolean;
|
||||
public repeatMode: boolean;
|
||||
public filters: FiltersStatuses;
|
||||
public firstMessage: Message;
|
||||
private additionalStreamTime: number;
|
||||
|
||||
// these are getters
|
||||
public playing: Track;
|
||||
public calculatedVolume: number;
|
||||
}
|
||||
class Track {
|
||||
constructor(videoData: object, user: User, player: Player);
|
||||
|
||||
public player: Player;
|
||||
public title: string;
|
||||
public description: string;
|
||||
public author: string;
|
||||
public url: string;
|
||||
public thumbnail: string;
|
||||
public duration: string;
|
||||
public views: number;
|
||||
public requestedBy: User;
|
||||
public fromPlaylist: boolean;
|
||||
|
||||
// these are getters
|
||||
public durationMS: number;
|
||||
public queue: Queue;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue