distube 2.8.15 → 3.0.0-0

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.
Files changed (147) hide show
  1. package/README.md +32 -98
  2. package/dist/DisTube.d.ts +522 -0
  3. package/dist/DisTube.d.ts.map +1 -0
  4. package/dist/DisTube.js +794 -0
  5. package/dist/DisTube.js.map +1 -0
  6. package/dist/constant.d.ts +130 -0
  7. package/dist/constant.d.ts.map +1 -0
  8. package/dist/constant.js +150 -0
  9. package/dist/constant.js.map +1 -0
  10. package/dist/core/DisTubeBase.d.ts +55 -0
  11. package/dist/core/DisTubeBase.d.ts.map +1 -0
  12. package/dist/core/DisTubeBase.js +76 -0
  13. package/dist/core/DisTubeBase.js.map +1 -0
  14. package/dist/core/DisTubeHandler.d.ts +84 -0
  15. package/dist/core/DisTubeHandler.d.ts.map +1 -0
  16. package/dist/core/DisTubeHandler.js +311 -0
  17. package/dist/core/DisTubeHandler.js.map +1 -0
  18. package/dist/core/DisTubeOptions.d.ts +26 -0
  19. package/dist/core/DisTubeOptions.d.ts.map +1 -0
  20. package/dist/core/DisTubeOptions.js +93 -0
  21. package/dist/core/DisTubeOptions.js.map +1 -0
  22. package/dist/core/DisTubeStream.d.ts +52 -0
  23. package/dist/core/DisTubeStream.d.ts.map +1 -0
  24. package/dist/core/DisTubeStream.js +109 -0
  25. package/dist/core/DisTubeStream.js.map +1 -0
  26. package/dist/core/index.d.ts +7 -0
  27. package/dist/core/index.d.ts.map +1 -0
  28. package/dist/core/index.js +19 -0
  29. package/dist/core/index.js.map +1 -0
  30. package/dist/core/manager/BaseManager.d.ts +18 -0
  31. package/dist/core/manager/BaseManager.d.ts.map +1 -0
  32. package/dist/core/manager/BaseManager.js +44 -0
  33. package/dist/core/manager/BaseManager.js.map +1 -0
  34. package/dist/core/manager/QueueManager.d.ts +60 -0
  35. package/dist/core/manager/QueueManager.d.ts.map +1 -0
  36. package/dist/core/manager/QueueManager.js +202 -0
  37. package/dist/core/manager/QueueManager.js.map +1 -0
  38. package/dist/core/manager/index.d.ts +3 -0
  39. package/dist/core/manager/index.d.ts.map +1 -0
  40. package/dist/core/manager/index.js +15 -0
  41. package/dist/core/manager/index.js.map +1 -0
  42. package/dist/core/voice/DJSAdapter.d.ts +4 -0
  43. package/dist/core/voice/DJSAdapter.d.ts.map +1 -0
  44. package/dist/core/voice/DJSAdapter.js +61 -0
  45. package/dist/core/voice/DJSAdapter.js.map +1 -0
  46. package/dist/core/voice/DisTubeVoice.d.ts +83 -0
  47. package/dist/core/voice/DisTubeVoice.d.ts.map +1 -0
  48. package/dist/core/voice/DisTubeVoice.js +236 -0
  49. package/dist/core/voice/DisTubeVoice.js.map +1 -0
  50. package/dist/core/voice/DisTubeVoiceManager.d.ts +41 -0
  51. package/dist/core/voice/DisTubeVoiceManager.d.ts.map +1 -0
  52. package/dist/core/voice/DisTubeVoiceManager.js +67 -0
  53. package/dist/core/voice/DisTubeVoiceManager.js.map +1 -0
  54. package/dist/core/voice/index.d.ts +4 -0
  55. package/dist/core/voice/index.d.ts.map +1 -0
  56. package/dist/core/voice/index.js +16 -0
  57. package/dist/core/voice/index.js.map +1 -0
  58. package/dist/index.d.ts +8 -0
  59. package/dist/index.d.ts.map +1 -0
  60. package/dist/index.js +23 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/plugin/http.d.ts +8 -0
  63. package/dist/plugin/http.d.ts.map +1 -0
  64. package/dist/plugin/http.js +20 -0
  65. package/dist/plugin/http.js.map +1 -0
  66. package/dist/plugin/https.d.ts +14 -0
  67. package/dist/plugin/https.d.ts.map +1 -0
  68. package/dist/plugin/https.js +50 -0
  69. package/dist/plugin/https.js.map +1 -0
  70. package/dist/plugin/index.d.ts +4 -0
  71. package/dist/plugin/index.d.ts.map +1 -0
  72. package/dist/plugin/index.js +16 -0
  73. package/dist/plugin/index.js.map +1 -0
  74. package/dist/plugin/youtube-dl.d.ts +11 -0
  75. package/dist/plugin/youtube-dl.d.ts.map +1 -0
  76. package/dist/plugin/youtube-dl.js +75 -0
  77. package/dist/plugin/youtube-dl.js.map +1 -0
  78. package/dist/struct/CustomPlugin.d.ts +27 -0
  79. package/dist/struct/CustomPlugin.d.ts.map +1 -0
  80. package/dist/struct/CustomPlugin.js +35 -0
  81. package/dist/struct/CustomPlugin.js.map +1 -0
  82. package/dist/struct/DisTubeError.d.ts +54 -0
  83. package/dist/struct/DisTubeError.d.ts.map +1 -0
  84. package/dist/struct/DisTubeError.js +72 -0
  85. package/dist/struct/DisTubeError.js.map +1 -0
  86. package/dist/struct/ExtractorPlugin.d.ts +29 -0
  87. package/dist/struct/ExtractorPlugin.d.ts.map +1 -0
  88. package/dist/struct/ExtractorPlugin.js +32 -0
  89. package/dist/struct/ExtractorPlugin.js.map +1 -0
  90. package/dist/struct/Playlist.d.ts +42 -0
  91. package/dist/struct/Playlist.d.ts.map +1 -0
  92. package/dist/struct/Playlist.js +104 -0
  93. package/dist/struct/Playlist.js.map +1 -0
  94. package/dist/struct/Plugin.d.ts +82 -0
  95. package/dist/struct/Plugin.d.ts.map +1 -0
  96. package/dist/struct/Plugin.js +108 -0
  97. package/dist/struct/Plugin.js.map +1 -0
  98. package/dist/struct/Queue.d.ts +217 -0
  99. package/dist/struct/Queue.d.ts.map +1 -0
  100. package/dist/struct/Queue.js +480 -0
  101. package/dist/struct/Queue.js.map +1 -0
  102. package/dist/struct/SearchResult.d.ts +28 -0
  103. package/dist/struct/SearchResult.d.ts.map +1 -0
  104. package/dist/struct/SearchResult.js +79 -0
  105. package/dist/struct/SearchResult.js.map +1 -0
  106. package/dist/struct/Song.d.ts +68 -0
  107. package/dist/struct/Song.d.ts.map +1 -0
  108. package/dist/struct/Song.js +229 -0
  109. package/dist/struct/Song.js.map +1 -0
  110. package/dist/struct/TaskQueue.d.ts +33 -0
  111. package/dist/struct/TaskQueue.d.ts.map +1 -0
  112. package/dist/struct/TaskQueue.js +58 -0
  113. package/dist/struct/TaskQueue.js.map +1 -0
  114. package/dist/struct/index.d.ts +10 -0
  115. package/dist/struct/index.d.ts.map +1 -0
  116. package/dist/struct/index.js +22 -0
  117. package/dist/struct/index.js.map +1 -0
  118. package/dist/tsconfig.tsbuildinfo +1 -0
  119. package/dist/type.d.ts +159 -0
  120. package/dist/type.d.ts.map +1 -0
  121. package/dist/type.js +3 -0
  122. package/dist/type.js.map +1 -0
  123. package/dist/util.d.ts +47 -0
  124. package/dist/util.d.ts.map +1 -0
  125. package/dist/util.js +205 -0
  126. package/dist/util.js.map +1 -0
  127. package/package.json +53 -25
  128. package/.eslintrc.json +0 -150
  129. package/.gitattributes +0 -2
  130. package/.github/FUNDING.yml +0 -1
  131. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -17
  132. package/.github/ISSUE_TEMPLATE/config.yml +0 -8
  133. package/.github/workflows/npm-publish.yml +0 -17
  134. package/jsdoc.json +0 -97
  135. package/src/DisTube.js +0 -1121
  136. package/src/Playlist.js +0 -107
  137. package/src/Queue.js +0 -120
  138. package/src/SearchResult.js +0 -81
  139. package/src/Song.js +0 -135
  140. package/src/duration.js +0 -39
  141. package/tsconfig.json +0 -24
  142. package/typings/DisTube.d.ts +0 -635
  143. package/typings/Playlist.d.ts +0 -73
  144. package/typings/Queue.d.ts +0 -106
  145. package/typings/SearchResult.d.ts +0 -59
  146. package/typings/Song.d.ts +0 -104
  147. package/typings/duration.d.ts +0 -2
