discord-player 7.0.0-dev.1 → 7.0.0-dev.3
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 +19 -23
- package/dist/index.d.ts +27 -122
- package/dist/index.js +296 -339
- package/dist/index.mjs +0 -8
- package/package.json +7 -8
package/README.md
CHANGED
|
@@ -86,28 +86,6 @@ $ npm install --save ffmpeg-binaries
|
|
|
86
86
|
|
|
87
87
|
> Use `FFMPEG_PATH` environment variable to load ffmpeg from custom path.
|
|
88
88
|
|
|
89
|
-
#### Streaming Library
|
|
90
|
-
|
|
91
|
-
**The following method is deprecated and will be removed in the future. Please switch to [discord-player-youtubei](https://npmjs.com/discord-player-youtubei).**
|
|
92
|
-
|
|
93
|
-
**Not recommended**:
|
|
94
|
-
|
|
95
|
-
YouTube streaming is not supported without installing one of the following package. If you want to add support for YouTube playback, you need to install a streaming library. This step is not needed if you do not plan on using youtube source.
|
|
96
|
-
|
|
97
|
-
```bash
|
|
98
|
-
$ npm install --save youtube-ext
|
|
99
|
-
# or
|
|
100
|
-
$ npm install --save play-dl
|
|
101
|
-
# or
|
|
102
|
-
$ npm install --save @distube/ytdl-core
|
|
103
|
-
# or
|
|
104
|
-
$ npm install --save yt-stream
|
|
105
|
-
# or
|
|
106
|
-
$ npm install --save ytdl-core
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
Once you have completed these installations, let's proceed with writing a simple music bot.
|
|
110
|
-
|
|
111
89
|
### Setup
|
|
112
90
|
|
|
113
91
|
Let's create a main player instance. This instance handles and keeps track of all the queues and its components.
|
|
@@ -147,13 +125,31 @@ const { Player, createErisCompat } = require('discord-player');
|
|
|
147
125
|
const player = new Player(createErisCompat(client));
|
|
148
126
|
```
|
|
149
127
|
|
|
128
|
+
Before you add the command, make sure to provide the context to the commands if you wish to use discord-player's hooks (like `useMainPlayer`).
|
|
129
|
+
|
|
130
|
+
### Before
|
|
131
|
+
|
|
132
|
+
```js index.js
|
|
133
|
+
// execute the command
|
|
134
|
+
await command.execute(interaction);
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### After
|
|
138
|
+
|
|
139
|
+
```js index.js
|
|
140
|
+
// execute the command
|
|
141
|
+
await player.context.provide({ guild: interaction.guild }, () => command.execute(interaction));
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
This allows discord-player to automatically know the current guild and the queue, resulting in cleaner code and seamless integration. This eradicates the need to pass the player instance to the command or use hacks like `client.player = player`.
|
|
145
|
+
|
|
150
146
|
Let's move on to the command part. You can define the command as per your requirements. We will only focus on the command part:
|
|
151
147
|
|
|
152
148
|
```js play.js
|
|
153
149
|
const { useMainPlayer } = require('discord-player');
|
|
154
150
|
|
|
155
151
|
export async function execute(interaction) {
|
|
156
|
-
const player = useMainPlayer();
|
|
152
|
+
const player = useMainPlayer(); // get player instance
|
|
157
153
|
const channel = interaction.member.voice.channel;
|
|
158
154
|
if (!channel) return interaction.reply('You are not connected to a voice channel!'); // make sure we have a voice channel
|
|
159
155
|
const query = interaction.options.getString('query', true); // we need input/query to play
|
package/dist/index.d.ts
CHANGED
|
@@ -7,12 +7,10 @@ import { EqualizerBand, BiquadFilters, PCMFilters, FiltersChain } from '@discord
|
|
|
7
7
|
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';
|
|
8
8
|
import * as stream from 'stream';
|
|
9
9
|
import { Readable, Duplex } from 'stream';
|
|
10
|
-
import * as _discord_player_extractor from '@discord-player/extractor';
|
|
11
|
-
import { BridgeProvider } from '@discord-player/extractor';
|
|
12
10
|
import { RequestOptions } from 'http';
|
|
13
11
|
import { StreamType, AudioPlayerError, AudioResource, VoiceConnection, AudioPlayer, AudioPlayerStatus } from 'discord-voip';
|
|
14
12
|
export { AudioPlayer, CreateAudioPlayerOptions, JoinConfig, JoinVoiceChannelOptions, createAudioPlayer, getVoiceConnection, getVoiceConnections, joinVoiceChannel } from 'discord-voip';
|
|
15
|
-
import {
|
|
13
|
+
import { BridgeProvider } from '@discord-player/extractor';
|
|
16
14
|
import { FFmpegLib } from '@discord-player/ffmpeg';
|
|
17
15
|
export * from '@discord-player/ffmpeg';
|
|
18
16
|
|
|
@@ -1808,27 +1806,19 @@ declare function useContext<T = unsafe>(context: Context<T>): T | undefined;
|
|
|
1808
1806
|
* @param node guild queue node resolvable
|
|
1809
1807
|
*/
|
|
1810
1808
|
declare function useHistory<Meta = unknown>(): GuildQueueHistory<Meta> | null;
|
|
1811
|
-
declare function useHistory<Meta = unknown>(node: NodeResolvable): GuildQueueHistory<Meta> | null;
|
|
1812
1809
|
|
|
1813
1810
|
/**
|
|
1814
1811
|
* Fetch guild queue player node
|
|
1815
1812
|
* @param node Guild queue node resolvable
|
|
1816
1813
|
*/
|
|
1817
1814
|
declare function usePlayer<Meta = unknown>(): GuildQueuePlayerNode<Meta> | null;
|
|
1818
|
-
declare function usePlayer<Meta = unknown>(node: NodeResolvable): GuildQueuePlayerNode<Meta> | null;
|
|
1819
1815
|
|
|
1820
1816
|
/**
|
|
1821
|
-
* Fetch guild queue
|
|
1822
|
-
* @param node Guild queue node resolvable
|
|
1817
|
+
* Fetch guild queue.
|
|
1818
|
+
* @param node Guild queue node resolvable. Defaults to inferred guild from context.
|
|
1823
1819
|
*/
|
|
1824
1820
|
declare function useQueue<Meta = unknown>(): GuildQueue<Meta> | null;
|
|
1825
|
-
declare function useQueue<Meta = unknown>(node: NodeResolvable): GuildQueue<Meta> | null;
|
|
1826
1821
|
|
|
1827
|
-
/**
|
|
1828
|
-
* Fetch main player instance
|
|
1829
|
-
* @deprecated
|
|
1830
|
-
*/
|
|
1831
|
-
declare function useMasterPlayer(): Player;
|
|
1832
1822
|
/**
|
|
1833
1823
|
* Fetch main player instance
|
|
1834
1824
|
*/
|
|
@@ -1841,17 +1831,12 @@ type MetadataDispatch<T> = readonly [() => T, (metadata: T | SetterFN$1<T, T>) =
|
|
|
1841
1831
|
* @param node Guild queue node resolvable
|
|
1842
1832
|
*/
|
|
1843
1833
|
declare function useMetadata<T = unknown>(): MetadataDispatch<T>;
|
|
1844
|
-
declare function useMetadata<T = unknown>(node: NodeResolvable): MetadataDispatch<T>;
|
|
1845
1834
|
|
|
1846
1835
|
interface TimelineDispatcherOptions {
|
|
1847
1836
|
ignoreFilters: boolean;
|
|
1837
|
+
node: NodeResolvable;
|
|
1848
1838
|
}
|
|
1849
|
-
|
|
1850
|
-
* Fetch or manipulate current track
|
|
1851
|
-
* @param node Guild queue node resolvable
|
|
1852
|
-
* @param options Options for timeline dispatcher
|
|
1853
|
-
*/
|
|
1854
|
-
declare function useTimeline(node?: NodeResolvable, options?: Partial<TimelineDispatcherOptions>): {
|
|
1839
|
+
interface GuildQueueTimeline {
|
|
1855
1840
|
readonly timestamp: PlayerTimestamp;
|
|
1856
1841
|
readonly volume: number;
|
|
1857
1842
|
readonly paused: boolean;
|
|
@@ -1860,7 +1845,12 @@ declare function useTimeline(node?: NodeResolvable, options?: Partial<TimelineDi
|
|
|
1860
1845
|
resume(): boolean;
|
|
1861
1846
|
setVolume(vol: number): boolean;
|
|
1862
1847
|
setPosition(time: number): Promise<boolean>;
|
|
1863
|
-
}
|
|
1848
|
+
}
|
|
1849
|
+
/**
|
|
1850
|
+
* Fetch or manipulate current track
|
|
1851
|
+
* @param options Options for timeline dispatcher
|
|
1852
|
+
*/
|
|
1853
|
+
declare function useTimeline(): GuildQueueTimeline | null;
|
|
1864
1854
|
|
|
1865
1855
|
/**
|
|
1866
1856
|
* Global onAfterCreateStream handler
|
|
@@ -1881,27 +1871,7 @@ type VolumeDispatch = readonly [() => number, (volume: number | SetterFN) => boo
|
|
|
1881
1871
|
* @param node Guild queue node resolvable
|
|
1882
1872
|
*/
|
|
1883
1873
|
declare function useVolume(): VolumeDispatch;
|
|
1884
|
-
declare function useVolume(node: NodeResolvable): VolumeDispatch;
|
|
1885
|
-
|
|
1886
|
-
declare const instances: Collection<string, Player>;
|
|
1887
|
-
|
|
1888
|
-
declare const getPlayer: () => Player | null;
|
|
1889
|
-
interface HooksCtx {
|
|
1890
|
-
guild: Guild;
|
|
1891
|
-
}
|
|
1892
|
-
declare const getQueue: <T = unknown>(node: NodeResolvable) => GuildQueue<T> | null;
|
|
1893
|
-
interface HookDeclarationContext {
|
|
1894
|
-
getQueue: typeof getQueue;
|
|
1895
|
-
getPlayer: typeof getPlayer;
|
|
1896
|
-
instances: typeof instances;
|
|
1897
|
-
}
|
|
1898
|
-
type HookDeclaration<T extends (...args: any[]) => any> = (context: HookDeclarationContext) => T;
|
|
1899
|
-
declare function createHook<T extends HookDeclaration<(...args: any[]) => any>>(hook: T): ReturnType<T>;
|
|
1900
1874
|
|
|
1901
|
-
declare const knownExtractorKeys: readonly ["SpotifyExtractor", "AppleMusicExtractor", "SoundCloudExtractor", "YouTubeExtractor", "VimeoExtractor", "ReverbnationExtractor", "AttachmentExtractor"];
|
|
1902
|
-
type ExtractorLoaderOptionDict = {
|
|
1903
|
-
[K in (typeof knownExtractorKeys)[number]]?: ConstructorParameters<typeof _discord_player_extractor[K]>[1];
|
|
1904
|
-
};
|
|
1905
1875
|
interface ExtractorSession {
|
|
1906
1876
|
id: string;
|
|
1907
1877
|
attemptedExtractors: Set<string>;
|
|
@@ -1955,13 +1925,14 @@ declare class ExtractorExecutionContext extends PlayerEventsEmitter<ExtractorExe
|
|
|
1955
1925
|
* Get the current execution context
|
|
1956
1926
|
*/
|
|
1957
1927
|
getContext(): ExtractorSession | null;
|
|
1928
|
+
loadDefault(): Promise<void>;
|
|
1958
1929
|
/**
|
|
1959
|
-
* Load
|
|
1930
|
+
* Load a bundle of extractors.
|
|
1931
|
+
* @example import { DefaultExtractors } from '@discord-player/extractor';
|
|
1932
|
+
*
|
|
1933
|
+
* await player.extractors.loadMulti(DefaultExtractors);
|
|
1960
1934
|
*/
|
|
1961
|
-
|
|
1962
|
-
success: boolean;
|
|
1963
|
-
error: Error;
|
|
1964
|
-
} | {
|
|
1935
|
+
loadMulti<O extends object, T extends (typeof BaseExtractor<O>)[], R extends Record<T[number]['identifier'], ConstructorParameters<T[number]>[1]>>(bundle: T, options?: R): Promise<{
|
|
1965
1936
|
success: boolean;
|
|
1966
1937
|
error: null;
|
|
1967
1938
|
}>;
|
|
@@ -2128,10 +2099,6 @@ declare class BaseExtractor<T extends object = object> {
|
|
|
2128
2099
|
* @param message The debug message
|
|
2129
2100
|
*/
|
|
2130
2101
|
debug(message: string): boolean;
|
|
2131
|
-
/**
|
|
2132
|
-
* IP rotator instance, if available
|
|
2133
|
-
*/
|
|
2134
|
-
get routePlanner(): IPRotator | null;
|
|
2135
2102
|
/**
|
|
2136
2103
|
* A flag to indicate `Demuxable` stream support for `opus`/`ogg/opus`/`webm/opus` formats.
|
|
2137
2104
|
*/
|
|
@@ -2310,42 +2277,8 @@ declare class VoiceUtils {
|
|
|
2310
2277
|
getConnection(guild: Snowflake, group?: string): VoiceConnection | undefined;
|
|
2311
2278
|
}
|
|
2312
2279
|
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
usage: number;
|
|
2316
|
-
readonly cidr: string;
|
|
2317
|
-
readonly cidrSize: number;
|
|
2318
|
-
constructor(block: string);
|
|
2319
|
-
consume(): void;
|
|
2320
|
-
}
|
|
2321
|
-
interface IPRotationConfig {
|
|
2322
|
-
/**
|
|
2323
|
-
* IP blocks to use
|
|
2324
|
-
*/
|
|
2325
|
-
blocks: string[];
|
|
2326
|
-
/**
|
|
2327
|
-
* IPs to exclude
|
|
2328
|
-
*/
|
|
2329
|
-
exclude?: string[];
|
|
2330
|
-
/**
|
|
2331
|
-
* Max retries to find an IP that is not excluded
|
|
2332
|
-
*/
|
|
2333
|
-
maxRetries?: number;
|
|
2334
|
-
}
|
|
2335
|
-
declare class IPRotator {
|
|
2336
|
-
#private;
|
|
2337
|
-
config: IPRotationConfig;
|
|
2338
|
-
blocks: IPBlock[];
|
|
2339
|
-
failures: Map<string, number>;
|
|
2340
|
-
MAX_NEXT_RETRIES: number;
|
|
2341
|
-
constructor(config: IPRotationConfig);
|
|
2342
|
-
getIP(): {
|
|
2343
|
-
ip: string;
|
|
2344
|
-
family: 4 | 6;
|
|
2345
|
-
};
|
|
2346
|
-
isFailedOrExcluded(ip: string): boolean;
|
|
2347
|
-
addFailed(ip: string): void;
|
|
2348
|
-
static getRandomIP(address: string, start?: number, end?: number): string;
|
|
2280
|
+
interface HooksCtx {
|
|
2281
|
+
guild: Guild;
|
|
2349
2282
|
}
|
|
2350
2283
|
|
|
2351
2284
|
interface PlayerNodeInitializationResult<T = unknown> {
|
|
@@ -2369,7 +2302,6 @@ declare class Player extends PlayerEventsEmitter<PlayerEvents> {
|
|
|
2369
2302
|
* The version of discord-player
|
|
2370
2303
|
*/
|
|
2371
2304
|
static readonly version: string;
|
|
2372
|
-
static _singletonKey: symbol;
|
|
2373
2305
|
/**
|
|
2374
2306
|
* The unique identifier of this player instance
|
|
2375
2307
|
*/
|
|
@@ -2398,10 +2330,6 @@ declare class Player extends PlayerEventsEmitter<PlayerEvents> {
|
|
|
2398
2330
|
* The player events channel
|
|
2399
2331
|
*/
|
|
2400
2332
|
events: PlayerEventsEmitter<GuildQueueEvents<any>>;
|
|
2401
|
-
/**
|
|
2402
|
-
* The route planner
|
|
2403
|
-
*/
|
|
2404
|
-
routePlanner: IPRotator | null;
|
|
2405
2333
|
/**
|
|
2406
2334
|
* The player version
|
|
2407
2335
|
*/
|
|
@@ -2426,26 +2354,12 @@ declare class Player extends PlayerEventsEmitter<PlayerEvents> {
|
|
|
2426
2354
|
*/
|
|
2427
2355
|
onVoiceStateUpdate(handler: VoiceStateHandler): void;
|
|
2428
2356
|
debug(m: string): boolean;
|
|
2429
|
-
/**
|
|
2430
|
-
* Creates discord-player singleton instance.
|
|
2431
|
-
* @param client The client that instantiated player
|
|
2432
|
-
* @param options Player initializer options
|
|
2433
|
-
*/
|
|
2434
|
-
static singleton(client: Client, options?: Omit<PlayerInitOptions, 'ignoreInstance'>): Player;
|
|
2435
2357
|
/**
|
|
2436
2358
|
* Creates new discord-player instance.
|
|
2437
2359
|
* @param client The client that instantiated player
|
|
2438
2360
|
* @param options Player initializer options
|
|
2439
2361
|
*/
|
|
2440
|
-
static create(client: Client, options?:
|
|
2441
|
-
/**
|
|
2442
|
-
* Get all active master player instances
|
|
2443
|
-
*/
|
|
2444
|
-
static getAllPlayers(): Player[];
|
|
2445
|
-
/**
|
|
2446
|
-
* Clear all master player instances
|
|
2447
|
-
*/
|
|
2448
|
-
static clearAllPlayers(): void;
|
|
2362
|
+
static create(client: Client, options?: PlayerInitOptions): Player;
|
|
2449
2363
|
/**
|
|
2450
2364
|
* The current query cache provider in use
|
|
2451
2365
|
*/
|
|
@@ -2469,7 +2383,6 @@ declare class Player extends PlayerEventsEmitter<PlayerEvents> {
|
|
|
2469
2383
|
*
|
|
2470
2384
|
* // outputs something like
|
|
2471
2385
|
* // {
|
|
2472
|
-
* // instances: number,
|
|
2473
2386
|
* // queuesCount: number,
|
|
2474
2387
|
* // queryCacheEnabled: boolean,
|
|
2475
2388
|
* // queues: [
|
|
@@ -2482,7 +2395,6 @@ declare class Player extends PlayerEventsEmitter<PlayerEvents> {
|
|
|
2482
2395
|
* ```
|
|
2483
2396
|
*/
|
|
2484
2397
|
generateStatistics(): {
|
|
2485
|
-
instances: number;
|
|
2486
2398
|
queuesCount: number;
|
|
2487
2399
|
queryCacheEnabled: boolean;
|
|
2488
2400
|
queues: GuildQueueStatisticsMetadata[];
|
|
@@ -2639,7 +2551,7 @@ declare class GuildNodeManager<Meta = unknown> {
|
|
|
2639
2551
|
* Resolve queue
|
|
2640
2552
|
* @param node Queue resolvable
|
|
2641
2553
|
*/
|
|
2642
|
-
resolve<T = Meta>(node: NodeResolvable): GuildQueue<
|
|
2554
|
+
resolve<T = Meta>(node: NodeResolvable): GuildQueue<T> | undefined;
|
|
2643
2555
|
/**
|
|
2644
2556
|
* Resolve queue id
|
|
2645
2557
|
* @param node Queue resolvable
|
|
@@ -3094,10 +3006,6 @@ interface PlaylistJSON {
|
|
|
3094
3006
|
tracks: TrackJSON[];
|
|
3095
3007
|
}
|
|
3096
3008
|
interface PlayerInitOptions {
|
|
3097
|
-
/**
|
|
3098
|
-
* The options passed to `ytdl-core`.
|
|
3099
|
-
*/
|
|
3100
|
-
ytdlOptions?: downloadOptions;
|
|
3101
3009
|
/**
|
|
3102
3010
|
* The voice connection timeout
|
|
3103
3011
|
*/
|
|
@@ -3122,10 +3030,6 @@ interface PlayerInitOptions {
|
|
|
3122
3030
|
* Query cache provider
|
|
3123
3031
|
*/
|
|
3124
3032
|
queryCache?: QueryCacheProvider<any> | null;
|
|
3125
|
-
/**
|
|
3126
|
-
* Ignore player instance
|
|
3127
|
-
*/
|
|
3128
|
-
ignoreInstance?: boolean;
|
|
3129
3033
|
/**
|
|
3130
3034
|
* Use legacy version of ffmpeg
|
|
3131
3035
|
*/
|
|
@@ -3134,10 +3038,6 @@ interface PlayerInitOptions {
|
|
|
3134
3038
|
* Set bridge provider
|
|
3135
3039
|
*/
|
|
3136
3040
|
bridgeProvider?: BridgeProvider;
|
|
3137
|
-
/**
|
|
3138
|
-
* IP rotator config
|
|
3139
|
-
*/
|
|
3140
|
-
ipconfig?: IPRotationConfig;
|
|
3141
3041
|
/**
|
|
3142
3042
|
* Skip ffmpeg process when possible
|
|
3143
3043
|
*/
|
|
@@ -3150,6 +3050,10 @@ interface PlayerInitOptions {
|
|
|
3150
3050
|
* Configure ffmpeg path
|
|
3151
3051
|
*/
|
|
3152
3052
|
ffmpegPath?: string;
|
|
3053
|
+
/**
|
|
3054
|
+
* Whether to override the fallback context. Defaults to `true`.
|
|
3055
|
+
*/
|
|
3056
|
+
overrideFallbackContext?: boolean;
|
|
3153
3057
|
}
|
|
3154
3058
|
|
|
3155
3059
|
declare class AudioFilters {
|
|
@@ -3351,6 +3255,7 @@ interface DependenciesReport {
|
|
|
3351
3255
|
'libsodium-wrappers': MaybeNull<string>;
|
|
3352
3256
|
'sodium-javascript': MaybeNull<string>;
|
|
3353
3257
|
'@stablelib/xchacha20poly1305': MaybeNull<string>;
|
|
3258
|
+
'@nobel/ciphers': MaybeNull<string>;
|
|
3354
3259
|
};
|
|
3355
3260
|
ffmpeg: FFmpegReport;
|
|
3356
3261
|
}
|
|
@@ -3391,4 +3296,4 @@ declare const DependencyReportGenerator: {
|
|
|
3391
3296
|
|
|
3392
3297
|
declare const version: string;
|
|
3393
3298
|
|
|
3394
|
-
export { AFilterGraph, AsyncQueue, AsyncQueueAcquisitionOptions, AsyncQueueEntry, AsyncQueueExceptionHandler, AudioFilters, BaseExtractor, Context, ContextReceiver, CreateStreamOps, DependenciesReport, DependencyReportGenerator, DiscordPlayerQueryResultCache, Encodable, EqualizerConfigurationPreset, ExtractorExecutionContext, ExtractorExecutionEvents, ExtractorExecutionFN, ExtractorExecutionResult, ExtractorInfo,
|
|
3299
|
+
export { AFilterGraph, AsyncQueue, AsyncQueueAcquisitionOptions, AsyncQueueEntry, AsyncQueueExceptionHandler, AudioFilters, BaseExtractor, Context, ContextReceiver, CreateStreamOps, DependenciesReport, DependencyReportGenerator, DiscordPlayerQueryResultCache, Encodable, EqualizerConfigurationPreset, ExtractorExecutionContext, ExtractorExecutionEvents, ExtractorExecutionFN, ExtractorExecutionResult, ExtractorInfo, ExtractorResolvable, ExtractorSearchContext, ExtractorSession, ExtractorStreamable, FFMPEG_ARGS_PIPED, FFMPEG_ARGS_STRING, FFMPEG_SRATE_REGEX, FFmpegFilterer, FFmpegReport, FFmpegStreamOptions, FilterGraph, FiltersName, GuildNodeCreateOptions, GuildNodeInit, GuildNodeManager, GuildQueue, GuildQueueAFiltersCache, GuildQueueAudioFilters, GuildQueueEvent, GuildQueueEvents, GuildQueueHistory, GuildQueuePlayerNode, GuildQueueStatistics, GuildQueueStatisticsMetadata, GuildQueueTimeline, LrcGetParams, LrcGetResult, LrcLib, LrcSearchParams, LrcSearchResult, MaybeNull, MetadataDispatch, NextFunction, NodeResolvable, OnAfterCreateStreamHandler, OnBeforeCreateStreamHandler, PackageJSON, PlayOptions, Player, PlayerEvent, PlayerEvents, PlayerEventsEmitter, PlayerInitOptions, PlayerNodeInitializationResult, PlayerNodeInitializerOptions, PlayerProgressbarOptions, PlayerSearchResult, PlayerTimestamp, PlayerTriggeredReason, Playlist, PlaylistInitData, PlaylistJSON, PostProcessedResult, QueryCache, QueryCacheOptions, QueryCacheProvider, QueryCacheResolverContext, QueryExtractorSearch, QueryResolver, QueryType, QueueFilters, QueueRepeatMode, RawTrackData, RequestEntity, ResolvedQuery, ResourcePlayOptions, Runtime, RuntimeType, SearchOptions, SearchQueryType, SearchResult, SearchResultData, SequentialBucket, SerializedPlaylist, SerializedTrack, SerializedType, SetterFN$1 as SetterFN, SkipOptions, StreamConfig, StreamDispatcher, TimeData, TimelineDispatcherOptions, Track, TrackJSON, TrackLike, TrackResolvable, TrackSkipReason, TrackSource, TypeUtil, Util, VALIDATE_QUEUE_CAP, VoiceConnectConfig, VoiceEvents, VoiceStateHandler, VoiceUtils, WithMetadata, createContext, createErisCompat, createFFmpegStream, decode, deserialize, encode, isErisProxy, onAfterCreateStream, onBeforeCreateStream, serialize, tryIntoThumbnailString, useContext, useHistory, useMainPlayer, useMetadata, usePlayer, useQueue, useTimeline, useVolume, version };
|