discord-player 6.4.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 +208 -114
- package/dist/index.js +370 -461
- package/dist/index.mjs +14 -6
- package/package.json +4 -3
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,17 +1,16 @@
|
|
|
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
|
-
import {
|
|
7
|
+
import { EqualizerBand, BiquadFilters, PCMFilters, FiltersChain } from '@discord-player/equalizer';
|
|
9
8
|
export { AF_NIGHTCORE_RATE, AF_VAPORWAVE_RATE, BASS_EQ_BANDS, FilterType as BiquadFilterType, BiquadFilters, FiltersChain, AudioFilters as PCMAudioFilters, PCMFilters, Q_BUTTERWORTH, VolumeTransformer } from '@discord-player/equalizer';
|
|
10
9
|
import * as _discordjs_voice from '@discordjs/voice';
|
|
11
|
-
import { AudioPlayerError, AudioResource, VoiceConnection, AudioPlayer, AudioPlayerStatus,
|
|
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>;
|
|
@@ -267,15 +266,15 @@ declare class Track<T = unknown> {
|
|
|
267
266
|
/**
|
|
268
267
|
* Request metadata for this track
|
|
269
268
|
*/
|
|
270
|
-
requestMetadata(): Promise<T>;
|
|
269
|
+
requestMetadata(): Promise<T | null>;
|
|
271
270
|
/**
|
|
272
271
|
* Set metadata for this track
|
|
273
272
|
*/
|
|
274
|
-
setMetadata(m: T): void;
|
|
273
|
+
setMetadata(m: T | null): void;
|
|
275
274
|
/**
|
|
276
275
|
* Metadata of this track
|
|
277
276
|
*/
|
|
278
|
-
get metadata(): T |
|
|
277
|
+
get metadata(): T | null;
|
|
279
278
|
/**
|
|
280
279
|
* If this track has metadata
|
|
281
280
|
*/
|
|
@@ -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
|
|
@@ -529,7 +527,11 @@ declare class GuildQueueHistory<Meta = unknown> {
|
|
|
529
527
|
/**
|
|
530
528
|
* Alias to [GuildQueueHistory].previous()
|
|
531
529
|
*/
|
|
532
|
-
back(): Promise<void>;
|
|
530
|
+
back(preserveCurrent?: boolean): Promise<void>;
|
|
531
|
+
/**
|
|
532
|
+
* Resize history store
|
|
533
|
+
*/
|
|
534
|
+
resize(): void;
|
|
533
535
|
}
|
|
534
536
|
|
|
535
537
|
interface AsyncQueueAcquisitionOptions {
|
|
@@ -616,6 +618,10 @@ interface PlayerTimestamp {
|
|
|
616
618
|
};
|
|
617
619
|
progress: number;
|
|
618
620
|
}
|
|
621
|
+
interface StreamConfig {
|
|
622
|
+
dispatcherConfig: CreateStreamOps;
|
|
623
|
+
playerConfig: ResourcePlayOptions;
|
|
624
|
+
}
|
|
619
625
|
declare class GuildQueuePlayerNode<Meta = unknown> {
|
|
620
626
|
#private;
|
|
621
627
|
queue: GuildQueue<Meta>;
|
|
@@ -665,6 +671,10 @@ declare class GuildQueuePlayerNode<Meta = unknown> {
|
|
|
665
671
|
* Estimated total duration of the player
|
|
666
672
|
*/
|
|
667
673
|
get estimatedDuration(): number;
|
|
674
|
+
/**
|
|
675
|
+
* Total duration of the current audio track
|
|
676
|
+
*/
|
|
677
|
+
get totalDuration(): number;
|
|
668
678
|
/**
|
|
669
679
|
* Get stream progress
|
|
670
680
|
* @param ignoreFilters Ignore filters
|
|
@@ -815,6 +825,22 @@ declare class FFmpegFilterer<Meta = unknown> {
|
|
|
815
825
|
#private;
|
|
816
826
|
af: GuildQueueAudioFilters<Meta>;
|
|
817
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[];
|
|
818
844
|
/**
|
|
819
845
|
* Create ffmpeg stream
|
|
820
846
|
* @param source The stream source
|
|
@@ -982,6 +1008,8 @@ interface GuildNodeInit<Meta = unknown> {
|
|
|
982
1008
|
bufferingTimeout: number;
|
|
983
1009
|
noEmitInsert: boolean;
|
|
984
1010
|
maxSize?: number;
|
|
1011
|
+
maxHistorySize?: number;
|
|
1012
|
+
preferBridgedMetadata: boolean;
|
|
985
1013
|
}
|
|
986
1014
|
interface VoiceConnectConfig {
|
|
987
1015
|
deaf?: boolean;
|
|
@@ -995,100 +1023,120 @@ interface PostProcessedResult {
|
|
|
995
1023
|
type OnBeforeCreateStreamHandler = (track: Track, queryType: SearchQueryType, queue: GuildQueue) => Promise<Readable | null>;
|
|
996
1024
|
type OnAfterCreateStreamHandler = (stream: Readable, queue: GuildQueue) => Promise<PostProcessedResult | null>;
|
|
997
1025
|
type PlayerTriggeredReason = 'filters' | 'normal';
|
|
998
|
-
declare
|
|
1026
|
+
declare const GuildQueueEvent: {
|
|
999
1027
|
/**
|
|
1000
1028
|
* Emitted when audio track is added to the queue
|
|
1001
1029
|
*/
|
|
1002
|
-
audioTrackAdd
|
|
1030
|
+
readonly audioTrackAdd: "audioTrackAdd";
|
|
1003
1031
|
/**
|
|
1004
1032
|
* Emitted when audio tracks were added to the queue
|
|
1005
1033
|
*/
|
|
1006
|
-
audioTracksAdd
|
|
1034
|
+
readonly audioTracksAdd: "audioTracksAdd";
|
|
1007
1035
|
/**
|
|
1008
1036
|
* Emitted when audio track is removed from the queue
|
|
1009
1037
|
*/
|
|
1010
|
-
audioTrackRemove
|
|
1038
|
+
readonly audioTrackRemove: "audioTrackRemove";
|
|
1011
1039
|
/**
|
|
1012
1040
|
* Emitted when audio tracks are removed from the queue
|
|
1013
1041
|
*/
|
|
1014
|
-
audioTracksRemove
|
|
1042
|
+
readonly audioTracksRemove: "audioTracksRemove";
|
|
1015
1043
|
/**
|
|
1016
1044
|
* Emitted when a connection is created
|
|
1017
1045
|
*/
|
|
1018
|
-
connection
|
|
1046
|
+
readonly connection: "connection";
|
|
1047
|
+
/**
|
|
1048
|
+
* Emitted when a voice connection is destroyed
|
|
1049
|
+
*/
|
|
1050
|
+
readonly connectionDestroyed: "connectionDestroyed";
|
|
1019
1051
|
/**
|
|
1020
1052
|
* Emitted when the bot is disconnected from the channel
|
|
1021
1053
|
*/
|
|
1022
|
-
disconnect
|
|
1054
|
+
readonly disconnect: "disconnect";
|
|
1023
1055
|
/**
|
|
1024
1056
|
* Emitted when the queue sends a debug info
|
|
1025
1057
|
*/
|
|
1026
|
-
debug
|
|
1058
|
+
readonly debug: "debug";
|
|
1027
1059
|
/**
|
|
1028
1060
|
* Emitted when the queue encounters error
|
|
1029
1061
|
*/
|
|
1030
|
-
error
|
|
1062
|
+
readonly error: "error";
|
|
1031
1063
|
/**
|
|
1032
1064
|
* Emitted when the voice channel is empty
|
|
1033
1065
|
*/
|
|
1034
|
-
emptyChannel
|
|
1066
|
+
readonly emptyChannel: "emptyChannel";
|
|
1035
1067
|
/**
|
|
1036
1068
|
* Emitted when the queue is empty
|
|
1037
1069
|
*/
|
|
1038
|
-
emptyQueue
|
|
1070
|
+
readonly emptyQueue: "emptyQueue";
|
|
1039
1071
|
/**
|
|
1040
1072
|
* Emitted when the audio player starts streaming audio track
|
|
1041
1073
|
*/
|
|
1042
|
-
playerStart
|
|
1074
|
+
readonly playerStart: "playerStart";
|
|
1043
1075
|
/**
|
|
1044
1076
|
* Emitted when the audio player errors while streaming audio track
|
|
1045
1077
|
*/
|
|
1046
|
-
playerError
|
|
1078
|
+
readonly playerError: "playerError";
|
|
1047
1079
|
/**
|
|
1048
1080
|
* Emitted when the audio player finishes streaming audio track
|
|
1049
1081
|
*/
|
|
1050
|
-
playerFinish
|
|
1082
|
+
readonly playerFinish: "playerFinish";
|
|
1051
1083
|
/**
|
|
1052
1084
|
* Emitted when the audio player skips current track
|
|
1053
1085
|
*/
|
|
1054
|
-
playerSkip
|
|
1086
|
+
readonly playerSkip: "playerSkip";
|
|
1055
1087
|
/**
|
|
1056
1088
|
* Emitted when the audio player is triggered
|
|
1057
1089
|
*/
|
|
1058
|
-
playerTrigger
|
|
1090
|
+
readonly playerTrigger: "playerTrigger";
|
|
1059
1091
|
/**
|
|
1060
1092
|
* Emitted when the voice state is updated. Consuming this event may disable default voice state update handler if `Player.isVoiceStateHandlerLocked()` returns `false`.
|
|
1061
1093
|
*/
|
|
1062
|
-
voiceStateUpdate
|
|
1094
|
+
readonly voiceStateUpdate: "voiceStateUpdate";
|
|
1063
1095
|
/**
|
|
1064
1096
|
* Emitted when volume is updated
|
|
1065
1097
|
*/
|
|
1066
|
-
volumeChange
|
|
1098
|
+
readonly volumeChange: "volumeChange";
|
|
1067
1099
|
/**
|
|
1068
1100
|
* Emitted when player is paused
|
|
1069
1101
|
*/
|
|
1070
|
-
playerPause
|
|
1102
|
+
readonly playerPause: "playerPause";
|
|
1071
1103
|
/**
|
|
1072
1104
|
* Emitted when player is resumed
|
|
1073
1105
|
*/
|
|
1074
|
-
playerResume
|
|
1106
|
+
readonly playerResume: "playerResume";
|
|
1075
1107
|
/**
|
|
1076
1108
|
* Biquad Filters Update
|
|
1077
1109
|
*/
|
|
1078
|
-
biquadFiltersUpdate
|
|
1110
|
+
readonly biquadFiltersUpdate: "biquadFiltersUpdate";
|
|
1079
1111
|
/**
|
|
1080
1112
|
* Equalizer Update
|
|
1081
1113
|
*/
|
|
1082
|
-
equalizerUpdate
|
|
1114
|
+
readonly equalizerUpdate: "equalizerUpdate";
|
|
1083
1115
|
/**
|
|
1084
1116
|
* DSP update
|
|
1085
1117
|
*/
|
|
1086
|
-
dspUpdate
|
|
1118
|
+
readonly dspUpdate: "dspUpdate";
|
|
1087
1119
|
/**
|
|
1088
1120
|
* Audio Filters Update
|
|
1089
1121
|
*/
|
|
1090
|
-
audioFiltersUpdate
|
|
1091
|
-
|
|
1122
|
+
readonly audioFiltersUpdate: "audioFiltersUpdate";
|
|
1123
|
+
/**
|
|
1124
|
+
* Audio player will play next track
|
|
1125
|
+
*/
|
|
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";
|
|
1139
|
+
};
|
|
1092
1140
|
interface GuildQueueEvents<Meta = unknown> {
|
|
1093
1141
|
/**
|
|
1094
1142
|
* Emitted when audio track is added to the queue
|
|
@@ -1119,6 +1167,11 @@ interface GuildQueueEvents<Meta = unknown> {
|
|
|
1119
1167
|
* @param queue The queue where this event occurred
|
|
1120
1168
|
*/
|
|
1121
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;
|
|
1122
1175
|
/**
|
|
1123
1176
|
* Emitted when the bot is disconnected from the channel
|
|
1124
1177
|
* @param queue The queue where this event occurred
|
|
@@ -1229,6 +1282,30 @@ interface GuildQueueEvents<Meta = unknown> {
|
|
|
1229
1282
|
* @param newFilters New filters
|
|
1230
1283
|
*/
|
|
1231
1284
|
audioFiltersUpdate: (queue: GuildQueue<Meta>, oldFilters: FiltersName[], newFilters: FiltersName[]) => unknown;
|
|
1285
|
+
/**
|
|
1286
|
+
* Emitted before streaming an audio track. This event can be used to modify stream config before playing a track.
|
|
1287
|
+
* Listening to this event will pause the execution of audio player until `done()` is invoked.
|
|
1288
|
+
* @param queue The queue where this event occurred
|
|
1289
|
+
* @param track The track that will be streamed
|
|
1290
|
+
* @param config Configurations for streaming
|
|
1291
|
+
* @param done Done callback
|
|
1292
|
+
*/
|
|
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;
|
|
1232
1309
|
}
|
|
1233
1310
|
declare class GuildQueue<Meta = unknown> {
|
|
1234
1311
|
#private;
|
|
@@ -1329,6 +1406,24 @@ declare class GuildQueue<Meta = unknown> {
|
|
|
1329
1406
|
* The size of this queue
|
|
1330
1407
|
*/
|
|
1331
1408
|
getSize(): number;
|
|
1409
|
+
/**
|
|
1410
|
+
* Max history size of this queue
|
|
1411
|
+
*/
|
|
1412
|
+
get maxHistorySize(): number;
|
|
1413
|
+
/**
|
|
1414
|
+
* Max history size of this queue
|
|
1415
|
+
*/
|
|
1416
|
+
getMaxHistorySize(): number;
|
|
1417
|
+
/**
|
|
1418
|
+
* Set max history size for this queue
|
|
1419
|
+
* @param size The size to set
|
|
1420
|
+
*/
|
|
1421
|
+
setMaxHistorySize(size: number): void;
|
|
1422
|
+
/**
|
|
1423
|
+
* Set max size for this queue
|
|
1424
|
+
* @param size The size to set
|
|
1425
|
+
*/
|
|
1426
|
+
setMaxSize(size: number): void;
|
|
1332
1427
|
/**
|
|
1333
1428
|
* Clear this queue
|
|
1334
1429
|
*/
|
|
@@ -1420,6 +1515,12 @@ declare class GuildQueue<Meta = unknown> {
|
|
|
1420
1515
|
* @param options Player node initialization options
|
|
1421
1516
|
*/
|
|
1422
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;
|
|
1423
1524
|
}
|
|
1424
1525
|
|
|
1425
1526
|
interface GuildQueueStatisticsMetadata {
|
|
@@ -1608,6 +1709,7 @@ interface PlayerNodeInitializerOptions<T> extends SearchOptions {
|
|
|
1608
1709
|
audioPlayerOptions?: ResourcePlayOptions;
|
|
1609
1710
|
afterSearch?: (result: SearchResult) => Promise<SearchResult>;
|
|
1610
1711
|
}
|
|
1712
|
+
type VoiceStateHandler = (player: Player, queue: GuildQueue, oldVoiceState: VoiceState, newVoiceState: VoiceState) => Awaited<void>;
|
|
1611
1713
|
declare class Player extends PlayerEventsEmitter<PlayerEvents> {
|
|
1612
1714
|
#private;
|
|
1613
1715
|
static readonly version: string;
|
|
@@ -1625,6 +1727,11 @@ declare class Player extends PlayerEventsEmitter<PlayerEvents> {
|
|
|
1625
1727
|
* @param {PlayerInitOptions} [options] The player init options
|
|
1626
1728
|
*/
|
|
1627
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;
|
|
1628
1735
|
debug(m: string): boolean;
|
|
1629
1736
|
/**
|
|
1630
1737
|
* Creates discord-player singleton instance.
|
|
@@ -1789,6 +1896,9 @@ interface GuildNodeCreateOptions<T = unknown> {
|
|
|
1789
1896
|
defaultFFmpegFilters?: FiltersName[];
|
|
1790
1897
|
bufferingTimeout?: number;
|
|
1791
1898
|
noEmitInsert?: boolean;
|
|
1899
|
+
maxSize?: number;
|
|
1900
|
+
maxHistorySize?: number;
|
|
1901
|
+
preferBridgedMetadata?: boolean;
|
|
1792
1902
|
}
|
|
1793
1903
|
type NodeResolvable = GuildQueue | GuildResolvable;
|
|
1794
1904
|
declare class GuildNodeManager<Meta = unknown> {
|
|
@@ -2286,6 +2396,7 @@ declare class QueryResolver {
|
|
|
2286
2396
|
appleMusicSongRegex: RegExp;
|
|
2287
2397
|
soundcloudTrackRegex: RegExp;
|
|
2288
2398
|
soundcloudPlaylistRegex: RegExp;
|
|
2399
|
+
youtubePlaylistRegex: RegExp;
|
|
2289
2400
|
};
|
|
2290
2401
|
/**
|
|
2291
2402
|
* Resolves the given search query
|
|
@@ -2302,93 +2413,49 @@ declare class QueryResolver {
|
|
|
2302
2413
|
static validateURL(q: string): boolean;
|
|
2303
2414
|
}
|
|
2304
2415
|
|
|
2305
|
-
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
version: string | null;
|
|
2310
|
-
isStatic: boolean;
|
|
2311
|
-
}
|
|
2312
|
-
interface FFmpegOptions extends DuplexOptions {
|
|
2313
|
-
args?: string[];
|
|
2314
|
-
shell?: boolean;
|
|
2315
|
-
}
|
|
2316
|
-
declare class FFmpeg extends Duplex {
|
|
2317
|
-
/**
|
|
2318
|
-
* FFmpeg version regex
|
|
2319
|
-
*/
|
|
2320
|
-
static VersionRegex: RegExp;
|
|
2321
|
-
/**
|
|
2322
|
-
* Spawns ffmpeg process
|
|
2323
|
-
* @param options Spawn options
|
|
2324
|
-
*/
|
|
2325
|
-
static spawn({ args, shell }?: {
|
|
2326
|
-
args?: string[] | undefined;
|
|
2327
|
-
shell?: boolean | undefined;
|
|
2328
|
-
}): childProcess.ChildProcessWithoutNullStreams;
|
|
2329
|
-
/**
|
|
2330
|
-
* Check if ffmpeg is available
|
|
2331
|
-
*/
|
|
2332
|
-
static isAvailable(): boolean;
|
|
2333
|
-
/**
|
|
2334
|
-
* Safe locate ffmpeg
|
|
2335
|
-
* @param force if it should relocate the command
|
|
2336
|
-
*/
|
|
2337
|
-
static locateSafe(force?: boolean): FFmpegInfo | null | undefined;
|
|
2338
|
-
/**
|
|
2339
|
-
* Locate ffmpeg command. Throws error if ffmpeg is not found.
|
|
2340
|
-
* @param force Forcefully reload
|
|
2341
|
-
*/
|
|
2342
|
-
static locate(force?: boolean): FFmpegInfo | undefined;
|
|
2343
|
-
/**
|
|
2344
|
-
* Current FFmpeg process
|
|
2345
|
-
*/
|
|
2346
|
-
process: childProcess.ChildProcessWithoutNullStreams;
|
|
2347
|
-
/**
|
|
2348
|
-
* Create FFmpeg duplex stream
|
|
2349
|
-
* @param options Options to initialize ffmpeg
|
|
2350
|
-
* @example ```typescript
|
|
2351
|
-
* const ffmpeg = new FFmpeg({
|
|
2352
|
-
* args: [
|
|
2353
|
-
* '-analyzeduration', '0',
|
|
2354
|
-
* '-loglevel', '0',
|
|
2355
|
-
* '-f', 's16le',
|
|
2356
|
-
* '-ar', '48000',
|
|
2357
|
-
* '-ac', '2',
|
|
2358
|
-
* '-af', 'bass=g=10,acompressor'
|
|
2359
|
-
* ]
|
|
2360
|
-
* });
|
|
2361
|
-
*
|
|
2362
|
-
* const pcm = input.pipe(ffmpeg);
|
|
2363
|
-
*
|
|
2364
|
-
* pcm.pipe(fs.createWriteStream('./audio.pcm'));
|
|
2365
|
-
* ```
|
|
2366
|
-
*/
|
|
2367
|
-
constructor(options?: FFmpegOptions);
|
|
2368
|
-
get _reader(): stream.Readable;
|
|
2369
|
-
get _writer(): stream.Writable;
|
|
2370
|
-
private _copy;
|
|
2371
|
-
_destroy(err: Error | null, cb: Callback<[Error | null]>): unknown;
|
|
2372
|
-
_final(cb: Callback<[]>): void;
|
|
2373
|
-
private _cleanup;
|
|
2374
|
-
toString(): string;
|
|
2375
|
-
}
|
|
2376
|
-
declare const findFFmpeg: typeof FFmpeg.locate;
|
|
2377
|
-
|
|
2416
|
+
/**
|
|
2417
|
+
* Fetch guild queue history
|
|
2418
|
+
* @param node guild queue node resolvable
|
|
2419
|
+
*/
|
|
2378
2420
|
declare function useHistory<Meta = unknown>(node: NodeResolvable): GuildQueueHistory<Meta> | null;
|
|
2379
2421
|
|
|
2422
|
+
/**
|
|
2423
|
+
* Fetch guild queue player node
|
|
2424
|
+
* @param node Guild queue node resolvable
|
|
2425
|
+
*/
|
|
2380
2426
|
declare function usePlayer<Meta = unknown>(node: NodeResolvable): GuildQueuePlayerNode<Meta> | null;
|
|
2381
2427
|
|
|
2428
|
+
/**
|
|
2429
|
+
* Fetch guild queue
|
|
2430
|
+
* @param node Guild queue node resolvable
|
|
2431
|
+
*/
|
|
2382
2432
|
declare function useQueue<Meta = unknown>(node: NodeResolvable): GuildQueue<Meta> | null;
|
|
2383
2433
|
|
|
2384
|
-
|
|
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;
|
|
2385
2443
|
|
|
2386
|
-
type SetterFN<T, P> = (previous: P) => T;
|
|
2387
|
-
|
|
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];
|
|
2388
2450
|
|
|
2389
2451
|
interface TimelineDispatcherOptions {
|
|
2390
2452
|
ignoreFilters: boolean;
|
|
2391
2453
|
}
|
|
2454
|
+
/**
|
|
2455
|
+
* Fetch or manipulate current track
|
|
2456
|
+
* @param node Guild queue node resolvable
|
|
2457
|
+
* @param options Options for timeline dispatcher
|
|
2458
|
+
*/
|
|
2392
2459
|
declare function useTimeline(node: NodeResolvable, options?: Partial<TimelineDispatcherOptions>): {
|
|
2393
2460
|
readonly timestamp: PlayerTimestamp;
|
|
2394
2461
|
readonly volume: number;
|
|
@@ -2400,10 +2467,37 @@ declare function useTimeline(node: NodeResolvable, options?: Partial<TimelineDis
|
|
|
2400
2467
|
setPosition(time: number): Promise<boolean>;
|
|
2401
2468
|
} | null;
|
|
2402
2469
|
|
|
2470
|
+
/**
|
|
2471
|
+
* Global onAfterCreateStream handler
|
|
2472
|
+
* @param handler The handler callback
|
|
2473
|
+
*/
|
|
2403
2474
|
declare function onAfterCreateStream(handler: OnAfterCreateStreamHandler): void;
|
|
2404
2475
|
|
|
2476
|
+
/**
|
|
2477
|
+
* Global onBeforeCreateStream handler
|
|
2478
|
+
* @param handler The handler callback
|
|
2479
|
+
*/
|
|
2405
2480
|
declare function onBeforeCreateStream(handler: OnBeforeCreateStreamHandler): void;
|
|
2406
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
|
+
|
|
2407
2501
|
declare const version: string;
|
|
2408
2502
|
|
|
2409
|
-
export { AFilterGraph, AsyncQueue, AsyncQueueAcquisitionOptions, AsyncQueueEntry, AudioFilters, BaseExtractor, 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 };
|