discord-player 6.5.0 → 6.6.0-dev
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/index.d.ts +129 -84
- package/dist/index.js +254 -392
- package/dist/index.mjs +14 -6
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Discord Player
|
|
2
2
|
|
|
3
|
-
Discord Player is a powerful framework for JavaScript and TypeScript, built on top of **[@
|
|
3
|
+
Discord Player is a powerful framework for JavaScript and TypeScript, built on top of **[@discordjs/voice](https://npm.im/@discordjs/voice)** library.
|
|
4
4
|
It provides easy set of customizable tools to develop Discord Music bots.
|
|
5
5
|
|
|
6
6
|
[](https://npmjs.com/discord-player)
|
|
@@ -73,6 +73,8 @@ $ yarn add ytdl-core
|
|
|
73
73
|
$ yarn add play-dl
|
|
74
74
|
# or
|
|
75
75
|
$ yarn add @distube/ytdl-core
|
|
76
|
+
# or
|
|
77
|
+
$ yarn add yt-stream
|
|
76
78
|
```
|
|
77
79
|
|
|
78
80
|
Done with all these? Let's write a simple music bot then.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { ListenerSignature, DefaultListener, EventEmitter, Collection, Queue, QueueStrategy } from '@discord-player/utils';
|
|
2
2
|
import * as discord_js from 'discord.js';
|
|
3
3
|
import { User, GuildVoiceChannelResolvable, VoiceChannel, StageChannel, UserResolvable, Guild, VoiceState, VoiceBasedChannel, Snowflake, Client, GuildResolvable } from 'discord.js';
|
|
4
|
-
import
|
|
5
|
-
import { Readable, Duplex, DuplexOptions } from 'stream';
|
|
4
|
+
import { Readable, Duplex } from 'stream';
|
|
6
5
|
import { RequestOptions } from 'http';
|
|
7
6
|
import * as _discord_player_equalizer from '@discord-player/equalizer';
|
|
8
7
|
import { EqualizerBand, BiquadFilters, PCMFilters, FiltersChain } from '@discord-player/equalizer';
|
|
@@ -11,7 +10,7 @@ import * as _discordjs_voice from '@discordjs/voice';
|
|
|
11
10
|
import { StreamType, AudioPlayerError, AudioResource, VoiceConnection, AudioPlayer, AudioPlayerStatus, EndBehaviorType } from '@discordjs/voice';
|
|
12
11
|
export { AudioPlayer, CreateAudioPlayerOptions, createAudioPlayer } from '@discordjs/voice';
|
|
13
12
|
import { downloadOptions } from 'ytdl-core';
|
|
14
|
-
|
|
13
|
+
export * from '@discord-player/ffmpeg';
|
|
15
14
|
|
|
16
15
|
declare class PlayerEventsEmitter<L extends ListenerSignature<L> = DefaultListener> extends EventEmitter<L> {
|
|
17
16
|
requiredEvents: Array<keyof L>;
|
|
@@ -340,12 +339,11 @@ interface VoiceEvents {
|
|
|
340
339
|
declare class StreamDispatcher extends EventEmitter<VoiceEvents> {
|
|
341
340
|
queue: GuildQueue;
|
|
342
341
|
readonly connectionTimeout: number;
|
|
343
|
-
|
|
344
|
-
|
|
342
|
+
voiceConnection: VoiceConnection;
|
|
343
|
+
audioPlayer: AudioPlayer;
|
|
345
344
|
receiver: VoiceReceiverNode;
|
|
346
345
|
channel: VoiceChannel | StageChannel;
|
|
347
346
|
audioResource?: AudioResource<Track> | null;
|
|
348
|
-
private readyLock;
|
|
349
347
|
dsp: FiltersChain;
|
|
350
348
|
/**
|
|
351
349
|
* Creates new connection object
|
|
@@ -827,6 +825,22 @@ declare class FFmpegFilterer<Meta = unknown> {
|
|
|
827
825
|
#private;
|
|
828
826
|
af: GuildQueueAudioFilters<Meta>;
|
|
829
827
|
constructor(af: GuildQueueAudioFilters<Meta>);
|
|
828
|
+
/**
|
|
829
|
+
* Set input args for FFmpeg
|
|
830
|
+
*/
|
|
831
|
+
setInputArgs(args: string[]): void;
|
|
832
|
+
/**
|
|
833
|
+
* Get input args
|
|
834
|
+
*/
|
|
835
|
+
get inputArgs(): string[];
|
|
836
|
+
/**
|
|
837
|
+
* Get encoder args
|
|
838
|
+
*/
|
|
839
|
+
get encoderArgs(): string[];
|
|
840
|
+
/**
|
|
841
|
+
* Get final ffmpeg args
|
|
842
|
+
*/
|
|
843
|
+
get args(): string[];
|
|
830
844
|
/**
|
|
831
845
|
* Create ffmpeg stream
|
|
832
846
|
* @param source The stream source
|
|
@@ -1013,7 +1027,7 @@ declare const GuildQueueEvent: {
|
|
|
1013
1027
|
/**
|
|
1014
1028
|
* Emitted when audio track is added to the queue
|
|
1015
1029
|
*/
|
|
1016
|
-
readonly audioTrackAdd: "
|
|
1030
|
+
readonly audioTrackAdd: "audioTrackAdd";
|
|
1017
1031
|
/**
|
|
1018
1032
|
* Emitted when audio tracks were added to the queue
|
|
1019
1033
|
*/
|
|
@@ -1030,6 +1044,10 @@ declare const GuildQueueEvent: {
|
|
|
1030
1044
|
* Emitted when a connection is created
|
|
1031
1045
|
*/
|
|
1032
1046
|
readonly connection: "connection";
|
|
1047
|
+
/**
|
|
1048
|
+
* Emitted when a voice connection is destroyed
|
|
1049
|
+
*/
|
|
1050
|
+
readonly connectionDestroyed: "connectionDestroyed";
|
|
1033
1051
|
/**
|
|
1034
1052
|
* Emitted when the bot is disconnected from the channel
|
|
1035
1053
|
*/
|
|
@@ -1106,6 +1124,18 @@ declare const GuildQueueEvent: {
|
|
|
1106
1124
|
* Audio player will play next track
|
|
1107
1125
|
*/
|
|
1108
1126
|
readonly willPlayTrack: "willPlayTrack";
|
|
1127
|
+
/**
|
|
1128
|
+
* Emitted when a voice channel is repopulated
|
|
1129
|
+
*/
|
|
1130
|
+
readonly channelPopulate: "channelPopulate";
|
|
1131
|
+
/**
|
|
1132
|
+
* Emitted when a queue is successfully created
|
|
1133
|
+
*/
|
|
1134
|
+
readonly queueCreate: "queueCreate";
|
|
1135
|
+
/**
|
|
1136
|
+
* Emitted when a queue is deleted
|
|
1137
|
+
*/
|
|
1138
|
+
readonly queueDelete: "queueDelete";
|
|
1109
1139
|
};
|
|
1110
1140
|
interface GuildQueueEvents<Meta = unknown> {
|
|
1111
1141
|
/**
|
|
@@ -1137,6 +1167,11 @@ interface GuildQueueEvents<Meta = unknown> {
|
|
|
1137
1167
|
* @param queue The queue where this event occurred
|
|
1138
1168
|
*/
|
|
1139
1169
|
connection: (queue: GuildQueue<Meta>) => unknown;
|
|
1170
|
+
/**
|
|
1171
|
+
* Emitted when a connection is destroyed
|
|
1172
|
+
* @param queue The queue where this event occurred
|
|
1173
|
+
*/
|
|
1174
|
+
connectionDestroyed: (queue: GuildQueue<Meta>) => unknown;
|
|
1140
1175
|
/**
|
|
1141
1176
|
* Emitted when the bot is disconnected from the channel
|
|
1142
1177
|
* @param queue The queue where this event occurred
|
|
@@ -1256,6 +1291,21 @@ interface GuildQueueEvents<Meta = unknown> {
|
|
|
1256
1291
|
* @param done Done callback
|
|
1257
1292
|
*/
|
|
1258
1293
|
willPlayTrack: (queue: GuildQueue<Meta>, track: Track<unknown>, config: StreamConfig, done: () => void) => unknown;
|
|
1294
|
+
/**
|
|
1295
|
+
* Emitted when a voice channel is populated
|
|
1296
|
+
* @param queue The queue where this event occurred
|
|
1297
|
+
*/
|
|
1298
|
+
channelPopulate: (queue: GuildQueue<Meta>) => unknown;
|
|
1299
|
+
/**
|
|
1300
|
+
* Emitted when a queue is successfully created
|
|
1301
|
+
* @param queue The queue where this event occurred
|
|
1302
|
+
*/
|
|
1303
|
+
queueCreate: (queue: GuildQueue<Meta>) => unknown;
|
|
1304
|
+
/**
|
|
1305
|
+
* Emitted when a queue is successfully deleted
|
|
1306
|
+
* @param queue The queue where this event occurred
|
|
1307
|
+
*/
|
|
1308
|
+
queueDelete: (queue: GuildQueue<Meta>) => unknown;
|
|
1259
1309
|
}
|
|
1260
1310
|
declare class GuildQueue<Meta = unknown> {
|
|
1261
1311
|
#private;
|
|
@@ -1465,6 +1515,12 @@ declare class GuildQueue<Meta = unknown> {
|
|
|
1465
1515
|
* @param options Player node initialization options
|
|
1466
1516
|
*/
|
|
1467
1517
|
play(track: TrackLike, options?: PlayerNodeInitializerOptions<Meta>): Promise<PlayerNodeInitializationResult<Meta>>;
|
|
1518
|
+
/**
|
|
1519
|
+
* Emit an event on this queue
|
|
1520
|
+
* @param event The event to emit
|
|
1521
|
+
* @param args The args for the event
|
|
1522
|
+
*/
|
|
1523
|
+
emit<K extends keyof GuildQueueEvents<Meta>>(event: K, ...args: Parameters<GuildQueueEvents<Meta>[K]>): boolean;
|
|
1468
1524
|
}
|
|
1469
1525
|
|
|
1470
1526
|
interface GuildQueueStatisticsMetadata {
|
|
@@ -1653,6 +1709,7 @@ interface PlayerNodeInitializerOptions<T> extends SearchOptions {
|
|
|
1653
1709
|
audioPlayerOptions?: ResourcePlayOptions;
|
|
1654
1710
|
afterSearch?: (result: SearchResult) => Promise<SearchResult>;
|
|
1655
1711
|
}
|
|
1712
|
+
type VoiceStateHandler = (player: Player, queue: GuildQueue, oldVoiceState: VoiceState, newVoiceState: VoiceState) => Awaited<void>;
|
|
1656
1713
|
declare class Player extends PlayerEventsEmitter<PlayerEvents> {
|
|
1657
1714
|
#private;
|
|
1658
1715
|
static readonly version: string;
|
|
@@ -1670,6 +1727,11 @@ declare class Player extends PlayerEventsEmitter<PlayerEvents> {
|
|
|
1670
1727
|
* @param {PlayerInitOptions} [options] The player init options
|
|
1671
1728
|
*/
|
|
1672
1729
|
constructor(client: Client, options?: PlayerInitOptions);
|
|
1730
|
+
/**
|
|
1731
|
+
* Override default voice state update handler
|
|
1732
|
+
* @param handler The handler callback
|
|
1733
|
+
*/
|
|
1734
|
+
onVoiceStateUpdate(handler: VoiceStateHandler): void;
|
|
1673
1735
|
debug(m: string): boolean;
|
|
1674
1736
|
/**
|
|
1675
1737
|
* Creates discord-player singleton instance.
|
|
@@ -2351,93 +2413,49 @@ declare class QueryResolver {
|
|
|
2351
2413
|
static validateURL(q: string): boolean;
|
|
2352
2414
|
}
|
|
2353
2415
|
|
|
2354
|
-
|
|
2355
|
-
|
|
2356
|
-
|
|
2357
|
-
|
|
2358
|
-
version: string | null;
|
|
2359
|
-
isStatic: boolean;
|
|
2360
|
-
}
|
|
2361
|
-
interface FFmpegOptions extends DuplexOptions {
|
|
2362
|
-
args?: string[];
|
|
2363
|
-
shell?: boolean;
|
|
2364
|
-
}
|
|
2365
|
-
declare class FFmpeg extends Duplex {
|
|
2366
|
-
/**
|
|
2367
|
-
* FFmpeg version regex
|
|
2368
|
-
*/
|
|
2369
|
-
static VersionRegex: RegExp;
|
|
2370
|
-
/**
|
|
2371
|
-
* Spawns ffmpeg process
|
|
2372
|
-
* @param options Spawn options
|
|
2373
|
-
*/
|
|
2374
|
-
static spawn({ args, shell }?: {
|
|
2375
|
-
args?: string[] | undefined;
|
|
2376
|
-
shell?: boolean | undefined;
|
|
2377
|
-
}): childProcess.ChildProcessWithoutNullStreams;
|
|
2378
|
-
/**
|
|
2379
|
-
* Check if ffmpeg is available
|
|
2380
|
-
*/
|
|
2381
|
-
static isAvailable(): boolean;
|
|
2382
|
-
/**
|
|
2383
|
-
* Safe locate ffmpeg
|
|
2384
|
-
* @param force if it should relocate the command
|
|
2385
|
-
*/
|
|
2386
|
-
static locateSafe(force?: boolean): FFmpegInfo | null | undefined;
|
|
2387
|
-
/**
|
|
2388
|
-
* Locate ffmpeg command. Throws error if ffmpeg is not found.
|
|
2389
|
-
* @param force Forcefully reload
|
|
2390
|
-
*/
|
|
2391
|
-
static locate(force?: boolean): FFmpegInfo | undefined;
|
|
2392
|
-
/**
|
|
2393
|
-
* Current FFmpeg process
|
|
2394
|
-
*/
|
|
2395
|
-
process: childProcess.ChildProcessWithoutNullStreams;
|
|
2396
|
-
/**
|
|
2397
|
-
* Create FFmpeg duplex stream
|
|
2398
|
-
* @param options Options to initialize ffmpeg
|
|
2399
|
-
* @example ```typescript
|
|
2400
|
-
* const ffmpeg = new FFmpeg({
|
|
2401
|
-
* args: [
|
|
2402
|
-
* '-analyzeduration', '0',
|
|
2403
|
-
* '-loglevel', '0',
|
|
2404
|
-
* '-f', 's16le',
|
|
2405
|
-
* '-ar', '48000',
|
|
2406
|
-
* '-ac', '2',
|
|
2407
|
-
* '-af', 'bass=g=10,acompressor'
|
|
2408
|
-
* ]
|
|
2409
|
-
* });
|
|
2410
|
-
*
|
|
2411
|
-
* const pcm = input.pipe(ffmpeg);
|
|
2412
|
-
*
|
|
2413
|
-
* pcm.pipe(fs.createWriteStream('./audio.pcm'));
|
|
2414
|
-
* ```
|
|
2415
|
-
*/
|
|
2416
|
-
constructor(options?: FFmpegOptions);
|
|
2417
|
-
get _reader(): stream.Readable;
|
|
2418
|
-
get _writer(): stream.Writable;
|
|
2419
|
-
private _copy;
|
|
2420
|
-
_destroy(err: Error | null, cb: Callback<[Error | null]>): unknown;
|
|
2421
|
-
_final(cb: Callback<[]>): void;
|
|
2422
|
-
private _cleanup;
|
|
2423
|
-
toString(): string;
|
|
2424
|
-
}
|
|
2425
|
-
declare const findFFmpeg: typeof FFmpeg.locate;
|
|
2426
|
-
|
|
2416
|
+
/**
|
|
2417
|
+
* Fetch guild queue history
|
|
2418
|
+
* @param node guild queue node resolvable
|
|
2419
|
+
*/
|
|
2427
2420
|
declare function useHistory<Meta = unknown>(node: NodeResolvable): GuildQueueHistory<Meta> | null;
|
|
2428
2421
|
|
|
2422
|
+
/**
|
|
2423
|
+
* Fetch guild queue player node
|
|
2424
|
+
* @param node Guild queue node resolvable
|
|
2425
|
+
*/
|
|
2429
2426
|
declare function usePlayer<Meta = unknown>(node: NodeResolvable): GuildQueuePlayerNode<Meta> | null;
|
|
2430
2427
|
|
|
2428
|
+
/**
|
|
2429
|
+
* Fetch guild queue
|
|
2430
|
+
* @param node Guild queue node resolvable
|
|
2431
|
+
*/
|
|
2431
2432
|
declare function useQueue<Meta = unknown>(node: NodeResolvable): GuildQueue<Meta> | null;
|
|
2432
2433
|
|
|
2433
|
-
|
|
2434
|
+
/**
|
|
2435
|
+
* Fetch main player instance
|
|
2436
|
+
* @deprecated
|
|
2437
|
+
*/
|
|
2438
|
+
declare function useMasterPlayer(): Player | null;
|
|
2439
|
+
/**
|
|
2440
|
+
* Fetch main player instance
|
|
2441
|
+
*/
|
|
2442
|
+
declare function useMainPlayer(): Player | null;
|
|
2434
2443
|
|
|
2435
|
-
type SetterFN<T, P> = (previous: P) => T;
|
|
2436
|
-
|
|
2444
|
+
type SetterFN$1<T, P> = (previous: P) => T;
|
|
2445
|
+
/**
|
|
2446
|
+
* Fetch or manipulate guild queue metadata
|
|
2447
|
+
* @param node Guild queue node resolvable
|
|
2448
|
+
*/
|
|
2449
|
+
declare function useMetadata<T = unknown>(node: NodeResolvable): readonly [() => T, (metadata: T | SetterFN$1<T, T>) => void];
|
|
2437
2450
|
|
|
2438
2451
|
interface TimelineDispatcherOptions {
|
|
2439
2452
|
ignoreFilters: boolean;
|
|
2440
2453
|
}
|
|
2454
|
+
/**
|
|
2455
|
+
* Fetch or manipulate current track
|
|
2456
|
+
* @param node Guild queue node resolvable
|
|
2457
|
+
* @param options Options for timeline dispatcher
|
|
2458
|
+
*/
|
|
2441
2459
|
declare function useTimeline(node: NodeResolvable, options?: Partial<TimelineDispatcherOptions>): {
|
|
2442
2460
|
readonly timestamp: PlayerTimestamp;
|
|
2443
2461
|
readonly volume: number;
|
|
@@ -2449,10 +2467,37 @@ declare function useTimeline(node: NodeResolvable, options?: Partial<TimelineDis
|
|
|
2449
2467
|
setPosition(time: number): Promise<boolean>;
|
|
2450
2468
|
} | null;
|
|
2451
2469
|
|
|
2470
|
+
/**
|
|
2471
|
+
* Global onAfterCreateStream handler
|
|
2472
|
+
* @param handler The handler callback
|
|
2473
|
+
*/
|
|
2452
2474
|
declare function onAfterCreateStream(handler: OnAfterCreateStreamHandler): void;
|
|
2453
2475
|
|
|
2476
|
+
/**
|
|
2477
|
+
* Global onBeforeCreateStream handler
|
|
2478
|
+
* @param handler The handler callback
|
|
2479
|
+
*/
|
|
2454
2480
|
declare function onBeforeCreateStream(handler: OnBeforeCreateStreamHandler): void;
|
|
2455
2481
|
|
|
2482
|
+
type SetterFN = (previous: number) => number;
|
|
2483
|
+
/**
|
|
2484
|
+
* Fetch or manipulate player volume
|
|
2485
|
+
* @param node Guild queue node resolvable
|
|
2486
|
+
*/
|
|
2487
|
+
declare function useVolume(node: NodeResolvable): readonly [() => number, (volume: number | SetterFN) => boolean | undefined];
|
|
2488
|
+
|
|
2489
|
+
declare const instances: Collection<string, Player>;
|
|
2490
|
+
|
|
2491
|
+
declare const getPlayer: () => Player | null;
|
|
2492
|
+
declare const getQueue: <T = unknown>(node: NodeResolvable) => GuildQueue<T> | null;
|
|
2493
|
+
interface HookDeclarationContext {
|
|
2494
|
+
getQueue: typeof getQueue;
|
|
2495
|
+
getPlayer: typeof getPlayer;
|
|
2496
|
+
instances: typeof instances;
|
|
2497
|
+
}
|
|
2498
|
+
type HookDeclaration<T extends (...args: any[]) => any> = (context: HookDeclarationContext) => T;
|
|
2499
|
+
declare function createHook<T extends HookDeclaration<(...args: any[]) => any>>(hook: T): ReturnType<T>;
|
|
2500
|
+
|
|
2456
2501
|
declare const version: string;
|
|
2457
2502
|
|
|
2458
|
-
export { AFilterGraph, AsyncQueue, AsyncQueueAcquisitionOptions, AsyncQueueEntry, AudioFilters, BaseExtractor, CreateStreamOps, DiscordPlayerQueryResultCache, EqualizerConfigurationPreset, ExtractorExecutionContext, ExtractorExecutionEvents, ExtractorExecutionFN, ExtractorExecutionResult, ExtractorInfo, ExtractorSearchContext, FFMPEG_ARGS_PIPED, FFMPEG_ARGS_STRING, FFMPEG_SRATE_REGEX,
|
|
2503
|
+
export { AFilterGraph, AsyncQueue, AsyncQueueAcquisitionOptions, AsyncQueueEntry, AudioFilters, BaseExtractor, CreateStreamOps, DiscordPlayerQueryResultCache, EqualizerConfigurationPreset, ExtractorExecutionContext, ExtractorExecutionEvents, ExtractorExecutionFN, ExtractorExecutionResult, ExtractorInfo, ExtractorSearchContext, FFMPEG_ARGS_PIPED, FFMPEG_ARGS_STRING, FFMPEG_SRATE_REGEX, FFmpegFilterer, FFmpegStreamOptions, FilterGraph, FiltersName, GuildNodeCreateOptions, GuildNodeInit, GuildNodeManager, GuildQueue, GuildQueueAFiltersCache, GuildQueueAudioFilters, GuildQueueEvent, GuildQueueEvents, GuildQueueHistory, GuildQueuePlayerNode, HookDeclaration, HookDeclarationContext, NextFunction, NodeResolvable, OnAfterCreateStreamHandler, OnBeforeCreateStreamHandler, PlayOptions, Player, PlayerEvent, PlayerEvents, PlayerEventsEmitter, PlayerInitOptions, PlayerNodeInitializationResult, PlayerNodeInitializerOptions, PlayerProgressbarOptions, PlayerSearchResult, PlayerTimestamp, PlayerTriggeredReason, Playlist, PlaylistInitData, PlaylistJSON, PostProcessedResult, QueryCache, QueryCacheOptions, QueryCacheResolverContext, QueryExtractorSearch, QueryResolver, QueryType, QueueFilters, QueueRepeatMode, RawTrackData, RawTrackInit, ResourcePlayOptions, SearchOptions, SearchQueryType, SearchResult, SearchResultData, StreamConfig, StreamDispatcher, TimeData, TimelineDispatcherOptions, Track, TrackJSON, TrackLike, TrackResolvable, TrackSource, TypeUtil, Util, VALIDATE_QUEUE_CAP, VoiceConnectConfig, VoiceEvents, VoiceReceiverNode, VoiceReceiverOptions, VoiceStateHandler, VoiceUtils, WithMetadata, createFFmpegStream, createHook, onAfterCreateStream, onBeforeCreateStream, useHistory, useMainPlayer, useMasterPlayer, useMetadata, usePlayer, useQueue, useTimeline, useVolume, version };
|