🏷️ 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",
|
"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",
|
"description": "Complete framework to facilitate music commands using discord.js v12",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
|
"types": "typings/index.d.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "node index.js",
|
"test": "node index.js",
|
||||||
"generate-docs": "node_modules/.bin/jsdoc --configure .jsdoc.json --verbose"
|
"generate-docs": "node_modules/.bin/jsdoc --configure .jsdoc.json --verbose"
|
||||||
|
|
|
@ -214,7 +214,9 @@ class Player extends EventEmitter {
|
||||||
Object.keys(newFilters).forEach((filterName) => {
|
Object.keys(newFilters).forEach((filterName) => {
|
||||||
queue.filters[filterName] = newFilters[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);
|
* client.player.pause(message);
|
||||||
*/
|
*/
|
||||||
pause (message) {
|
pause (message) {
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
// Get guild queue
|
// Get guild queue
|
||||||
const queue = this.queues.find((g) => g.guildID === message.guild.id)
|
const queue = this.queues.find((g) => g.guildID === message.guild.id)
|
||||||
if (!queue) return reject(new Error('Not playing'))
|
if (!queue) return this.emit('error', 'NotPlaying', message)
|
||||||
// Pause the dispatcher
|
// Pause the dispatcher
|
||||||
queue.voiceConnection.dispatcher.pause()
|
queue.voiceConnection.dispatcher.pause()
|
||||||
queue.paused = true
|
queue.paused = true
|
||||||
// Resolve the guild queue
|
|
||||||
resolve(queue.playing)
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resume the music in the server.
|
* Resume the music in the server.
|
||||||
* @param {Discord.Message} message
|
* @param {Discord.Message} message
|
||||||
* @returns {Queue}
|
|
||||||
* @example
|
* @example
|
||||||
* client.player.resume(message);
|
* client.player.resume(message);
|
||||||
*/
|
*/
|
||||||
|
@ -383,8 +380,6 @@ class Player extends EventEmitter {
|
||||||
// Pause the dispatcher
|
// Pause the dispatcher
|
||||||
queue.voiceConnection.dispatcher.resume()
|
queue.voiceConnection.dispatcher.resume()
|
||||||
queue.paused = false
|
queue.paused = false
|
||||||
// Resolve the guild queue
|
|
||||||
return queue
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -410,7 +405,6 @@ class Player extends EventEmitter {
|
||||||
* Change the server volume.
|
* Change the server volume.
|
||||||
* @param {Discord.Message} message
|
* @param {Discord.Message} message
|
||||||
* @param {number} percent
|
* @param {number} percent
|
||||||
* @returns {Queue}
|
|
||||||
* @example
|
* @example
|
||||||
* client.player.setVolume(message, 90);
|
* client.player.setVolume(message, 90);
|
||||||
*/
|
*/
|
||||||
|
@ -421,8 +415,6 @@ class Player extends EventEmitter {
|
||||||
// Update volume
|
// Update volume
|
||||||
queue.volume = percent
|
queue.volume = percent
|
||||||
queue.voiceConnection.dispatcher.setVolumeLogarithmic(queue.calculatedVolume / 200)
|
queue.voiceConnection.dispatcher.setVolumeLogarithmic(queue.calculatedVolume / 200)
|
||||||
// Return the queue
|
|
||||||
return queue
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -439,7 +431,6 @@ class Player extends EventEmitter {
|
||||||
/**
|
/**
|
||||||
* Clears the server queue.
|
* Clears the server queue.
|
||||||
* @param {Discord.Message} message
|
* @param {Discord.Message} message
|
||||||
* @returns {Queue}
|
|
||||||
*/
|
*/
|
||||||
clearQueue (message) {
|
clearQueue (message) {
|
||||||
// Get guild queue
|
// Get guild queue
|
||||||
|
@ -447,8 +438,6 @@ class Player extends EventEmitter {
|
||||||
if (!queue) return this.emit('error', 'NotPlaying', message)
|
if (!queue) return this.emit('error', 'NotPlaying', message)
|
||||||
// Clear queue
|
// Clear queue
|
||||||
queue.tracks = []
|
queue.tracks = []
|
||||||
// Return the queue
|
|
||||||
return queue
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -501,7 +490,7 @@ class Player extends EventEmitter {
|
||||||
/**
|
/**
|
||||||
* Shuffle the queue of the server.
|
* Shuffle the queue of the server.
|
||||||
* @param {Discord.Message} message
|
* @param {Discord.Message} message
|
||||||
* @returns {}
|
* @returns {Queue}
|
||||||
*/
|
*/
|
||||||
shuffle (message) {
|
shuffle (message) {
|
||||||
// Get guild queue
|
// Get guild queue
|
||||||
|
@ -715,8 +704,6 @@ module.exports = Player
|
||||||
* @event Player#queueCreate
|
* @event Player#queueCreate
|
||||||
* @param {Discord.Message} message
|
* @param {Discord.Message} message
|
||||||
* @param {Queue} queue
|
* @param {Queue} queue
|
||||||
* @param {Object} playlist
|
|
||||||
* @param {Track} track
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -54,7 +54,7 @@ class Queue extends EventEmitter {
|
||||||
* Whether the stream is currently paused.
|
* Whether the stream is currently paused.
|
||||||
* @type {boolean}
|
* @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.
|
* Whether the repeat mode is enabled.
|
||||||
* @type {boolean}
|
* @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