distube 3.0.7 → 3.2.1
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/dist/DisTube.d.ts +133 -65
- package/dist/DisTube.d.ts.map +1 -1
- package/dist/DisTube.js +161 -103
- package/dist/DisTube.js.map +1 -1
- package/dist/constant.d.ts +14 -15
- package/dist/constant.d.ts.map +1 -1
- package/dist/constant.js +14 -15
- package/dist/constant.js.map +1 -1
- package/dist/core/DisTubeBase.d.ts +3 -4
- package/dist/core/DisTubeBase.d.ts.map +1 -1
- package/dist/core/DisTubeBase.js +1 -2
- package/dist/core/DisTubeBase.js.map +1 -1
- package/dist/core/DisTubeHandler.d.ts +37 -25
- package/dist/core/DisTubeHandler.d.ts.map +1 -1
- package/dist/core/DisTubeHandler.js +72 -68
- package/dist/core/DisTubeHandler.js.map +1 -1
- package/dist/core/DisTubeOptions.d.ts +1 -2
- package/dist/core/DisTubeOptions.d.ts.map +1 -1
- package/dist/core/DisTubeOptions.js +64 -58
- package/dist/core/DisTubeOptions.js.map +1 -1
- package/dist/core/DisTubeStream.d.ts +1 -1
- package/dist/core/DisTubeStream.d.ts.map +1 -1
- package/dist/core/DisTubeStream.js +0 -1
- package/dist/core/DisTubeStream.js.map +1 -1
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +2 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/manager/BaseManager.d.ts +11 -7
- package/dist/core/manager/BaseManager.d.ts.map +1 -1
- package/dist/core/manager/BaseManager.js +11 -13
- package/dist/core/manager/BaseManager.js.map +1 -1
- package/dist/core/manager/QueueManager.d.ts +11 -38
- package/dist/core/manager/QueueManager.d.ts.map +1 -1
- package/dist/core/manager/QueueManager.js +115 -129
- package/dist/core/manager/QueueManager.js.map +1 -1
- package/dist/core/voice/DJSAdapter.js +4 -7
- package/dist/core/voice/DJSAdapter.js.map +1 -1
- package/dist/core/voice/DisTubeVoice.d.ts +10 -13
- package/dist/core/voice/DisTubeVoice.d.ts.map +1 -1
- package/dist/core/voice/DisTubeVoice.js +39 -28
- package/dist/core/voice/DisTubeVoice.js.map +1 -1
- package/dist/core/voice/DisTubeVoiceManager.d.ts +10 -10
- package/dist/core/voice/DisTubeVoiceManager.d.ts.map +1 -1
- package/dist/core/voice/DisTubeVoiceManager.js +6 -6
- package/dist/core/voice/DisTubeVoiceManager.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/plugin/http.d.ts +5 -3
- package/dist/plugin/http.d.ts.map +1 -1
- package/dist/plugin/http.js +3 -5
- package/dist/plugin/http.js.map +1 -1
- package/dist/plugin/https.d.ts +10 -5
- package/dist/plugin/https.d.ts.map +1 -1
- package/dist/plugin/https.js +6 -9
- package/dist/plugin/https.js.map +1 -1
- package/dist/plugin/youtube-dl.d.ts +5 -4
- package/dist/plugin/youtube-dl.d.ts.map +1 -1
- package/dist/plugin/youtube-dl.js +6 -11
- package/dist/plugin/youtube-dl.js.map +1 -1
- package/dist/struct/CustomPlugin.d.ts +37 -17
- package/dist/struct/CustomPlugin.d.ts.map +1 -1
- package/dist/struct/CustomPlugin.js +18 -19
- package/dist/struct/CustomPlugin.js.map +1 -1
- package/dist/struct/DisTubeError.d.ts +4 -3
- package/dist/struct/DisTubeError.d.ts.map +1 -1
- package/dist/struct/DisTubeError.js +5 -7
- package/dist/struct/DisTubeError.js.map +1 -1
- package/dist/struct/ExtractorPlugin.d.ts +25 -15
- package/dist/struct/ExtractorPlugin.d.ts.map +1 -1
- package/dist/struct/ExtractorPlugin.js +14 -16
- package/dist/struct/ExtractorPlugin.js.map +1 -1
- package/dist/struct/Playlist.d.ts +24 -8
- package/dist/struct/Playlist.d.ts.map +1 -1
- package/dist/struct/Playlist.js +27 -14
- package/dist/struct/Playlist.js.map +1 -1
- package/dist/struct/Plugin.d.ts +4 -12
- package/dist/struct/Plugin.d.ts.map +1 -1
- package/dist/struct/Plugin.js +1 -11
- package/dist/struct/Plugin.js.map +1 -1
- package/dist/struct/Queue.d.ts +5 -6
- package/dist/struct/Queue.d.ts.map +1 -1
- package/dist/struct/Queue.js +5 -9
- package/dist/struct/Queue.js.map +1 -1
- package/dist/struct/SearchResult.d.ts +0 -1
- package/dist/struct/SearchResult.d.ts.map +1 -1
- package/dist/struct/SearchResult.js +2 -4
- package/dist/struct/SearchResult.js.map +1 -1
- package/dist/struct/Song.d.ts +26 -10
- package/dist/struct/Song.d.ts.map +1 -1
- package/dist/struct/Song.js +37 -25
- package/dist/struct/Song.js.map +1 -1
- package/dist/struct/TaskQueue.d.ts +1 -6
- package/dist/struct/TaskQueue.d.ts.map +1 -1
- package/dist/struct/TaskQueue.js +13 -7
- package/dist/struct/TaskQueue.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/type.d.ts +12 -12
- package/dist/type.d.ts.map +1 -1
- package/dist/type.js.map +1 -1
- package/dist/util.d.ts +7 -6
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +23 -24
- package/dist/util.js.map +1 -1
- package/package.json +7 -8
|
@@ -31,7 +31,7 @@ class DisTubeHandler extends _1.DisTubeBase {
|
|
|
31
31
|
const client = this.client;
|
|
32
32
|
if (this.options.leaveOnEmpty) {
|
|
33
33
|
client.on("voiceStateUpdate", oldState => {
|
|
34
|
-
if (!
|
|
34
|
+
if (!oldState?.channel)
|
|
35
35
|
return;
|
|
36
36
|
const queue = this.queues.get(oldState);
|
|
37
37
|
if (!queue) {
|
|
@@ -65,17 +65,25 @@ class DisTubeHandler extends _1.DisTubeBase {
|
|
|
65
65
|
* Create a new guild queue
|
|
66
66
|
* @param {Discord.Message|Discord.VoiceChannel|Discord.StageChannel} message A user message | a voice channel
|
|
67
67
|
* @param {Song|Song[]} song Song to play
|
|
68
|
-
* @param {Discord.
|
|
68
|
+
* @param {Discord.BaseGuildTextChannel?} textChannel A text channel of the queue
|
|
69
69
|
* @throws {Error}
|
|
70
70
|
* @returns {Promise<Queue|true>} `true` if queue is not generated
|
|
71
|
+
* @deprecated Use {@link QueueManager#create} instead
|
|
71
72
|
*/
|
|
72
|
-
async createQueue(message, song, textChannel
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
if (
|
|
73
|
+
async createQueue(message, song, textChannel) {
|
|
74
|
+
process.emitWarning("DisTubeHandler#createQueue is deprecated, use QueueManager#create instead.", "DeprecationWarning");
|
|
75
|
+
let voice;
|
|
76
|
+
if ((0, __1.isMessageInstance)(message)) {
|
|
77
|
+
textChannel = message.channel;
|
|
78
|
+
voice = message.member?.voice?.channel ?? undefined;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
voice = message;
|
|
82
|
+
}
|
|
83
|
+
if (!voice)
|
|
76
84
|
throw new __1.DisTubeError("NOT_IN_VOICE");
|
|
77
85
|
if (!(0, __1.isSupportedVoiceChannel)(voice))
|
|
78
|
-
throw new __1.DisTubeError("
|
|
86
|
+
throw new __1.DisTubeError("INVALID_TYPE", "BaseGuildVoiceChannel", voice);
|
|
79
87
|
return this.queues.create(voice, song, textChannel);
|
|
80
88
|
}
|
|
81
89
|
/**
|
|
@@ -90,54 +98,69 @@ class DisTubeHandler extends _1.DisTubeBase {
|
|
|
90
98
|
}
|
|
91
99
|
/**
|
|
92
100
|
* Resolve a Song
|
|
93
|
-
* @param {Discord.GuildMember} member Requested user
|
|
94
101
|
* @param {string|Song|SearchResult|Playlist} song URL | Search string | {@link Song}
|
|
102
|
+
* @param {Object} [options] Optional options
|
|
103
|
+
* @param {Discord.GuildMember} [options.member] Requested user
|
|
104
|
+
* @param {*} [options.metadata] Metadata
|
|
95
105
|
* @returns {Promise<Song|Playlist|null>} Resolved
|
|
96
106
|
*/
|
|
97
|
-
async resolveSong(
|
|
107
|
+
async resolveSong(song, options = {}) {
|
|
98
108
|
if (!song)
|
|
99
109
|
return null;
|
|
100
|
-
if (song instanceof __1.Song || song instanceof __1.Playlist)
|
|
101
|
-
|
|
110
|
+
if (song instanceof __1.Song || song instanceof __1.Playlist) {
|
|
111
|
+
if (options.metadata)
|
|
112
|
+
song._patchMetadata(options.metadata);
|
|
113
|
+
if (options.member)
|
|
114
|
+
song._patchMember(options.member);
|
|
115
|
+
return song;
|
|
116
|
+
}
|
|
102
117
|
if (song instanceof __1.SearchResult) {
|
|
103
118
|
if (song.type === "video")
|
|
104
|
-
return new __1.Song(song,
|
|
105
|
-
return this.resolvePlaylist(
|
|
119
|
+
return new __1.Song(song, options);
|
|
120
|
+
return this.resolvePlaylist(song.url, options);
|
|
106
121
|
}
|
|
107
122
|
if (typeof song === "object")
|
|
108
|
-
return new __1.Song(song,
|
|
123
|
+
return new __1.Song(song, options);
|
|
109
124
|
if (ytdl_core_1.default.validateURL(song))
|
|
110
|
-
return new __1.Song(await this.getYouTubeInfo(song),
|
|
125
|
+
return new __1.Song(await this.getYouTubeInfo(song), options);
|
|
111
126
|
if ((0, __1.isURL)(song)) {
|
|
112
127
|
for (const plugin of this.distube.extractorPlugins) {
|
|
113
128
|
if (await plugin.validate(song))
|
|
114
|
-
return plugin.resolve(song,
|
|
129
|
+
return plugin.resolve(song, options);
|
|
115
130
|
}
|
|
116
131
|
throw new __1.DisTubeError("NOT_SUPPORTED_URL");
|
|
117
132
|
}
|
|
118
133
|
throw new __1.DisTubeError("CANNOT_RESOLVE_SONG", typeof song);
|
|
119
134
|
}
|
|
120
135
|
/**
|
|
121
|
-
*
|
|
122
|
-
* @param {
|
|
123
|
-
* @param {
|
|
124
|
-
* @param {
|
|
136
|
+
* Resolve Song[] or url to a Playlist
|
|
137
|
+
* @param {Playlist|Song[]|string} playlist Resolvable playlist
|
|
138
|
+
* @param {Object} options Optional options
|
|
139
|
+
* @param {Discord.GuildMember} [options.member] Requested user
|
|
140
|
+
* @param {string} [options.source="youtube"] Playlist source
|
|
141
|
+
* @param {*} [options.metadata] Metadata
|
|
125
142
|
* @returns {Promise<Playlist>}
|
|
126
143
|
*/
|
|
127
|
-
async resolvePlaylist(
|
|
128
|
-
|
|
144
|
+
async resolvePlaylist(playlist, options = {}) {
|
|
145
|
+
const { member, source, metadata } = Object.assign({ source: "youtube" }, options);
|
|
146
|
+
if (playlist instanceof __1.Playlist) {
|
|
147
|
+
if (metadata)
|
|
148
|
+
playlist._patchMetadata(metadata);
|
|
149
|
+
if (member)
|
|
150
|
+
playlist._patchMember(member);
|
|
129
151
|
return playlist;
|
|
152
|
+
}
|
|
130
153
|
let solvablePlaylist;
|
|
131
154
|
if (typeof playlist === "string") {
|
|
132
155
|
solvablePlaylist = await (0, ytpl_1.default)(playlist, { limit: Infinity });
|
|
133
156
|
solvablePlaylist.items = solvablePlaylist.items
|
|
134
157
|
.filter(v => !v.thumbnail.includes("no_thumbnail"))
|
|
135
|
-
.map(v => new __1.Song(v, member));
|
|
158
|
+
.map(v => new __1.Song(v, { member, metadata }));
|
|
136
159
|
}
|
|
137
160
|
else {
|
|
138
161
|
solvablePlaylist = playlist;
|
|
139
162
|
}
|
|
140
|
-
return new __1.Playlist(solvablePlaylist, member, { source });
|
|
163
|
+
return new __1.Playlist(solvablePlaylist, { member, properties: { source }, metadata });
|
|
141
164
|
}
|
|
142
165
|
/**
|
|
143
166
|
* Create a custom playlist
|
|
@@ -146,58 +169,42 @@ class DisTubeHandler extends _1.DisTubeBase {
|
|
|
146
169
|
* @param {Array<string|Song|SearchResult>} songs Array of url, Song or SearchResult
|
|
147
170
|
* @param {Object} [properties={}] Additional properties such as `name`
|
|
148
171
|
* @param {boolean} [parallel=true] Whether or not fetch the songs in parallel
|
|
149
|
-
* @
|
|
150
|
-
*
|
|
151
|
-
* const playlist = await distube.handler.createCustomPlaylist(member, songs, { name: "My playlist name" }, true);
|
|
152
|
-
* // Or fetching custom playlist sequentially (reduce lag for low specs)
|
|
153
|
-
* const playlist = await distube.handler.createCustomPlaylist(member, songs, false);
|
|
154
|
-
* distube.playVoiceChannel(voiceChannel, playlist, { ... });
|
|
172
|
+
* @param {*} [metadata] Metadata
|
|
173
|
+
* @deprecated Use {@link DisTube#createCustomPlaylist} instead
|
|
155
174
|
*/
|
|
156
|
-
async createCustomPlaylist(message, songs, properties = {}, parallel = true) {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
if (!songs.length)
|
|
165
|
-
throw new __1.DisTubeError("NO_VALID_SONG");
|
|
166
|
-
let resolvedSongs;
|
|
167
|
-
if (parallel) {
|
|
168
|
-
const promises = songs.map((song) => this.resolveSong(member, song).catch(() => undefined));
|
|
169
|
-
resolvedSongs = (await Promise.all(promises)).filter((s) => !!s);
|
|
170
|
-
}
|
|
171
|
-
else {
|
|
172
|
-
const resolved = [];
|
|
173
|
-
for (const song of songs) {
|
|
174
|
-
resolved.push(await this.resolveSong(member, song).catch(() => undefined));
|
|
175
|
-
}
|
|
176
|
-
resolvedSongs = resolved.filter((s) => !!s);
|
|
177
|
-
}
|
|
178
|
-
return new __1.Playlist(resolvedSongs, member, properties);
|
|
175
|
+
async createCustomPlaylist(message, songs, properties = {}, parallel = true, metadata) {
|
|
176
|
+
process.emitWarning("DisTubeHandler#createCustomPlaylist is deprecated, use DisTube#createCustomPlaylist instead.", "DeprecationWarning");
|
|
177
|
+
return this.distube.createCustomPlaylist(songs, {
|
|
178
|
+
member: message.member ?? message,
|
|
179
|
+
properties,
|
|
180
|
+
parallel,
|
|
181
|
+
metadata,
|
|
182
|
+
});
|
|
179
183
|
}
|
|
180
184
|
/**
|
|
181
185
|
* Play / add a playlist
|
|
182
186
|
* @returns {Promise<void>}
|
|
183
|
-
* @param {Discord.
|
|
187
|
+
* @param {Discord.BaseGuildVoiceChannel} voice A voice channel
|
|
184
188
|
* @param {Playlist|string} playlist A YouTube playlist url | a Playlist
|
|
185
|
-
* @param {
|
|
186
|
-
* @param {
|
|
187
|
-
* @param {boolean} [
|
|
189
|
+
* @param {Object} [options] Optional options
|
|
190
|
+
* @param {Discord.BaseGuildTextChannel} [options.textChannel] The default text channel of the queue
|
|
191
|
+
* @param {boolean} [options.skip=false] Skip the playing song (if exists) and play the added playlist instantly
|
|
192
|
+
* @param {boolean} [options.unshift=false] Add the playlist after the playing song if exists
|
|
188
193
|
*/
|
|
189
|
-
async handlePlaylist(
|
|
194
|
+
async handlePlaylist(voice, playlist, options = {}) {
|
|
195
|
+
const { textChannel, skip, unshift } = Object.assign({ skip: false, unshift: false }, options);
|
|
190
196
|
if (!(playlist instanceof __1.Playlist))
|
|
191
197
|
throw new __1.DisTubeError("INVALID_TYPE", "Playlist", playlist, "playlist");
|
|
192
|
-
if (!this.options.nsfw && !
|
|
198
|
+
if (!this.options.nsfw && !textChannel?.nsfw) {
|
|
193
199
|
playlist.songs = playlist.songs.filter(s => !s.age_restricted);
|
|
200
|
+
}
|
|
194
201
|
if (!playlist.songs.length) {
|
|
195
|
-
if (!this.options.nsfw && !
|
|
202
|
+
if (!this.options.nsfw && !textChannel?.nsfw)
|
|
196
203
|
throw new __1.DisTubeError("EMPTY_FILTERED_PLAYLIST");
|
|
197
204
|
throw new __1.DisTubeError("EMPTY_PLAYLIST");
|
|
198
205
|
}
|
|
199
206
|
const songs = playlist.songs;
|
|
200
|
-
const queue = this.queues.get(
|
|
207
|
+
const queue = this.queues.get(voice);
|
|
201
208
|
if (queue) {
|
|
202
209
|
queue.addToQueue(songs, skip || unshift ? 1 : -1);
|
|
203
210
|
if (skip)
|
|
@@ -206,7 +213,7 @@ class DisTubeHandler extends _1.DisTubeBase {
|
|
|
206
213
|
this.emit("addList", queue, playlist);
|
|
207
214
|
}
|
|
208
215
|
else {
|
|
209
|
-
const newQueue = await this.
|
|
216
|
+
const newQueue = await this.queues.create(voice, songs, textChannel);
|
|
210
217
|
if (newQueue instanceof __1.Queue) {
|
|
211
218
|
if (this.options.emitAddListWhenCreatingQueue)
|
|
212
219
|
this.emit("addList", newQueue, playlist);
|
|
@@ -221,7 +228,6 @@ class DisTubeHandler extends _1.DisTubeBase {
|
|
|
221
228
|
* @returns {Promise<SearchResult?>} Song info
|
|
222
229
|
*/
|
|
223
230
|
async searchSong(message, query) {
|
|
224
|
-
var _a;
|
|
225
231
|
if (!(0, __1.isMessageInstance)(message))
|
|
226
232
|
throw new __1.DisTubeError("INVALID_TYPE", "Discord.Message", message, "message");
|
|
227
233
|
if (typeof query !== "string")
|
|
@@ -232,7 +238,7 @@ class DisTubeHandler extends _1.DisTubeBase {
|
|
|
232
238
|
const results = await this.distube
|
|
233
239
|
.search(query, {
|
|
234
240
|
limit,
|
|
235
|
-
safeSearch: this.options.nsfw ? false : !
|
|
241
|
+
safeSearch: this.options.nsfw ? false : !message.channel?.nsfw,
|
|
236
242
|
})
|
|
237
243
|
.catch(() => {
|
|
238
244
|
if (!this.emit("searchNoResult", message, query)) {
|
|
@@ -298,7 +304,7 @@ class DisTubeHandler extends _1.DisTubeBase {
|
|
|
298
304
|
time: this.options.searchCooldown * 1e3,
|
|
299
305
|
errors: ["time"],
|
|
300
306
|
})).catch(() => undefined);
|
|
301
|
-
const ans = answers
|
|
307
|
+
const ans = answers?.first();
|
|
302
308
|
if (!ans) {
|
|
303
309
|
this.emit("searchCancel", message, query);
|
|
304
310
|
return null;
|
|
@@ -319,11 +325,10 @@ class DisTubeHandler extends _1.DisTubeBase {
|
|
|
319
325
|
* @returns {DisTubeStream}
|
|
320
326
|
*/
|
|
321
327
|
createStream(queue) {
|
|
322
|
-
var _a;
|
|
323
328
|
const { duration, formats, isLive, source, streamURL } = queue.songs[0];
|
|
324
329
|
const filterArgs = [];
|
|
325
330
|
queue.filters.forEach((filter) => filterArgs.push(this.distube.filters[filter]));
|
|
326
|
-
const ffmpegArgs =
|
|
331
|
+
const ffmpegArgs = queue.filters?.length ? ["-af", filterArgs.join(",")] : undefined;
|
|
327
332
|
const seek = duration ? queue.beginTime : undefined;
|
|
328
333
|
const streamOptions = { ffmpegArgs, seek, isLive };
|
|
329
334
|
Object.assign(streamOptions, this.ytdlOptions);
|
|
@@ -333,5 +338,4 @@ class DisTubeHandler extends _1.DisTubeBase {
|
|
|
333
338
|
}
|
|
334
339
|
}
|
|
335
340
|
exports.DisTubeHandler = DisTubeHandler;
|
|
336
|
-
exports.default = DisTubeHandler;
|
|
337
341
|
//# sourceMappingURL=DisTubeHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DisTubeHandler.js","sourceRoot":"","sources":["../../src/core/DisTubeHandler.ts"],"names":[],"mappings":"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","sourcesContent":["import ytdl from \"@distube/ytdl-core\";\nimport ytpl from \"@distube/ytpl\";\nimport { DisTubeBase, DisTubeStream } from \".\";\nimport {\n DisTubeError,\n Playlist,\n Queue,\n SearchResult,\n Song,\n isMessageInstance,\n isSupportedVoiceChannel,\n isURL,\n isVoiceChannelEmpty,\n} from \"..\";\nimport type { DisTube, OtherSongInfo } from \"..\";\nimport type { GuildMember, Message, StageChannel, TextChannel, VoiceChannel } from \"discord.js\";\n\n/**\n * DisTube's Handler\n * @extends DisTubeBase\n * @private\n */\nexport class DisTubeHandler extends DisTubeBase {\n ytdlOptions: ytdl.downloadOptions;\n constructor(distube: DisTube) {\n super(distube);\n this.ytdlOptions = this.options.ytdlOptions;\n\n if (this.options.youtubeCookie) {\n const requestOptions: any = {\n headers: {\n cookie: this.options.youtubeCookie,\n },\n };\n if (this.options.youtubeIdentityToken) {\n requestOptions.headers[\"x-youtube-identity-token\"] = this.options.youtubeIdentityToken;\n }\n Object.assign(this.ytdlOptions, { requestOptions });\n }\n\n const client = this.client;\n if (this.options.leaveOnEmpty) {\n client.on(\"voiceStateUpdate\", oldState => {\n if (!oldState?.channel) return;\n const queue = this.queues.get(oldState);\n if (!queue) {\n if (isVoiceChannelEmpty(oldState)) {\n setTimeout(() => {\n if (!this.queues.get(oldState) && isVoiceChannelEmpty(oldState)) this.voices.leave(oldState);\n }, this.options.emptyCooldown * 1e3).unref();\n }\n return;\n }\n if (queue.emptyTimeout) {\n clearTimeout(queue.emptyTimeout);\n delete queue.emptyTimeout;\n }\n if (isVoiceChannelEmpty(oldState)) {\n queue.emptyTimeout = setTimeout(() => {\n delete queue.emptyTimeout;\n if (isVoiceChannelEmpty(oldState)) {\n queue.voice.leave();\n this.emit(\"empty\", queue);\n if (queue.stopped) queue.delete();\n }\n }, this.options.emptyCooldown * 1e3).unref();\n }\n });\n }\n }\n\n /**\n * Create a new guild queue\n * @param {Discord.Message|Discord.VoiceChannel|Discord.StageChannel} message A user message | a voice channel\n * @param {Song|Song[]} song Song to play\n * @param {Discord.TextChannel} textChannel A text channel of the queue\n * @throws {Error}\n * @returns {Promise<Queue|true>} `true` if queue is not generated\n */\n async createQueue(\n message: Message | VoiceChannel | StageChannel,\n song: Song | Song[],\n textChannel: TextChannel = (message as Message).channel as TextChannel,\n ): Promise<Queue | true> {\n const voice = (message as Message)?.member?.voice?.channel || message;\n if (!voice || isMessageInstance(voice)) throw new DisTubeError(\"NOT_IN_VOICE\");\n if (!isSupportedVoiceChannel(voice)) throw new DisTubeError(\"NOT_SUPPORTED_VOICE\");\n return this.queues.create(voice, song, textChannel);\n }\n\n /**\n * @param {string} url url\n * @param {boolean} [basic=false] getBasicInfo?\n * @returns {Promise<ytdl.videoInfo>}\n */\n getYouTubeInfo(url: string, basic = false): Promise<ytdl.videoInfo> {\n if (basic) return ytdl.getBasicInfo(url, this.ytdlOptions);\n return ytdl.getInfo(url, this.ytdlOptions);\n }\n\n /**\n * Resolve a Song\n * @param {Discord.GuildMember} member Requested user\n * @param {string|Song|SearchResult|Playlist} song URL | Search string | {@link Song}\n * @returns {Promise<Song|Playlist|null>} Resolved\n */\n async resolveSong(\n member: GuildMember,\n song: string | ytdl.videoInfo | Song | Playlist | SearchResult | OtherSongInfo | ytdl.relatedVideo | null,\n ): Promise<Song | Playlist | null> {\n if (!song) return null;\n if (song instanceof Song || song instanceof Playlist) return song._patchMember(member);\n if (song instanceof SearchResult) {\n if (song.type === \"video\") return new Song(song, member);\n return this.resolvePlaylist(member, song.url);\n }\n if (typeof song === \"object\") return new Song(song, member);\n if (ytdl.validateURL(song)) return new Song(await this.getYouTubeInfo(song), member);\n if (isURL(song)) {\n for (const plugin of this.distube.extractorPlugins) {\n if (await plugin.validate(song)) return plugin.resolve(song, member);\n }\n throw new DisTubeError(\"NOT_SUPPORTED_URL\");\n }\n throw new DisTubeError(\"CANNOT_RESOLVE_SONG\", typeof song);\n }\n\n /**\n * Resole Song[] or url to a Playlist\n * @param {Discord.GuildMember} member Requested user\n * @param {Song[]|string} playlist Resolvable playlist\n * @param {string} [source=\"youtube\"] Playlist source\n * @returns {Promise<Playlist>}\n */\n async resolvePlaylist(\n member: GuildMember,\n playlist: Playlist | Song[] | string,\n source = \"youtube\",\n ): Promise<Playlist> {\n if (playlist instanceof Playlist) return playlist;\n let solvablePlaylist: Song[] | ytpl.result;\n if (typeof playlist === \"string\") {\n solvablePlaylist = await ytpl(playlist, { limit: Infinity });\n (solvablePlaylist as any).items = solvablePlaylist.items\n .filter(v => !v.thumbnail.includes(\"no_thumbnail\"))\n .map(v => new Song(v as OtherSongInfo, member));\n } else {\n solvablePlaylist = playlist;\n }\n return new Playlist(solvablePlaylist, member, { source });\n }\n\n /**\n * Create a custom playlist\n * @returns {Promise<Playlist>}\n * @param {Discord.Message|Discord.GuildMember} message A message from guild channel | A guild member\n * @param {Array<string|Song|SearchResult>} songs Array of url, Song or SearchResult\n * @param {Object} [properties={}] Additional properties such as `name`\n * @param {boolean} [parallel=true] Whether or not fetch the songs in parallel\n * @example\n * const songs = [\"https://www.youtube.com/watch?v=xxx\", \"https://www.youtube.com/watch?v=yyy\"];\n * const playlist = await distube.handler.createCustomPlaylist(member, songs, { name: \"My playlist name\" }, true);\n * // Or fetching custom playlist sequentially (reduce lag for low specs)\n * const playlist = await distube.handler.createCustomPlaylist(member, songs, false);\n * distube.playVoiceChannel(voiceChannel, playlist, { ... });\n */\n async createCustomPlaylist(\n message: Message | GuildMember,\n songs: (string | Song | SearchResult)[],\n properties: any = {},\n parallel = true,\n ): Promise<Playlist> {\n const member = (message as Message)?.member || (message as GuildMember);\n if (!Array.isArray(songs)) throw new DisTubeError(\"INVALID_TYPE\", \"Array\", songs, \"songs\");\n if (!songs.length) throw new DisTubeError(\"EMPTY_ARRAY\", \"songs\");\n songs = songs.filter(\n song => song instanceof Song || (song instanceof SearchResult && song.type === \"video\") || isURL(song),\n );\n if (!songs.length) throw new DisTubeError(\"NO_VALID_SONG\");\n let resolvedSongs: Song[];\n if (parallel) {\n const promises = songs.map((song: string | Song | SearchResult) =>\n this.resolveSong(member, song).catch(() => undefined),\n );\n resolvedSongs = (await Promise.all(promises)).filter((s: any): s is Song => !!s);\n } else {\n const resolved = [];\n for (const song of songs) {\n resolved.push(await this.resolveSong(member, song).catch(() => undefined));\n }\n resolvedSongs = resolved.filter((s: any): s is Song => !!s);\n }\n return new Playlist(resolvedSongs, member, properties);\n }\n\n /**\n * Play / add a playlist\n * @returns {Promise<void>}\n * @param {Discord.Message|Discord.VoiceChannel|Discord.StageChannel} message A message | a voice channel\n * @param {Playlist|string} playlist A YouTube playlist url | a Playlist\n * @param {Discord.TextChannel|boolean} [textChannel] The default text channel of the queue\n * @param {boolean} [skip=false] Skip the playing song (if exists) and play the added playlist instantly\n * @param {boolean} [unshift=false] Add the playlist to the beginning of the queue (after the playing song if exists)\n */\n async handlePlaylist(\n message: Message | VoiceChannel | StageChannel,\n playlist: Playlist,\n textChannel?: TextChannel,\n skip = false,\n unshift = false,\n ): Promise<void> {\n if (!(playlist instanceof Playlist)) throw new DisTubeError(\"INVALID_TYPE\", \"Playlist\", playlist, \"playlist\");\n if (!this.options.nsfw && !textChannel?.nsfw) playlist.songs = playlist.songs.filter(s => !s.age_restricted);\n if (!playlist.songs.length) {\n if (!this.options.nsfw && !textChannel?.nsfw) throw new DisTubeError(\"EMPTY_FILTERED_PLAYLIST\");\n throw new DisTubeError(\"EMPTY_PLAYLIST\");\n }\n const songs = playlist.songs;\n const queue = this.queues.get(message);\n if (queue) {\n queue.addToQueue(songs, skip || unshift ? 1 : -1);\n if (skip) queue.skip();\n else this.emit(\"addList\", queue, playlist);\n } else {\n const newQueue = await this.createQueue(message, songs, textChannel);\n if (newQueue instanceof Queue) {\n if (this.options.emitAddListWhenCreatingQueue) this.emit(\"addList\", newQueue, playlist);\n this.emit(\"playSong\", newQueue, newQueue.songs[0]);\n }\n }\n }\n\n /**\n * Search for a song, fire {@link DisTube#event:error} if not found.\n * @param {Discord.Message} message The original message from an user\n * @param {string} query The query string\n * @returns {Promise<SearchResult?>} Song info\n */\n async searchSong(message: Message, query: string): Promise<SearchResult | null> {\n if (!isMessageInstance(message)) throw new DisTubeError(\"INVALID_TYPE\", \"Discord.Message\", message, \"message\");\n if (typeof query !== \"string\") throw new DisTubeError(\"INVALID_TYPE\", \"string\", query, \"query\");\n if (query.length === 0) throw new DisTubeError(\"EMPTY_STRING\", \"query\");\n const limit = this.options.searchSongs > 1 ? this.options.searchSongs : 1;\n const results = await this.distube\n .search(query, {\n limit,\n safeSearch: this.options.nsfw ? false : !(message.channel as TextChannel)?.nsfw,\n })\n .catch(() => {\n if (!this.emit(\"searchNoResult\", message, query)) {\n // eslint-disable-next-line no-console\n console.warn(\"searchNoResult event does not have any listeners! Emits `error` event instead.\");\n throw new DisTubeError(\"NO_RESULT\");\n }\n });\n if (!results) return null;\n return this.createSearchMessageCollector(message, results, query);\n }\n\n /**\n * Create a message collector for selecting search results.\n *\n * Needed events: {@link DisTube#event:searchResult}, {@link DisTube#event:searchCancel},\n * {@link DisTube#event:searchInvalidAnswer}, {@link DisTube#event:searchDone}.\n * @param {Discord.Message} message The original message from an user\n * @param {Array<SearchResult|Song|Playlist>} results The search results\n * @param {string?} [query] The query string\n * @returns {Promise<SearchResult|Song|Playlist|null>} Selected result\n */\n async createSearchMessageCollector<R extends SearchResult | Song | Playlist>(\n message: Message,\n results: Array<R>,\n query?: string,\n ): Promise<R | null> {\n if (!isMessageInstance(message)) throw new DisTubeError(\"INVALID_TYPE\", \"Discord.Message\", message, \"message\");\n if (!Array.isArray(results) || results.length == 0) {\n throw new DisTubeError(\"INVALID_TYPE\", \"Array<SearchResult|Song|Playlist>\", results, \"results\");\n }\n if (this.options.searchSongs > 1) {\n const searchEvents = [\n \"searchNoResult\",\n \"searchResult\",\n \"searchCancel\",\n \"searchInvalidAnswer\",\n \"searchDone\",\n ] as const;\n for (const evn of searchEvents) {\n if (this.distube.listenerCount(evn) === 0) {\n /* eslint-disable no-console */\n console.warn(`\"searchSongs\" option is disabled due to missing \"${evn}\" listener.`);\n console.warn(\n `If you don't want to use \"${evn}\" event, simply add an empty listener (not recommended):\\n` +\n `<DisTube>.on(\"${evn}\", () => {})`,\n );\n /* eslint-enable no-console */\n this.options.searchSongs = 0;\n }\n }\n }\n const limit = this.options.searchSongs > 1 ? this.options.searchSongs : 1;\n let result = results[0];\n if (limit > 1) {\n results.splice(limit);\n this.emit(\"searchResult\", message, results, query);\n const c = message.channel;\n const answers = await (c.awaitMessages.length === 0\n ? c.awaitMessages({\n filter: (m: Message) => m.author.id === message.author.id,\n max: 1,\n time: this.options.searchCooldown * 1e3,\n errors: [\"time\"],\n })\n : (c.awaitMessages as any)((m: Message) => m.author.id === message.author.id, {\n max: 1,\n time: this.options.searchCooldown * 1e3,\n errors: [\"time\"],\n })\n ).catch(() => undefined);\n const ans = answers?.first();\n if (!ans) {\n this.emit(\"searchCancel\", message, query);\n return null;\n }\n const index = parseInt(ans.content, 10);\n if (isNaN(index) || index > results.length || index < 1) {\n this.emit(\"searchInvalidAnswer\", message, ans, query);\n return null;\n }\n this.emit(\"searchDone\", message, ans, query);\n result = results[index - 1];\n }\n return result;\n }\n\n /**\n * Create a ytdl stream\n * @param {Queue} queue Queue\n * @returns {DisTubeStream}\n */\n createStream(queue: Queue): DisTubeStream {\n const { duration, formats, isLive, source, streamURL } = queue.songs[0];\n const filterArgs: string[] = [];\n queue.filters.forEach((filter: string | number) => filterArgs.push(this.distube.filters[filter]));\n const ffmpegArgs = queue.filters?.length ? [\"-af\", filterArgs.join(\",\")] : undefined;\n const seek = duration ? queue.beginTime : undefined;\n const streamOptions = { ffmpegArgs, seek, isLive };\n Object.assign(streamOptions, this.ytdlOptions);\n if (source === \"youtube\") return DisTubeStream.YouTube(formats, streamOptions);\n return DisTubeStream.DirectLink(streamURL as string, streamOptions);\n }\n}\n\nexport default DisTubeHandler;\n"]}
|
|
1
|
+
{"version":3,"file":"DisTubeHandler.js","sourceRoot":"","sources":["../../src/core/DisTubeHandler.ts"],"names":[],"mappings":"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","sourcesContent":["import ytdl from \"@distube/ytdl-core\";\nimport ytpl from \"@distube/ytpl\";\nimport { DisTubeBase, DisTubeStream } from \".\";\nimport {\n DisTubeError,\n Playlist,\n Queue,\n SearchResult,\n Song,\n isMessageInstance,\n isSupportedVoiceChannel,\n isURL,\n isVoiceChannelEmpty,\n} from \"..\";\nimport type { DisTube, OtherSongInfo } from \"..\";\nimport type { GuildMember, GuildTextBasedChannel, Message, TextChannel, VoiceBasedChannel } from \"discord.js\";\n/**\n * DisTube's Handler\n * @extends DisTubeBase\n * @private\n */\nexport class DisTubeHandler extends DisTubeBase {\n ytdlOptions: ytdl.downloadOptions;\n constructor(distube: DisTube) {\n super(distube);\n this.ytdlOptions = this.options.ytdlOptions;\n\n if (this.options.youtubeCookie) {\n const requestOptions: any = {\n headers: {\n cookie: this.options.youtubeCookie,\n },\n };\n if (this.options.youtubeIdentityToken) {\n requestOptions.headers[\"x-youtube-identity-token\"] = this.options.youtubeIdentityToken;\n }\n Object.assign(this.ytdlOptions, { requestOptions });\n }\n\n const client = this.client;\n if (this.options.leaveOnEmpty) {\n client.on(\"voiceStateUpdate\", oldState => {\n if (!oldState?.channel) return;\n const queue = this.queues.get(oldState);\n if (!queue) {\n if (isVoiceChannelEmpty(oldState)) {\n setTimeout(() => {\n if (!this.queues.get(oldState) && isVoiceChannelEmpty(oldState)) this.voices.leave(oldState);\n }, this.options.emptyCooldown * 1e3).unref();\n }\n return;\n }\n if (queue.emptyTimeout) {\n clearTimeout(queue.emptyTimeout);\n delete queue.emptyTimeout;\n }\n if (isVoiceChannelEmpty(oldState)) {\n queue.emptyTimeout = setTimeout(() => {\n delete queue.emptyTimeout;\n if (isVoiceChannelEmpty(oldState)) {\n queue.voice.leave();\n this.emit(\"empty\", queue);\n if (queue.stopped) queue.delete();\n }\n }, this.options.emptyCooldown * 1e3).unref();\n }\n });\n }\n }\n\n /**\n * Create a new guild queue\n * @param {Discord.Message|Discord.VoiceChannel|Discord.StageChannel} message A user message | a voice channel\n * @param {Song|Song[]} song Song to play\n * @param {Discord.BaseGuildTextChannel?} textChannel A text channel of the queue\n * @throws {Error}\n * @returns {Promise<Queue|true>} `true` if queue is not generated\n * @deprecated Use {@link QueueManager#create} instead\n */\n async createQueue(\n message: Message<true> | VoiceBasedChannel,\n song: Song | Song[],\n textChannel?: GuildTextBasedChannel,\n ): Promise<Queue | true> {\n process.emitWarning(\n \"DisTubeHandler#createQueue is deprecated, use QueueManager#create instead.\",\n \"DeprecationWarning\",\n );\n let voice: VoiceBasedChannel | undefined;\n if (isMessageInstance(message)) {\n textChannel = message.channel;\n voice = message.member?.voice?.channel ?? undefined;\n } else {\n voice = message;\n }\n if (!voice) throw new DisTubeError(\"NOT_IN_VOICE\");\n if (!isSupportedVoiceChannel(voice)) throw new DisTubeError(\"INVALID_TYPE\", \"BaseGuildVoiceChannel\", voice);\n return this.queues.create(voice, song, textChannel);\n }\n\n /**\n * @param {string} url url\n * @param {boolean} [basic=false] getBasicInfo?\n * @returns {Promise<ytdl.videoInfo>}\n */\n getYouTubeInfo(url: string, basic = false): Promise<ytdl.videoInfo> {\n if (basic) return ytdl.getBasicInfo(url, this.ytdlOptions);\n return ytdl.getInfo(url, this.ytdlOptions);\n }\n\n /**\n * Resolve a Song\n * @param {string|Song|SearchResult|Playlist} song URL | Search string | {@link Song}\n * @param {Object} [options] Optional options\n * @param {Discord.GuildMember} [options.member] Requested user\n * @param {*} [options.metadata] Metadata\n * @returns {Promise<Song|Playlist|null>} Resolved\n */\n async resolveSong(\n song: string | ytdl.videoInfo | Song | Playlist | SearchResult | OtherSongInfo | ytdl.relatedVideo | null,\n options: {\n member?: GuildMember;\n metadata?: any;\n } = {},\n ): Promise<Song | Playlist | null> {\n if (!song) return null;\n if (song instanceof Song || song instanceof Playlist) {\n if (options.metadata) song._patchMetadata(options.metadata);\n if (options.member) song._patchMember(options.member);\n return song;\n }\n if (song instanceof SearchResult) {\n if (song.type === \"video\") return new Song(song, options);\n return this.resolvePlaylist(song.url, options);\n }\n if (typeof song === \"object\") return new Song(song, options);\n if (ytdl.validateURL(song)) return new Song(await this.getYouTubeInfo(song), options);\n if (isURL(song)) {\n for (const plugin of this.distube.extractorPlugins) {\n if (await plugin.validate(song)) return plugin.resolve(song, options);\n }\n throw new DisTubeError(\"NOT_SUPPORTED_URL\");\n }\n throw new DisTubeError(\"CANNOT_RESOLVE_SONG\", typeof song);\n }\n\n /**\n * Resolve Song[] or url to a Playlist\n * @param {Playlist|Song[]|string} playlist Resolvable playlist\n * @param {Object} options Optional options\n * @param {Discord.GuildMember} [options.member] Requested user\n * @param {string} [options.source=\"youtube\"] Playlist source\n * @param {*} [options.metadata] Metadata\n * @returns {Promise<Playlist>}\n */\n async resolvePlaylist(\n playlist: Playlist | Song[] | string,\n options: {\n member?: GuildMember;\n source?: string;\n metadata?: any;\n } = {},\n ): Promise<Playlist> {\n const { member, source, metadata } = Object.assign({ source: \"youtube\" }, options);\n if (playlist instanceof Playlist) {\n if (metadata) playlist._patchMetadata(metadata);\n if (member) playlist._patchMember(member);\n return playlist;\n }\n let solvablePlaylist: Song[] | ytpl.result;\n if (typeof playlist === \"string\") {\n solvablePlaylist = await ytpl(playlist, { limit: Infinity });\n (solvablePlaylist as any).items = solvablePlaylist.items\n .filter(v => !v.thumbnail.includes(\"no_thumbnail\"))\n .map(v => new Song(v as OtherSongInfo, { member, metadata }));\n } else {\n solvablePlaylist = playlist;\n }\n return new Playlist(solvablePlaylist, { member, properties: { source }, metadata });\n }\n\n /**\n * Create a custom playlist\n * @returns {Promise<Playlist>}\n * @param {Discord.Message|Discord.GuildMember} message A message from guild channel | A guild member\n * @param {Array<string|Song|SearchResult>} songs Array of url, Song or SearchResult\n * @param {Object} [properties={}] Additional properties such as `name`\n * @param {boolean} [parallel=true] Whether or not fetch the songs in parallel\n * @param {*} [metadata] Metadata\n * @deprecated Use {@link DisTube#createCustomPlaylist} instead\n */\n async createCustomPlaylist(\n message: Message<true> | GuildMember,\n songs: (string | Song | SearchResult)[],\n properties: any = {},\n parallel = true,\n metadata?: any,\n ): Promise<Playlist> {\n process.emitWarning(\n \"DisTubeHandler#createCustomPlaylist is deprecated, use DisTube#createCustomPlaylist instead.\",\n \"DeprecationWarning\",\n );\n return this.distube.createCustomPlaylist(songs, {\n member: (message as Message<true>).member ?? (message as GuildMember),\n properties,\n parallel,\n metadata,\n });\n }\n\n /**\n * Play / add a playlist\n * @returns {Promise<void>}\n * @param {Discord.BaseGuildVoiceChannel} voice A voice channel\n * @param {Playlist|string} playlist A YouTube playlist url | a Playlist\n * @param {Object} [options] Optional options\n * @param {Discord.BaseGuildTextChannel} [options.textChannel] The default text channel of the queue\n * @param {boolean} [options.skip=false] Skip the playing song (if exists) and play the added playlist instantly\n * @param {boolean} [options.unshift=false] Add the playlist after the playing song if exists\n */\n async handlePlaylist(\n voice: VoiceBasedChannel,\n playlist: Playlist,\n options: {\n textChannel?: GuildTextBasedChannel;\n skip?: boolean;\n unshift?: boolean;\n } = {},\n ): Promise<void> {\n const { textChannel, skip, unshift } = Object.assign({ skip: false, unshift: false }, options);\n if (!(playlist instanceof Playlist)) throw new DisTubeError(\"INVALID_TYPE\", \"Playlist\", playlist, \"playlist\");\n if (!this.options.nsfw && !(textChannel as TextChannel)?.nsfw) {\n playlist.songs = playlist.songs.filter(s => !s.age_restricted);\n }\n if (!playlist.songs.length) {\n if (!this.options.nsfw && !(textChannel as TextChannel)?.nsfw) throw new DisTubeError(\"EMPTY_FILTERED_PLAYLIST\");\n throw new DisTubeError(\"EMPTY_PLAYLIST\");\n }\n const songs = playlist.songs;\n const queue = this.queues.get(voice);\n if (queue) {\n queue.addToQueue(songs, skip || unshift ? 1 : -1);\n if (skip) queue.skip();\n else this.emit(\"addList\", queue, playlist);\n } else {\n const newQueue = await this.queues.create(voice, songs, textChannel);\n if (newQueue instanceof Queue) {\n if (this.options.emitAddListWhenCreatingQueue) this.emit(\"addList\", newQueue, playlist);\n this.emit(\"playSong\", newQueue, newQueue.songs[0]);\n }\n }\n }\n\n /**\n * Search for a song, fire {@link DisTube#event:error} if not found.\n * @param {Discord.Message} message The original message from an user\n * @param {string} query The query string\n * @returns {Promise<SearchResult?>} Song info\n */\n async searchSong(message: Message<true>, query: string): Promise<SearchResult | null> {\n if (!isMessageInstance(message)) throw new DisTubeError(\"INVALID_TYPE\", \"Discord.Message\", message, \"message\");\n if (typeof query !== \"string\") throw new DisTubeError(\"INVALID_TYPE\", \"string\", query, \"query\");\n if (query.length === 0) throw new DisTubeError(\"EMPTY_STRING\", \"query\");\n const limit = this.options.searchSongs > 1 ? this.options.searchSongs : 1;\n const results = await this.distube\n .search(query, {\n limit,\n safeSearch: this.options.nsfw ? false : !(message.channel as TextChannel)?.nsfw,\n })\n .catch(() => {\n if (!this.emit(\"searchNoResult\", message, query)) {\n // eslint-disable-next-line no-console\n console.warn(\"searchNoResult event does not have any listeners! Emits `error` event instead.\");\n throw new DisTubeError(\"NO_RESULT\");\n }\n });\n if (!results) return null;\n return this.createSearchMessageCollector(message, results, query);\n }\n\n /**\n * Create a message collector for selecting search results.\n *\n * Needed events: {@link DisTube#event:searchResult}, {@link DisTube#event:searchCancel},\n * {@link DisTube#event:searchInvalidAnswer}, {@link DisTube#event:searchDone}.\n * @param {Discord.Message} message The original message from an user\n * @param {Array<SearchResult|Song|Playlist>} results The search results\n * @param {string?} [query] The query string\n * @returns {Promise<SearchResult|Song|Playlist|null>} Selected result\n */\n async createSearchMessageCollector<R extends SearchResult | Song | Playlist>(\n message: Message<true>,\n results: Array<R>,\n query?: string,\n ): Promise<R | null> {\n if (!isMessageInstance(message)) throw new DisTubeError(\"INVALID_TYPE\", \"Discord.Message\", message, \"message\");\n if (!Array.isArray(results) || results.length == 0) {\n throw new DisTubeError(\"INVALID_TYPE\", \"Array<SearchResult|Song|Playlist>\", results, \"results\");\n }\n if (this.options.searchSongs > 1) {\n const searchEvents = [\n \"searchNoResult\",\n \"searchResult\",\n \"searchCancel\",\n \"searchInvalidAnswer\",\n \"searchDone\",\n ] as const;\n for (const evn of searchEvents) {\n if (this.distube.listenerCount(evn) === 0) {\n /* eslint-disable no-console */\n console.warn(`\"searchSongs\" option is disabled due to missing \"${evn}\" listener.`);\n console.warn(\n `If you don't want to use \"${evn}\" event, simply add an empty listener (not recommended):\\n` +\n `<DisTube>.on(\"${evn}\", () => {})`,\n );\n /* eslint-enable no-console */\n this.options.searchSongs = 0;\n }\n }\n }\n const limit = this.options.searchSongs > 1 ? this.options.searchSongs : 1;\n let result = results[0];\n if (limit > 1) {\n results.splice(limit);\n this.emit(\"searchResult\", message, results, query);\n const c = message.channel;\n const answers = await (c.awaitMessages.length === 0\n ? c.awaitMessages({\n filter: (m: Message) => m.author.id === message.author.id,\n max: 1,\n time: this.options.searchCooldown * 1e3,\n errors: [\"time\"],\n })\n : (c.awaitMessages as any)((m: Message) => m.author.id === message.author.id, {\n max: 1,\n time: this.options.searchCooldown * 1e3,\n errors: [\"time\"],\n })\n ).catch(() => undefined);\n const ans = answers?.first();\n if (!ans) {\n this.emit(\"searchCancel\", message, query);\n return null;\n }\n const index = parseInt(ans.content, 10);\n if (isNaN(index) || index > results.length || index < 1) {\n this.emit(\"searchInvalidAnswer\", message, ans, query);\n return null;\n }\n this.emit(\"searchDone\", message, ans, query);\n result = results[index - 1];\n }\n return result;\n }\n\n /**\n * Create a ytdl stream\n * @param {Queue} queue Queue\n * @returns {DisTubeStream}\n */\n createStream(queue: Queue): DisTubeStream {\n const { duration, formats, isLive, source, streamURL } = queue.songs[0];\n const filterArgs: string[] = [];\n queue.filters.forEach((filter: string | number) => filterArgs.push(this.distube.filters[filter]));\n const ffmpegArgs = queue.filters?.length ? [\"-af\", filterArgs.join(\",\")] : undefined;\n const seek = duration ? queue.beginTime : undefined;\n const streamOptions = { ffmpegArgs, seek, isLive };\n Object.assign(streamOptions, this.ytdlOptions);\n if (source === \"youtube\") return DisTubeStream.YouTube(formats, streamOptions);\n return DisTubeStream.DirectLink(streamURL as string, streamOptions);\n }\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type ytdl from "@distube/ytdl-core";
|
|
2
2
|
import type { CustomPlugin, DisTubeOptions, ExtractorPlugin, Filters } from "..";
|
|
3
3
|
export declare class Options {
|
|
4
|
+
#private;
|
|
4
5
|
plugins: (CustomPlugin | ExtractorPlugin)[];
|
|
5
6
|
emitNewSongOnly: boolean;
|
|
6
7
|
leaveOnFinish: boolean;
|
|
@@ -20,7 +21,5 @@ export declare class Options {
|
|
|
20
21
|
emitAddSongWhenCreatingQueue: boolean;
|
|
21
22
|
emitAddListWhenCreatingQueue: boolean;
|
|
22
23
|
constructor(options: DisTubeOptions);
|
|
23
|
-
private _validateOptions;
|
|
24
24
|
}
|
|
25
|
-
export default Options;
|
|
26
25
|
//# sourceMappingURL=DisTubeOptions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DisTubeOptions.d.ts","sourceRoot":"","sources":["../../src/core/DisTubeOptions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAEjF,qBAAa,OAAO
|
|
1
|
+
{"version":3,"file":"DisTubeOptions.d.ts","sourceRoot":"","sources":["../../src/core/DisTubeOptions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAEjF,qBAAa,OAAO;;IAClB,OAAO,EAAE,CAAC,YAAY,GAAG,eAAe,CAAC,EAAE,CAAC;IAC5C,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,4BAA4B,EAAE,OAAO,CAAC;IACtC,4BAA4B,EAAE,OAAO,CAAC;gBAC1B,OAAO,EAAE,cAAc;CAoGpC"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
5
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
6
|
+
};
|
|
7
|
+
var _Options_instances, _Options_validateOptions;
|
|
2
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
9
|
exports.Options = void 0;
|
|
4
10
|
const __1 = require("..");
|
|
5
11
|
class Options {
|
|
6
12
|
constructor(options) {
|
|
13
|
+
_Options_instances.add(this);
|
|
7
14
|
if (typeof options !== "object" || Array.isArray(options)) {
|
|
8
15
|
throw new __1.DisTubeError("INVALID_TYPE", "object", options, "DisTubeOptions");
|
|
9
16
|
}
|
|
@@ -29,65 +36,64 @@ class Options {
|
|
|
29
36
|
this.emitAddSongWhenCreatingQueue = opts.emitAddSongWhenCreatingQueue;
|
|
30
37
|
this.emitAddListWhenCreatingQueue = opts.emitAddListWhenCreatingQueue;
|
|
31
38
|
(0, __1.checkInvalidKey)(opts, this, "DisTubeOptions");
|
|
32
|
-
this.
|
|
33
|
-
}
|
|
34
|
-
_validateOptions(options = this) {
|
|
35
|
-
if (typeof options.emitNewSongOnly !== "boolean") {
|
|
36
|
-
throw new __1.DisTubeError("INVALID_TYPE", "boolean", options.emitNewSongOnly, "DisTubeOptions.emitNewSongOnly");
|
|
37
|
-
}
|
|
38
|
-
if (typeof options.leaveOnEmpty !== "boolean") {
|
|
39
|
-
throw new __1.DisTubeError("INVALID_TYPE", "boolean", options.leaveOnEmpty, "DisTubeOptions.leaveOnEmpty");
|
|
40
|
-
}
|
|
41
|
-
if (typeof options.leaveOnFinish !== "boolean") {
|
|
42
|
-
throw new __1.DisTubeError("INVALID_TYPE", "boolean", options.leaveOnFinish, "DisTubeOptions.leaveOnFinish");
|
|
43
|
-
}
|
|
44
|
-
if (typeof options.leaveOnStop !== "boolean") {
|
|
45
|
-
throw new __1.DisTubeError("INVALID_TYPE", "boolean", options.leaveOnStop, "DisTubeOptions.leaveOnStop");
|
|
46
|
-
}
|
|
47
|
-
if (typeof options.savePreviousSongs !== "boolean") {
|
|
48
|
-
throw new __1.DisTubeError("INVALID_TYPE", "boolean", options.savePreviousSongs, "DisTubeOptions.savePreviousSongs");
|
|
49
|
-
}
|
|
50
|
-
if (typeof options.youtubeDL !== "boolean") {
|
|
51
|
-
throw new __1.DisTubeError("INVALID_TYPE", "boolean", options.youtubeDL, "DisTubeOptions.youtubeDL");
|
|
52
|
-
}
|
|
53
|
-
if (typeof options.updateYouTubeDL !== "boolean") {
|
|
54
|
-
throw new __1.DisTubeError("INVALID_TYPE", "boolean", options.updateYouTubeDL, "DisTubeOptions.updateYouTubeDL");
|
|
55
|
-
}
|
|
56
|
-
if (typeof options.youtubeCookie !== "undefined" && typeof options.youtubeCookie !== "string") {
|
|
57
|
-
throw new __1.DisTubeError("INVALID_TYPE", "string", options.youtubeCookie, "DisTubeOptions.youtubeCookie");
|
|
58
|
-
}
|
|
59
|
-
if (typeof options.youtubeIdentityToken !== "undefined" && typeof options.youtubeIdentityToken !== "string") {
|
|
60
|
-
throw new __1.DisTubeError("INVALID_TYPE", "string", options.youtubeIdentityToken, "DisTubeOptions.youtubeIdentityToken");
|
|
61
|
-
}
|
|
62
|
-
if (typeof options.customFilters !== "object" || Array.isArray(options.customFilters)) {
|
|
63
|
-
throw new __1.DisTubeError("INVALID_TYPE", "object", options.customFilters, "DisTubeOptions.customFilters");
|
|
64
|
-
}
|
|
65
|
-
if (typeof options.ytdlOptions !== "object" || Array.isArray(options.ytdlOptions)) {
|
|
66
|
-
throw new __1.DisTubeError("INVALID_TYPE", "object", options.ytdlOptions, "DisTubeOptions.ytdlOptions");
|
|
67
|
-
}
|
|
68
|
-
if (typeof options.searchCooldown !== "number" || isNaN(options.searchCooldown)) {
|
|
69
|
-
throw new __1.DisTubeError("INVALID_TYPE", "number", options.searchCooldown, "DisTubeOptions.searchCooldown");
|
|
70
|
-
}
|
|
71
|
-
if (typeof options.emptyCooldown !== "number" || isNaN(options.emptyCooldown)) {
|
|
72
|
-
throw new __1.DisTubeError("INVALID_TYPE", "number", options.emptyCooldown, "DisTubeOptions.emptyCooldown");
|
|
73
|
-
}
|
|
74
|
-
if (typeof options.searchSongs !== "number" || isNaN(options.searchSongs)) {
|
|
75
|
-
throw new __1.DisTubeError("INVALID_TYPE", "number", options.searchSongs, "DisTubeOptions.searchSongs");
|
|
76
|
-
}
|
|
77
|
-
if (!Array.isArray(options.plugins)) {
|
|
78
|
-
throw new __1.DisTubeError("INVALID_TYPE", "Array<Plugin>", options.plugins, "DisTubeOptions.plugins");
|
|
79
|
-
}
|
|
80
|
-
if (typeof options.nsfw !== "boolean") {
|
|
81
|
-
throw new __1.DisTubeError("INVALID_TYPE", "boolean", options.nsfw, "DisTubeOptions.nsfw");
|
|
82
|
-
}
|
|
83
|
-
if (typeof options.emitAddSongWhenCreatingQueue !== "boolean") {
|
|
84
|
-
throw new __1.DisTubeError("INVALID_TYPE", "boolean", options.emitAddSongWhenCreatingQueue, "DisTubeOptions.emitAddSongWhenCreatingQueue");
|
|
85
|
-
}
|
|
86
|
-
if (typeof options.emitAddListWhenCreatingQueue !== "boolean") {
|
|
87
|
-
throw new __1.DisTubeError("INVALID_TYPE", "boolean", options.emitAddListWhenCreatingQueue, "DisTubeOptions.emitAddListWhenCreatingQueue");
|
|
88
|
-
}
|
|
39
|
+
__classPrivateFieldGet(this, _Options_instances, "m", _Options_validateOptions).call(this);
|
|
89
40
|
}
|
|
90
41
|
}
|
|
91
42
|
exports.Options = Options;
|
|
92
|
-
|
|
43
|
+
_Options_instances = new WeakSet(), _Options_validateOptions = function _Options_validateOptions(options = this) {
|
|
44
|
+
if (typeof options.emitNewSongOnly !== "boolean") {
|
|
45
|
+
throw new __1.DisTubeError("INVALID_TYPE", "boolean", options.emitNewSongOnly, "DisTubeOptions.emitNewSongOnly");
|
|
46
|
+
}
|
|
47
|
+
if (typeof options.leaveOnEmpty !== "boolean") {
|
|
48
|
+
throw new __1.DisTubeError("INVALID_TYPE", "boolean", options.leaveOnEmpty, "DisTubeOptions.leaveOnEmpty");
|
|
49
|
+
}
|
|
50
|
+
if (typeof options.leaveOnFinish !== "boolean") {
|
|
51
|
+
throw new __1.DisTubeError("INVALID_TYPE", "boolean", options.leaveOnFinish, "DisTubeOptions.leaveOnFinish");
|
|
52
|
+
}
|
|
53
|
+
if (typeof options.leaveOnStop !== "boolean") {
|
|
54
|
+
throw new __1.DisTubeError("INVALID_TYPE", "boolean", options.leaveOnStop, "DisTubeOptions.leaveOnStop");
|
|
55
|
+
}
|
|
56
|
+
if (typeof options.savePreviousSongs !== "boolean") {
|
|
57
|
+
throw new __1.DisTubeError("INVALID_TYPE", "boolean", options.savePreviousSongs, "DisTubeOptions.savePreviousSongs");
|
|
58
|
+
}
|
|
59
|
+
if (typeof options.youtubeDL !== "boolean") {
|
|
60
|
+
throw new __1.DisTubeError("INVALID_TYPE", "boolean", options.youtubeDL, "DisTubeOptions.youtubeDL");
|
|
61
|
+
}
|
|
62
|
+
if (typeof options.updateYouTubeDL !== "boolean") {
|
|
63
|
+
throw new __1.DisTubeError("INVALID_TYPE", "boolean", options.updateYouTubeDL, "DisTubeOptions.updateYouTubeDL");
|
|
64
|
+
}
|
|
65
|
+
if (typeof options.youtubeCookie !== "undefined" && typeof options.youtubeCookie !== "string") {
|
|
66
|
+
throw new __1.DisTubeError("INVALID_TYPE", "string", options.youtubeCookie, "DisTubeOptions.youtubeCookie");
|
|
67
|
+
}
|
|
68
|
+
if (typeof options.youtubeIdentityToken !== "undefined" && typeof options.youtubeIdentityToken !== "string") {
|
|
69
|
+
throw new __1.DisTubeError("INVALID_TYPE", "string", options.youtubeIdentityToken, "DisTubeOptions.youtubeIdentityToken");
|
|
70
|
+
}
|
|
71
|
+
if (typeof options.customFilters !== "object" || Array.isArray(options.customFilters)) {
|
|
72
|
+
throw new __1.DisTubeError("INVALID_TYPE", "object", options.customFilters, "DisTubeOptions.customFilters");
|
|
73
|
+
}
|
|
74
|
+
if (typeof options.ytdlOptions !== "object" || Array.isArray(options.ytdlOptions)) {
|
|
75
|
+
throw new __1.DisTubeError("INVALID_TYPE", "object", options.ytdlOptions, "DisTubeOptions.ytdlOptions");
|
|
76
|
+
}
|
|
77
|
+
if (typeof options.searchCooldown !== "number" || isNaN(options.searchCooldown)) {
|
|
78
|
+
throw new __1.DisTubeError("INVALID_TYPE", "number", options.searchCooldown, "DisTubeOptions.searchCooldown");
|
|
79
|
+
}
|
|
80
|
+
if (typeof options.emptyCooldown !== "number" || isNaN(options.emptyCooldown)) {
|
|
81
|
+
throw new __1.DisTubeError("INVALID_TYPE", "number", options.emptyCooldown, "DisTubeOptions.emptyCooldown");
|
|
82
|
+
}
|
|
83
|
+
if (typeof options.searchSongs !== "number" || isNaN(options.searchSongs)) {
|
|
84
|
+
throw new __1.DisTubeError("INVALID_TYPE", "number", options.searchSongs, "DisTubeOptions.searchSongs");
|
|
85
|
+
}
|
|
86
|
+
if (!Array.isArray(options.plugins)) {
|
|
87
|
+
throw new __1.DisTubeError("INVALID_TYPE", "Array<Plugin>", options.plugins, "DisTubeOptions.plugins");
|
|
88
|
+
}
|
|
89
|
+
if (typeof options.nsfw !== "boolean") {
|
|
90
|
+
throw new __1.DisTubeError("INVALID_TYPE", "boolean", options.nsfw, "DisTubeOptions.nsfw");
|
|
91
|
+
}
|
|
92
|
+
if (typeof options.emitAddSongWhenCreatingQueue !== "boolean") {
|
|
93
|
+
throw new __1.DisTubeError("INVALID_TYPE", "boolean", options.emitAddSongWhenCreatingQueue, "DisTubeOptions.emitAddSongWhenCreatingQueue");
|
|
94
|
+
}
|
|
95
|
+
if (typeof options.emitAddListWhenCreatingQueue !== "boolean") {
|
|
96
|
+
throw new __1.DisTubeError("INVALID_TYPE", "boolean", options.emitAddListWhenCreatingQueue, "DisTubeOptions.emitAddListWhenCreatingQueue");
|
|
97
|
+
}
|
|
98
|
+
};
|
|
93
99
|
//# sourceMappingURL=DisTubeOptions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DisTubeOptions.js","sourceRoot":"","sources":["../../src/core/DisTubeOptions.ts"],"names":[],"mappings":"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","sourcesContent":["import { DisTubeError, checkInvalidKey, defaultOptions } from \"..\";\nimport type ytdl from \"@distube/ytdl-core\";\nimport type { CustomPlugin, DisTubeOptions, ExtractorPlugin, Filters } from \"..\";\n\nexport class Options {\n plugins: (CustomPlugin | ExtractorPlugin)[];\n emitNewSongOnly: boolean;\n leaveOnFinish: boolean;\n leaveOnStop: boolean;\n leaveOnEmpty: boolean;\n emptyCooldown: number;\n savePreviousSongs: boolean;\n searchSongs: number;\n searchCooldown: number;\n youtubeCookie?: string;\n youtubeIdentityToken?: string;\n youtubeDL: boolean;\n updateYouTubeDL: boolean;\n customFilters: Filters;\n ytdlOptions: ytdl.getInfoOptions;\n nsfw: boolean;\n emitAddSongWhenCreatingQueue: boolean;\n emitAddListWhenCreatingQueue: boolean;\n constructor(options: DisTubeOptions) {\n if (typeof options !== \"object\" || Array.isArray(options)) {\n throw new DisTubeError(\"INVALID_TYPE\", \"object\", options, \"DisTubeOptions\");\n }\n const def = { ...defaultOptions };\n // Object.assign(this, defaultOptions, options);\n const opts = Object.assign({}, def, options);\n this.plugins = opts.plugins;\n this.emitNewSongOnly = opts.emitNewSongOnly;\n this.leaveOnEmpty = opts.leaveOnEmpty;\n this.leaveOnFinish = opts.leaveOnFinish;\n this.leaveOnStop = opts.leaveOnStop;\n this.savePreviousSongs = opts.savePreviousSongs;\n this.youtubeDL = opts.youtubeDL;\n this.updateYouTubeDL = opts.updateYouTubeDL;\n this.searchSongs = opts.searchSongs;\n this.youtubeCookie = opts.youtubeCookie;\n this.youtubeIdentityToken = opts.youtubeIdentityToken;\n this.customFilters = opts.customFilters;\n this.ytdlOptions = opts.ytdlOptions;\n this.searchCooldown = opts.searchCooldown;\n this.emptyCooldown = opts.emptyCooldown;\n this.nsfw = opts.nsfw;\n this.emitAddSongWhenCreatingQueue = opts.emitAddSongWhenCreatingQueue;\n this.emitAddListWhenCreatingQueue = opts.emitAddListWhenCreatingQueue;\n checkInvalidKey(opts, this, \"DisTubeOptions\");\n this._validateOptions();\n }\n\n private _validateOptions(options = this) {\n if (typeof options.emitNewSongOnly !== \"boolean\") {\n throw new DisTubeError(\"INVALID_TYPE\", \"boolean\", options.emitNewSongOnly, \"DisTubeOptions.emitNewSongOnly\");\n }\n if (typeof options.leaveOnEmpty !== \"boolean\") {\n throw new DisTubeError(\"INVALID_TYPE\", \"boolean\", options.leaveOnEmpty, \"DisTubeOptions.leaveOnEmpty\");\n }\n if (typeof options.leaveOnFinish !== \"boolean\") {\n throw new DisTubeError(\"INVALID_TYPE\", \"boolean\", options.leaveOnFinish, \"DisTubeOptions.leaveOnFinish\");\n }\n if (typeof options.leaveOnStop !== \"boolean\") {\n throw new DisTubeError(\"INVALID_TYPE\", \"boolean\", options.leaveOnStop, \"DisTubeOptions.leaveOnStop\");\n }\n if (typeof options.savePreviousSongs !== \"boolean\") {\n throw new DisTubeError(\"INVALID_TYPE\", \"boolean\", options.savePreviousSongs, \"DisTubeOptions.savePreviousSongs\");\n }\n if (typeof options.youtubeDL !== \"boolean\") {\n throw new DisTubeError(\"INVALID_TYPE\", \"boolean\", options.youtubeDL, \"DisTubeOptions.youtubeDL\");\n }\n if (typeof options.updateYouTubeDL !== \"boolean\") {\n throw new DisTubeError(\"INVALID_TYPE\", \"boolean\", options.updateYouTubeDL, \"DisTubeOptions.updateYouTubeDL\");\n }\n if (typeof options.youtubeCookie !== \"undefined\" && typeof options.youtubeCookie !== \"string\") {\n throw new DisTubeError(\"INVALID_TYPE\", \"string\", options.youtubeCookie, \"DisTubeOptions.youtubeCookie\");\n }\n if (typeof options.youtubeIdentityToken !== \"undefined\" && typeof options.youtubeIdentityToken !== \"string\") {\n throw new DisTubeError(\n \"INVALID_TYPE\",\n \"string\",\n options.youtubeIdentityToken,\n \"DisTubeOptions.youtubeIdentityToken\",\n );\n }\n if (typeof options.customFilters !== \"object\" || Array.isArray(options.customFilters)) {\n throw new DisTubeError(\"INVALID_TYPE\", \"object\", options.customFilters, \"DisTubeOptions.customFilters\");\n }\n if (typeof options.ytdlOptions !== \"object\" || Array.isArray(options.ytdlOptions)) {\n throw new DisTubeError(\"INVALID_TYPE\", \"object\", options.ytdlOptions, \"DisTubeOptions.ytdlOptions\");\n }\n if (typeof options.searchCooldown !== \"number\" || isNaN(options.searchCooldown)) {\n throw new DisTubeError(\"INVALID_TYPE\", \"number\", options.searchCooldown, \"DisTubeOptions.searchCooldown\");\n }\n if (typeof options.emptyCooldown !== \"number\" || isNaN(options.emptyCooldown)) {\n throw new DisTubeError(\"INVALID_TYPE\", \"number\", options.emptyCooldown, \"DisTubeOptions.emptyCooldown\");\n }\n if (typeof options.searchSongs !== \"number\" || isNaN(options.searchSongs)) {\n throw new DisTubeError(\"INVALID_TYPE\", \"number\", options.searchSongs, \"DisTubeOptions.searchSongs\");\n }\n if (!Array.isArray(options.plugins)) {\n throw new DisTubeError(\"INVALID_TYPE\", \"Array<Plugin>\", options.plugins, \"DisTubeOptions.plugins\");\n }\n if (typeof options.nsfw !== \"boolean\") {\n throw new DisTubeError(\"INVALID_TYPE\", \"boolean\", options.nsfw, \"DisTubeOptions.nsfw\");\n }\n if (typeof options.emitAddSongWhenCreatingQueue !== \"boolean\") {\n throw new DisTubeError(\n \"INVALID_TYPE\",\n \"boolean\",\n options.emitAddSongWhenCreatingQueue,\n \"DisTubeOptions.emitAddSongWhenCreatingQueue\",\n );\n }\n if (typeof options.emitAddListWhenCreatingQueue !== \"boolean\") {\n throw new DisTubeError(\n \"INVALID_TYPE\",\n \"boolean\",\n options.emitAddListWhenCreatingQueue,\n \"DisTubeOptions.emitAddListWhenCreatingQueue\",\n );\n }\n }\n}\n\nexport default Options;\n"]}
|
|
1
|
+
{"version":3,"file":"DisTubeOptions.js","sourceRoot":"","sources":["../../src/core/DisTubeOptions.ts"],"names":[],"mappings":"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","sourcesContent":["import { DisTubeError, checkInvalidKey, defaultOptions } from \"..\";\nimport type ytdl from \"@distube/ytdl-core\";\nimport type { CustomPlugin, DisTubeOptions, ExtractorPlugin, Filters } from \"..\";\n\nexport class Options {\n plugins: (CustomPlugin | ExtractorPlugin)[];\n emitNewSongOnly: boolean;\n leaveOnFinish: boolean;\n leaveOnStop: boolean;\n leaveOnEmpty: boolean;\n emptyCooldown: number;\n savePreviousSongs: boolean;\n searchSongs: number;\n searchCooldown: number;\n youtubeCookie?: string;\n youtubeIdentityToken?: string;\n youtubeDL: boolean;\n updateYouTubeDL: boolean;\n customFilters: Filters;\n ytdlOptions: ytdl.getInfoOptions;\n nsfw: boolean;\n emitAddSongWhenCreatingQueue: boolean;\n emitAddListWhenCreatingQueue: boolean;\n constructor(options: DisTubeOptions) {\n if (typeof options !== \"object\" || Array.isArray(options)) {\n throw new DisTubeError(\"INVALID_TYPE\", \"object\", options, \"DisTubeOptions\");\n }\n const def = { ...defaultOptions };\n // Object.assign(this, defaultOptions, options);\n const opts = Object.assign({}, def, options);\n this.plugins = opts.plugins;\n this.emitNewSongOnly = opts.emitNewSongOnly;\n this.leaveOnEmpty = opts.leaveOnEmpty;\n this.leaveOnFinish = opts.leaveOnFinish;\n this.leaveOnStop = opts.leaveOnStop;\n this.savePreviousSongs = opts.savePreviousSongs;\n this.youtubeDL = opts.youtubeDL;\n this.updateYouTubeDL = opts.updateYouTubeDL;\n this.searchSongs = opts.searchSongs;\n this.youtubeCookie = opts.youtubeCookie;\n this.youtubeIdentityToken = opts.youtubeIdentityToken;\n this.customFilters = opts.customFilters;\n this.ytdlOptions = opts.ytdlOptions;\n this.searchCooldown = opts.searchCooldown;\n this.emptyCooldown = opts.emptyCooldown;\n this.nsfw = opts.nsfw;\n this.emitAddSongWhenCreatingQueue = opts.emitAddSongWhenCreatingQueue;\n this.emitAddListWhenCreatingQueue = opts.emitAddListWhenCreatingQueue;\n checkInvalidKey(opts, this, \"DisTubeOptions\");\n this.#validateOptions();\n }\n\n #validateOptions(options = this) {\n if (typeof options.emitNewSongOnly !== \"boolean\") {\n throw new DisTubeError(\"INVALID_TYPE\", \"boolean\", options.emitNewSongOnly, \"DisTubeOptions.emitNewSongOnly\");\n }\n if (typeof options.leaveOnEmpty !== \"boolean\") {\n throw new DisTubeError(\"INVALID_TYPE\", \"boolean\", options.leaveOnEmpty, \"DisTubeOptions.leaveOnEmpty\");\n }\n if (typeof options.leaveOnFinish !== \"boolean\") {\n throw new DisTubeError(\"INVALID_TYPE\", \"boolean\", options.leaveOnFinish, \"DisTubeOptions.leaveOnFinish\");\n }\n if (typeof options.leaveOnStop !== \"boolean\") {\n throw new DisTubeError(\"INVALID_TYPE\", \"boolean\", options.leaveOnStop, \"DisTubeOptions.leaveOnStop\");\n }\n if (typeof options.savePreviousSongs !== \"boolean\") {\n throw new DisTubeError(\"INVALID_TYPE\", \"boolean\", options.savePreviousSongs, \"DisTubeOptions.savePreviousSongs\");\n }\n if (typeof options.youtubeDL !== \"boolean\") {\n throw new DisTubeError(\"INVALID_TYPE\", \"boolean\", options.youtubeDL, \"DisTubeOptions.youtubeDL\");\n }\n if (typeof options.updateYouTubeDL !== \"boolean\") {\n throw new DisTubeError(\"INVALID_TYPE\", \"boolean\", options.updateYouTubeDL, \"DisTubeOptions.updateYouTubeDL\");\n }\n if (typeof options.youtubeCookie !== \"undefined\" && typeof options.youtubeCookie !== \"string\") {\n throw new DisTubeError(\"INVALID_TYPE\", \"string\", options.youtubeCookie, \"DisTubeOptions.youtubeCookie\");\n }\n if (typeof options.youtubeIdentityToken !== \"undefined\" && typeof options.youtubeIdentityToken !== \"string\") {\n throw new DisTubeError(\n \"INVALID_TYPE\",\n \"string\",\n options.youtubeIdentityToken,\n \"DisTubeOptions.youtubeIdentityToken\",\n );\n }\n if (typeof options.customFilters !== \"object\" || Array.isArray(options.customFilters)) {\n throw new DisTubeError(\"INVALID_TYPE\", \"object\", options.customFilters, \"DisTubeOptions.customFilters\");\n }\n if (typeof options.ytdlOptions !== \"object\" || Array.isArray(options.ytdlOptions)) {\n throw new DisTubeError(\"INVALID_TYPE\", \"object\", options.ytdlOptions, \"DisTubeOptions.ytdlOptions\");\n }\n if (typeof options.searchCooldown !== \"number\" || isNaN(options.searchCooldown)) {\n throw new DisTubeError(\"INVALID_TYPE\", \"number\", options.searchCooldown, \"DisTubeOptions.searchCooldown\");\n }\n if (typeof options.emptyCooldown !== \"number\" || isNaN(options.emptyCooldown)) {\n throw new DisTubeError(\"INVALID_TYPE\", \"number\", options.emptyCooldown, \"DisTubeOptions.emptyCooldown\");\n }\n if (typeof options.searchSongs !== \"number\" || isNaN(options.searchSongs)) {\n throw new DisTubeError(\"INVALID_TYPE\", \"number\", options.searchSongs, \"DisTubeOptions.searchSongs\");\n }\n if (!Array.isArray(options.plugins)) {\n throw new DisTubeError(\"INVALID_TYPE\", \"Array<Plugin>\", options.plugins, \"DisTubeOptions.plugins\");\n }\n if (typeof options.nsfw !== \"boolean\") {\n throw new DisTubeError(\"INVALID_TYPE\", \"boolean\", options.nsfw, \"DisTubeOptions.nsfw\");\n }\n if (typeof options.emitAddSongWhenCreatingQueue !== \"boolean\") {\n throw new DisTubeError(\n \"INVALID_TYPE\",\n \"boolean\",\n options.emitAddSongWhenCreatingQueue,\n \"DisTubeOptions.emitAddSongWhenCreatingQueue\",\n );\n }\n if (typeof options.emitAddListWhenCreatingQueue !== \"boolean\") {\n throw new DisTubeError(\n \"INVALID_TYPE\",\n \"boolean\",\n options.emitAddListWhenCreatingQueue,\n \"DisTubeOptions.emitAddListWhenCreatingQueue\",\n );\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DisTubeStream.d.ts","sourceRoot":"","sources":["../../src/core/DisTubeStream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAC;AAE3C,UAAU,aAAc,SAAQ,IAAI,CAAC,eAAe;IAClD;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,qBAAqB,YAAa,KAAK,WAAW,EAAE,uCAOhE,CAAC;AAEF;;;GAGG;AACH,qBAAa,aAAa;IACxB;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,SAAS,EAAE,OAAO,GAAE,aAAkB,GAAG,aAAa;IASnG;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,aAAa;IAS1E,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;OAKG;gBACS,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa;CA2ChD
|
|
1
|
+
{"version":3,"file":"DisTubeStream.d.ts","sourceRoot":"","sources":["../../src/core/DisTubeStream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAC;AAE3C,UAAU,aAAc,SAAQ,IAAI,CAAC,eAAe;IAClD;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,qBAAqB,YAAa,KAAK,WAAW,EAAE,uCAOhE,CAAC;AAEF;;;GAGG;AACH,qBAAa,aAAa;IACxB;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,SAAS,EAAE,OAAO,GAAE,aAAkB,GAAG,aAAa;IASnG;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,aAAa;IAS1E,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;OAKG;gBACS,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa;CA2ChD"}
|