@@ -1,635 +0,0 @@
1
- export = DisTube;
2
- /**
3
- * Class representing a DisTube.
4
- * @extends EventEmitter
5
- */
6
- declare class DisTube extends EventEmitter {
7
- static get version(): any;
8
- /**
9
- * Create new DisTube.
10
- * @param {Discord.Client} client Discord.JS client
11
- * @param {DisTubeOptions} [otp={}] Custom DisTube options
12
- * @example
13
- * const Discord = require('discord.js'),
14
- * DisTube = require('distube'),
15
- * client = new Discord.Client();
16
- * // Create a new DisTube
17
- * const distube = new DisTube(client, { searchSongs: true });
18
- * // client.DisTube = distube // make it access easily
19
- * client.login("Your Discord Bot Token")
20
- */
21
- constructor(client: Discord.Client, otp?: DisTubeOptions);
22
- /**
23
- * DisTube's current version.
24
- * @type {string}
25
- * @ignore
26
- */
27
- get version(): string;
28
- /**
29
- * Discord.JS client
30
- * @type {Discord.Client}
31
- */
32
- client: Discord.Client;
33
- /**
34
- * Collection of guild queues
35
- * @type {Discord.Collection<string, Queue>}
36
- */
37
- guildQueues: Discord.Collection<string, Queue>;
38
- /**
39
- * DisTube options
40
- * @type {DisTubeOptions}
41
- */
42
- options: DisTubeOptions;
43
- /**
44
- * DisTube filters
45
- * @type {Filter}
46
- */
47
- filters: Filter;
48
- requestOptions: {
49
- headers: {
50
- cookie: string;
51
- "x-youtube-identity-token": string;
52
- };
53
- };
54
- /**
55
- * Resolve a Song
56
- * @async
57
- * @param {Discord.Message} message The message from guild channel
58
- * @param {string|Song} song Youtube url | Search string | {@link Song}
59
- * @private
60
- * @ignore
61
- * @returns {Promise<Song|Song[]>} Resolved Song
62
- */
63
- private _resolveSong;
64
- /**
65
- * Handle a Song or an array of Song
66
- * @async
67
- * @param {Discord.Message} message The message from guild channel
68
- * @param {Song|SearchResult} song {@link Song} | {@link SearchResult}
69
- * @private
70
- * @ignore
71
- */
72
- private _handleSong;
73
- /**
74
- * Play / add a song or playlist from url. Search and play a song if it is not a valid url.
75
- * @async
76
- * @param {Discord.Message} message The message from guild channel
77
- * @param {string|Song|SearchResult} song Youtube url | Search string | {@link Song} | {@link SearchResult}
78
- * @example
79
- * client.on('message', (message) => {
80
- * if (!message.content.startsWith(config.prefix)) return;
81
- * const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
82
- * const command = args.shift();
83
- * if (command == "play")
84
- * distube.play(message, args.join(" "));
85
- * });
86
- */
87
- play(message: Discord.Message, song: string | Song | SearchResult): Promise<void>;
88
- /**
89
- * `@2.0.0` Skip the playing song and play a song or playlist
90
- * @async
91
- * @param {Discord.Message} message The message from guild channel
92
- * @param {string|Song|SearchResult} song Youtube url | Search string | {@link Song} | {@link SearchResult}
93
- * @example
94
- * client.on('message', (message) => {
95
- * if (!message.content.startsWith(config.prefix)) return;
96
- * const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
97
- * const command = args.shift();
98
- * if (command == "playSkip")
99
- * distube.playSkip(message, args.join(" "));
100
- * });
101
- */
102
- playSkip(message: Discord.Message, song: string | Song | SearchResult): Promise<void>;
103
- /**
104
- * `@2.1.0` Play or add array of Youtube video urls.
105
- * {@link DisTube#event:playList} or {@link DisTube#event:addList} will be emitted
106
- * with `playlist`'s properties include `properties` parameter's properties such as
107
- * `user`, `songs`, `duration`, `formattedDuration`, `thumbnail` like {@link Playlist}
108
- * @async
109
- * @param {Discord.Message} message The message from guild channel
110
- * @param {string[]} urls Array of Youtube url
111
- * @param {Object} [properties={}] Additional properties such as `name`
112
- * @param {boolean} [playSkip=false] Whether or not play this playlist instantly
113
- * @example
114
- * let songs = ["https://www.youtube.com/watch?v=xxx", "https://www.youtube.com/watch?v=yyy"];
115
- * distube.playCustomPlaylist(message, songs, { name: "My playlist name" });
116
- */
117
- playCustomPlaylist(message: Discord.Message, urls: string[], properties?: any, playSkip?: boolean): Promise<void>;
118
- /**
119
- * PLay / add a playlist
120
- * @async
121
- * @private
122
- * @ignore
123
- * @param {Discord.Message} message The message from guild channel
124
- * @param {string|Song[]|Playlist} arg2 Youtube playlist url | a Playlist
125
- * @param {boolean} skip Skip the current song
126
- */
127
- private _handlePlaylist;
128
- /**
129
- * `@2.0.0` Search for a song. You can customize how user answers instead of send a number.
130
- * Then use {@link DisTube#play|play(message, aResultFromSearch)} or {@link DisTube#playSkip|playSkip()} to play it.
131
- * @async
132
- * @param {string} string The string search for
133
- * @throws {NotFound} If not found
134
- * @throws {Error} If an error encountered
135
- * @returns {Promise<SearchResult[]>} Array of results
136
- */
137
- search(string: string, retried?: boolean): Promise<SearchResult[]>;
138
- /**
139
- * Search for a song, fire {@link DisTube#event:error} if not found.
140
- * @async
141
- * @private
142
- * @ignore
143
- * @param {Discord.Message} message The message from guild channel
144
- * @param {string} name The string search for
145
- * @returns {Song} Song info
146
- */
147
- private _searchSong;
148
- /**
149
- * Create a new guild queue
150
- * @async
151
- * @private
152
- * @ignore
153
- * @param {Discord.Message} message The message from guild channel
154
- * @param {Song} song Song to play
155
- * @throws {NotInVoice} if user not in a voice channel
156
- * @returns {Promise<Queue>}
157
- */
158
- private _newQueue;
159
- /**
160
- * Delete a guild queue
161
- * @private
162
- * @ignore
163
- * @param {Discord.Snowflake|Discord.Message} message The message from guild channel
164
- */
165
- private _deleteQueue;
166
- /**
167
- * Get the guild queue
168
- * @param {Discord.Snowflake|Discord.Message} message The guild ID or message from guild channel.
169
- * @returns {Queue} The guild queue
170
- * @example
171
- * client.on('message', (message) => {
172
- * if (!message.content.startsWith(config.prefix)) return;
173
- * const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
174
- * const command = args.shift();
175
- * if (command == "queue") {
176
- * let queue = distube.getQueue(message);
177
- * message.channel.send('Current queue:\n' + queue.songs.map((song, id) =>
178
- * `**${id+1}**. [${song.name}](${song.url}) - \`${song.formattedDuration}\``
179
- * ).join("\n"));
180
- * }
181
- * });
182
- */
183
- getQueue(message: Discord.Snowflake | Discord.Message): Queue;
184
- /**
185
- * Add a video to queue
186
- * @private
187
- * @ignore
188
- * @param {Discord.Snowflake|Discord.Message} message The message from guild channel
189
- * @param {Song} song Song to add
190
- * @param {boolean} [unshift=false] Unshift
191
- * @throws {NotInVoice} if result is empty
192
- * @returns {Queue}
193
- */
194
- private _addToQueue;
195
- /**
196
- * Add a array of videos to queue
197
- * @private
198
- * @ignore
199
- * @param {Discord.Snowflake|Discord.Message} message The message from guild channel
200
- * @param {Song[]} songs Array of song to add
201
- * @param {boolean} [unshift=false] Unshift
202
- * @returns {Queue}
203
- */
204
- private _addSongsToQueue;
205
- /**
206
- * Pause the guild stream
207
- * @param {Discord.Snowflake|Discord.Message} message The message from guild channel
208
- * @returns {Queue} The guild queue
209
- * @throws {NotPlaying} No playing queue
210
- */
211
- pause(message: Discord.Snowflake | Discord.Message): Queue;
212
- /**
213
- * Resume the guild stream
214
- * @param {Discord.Snowflake|Discord.Message} message The message from guild channel
215
- * @returns {Queue} The guild queue
216
- * @throws {NotPlaying} No playing queue
217
- */
218
- resume(message: Discord.Snowflake | Discord.Message): Queue;
219
- /**
220
- * Stop the guild stream
221
- * @param {Discord.Snowflake|Discord.Message} message The message from guild channel
222
- * @throws {NotPlaying} No playing queue
223
- * @example
224
- * client.on('message', (message) => {
225
- * if (!message.content.startsWith(config.prefix)) return;
226
- * const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
227
- * const command = args.shift();
228
- * if (command == "stop") {
229
- * distube.stop(message);
230
- * message.channel.send("Stopped the queue!");
231
- * }
232
- * });
233
- */
234
- stop(message: Discord.Snowflake | Discord.Message): void;
235
- /**
236
- * Set the guild stream's volume
237
- * @param {Discord.Snowflake|Discord.Message} message The message from guild channel
238
- * @param {number} percent The percentage of volume you want to set
239
- * @returns {Queue} The guild queue
240
- * @throws {NotPlaying} No playing queue
241
- * @example
242
- * client.on('message', (message) => {
243
- * if (!message.content.startsWith(config.prefix)) return;
244
- * const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
245
- * const command = args.shift();
246
- * if (command == "volume")
247
- * distube.setVolume(message, args[0]);
248
- * });
249
- */
250
- setVolume(message: Discord.Snowflake | Discord.Message, percent: number): Queue;
251
- /**
252
- * Skip the playing song
253
- *
254
- * @param {Discord.Snowflake|Discord.Message} message The message from guild channel
255
- * @returns {Queue} The guild queue
256
- * @throws {NotPlaying} No playing queue
257
- * @throws {NoSong} if there is no song in queue
258
- * @example
259
- * client.on('message', (message) => {
260
- * if (!message.content.startsWith(config.prefix)) return;
261
- * const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
262
- * const command = args.shift();
263
- * if (command == "skip")
264
- * distube.skip(message);
265
- * });
266
- */
267
- skip(message: Discord.Snowflake | Discord.Message): Queue;
268
- /**
269
- * Shuffle the guild queue songs
270
- * @param {Discord.Snowflake|Discord.Message} message The message from guild channel
271
- * @returns {Queue} The guild queue
272
- * @example
273
- * client.on('message', (message) => {
274
- * if (!message.content.startsWith(config.prefix)) return;
275
- * const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
276
- * const command = args.shift();
277
- * if (command == "shuffle")
278
- * distube.shuffle(message);
279
- * });
280
- */
281
- shuffle(message: Discord.Snowflake | Discord.Message): Queue;
282
- /**
283
- * Jump to the song number in the queue.
284
- * The next one is 1,...
285
- * @param {Discord.Snowflake|Discord.Message} message The message from guild channel
286
- * @param {number} num The song number to play
287
- * @returns {Queue} The guild queue
288
- * @throws {InvalidSong} if `num` is invalid number (0 < num < {@link Queue#songs}.length)
289
- * @example
290
- * client.on('message', (message) => {
291
- * if (!message.content.startsWith(config.prefix)) return;
292
- * const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
293
- * const command = args.shift();
294
- * if (command == "jump")
295
- * distube.jump(message, parseInt(args[0]))
296
- * .catch(err => message.channel.send("Invalid song number."));
297
- * });
298
- */
299
- jump(message: Discord.Snowflake | Discord.Message, num: number): Queue;
300
- /**
301
- * Set the repeat mode of the guild queue.
302
- * Turn off if repeat mode is the same value as new mode.
303
- * Toggle mode: `mode = null` `(0 -> 1 -> 2 -> 0...)`
304
- *
305
- * @param {Discord.Snowflake|Discord.Message} message The message from guild channel
306
- * @param {number} mode The repeat modes `(0: disabled, 1: Repeat a song, 2: Repeat all the queue)`
307
- * @returns {number} The new repeat mode
308
- *
309
- * @example
310
- * client.on('message', (message) => {
311
- * if (!message.content.startsWith(config.prefix)) return;
312
- * const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
313
- * const command = args.shift();
314
- * if (command == "repeat") {
315
- * let mode = distube.setRepeatMode(message, parseInt(args[0]));
316
- * mode = mode ? mode == 2 ? "Repeat queue" : "Repeat song" : "Off";
317
- * message.channel.send("Set repeat mode to `" + mode + "`");
318
- * }
319
- * });
320
- */
321
- setRepeatMode(message: Discord.Snowflake | Discord.Message, mode?: number): number;
322
- /**
323
- * Toggle autoplay mode
324
- * @param {Discord.Snowflake|Discord.Message} message The message from guild channel
325
- * @returns {boolean} Autoplay mode state
326
- * @throws {NotPlaying} No playing queue
327
- * @example
328
- * client.on('message', (message) => {
329
- * if (!message.content.startsWith(config.prefix)) return;
330
- * const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
331
- * const command = args.shift();
332
- * if (command == "autoplay") {
333
- * let mode = distube.toggleAutoplay(message);
334
- * message.channel.send("Set autoplay mode to `" + (mode ? "On" : "Off") + "`");
335
- * }
336
- * });
337
- */
338
- toggleAutoplay(message: Discord.Snowflake | Discord.Message): boolean;
339
- /**
340
- * Whether or not a guild is playing music.
341
- * @param {Discord.Snowflake|Discord.Message} message The message from guild channel to check
342
- * @returns {boolean} Whether or not the guild is playing song(s)
343
- */
344
- isPlaying(message: Discord.Snowflake | Discord.Message): boolean;
345
- /**
346
- * Whether or not the guild queue is paused
347
- * @param {Discord.Snowflake|Discord.Message} message The message from guild channel to check
348
- * @returns {boolean} Whether or not the guild queue is paused
349
- */
350
- isPaused(message: Discord.Snowflake | Discord.Message): boolean;
351
- /**
352
- * Whether or not the queue's voice channel is empty
353
- * @private
354
- * @ignore
355
- * @param {Queue} queue The guild queue
356
- * @returns {boolean} No user in voice channel return `true`
357
- */
358
- private _isVoiceChannelEmpty;
359
- /**
360
- * TODO: Remove this
361
- * @deprecated use {@link DisTube#addRelatedVideo} instead
362
- * @param {DisTube.Message} message Message
363
- * @returns {Promise<Queue>}
364
- */
365
- runAutoplay(message: any): Promise<Queue>;
366
- /**
367
- * Add related song to the queue
368
- * @async
369
- * @param {Discord.Snowflake|Discord.Message} message The message from guild channel
370
- * @returns {Promise<Queue>} The guild queue
371
- */
372
- addRelatedVideo(message: Discord.Snowflake | Discord.Message): Promise<Queue>;
373
- /**
374
- * `@2.0.0` Enable or disable a filter of the queue, replay the playing song.
375
- * Available filters: {@link Filter}
376
- *
377
- * @param {Discord.Message} message The message from guild channel
378
- * @param {Filter} filter A filter name
379
- * @returns {string} Current queue's filter name.
380
- * @example
381
- * client.on('message', (message) => {
382
- * if (!message.content.startsWith(config.prefix)) return;
383
- * const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
384
- * const command = args.shift();
385
- * if ([`3d`, `bassboost`, `echo`, `karaoke`, `nightcore`, `vaporwave`].includes(command)) {
386
- * let filter = distube.setFilter(message, command);
387
- * message.channel.send("Current queue filter: " + (filter || "Off"));
388
- * }
389
- * });
390
- */
391
- setFilter(message: Discord.Message, filter: Filter): string;
392
- /**
393
- * `@2.7.0` Set the playing time to another position
394
- *
395
- * @param {Discord.Message} message The message from guild channel
396
- * @param {number} time Time in milliseconds
397
- * @example
398
- * client.on('message', message => {
399
- * if (!message.content.startsWith(config.prefix)) return;
400
- * const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
401
- * const command = args.shift();
402
- * if (command = 'seek')
403
- * distube.seek(message, Number(args[0]));
404
- * });
405
- */
406
- seek(message: Discord.Message, time: number): void;
407
- /**
408
- * Emit error event
409
- * @private
410
- * @ignore
411
- */
412
- private _emitError;
413
- /**
414
- * Whether or not emit playSong event
415
- * @private
416
- * @ignore
417
- */
418
- private _emitPlaySong;
419
- /**
420
- * Create a ytdl stream
421
- * @private
422
- * @ignore
423
- */
424
- private _createStream;
425
- /**
426
- * Play a song on voice connection
427
- * @private
428
- * @ignore
429
- * @param {Discord.Message} message The message from guild channel
430
- */
431
- private _playSong;
432
- /**
433
- * Handle the queue when a Song finish
434
- * @private
435
- * @ignore
436
- * @param {Discord.Message} message message
437
- * @param {Queue} queue queue
438
- */
439
- private _handleSongFinish;
440
- /**
441
- * Handle error while playing
442
- * @private
443
- * @ignore
444
- * @param {Discord.Message} message message
445
- * @param {Queue} queue queue
446
- * @param {Error} error error
447
- */
448
- private _handlePlayingError;
449
- /**
450
- * Emitted after DisTube add playlist to guild queue
451
- *
452
- * @event DisTube#addList
453
- * @param {Discord.Message} message The message from guild channel
454
- * @param {Queue} queue The guild queue
455
- * @param {Playlist} playlist Playlist info
456
- * @since 1.1.0
457
- * @example
458
- * const status = (queue) => `Volume: \`${queue.volume}%\` | Loop: \`${queue.repeatMode ? queue.repeatMode == 2 ? "Server Queue" : "This Song" : "Off"}\` | Autoplay: \`${queue.autoplay ? "On" : "Off"}\``;
459
- *
460
- * distube.on("addList", (message, queue, playlist) => message.channel.send(
461
- * `Added \`${playlist.name}\` playlist (${playlist.songs.length} songs) to queue\n${status(queue)}`
462
- * ));
463
- */
464
- on(event: "addList", listener: (message: Discord.Message, queue: Queue, playlist: Playlist) => void): this;
465
- /**
466
- * Emitted after DisTube add new song to guild queue
467
- *
468
- * @event DisTube#addSong
469
- * @param {Discord.Message} message The message from guild channel
470
- * @param {Queue} queue The guild queue
471
- * @param {Song} song Added song
472
- * @example
473
- * const status = (queue) => `Volume: \`${queue.volume}%\` | Loop: \`${queue.repeatMode ? queue.repeatMode == 2 ? "Server Queue" : "This Song" : "Off"}\` | Autoplay: \`${queue.autoplay ? "On" : "Off"}\``;
474
- *
475
- * distube.on("addSong", (message, queue, song) => message.channel.send(
476
- * `Added ${song.name} - \`${song.formattedDuration}\` to the queue by ${song.user}`
477
- * ));
478
- */
479
- on(event: "addSong", listener: (message: Discord.Message, queue: Queue, song: Song) => void): this;
480
- on(event: "empty" | "finish" | "noRelated" | "searchCancel", listener: (message: Discord.Message) => void): this;
481
- /**
482
- * Emitted when `DisTube` encounters an error.
483
- *
484
- * @event DisTube#error
485
- * @param {Discord.Message} message The message from guild channel
486
- * @param {Error} err The error encountered
487
- * @example
488
- * distube.on("error", (message, err) => message.channel.send(
489
- * "An error encountered: " + err
490
- * ));
491
- */
492
- on(event: "error", listener: (message: Discord.Message, error: Error) => void): this;
493
-
494
- /**
495
- * Emitted when DisTube initialize a queue to change queue default properties.
496
- *
497
- * @event DisTube#initQueue
498
- * @param {Queue} queue The guild queue
499
- * @example
500
- * distube.on("initQueue", queue => {
501
- * queue.autoplay = false;
502
- * queue.volume = 100;
503
- * });
504
- */
505
- on(event: "initQueue", listener: (queue: Queue) => void): this;
506
-
507
- /**
508
- * Emitted after DisTube play the first song of the playlist
509
- * and add the rest to the guild queue
510
- *
511
- * @event DisTube#playList
512
- * @param {Discord.Message} message The message from guild channel
513
- * @param {Queue} queue The guild queue
514
- * @param {Playlist} playlist Playlist info
515
- * @param {Song} song Playing song
516
- * @example
517
- * const status = (queue) => `Volume: \`${queue.volume}%\` | Loop: \`${queue.repeatMode ? queue.repeatMode == 2 ? "Server Queue" : "This Song" : "Off"}\` | Autoplay: \`${queue.autoplay ? "On" : "Off"}\``;
518
- *
519
- * distube.on("playList", (message, queue, playlist, song) => message.channel.send(
520
- * `Play \`${playlist.name}\` playlist (${playlist.songs.length} songs).\nRequested by: ${song.user}\nNow playing \`${song.name}\` - \`${song.formattedDuration}\`\n${status(queue)}`
521
- * ));
522
- */
523
- on(event: "playList", listener: (message: Discord.Message, queue: Queue, playlist: Playlist, song: Song) => void): this;
524
-
525
- /**
526
- * Emitted when DisTube play a song.
527
- * If `DisTubeOptions.emitNewSongOnly` is `true`, event is not emitted when looping a song or next song is the previous one
528
- *
529
- * @event DisTube#playSong
530
- * @param {Discord.Message} message The message from guild channel
531
- * @param {Queue} queue The guild queue
532
- * @param {Song} song Playing song
533
- * @example
534
- * const status = (queue) => `Volume: \`${queue.volume}%\` | Loop: \`${queue.repeatMode ? queue.repeatMode == 2 ? "Server Queue" : "This Song" : "Off"}\` | Autoplay: \`${queue.autoplay ? "On" : "Off"}\``;
535
- *
536
- * distube.on("playSong", (message, queue, song) => message.channel.send(
537
- * `Playing \`${song.name}\` - \`${song.formattedDuration}\`\nRequested by: ${song.user}\n${status(queue)}`
538
- * ));
539
- */
540
- on(event: "playSong", listener: (message: Discord.Message, queue: Queue, song: Song) => void): this;
541
-
542
- /**
543
- * Emitted when `DisTubeOptions.searchSongs` is `true`.
544
- * DisTube will wait for user's next message to choose song manually
545
- * if song param of DisTube#play() is invalid url
546
- *
547
- * @event DisTube#searchResult
548
- * @param {Discord.Message} message The message from guild channel
549
- * @param {Song[]} result Searched result (max length = 12)
550
- * @example
551
- * // DisTubeOptions.searchSongs = true
552
- * distube.on("searchResult", (message, result) => {
553
- * let i = 0;
554
- * message.channel.send(`**Choose an option from below**\n${result.map(song => `**${++i}**. ${song.title} - \`${song.formattedDuration}\``).join("\n")}\n*Enter anything else or wait 60 seconds to cancel*`);
555
- * });
556
- */
557
- on(event: "searchResult", listener: (message: Discord.Message, result: SearchResult[]) => void): this;
558
- }
559
- declare namespace DisTube {
560
- export { DisTubeOptions, Filter };
561
- }
562
- import { EventEmitter } from "events";
563
- import Discord = require("discord.js");
564
- import Queue = require("./Queue");
565
- import Playlist = require("./Playlist");
566
- declare namespace DisTubeOptions {
567
- const highWaterMark: number;
568
- const emitNewSongOnly: boolean;
569
- const leaveOnEmpty: boolean;
570
- const leaveOnFinish: boolean;
571
- const leaveOnStop: boolean;
572
- const searchSongs: boolean;
573
- const youtubeCookie: any;
574
- const youtubeIdentityToken: any;
575
- const youtubeDL: boolean;
576
- const updateYouTubeDL: boolean;
577
- const customFilters: {};
578
- }
579
- /**
580
- * DisTube audio filters.
581
- */
582
- type Filter = ("3d" | "bassboost" | "echo" | "karaoke" | "nightcore" | "vaporwave" | "flanger" | "gate" | "haas" | "reverse" | "surround" | "mcompand" | "phaser" | "tremolo" | "earwax" | string);
583
- import Song = require("./Song");
584
- import SearchResult = require("./SearchResult");
585
- /**
586
- * DisTube options.
587
- */
588
- type DisTubeOptions = {
589
- /**
590
- * `@1.3.0`. If `true`, {@link DisTube#event:playSong} is not emitted when looping a song or next song is the same as the previous one
591
- */
592
- emitNewSongOnly?: boolean;
593
- /**
594
- * `@2.2.0` ytdl's highWaterMark option.
595
- */
596
- highWaterMark?: number;
597
- /**
598
- * Whether or not leaving voice channel if channel is empty in 60s. (Avoid accident leaving)
599
- */
600
- leaveOnEmpty?: boolean;
601
- /**
602
- * Whether or not leaving voice channel when the queue ends.
603
- */
604
- leaveOnFinish?: boolean;
605
- /**
606
- * Whether or not leaving voice channel after using {@link DisTube#stop|stop()} function.
607
- */
608
- leaveOnStop?: boolean;
609
- /**
610
- * Whether or not searching for multiple songs to select manually, DisTube will play the first result if `false`
611
- */
612
- searchSongs?: boolean;
613
- /**
614
- * `@2.4.0` YouTube cookies. How to get it: {@link https://github.com/fent/node-ytdl-core/blob/784c04eaf9f3cfac0fe0933155adffe0e2e0848a/example/cookies.js#L6-L12|YTDL's Example}
615
- */
616
- youtubeCookie?: string;
617
- /**
618
- * `@2.4.0` If not given, ytdl-core will try to find it. You can find this by going to a video's watch page, viewing the source, and searching for "ID_TOKEN".
619
- */
620
- youtubeIdentityToken?: string;
621
- /**
622
- * `@2.8.0` Whether or not using youtube-dl.
623
- */
624
- youtubeDL?: boolean;
625
- /**
626
- * `@2.8.0` Whether or not updating youtube-dl automatically.
627
- */
628
- updateYouTubeDL?: boolean;
629
- /**
630
- * `@2.7.0` Override or add more ffmpeg filters. Example: `{ "Filter name": "Filter value", "8d": "apulsator=hz=0.075" }`
631
- */
632
- customFilters?: {
633
- [x: string]: string;
634
- };
635
- };