distube 4.0.2 → 4.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -9
- package/dist/index.d.ts +42 -18
- package/dist/index.js +65 -23
- package/dist/index.js.map +1 -1
- package/package.json +5 -9
- package/dist/index.mjs +0 -2360
- package/dist/index.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
<p>
|
|
3
|
-
<a href="https://
|
|
3
|
+
<a href="https://www.npmjs.com/package/distube" target="_blank"><img src="https://nodei.co/npm/distube.png?downloads=true&downloadRank=true&stars=true"></a>
|
|
4
4
|
</p>
|
|
5
5
|
<p>
|
|
6
|
-
<img alt="GitHub Workflow Status" src="https://img.shields.io/github/workflow/status/skick1234/DisTube/Testing?label=Tests&logo=github&style=flat-square">
|
|
7
|
-
<img alt="node-current" src="https://img.shields.io/node/v/distube?logo=node.js&logoColor=white&style=flat-square">
|
|
8
|
-
<img alt="npm peer dependency version" src="https://img.shields.io/npm/dependency-version/distube/peer/discord.js?label=discord.js&logo=discord&logoColor=white&style=flat-square">
|
|
9
|
-
<img alt="Depfu" src="https://img.shields.io/depfu/skick1234/DisTube?style=flat-square">
|
|
10
|
-
<img alt="Codecov branch" src="https://img.shields.io/codecov/c/github/skick1234/DisTube/main?logo=codecov&logoColor=white&style=flat-square&token=WWDYRRSEQW">
|
|
6
|
+
<a href="https://github.com/skick1234/DisTube/actions" target="_blank"><img alt="GitHub Workflow Status" src="https://img.shields.io/github/workflow/status/skick1234/DisTube/Testing?label=Tests&logo=github&style=flat-square"></a>
|
|
7
|
+
<a href="https://nodejs.org/" target="_blank"><img alt="node-current" src="https://img.shields.io/node/v/distube?logo=node.js&logoColor=white&style=flat-square"></a>
|
|
8
|
+
<a href="https://discord.js.org/" target="_blank"><img alt="npm peer dependency version" src="https://img.shields.io/npm/dependency-version/distube/peer/discord.js?label=discord.js&logo=discord&logoColor=white&style=flat-square"></a>
|
|
9
|
+
<a href="https://depfu.com/github/skick1234/DisTube?project_id=36112" target="_blank"><img alt="Depfu" src="https://img.shields.io/depfu/dependencies/github/skick1234/DisTube?style=flat-square"></a>
|
|
10
|
+
<a href="https://app.codecov.io/gh/skick1234/DisTube" target="_blank"><img alt="Codecov branch" src="https://img.shields.io/codecov/c/github/skick1234/DisTube/main?logo=codecov&logoColor=white&style=flat-square&token=WWDYRRSEQW"></a>
|
|
11
11
|
<br>
|
|
12
|
-
<img alt="npm" src="https://img.shields.io/npm/dt/distube?logo=npm&style=flat-square">
|
|
13
|
-
<img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/skick1234/DisTube?logo=github&logoColor=white&style=flat-square">
|
|
14
|
-
<img alt="Discord" src="https://img.shields.io/discord/732254550689316914?logo=discord&logoColor=white&style=flat-square">
|
|
12
|
+
<a href="https://www.npmjs.com/package/distube" target="_blank"><img alt="npm" src="https://img.shields.io/npm/dt/distube?logo=npm&style=flat-square"></a>
|
|
13
|
+
<a href="https://github.com/skick1234/DisTube/stargazers" target="_blank"><img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/skick1234/DisTube?logo=github&logoColor=white&style=flat-square"></a>
|
|
14
|
+
<a href="https://discord.gg/feaDd9h" target="_blank"><img alt="Discord" src="https://img.shields.io/discord/732254550689316914?logo=discord&logoColor=white&style=flat-square"></a>
|
|
15
15
|
</p>
|
|
16
16
|
</div>
|
|
17
17
|
|
package/dist/index.d.ts
CHANGED
|
@@ -13,23 +13,44 @@ declare type DisTubeVoiceEvents = {
|
|
|
13
13
|
error: (error: Error) => Awaitable;
|
|
14
14
|
finish: () => Awaitable;
|
|
15
15
|
};
|
|
16
|
+
declare enum Events {
|
|
17
|
+
ERROR = "error",
|
|
18
|
+
ADD_LIST = "addList",
|
|
19
|
+
ADD_SONG = "addSong",
|
|
20
|
+
PLAY_SONG = "playSong",
|
|
21
|
+
FINISH_SONG = "finishSong",
|
|
22
|
+
EMPTY = "empty",
|
|
23
|
+
FINISH = "finish",
|
|
24
|
+
INIT_QUEUE = "initQueue",
|
|
25
|
+
NO_RELATED = "noRelated",
|
|
26
|
+
DISCONNECT = "disconnect",
|
|
27
|
+
DELETE_QUEUE = "deleteQueue",
|
|
28
|
+
SEARCH_CANCEL = "searchCancel",
|
|
29
|
+
SEARCH_NO_RESULT = "searchNoResult",
|
|
30
|
+
SEARCH_DONE = "searchDone",
|
|
31
|
+
SEARCH_INVALID_ANSWER = "searchInvalidAnswer",
|
|
32
|
+
SEARCH_RESULT = "searchResult"
|
|
33
|
+
}
|
|
16
34
|
declare type DisTubeEvents = {
|
|
17
|
-
error:
|
|
18
|
-
addList:
|
|
19
|
-
addSong:
|
|
20
|
-
playSong:
|
|
21
|
-
finishSong:
|
|
22
|
-
empty:
|
|
23
|
-
finish:
|
|
24
|
-
initQueue:
|
|
25
|
-
noRelated:
|
|
26
|
-
disconnect:
|
|
27
|
-
deleteQueue:
|
|
28
|
-
searchCancel:
|
|
29
|
-
searchNoResult:
|
|
30
|
-
searchDone:
|
|
31
|
-
searchInvalidAnswer:
|
|
32
|
-
searchResult:
|
|
35
|
+
error: [channel: GuildTextBasedChannel | undefined, error: Error];
|
|
36
|
+
addList: [queue: Queue, playlist: Playlist];
|
|
37
|
+
addSong: [queue: Queue, song: Song];
|
|
38
|
+
playSong: [queue: Queue, song: Song];
|
|
39
|
+
finishSong: [queue: Queue, song: Song];
|
|
40
|
+
empty: [queue: Queue];
|
|
41
|
+
finish: [queue: Queue];
|
|
42
|
+
initQueue: [queue: Queue];
|
|
43
|
+
noRelated: [queue: Queue];
|
|
44
|
+
disconnect: [queue: Queue];
|
|
45
|
+
deleteQueue: [queue: Queue];
|
|
46
|
+
searchCancel: [message: Message<true>, query: string];
|
|
47
|
+
searchNoResult: [message: Message<true>, query: string];
|
|
48
|
+
searchDone: [message: Message<true>, answer: Message<true>, query: string];
|
|
49
|
+
searchInvalidAnswer: [message: Message<true>, answer: Message<true>, query: string];
|
|
50
|
+
searchResult: [message: Message<true>, results: SearchResult[], query: string];
|
|
51
|
+
};
|
|
52
|
+
declare type TypedDisTubeEvents = {
|
|
53
|
+
[K in keyof DisTubeEvents]: (...args: DisTubeEvents[K]) => Awaitable;
|
|
33
54
|
};
|
|
34
55
|
interface Filter {
|
|
35
56
|
name: string;
|
|
@@ -337,6 +358,7 @@ declare class DisTubeVoice extends TypedEmitter<DisTubeVoiceEvents> {
|
|
|
337
358
|
emittedError: boolean;
|
|
338
359
|
isDisconnected: boolean;
|
|
339
360
|
constructor(voiceManager: DisTubeVoiceManager, channel: VoiceBasedChannel);
|
|
361
|
+
get channelId(): string | undefined;
|
|
340
362
|
get channel(): VoiceBasedChannel;
|
|
341
363
|
set channel(channel: VoiceBasedChannel);
|
|
342
364
|
join(channel?: VoiceBasedChannel): Promise<DisTubeVoice>;
|
|
@@ -543,6 +565,8 @@ declare function isClientInstance(client: any): client is Client;
|
|
|
543
565
|
declare function checkInvalidKey(target: Record<string, any>, source: Record<string, any> | string[], sourceName: string): void;
|
|
544
566
|
declare function isObject(obj: any): obj is object;
|
|
545
567
|
declare function isRecord<T = unknown>(obj: any): obj is Record<string, T>;
|
|
568
|
+
declare type KeyOf<T> = T extends object ? (keyof T)[] : [];
|
|
569
|
+
declare function objectKeys<T>(obj: T): KeyOf<T>;
|
|
546
570
|
|
|
547
571
|
declare class DirectLinkPlugin extends ExtractorPlugin {
|
|
548
572
|
validate(url: string): Promise<boolean>;
|
|
@@ -553,7 +577,7 @@ declare class DirectLinkPlugin extends ExtractorPlugin {
|
|
|
553
577
|
}
|
|
554
578
|
|
|
555
579
|
declare const version: string;
|
|
556
|
-
declare class DisTube extends TypedEmitter<
|
|
580
|
+
declare class DisTube extends TypedEmitter<TypedDisTubeEvents> {
|
|
557
581
|
readonly handler: DisTubeHandler;
|
|
558
582
|
readonly options: Options;
|
|
559
583
|
readonly client: Client;
|
|
@@ -601,4 +625,4 @@ declare class DisTube extends TypedEmitter<DisTubeEvents> {
|
|
|
601
625
|
emitError(error: Error, channel?: GuildTextBasedChannel): void;
|
|
602
626
|
}
|
|
603
627
|
|
|
604
|
-
export { Awaitable, BaseManager, Chapter, CustomPlaylistOptions, CustomPlugin, DirectLinkPlugin, DisTube, DisTubeBase, DisTubeError, DisTubeEvents, DisTubeHandler, DisTubeOptions, DisTubeStream, DisTubeVoice, DisTubeVoiceEvents, DisTubeVoiceManager, ExtractorPlugin, Filter, FilterManager, FilterResolvable, Filters, GuildIdManager, GuildIdResolvable, Options, OtherSongInfo, PlayHandlerOptions, PlayOptions, Playlist, PlaylistInfo, Plugin, PluginType, Queue, QueueManager, RelatedSong, RepeatMode, ResolveOptions, ResolvePlaylistOptions, SearchResult, SearchResultPlaylist, SearchResultType, SearchResultVideo, Song, StreamType, TaskQueue, checkIntents, checkInvalidKey, chooseBestVideoFormat, DisTube as default, defaultFilters, defaultOptions, formatDuration, isClientInstance, isGuildInstance, isMemberInstance, isMessageInstance, isObject, isRecord, isSnowflake, isSupportedVoiceChannel, isTextChannelInstance, isURL, isVoiceChannelEmpty, parseNumber, resolveGuildId, toSecond, version };
|
|
628
|
+
export { Awaitable, BaseManager, Chapter, CustomPlaylistOptions, CustomPlugin, DirectLinkPlugin, DisTube, DisTubeBase, DisTubeError, DisTubeEvents, DisTubeHandler, DisTubeOptions, DisTubeStream, DisTubeVoice, DisTubeVoiceEvents, DisTubeVoiceManager, Events, ExtractorPlugin, Filter, FilterManager, FilterResolvable, Filters, GuildIdManager, GuildIdResolvable, Options, OtherSongInfo, PlayHandlerOptions, PlayOptions, Playlist, PlaylistInfo, Plugin, PluginType, Queue, QueueManager, RelatedSong, RepeatMode, ResolveOptions, ResolvePlaylistOptions, SearchResult, SearchResultPlaylist, SearchResultType, SearchResultVideo, Song, StreamType, TaskQueue, TypedDisTubeEvents, checkIntents, checkInvalidKey, chooseBestVideoFormat, DisTube as default, defaultFilters, defaultOptions, formatDuration, isClientInstance, isGuildInstance, isMemberInstance, isMessageInstance, isObject, isRecord, isSnowflake, isSupportedVoiceChannel, isTextChannelInstance, isURL, isVoiceChannelEmpty, objectKeys, parseNumber, resolveGuildId, toSecond, version };
|
package/dist/index.js
CHANGED
|
@@ -56,15 +56,11 @@ var require_package = __commonJS({
|
|
|
56
56
|
"package.json"(exports, module2) {
|
|
57
57
|
module2.exports = {
|
|
58
58
|
name: "distube",
|
|
59
|
-
version: "4.0.
|
|
59
|
+
version: "4.0.3",
|
|
60
60
|
description: "A Discord.js module to simplify your music commands and play songs with audio filters on Discord without any API key.",
|
|
61
61
|
main: "./dist/index.js",
|
|
62
|
-
module: "./dist/index.mjs",
|
|
63
62
|
types: "./dist/index.d.ts",
|
|
64
|
-
exports:
|
|
65
|
-
import: "./dist/index.mjs",
|
|
66
|
-
require: "./dist/index.js"
|
|
67
|
-
},
|
|
63
|
+
exports: "./dist/index.js",
|
|
68
64
|
directories: {
|
|
69
65
|
lib: "src",
|
|
70
66
|
test: "tests"
|
|
@@ -139,11 +135,11 @@ var require_package = __commonJS({
|
|
|
139
135
|
"@discordjs/voice": "^0.11.0",
|
|
140
136
|
"@distube/docgen": "distubejs/docgen",
|
|
141
137
|
"@types/jest": "^28.1.6",
|
|
142
|
-
"@types/node": "^18.0
|
|
138
|
+
"@types/node": "^18.6.0",
|
|
143
139
|
"@typescript-eslint/eslint-plugin": "^5.30.7",
|
|
144
140
|
"@typescript-eslint/parser": "^5.30.7",
|
|
145
141
|
"babel-jest": "^28.1.3",
|
|
146
|
-
"discord.js": "^14.0.
|
|
142
|
+
"discord.js": "^14.0.3",
|
|
147
143
|
eslint: "^8.20.0",
|
|
148
144
|
"eslint-config-distube": "^1.6.4",
|
|
149
145
|
"eslint-config-prettier": "^8.5.0",
|
|
@@ -153,7 +149,7 @@ var require_package = __commonJS({
|
|
|
153
149
|
jest: "^28.1.3",
|
|
154
150
|
"jsdoc-babel": "^0.5.0",
|
|
155
151
|
"nano-staged": "^0.8.0",
|
|
156
|
-
"npm-check-updates": "^
|
|
152
|
+
"npm-check-updates": "^16.0.0",
|
|
157
153
|
pinst: "^3.0.0",
|
|
158
154
|
prettier: "^2.7.1",
|
|
159
155
|
tsup: "^6.1.3",
|
|
@@ -199,6 +195,7 @@ __export(src_exports, {
|
|
|
199
195
|
DisTubeStream: () => DisTubeStream,
|
|
200
196
|
DisTubeVoice: () => DisTubeVoice,
|
|
201
197
|
DisTubeVoiceManager: () => DisTubeVoiceManager,
|
|
198
|
+
Events: () => Events,
|
|
202
199
|
ExtractorPlugin: () => ExtractorPlugin,
|
|
203
200
|
FilterManager: () => FilterManager,
|
|
204
201
|
GuildIdManager: () => GuildIdManager,
|
|
@@ -233,6 +230,7 @@ __export(src_exports, {
|
|
|
233
230
|
isTextChannelInstance: () => isTextChannelInstance,
|
|
234
231
|
isURL: () => isURL,
|
|
235
232
|
isVoiceChannelEmpty: () => isVoiceChannelEmpty,
|
|
233
|
+
objectKeys: () => objectKeys,
|
|
236
234
|
parseNumber: () => parseNumber,
|
|
237
235
|
resolveGuildId: () => resolveGuildId,
|
|
238
236
|
toSecond: () => toSecond,
|
|
@@ -241,6 +239,25 @@ __export(src_exports, {
|
|
|
241
239
|
module.exports = __toCommonJS(src_exports);
|
|
242
240
|
|
|
243
241
|
// src/type.ts
|
|
242
|
+
var Events = /* @__PURE__ */ ((Events2) => {
|
|
243
|
+
Events2["ERROR"] = "error";
|
|
244
|
+
Events2["ADD_LIST"] = "addList";
|
|
245
|
+
Events2["ADD_SONG"] = "addSong";
|
|
246
|
+
Events2["PLAY_SONG"] = "playSong";
|
|
247
|
+
Events2["FINISH_SONG"] = "finishSong";
|
|
248
|
+
Events2["EMPTY"] = "empty";
|
|
249
|
+
Events2["FINISH"] = "finish";
|
|
250
|
+
Events2["INIT_QUEUE"] = "initQueue";
|
|
251
|
+
Events2["NO_RELATED"] = "noRelated";
|
|
252
|
+
Events2["DISCONNECT"] = "disconnect";
|
|
253
|
+
Events2["DELETE_QUEUE"] = "deleteQueue";
|
|
254
|
+
Events2["SEARCH_CANCEL"] = "searchCancel";
|
|
255
|
+
Events2["SEARCH_NO_RESULT"] = "searchNoResult";
|
|
256
|
+
Events2["SEARCH_DONE"] = "searchDone";
|
|
257
|
+
Events2["SEARCH_INVALID_ANSWER"] = "searchInvalidAnswer";
|
|
258
|
+
Events2["SEARCH_RESULT"] = "searchResult";
|
|
259
|
+
return Events2;
|
|
260
|
+
})(Events || {});
|
|
244
261
|
var RepeatMode = /* @__PURE__ */ ((RepeatMode2) => {
|
|
245
262
|
RepeatMode2[RepeatMode2["DISABLED"] = 0] = "DISABLED";
|
|
246
263
|
RepeatMode2[RepeatMode2["SONG"] = 1] = "SONG";
|
|
@@ -698,6 +715,7 @@ var DisTubeBase = class {
|
|
|
698
715
|
__name(DisTubeBase, "DisTubeBase");
|
|
699
716
|
|
|
700
717
|
// src/core/DisTubeVoice.ts
|
|
718
|
+
var import_discord = require("discord.js");
|
|
701
719
|
var import_tiny_typed_emitter = require("tiny-typed-emitter");
|
|
702
720
|
var import_voice = require("@discordjs/voice");
|
|
703
721
|
var _channel, _volume, _br, br_fn, _join, join_fn;
|
|
@@ -751,7 +769,23 @@ var DisTubeVoice = class extends import_tiny_typed_emitter.TypedEmitter {
|
|
|
751
769
|
}).on("error", () => void 0);
|
|
752
770
|
this.connection.subscribe(this.audioPlayer);
|
|
753
771
|
}
|
|
772
|
+
get channelId() {
|
|
773
|
+
return this.connection?.joinConfig?.channelId ?? void 0;
|
|
774
|
+
}
|
|
754
775
|
get channel() {
|
|
776
|
+
if (!this.channelId)
|
|
777
|
+
return __privateGet(this, _channel);
|
|
778
|
+
if (__privateGet(this, _channel)?.id === this.channelId)
|
|
779
|
+
return __privateGet(this, _channel);
|
|
780
|
+
const channel = this.voices.client.channels.cache.get(this.channelId);
|
|
781
|
+
if (!channel)
|
|
782
|
+
return __privateGet(this, _channel);
|
|
783
|
+
for (const type of import_discord.Constants.VoiceBasedChannelTypes) {
|
|
784
|
+
if (channel.type === type) {
|
|
785
|
+
__privateSet(this, _channel, channel);
|
|
786
|
+
return channel;
|
|
787
|
+
}
|
|
788
|
+
}
|
|
755
789
|
return __privateGet(this, _channel);
|
|
756
790
|
}
|
|
757
791
|
set channel(channel) {
|
|
@@ -762,7 +796,7 @@ var DisTubeVoice = class extends import_tiny_typed_emitter.TypedEmitter {
|
|
|
762
796
|
throw new DisTubeError("VOICE_DIFFERENT_GUILD");
|
|
763
797
|
if (channel.client.user?.id !== this.voices.client.user?.id)
|
|
764
798
|
throw new DisTubeError("VOICE_DIFFERENT_CLIENT");
|
|
765
|
-
if (channel.id ===
|
|
799
|
+
if (channel.id === this.channelId)
|
|
766
800
|
return;
|
|
767
801
|
if (!channel.joinable) {
|
|
768
802
|
if (channel.full)
|
|
@@ -887,11 +921,11 @@ join_fn = /* @__PURE__ */ __name(function(channel) {
|
|
|
887
921
|
}, "#join");
|
|
888
922
|
|
|
889
923
|
// src/core/manager/BaseManager.ts
|
|
890
|
-
var
|
|
924
|
+
var import_discord2 = require("discord.js");
|
|
891
925
|
var BaseManager = class extends DisTubeBase {
|
|
892
926
|
constructor() {
|
|
893
927
|
super(...arguments);
|
|
894
|
-
__publicField(this, "collection", new
|
|
928
|
+
__publicField(this, "collection", new import_discord2.Collection());
|
|
895
929
|
}
|
|
896
930
|
get size() {
|
|
897
931
|
return this.collection.size;
|
|
@@ -1125,7 +1159,7 @@ voiceEventHandler_fn = /* @__PURE__ */ __name(function(queue) {
|
|
|
1125
1159
|
error: (error) => __privateMethod(this, _handlePlayingError, handlePlayingError_fn).call(this, queue, error),
|
|
1126
1160
|
finish: () => __privateMethod(this, _handleSongFinish, handleSongFinish_fn).call(this, queue)
|
|
1127
1161
|
};
|
|
1128
|
-
for (const event of
|
|
1162
|
+
for (const event of objectKeys(queue._listeners)) {
|
|
1129
1163
|
queue.voice.on(event, queue._listeners[event]);
|
|
1130
1164
|
}
|
|
1131
1165
|
}, "#voiceEventHandler");
|
|
@@ -1881,7 +1915,7 @@ var Queue = class extends DisTubeBase {
|
|
|
1881
1915
|
this.songs = [];
|
|
1882
1916
|
this.previousSongs = [];
|
|
1883
1917
|
if (this._listeners) {
|
|
1884
|
-
for (const event of
|
|
1918
|
+
for (const event of objectKeys(this._listeners)) {
|
|
1885
1919
|
this.voice.removeListener(event, this._listeners[event]);
|
|
1886
1920
|
}
|
|
1887
1921
|
}
|
|
@@ -1957,7 +1991,7 @@ __name(ExtractorPlugin, "ExtractorPlugin");
|
|
|
1957
1991
|
|
|
1958
1992
|
// src/util.ts
|
|
1959
1993
|
var import_url = require("url");
|
|
1960
|
-
var
|
|
1994
|
+
var import_discord3 = require("discord.js");
|
|
1961
1995
|
var formatInt = /* @__PURE__ */ __name((int) => int < 10 ? `0${int}` : int, "formatInt");
|
|
1962
1996
|
function formatDuration(sec) {
|
|
1963
1997
|
if (!sec || !Number(sec))
|
|
@@ -2011,8 +2045,8 @@ function isURL(input) {
|
|
|
2011
2045
|
}
|
|
2012
2046
|
__name(isURL, "isURL");
|
|
2013
2047
|
function checkIntents(options) {
|
|
2014
|
-
const intents = new
|
|
2015
|
-
if (!intents.has(
|
|
2048
|
+
const intents = new import_discord3.IntentsBitField(options.intents);
|
|
2049
|
+
if (!intents.has(import_discord3.GatewayIntentBits.GuildVoiceStates))
|
|
2016
2050
|
throw new DisTubeError("MISSING_INTENTS", "GuildVoiceStates");
|
|
2017
2051
|
}
|
|
2018
2052
|
__name(checkIntents, "checkIntents");
|
|
@@ -2030,7 +2064,7 @@ function isVoiceChannelEmpty(voiceState) {
|
|
|
2030
2064
|
__name(isVoiceChannelEmpty, "isVoiceChannelEmpty");
|
|
2031
2065
|
function isSnowflake(id) {
|
|
2032
2066
|
try {
|
|
2033
|
-
return
|
|
2067
|
+
return import_discord3.SnowflakeUtil.deconstruct(id).timestamp > import_discord3.SnowflakeUtil.epoch;
|
|
2034
2068
|
} catch {
|
|
2035
2069
|
return false;
|
|
2036
2070
|
}
|
|
@@ -2041,15 +2075,15 @@ function isMemberInstance(member) {
|
|
|
2041
2075
|
}
|
|
2042
2076
|
__name(isMemberInstance, "isMemberInstance");
|
|
2043
2077
|
function isTextChannelInstance(channel) {
|
|
2044
|
-
return !!channel && isSnowflake(channel.id) && isSnowflake(channel.guildId) && typeof channel.name === "string" &&
|
|
2078
|
+
return !!channel && isSnowflake(channel.id) && isSnowflake(channel.guildId) && typeof channel.name === "string" && import_discord3.Constants.TextBasedChannelTypes.includes(channel.type) && typeof channel.nsfw === "boolean" && "messages" in channel && typeof channel.send === "function";
|
|
2045
2079
|
}
|
|
2046
2080
|
__name(isTextChannelInstance, "isTextChannelInstance");
|
|
2047
2081
|
function isMessageInstance(message) {
|
|
2048
|
-
return !!message && isSnowflake(message.id) && isSnowflake(message.guildId) && isMemberInstance(message.member) && isTextChannelInstance(message.channel) &&
|
|
2082
|
+
return !!message && isSnowflake(message.id) && isSnowflake(message.guildId) && isMemberInstance(message.member) && isTextChannelInstance(message.channel) && import_discord3.Constants.NonSystemMessageTypes.includes(message.type) && message.member.id === message.author?.id;
|
|
2049
2083
|
}
|
|
2050
2084
|
__name(isMessageInstance, "isMessageInstance");
|
|
2051
2085
|
function isSupportedVoiceChannel(channel) {
|
|
2052
|
-
return !!channel && isSnowflake(channel.id) && isSnowflake(channel.guildId) &&
|
|
2086
|
+
return !!channel && isSnowflake(channel.id) && isSnowflake(channel.guildId) && import_discord3.Constants.VoiceBasedChannelTypes.includes(channel.type);
|
|
2053
2087
|
}
|
|
2054
2088
|
__name(isSupportedVoiceChannel, "isSupportedVoiceChannel");
|
|
2055
2089
|
function isGuildInstance(guild) {
|
|
@@ -2081,8 +2115,8 @@ __name(isClientInstance, "isClientInstance");
|
|
|
2081
2115
|
function checkInvalidKey(target, source, sourceName) {
|
|
2082
2116
|
if (!isObject(target))
|
|
2083
2117
|
throw new DisTubeError("INVALID_TYPE", "object", target, sourceName);
|
|
2084
|
-
const sourceKeys = Array.isArray(source) ? source :
|
|
2085
|
-
const invalidKey =
|
|
2118
|
+
const sourceKeys = Array.isArray(source) ? source : objectKeys(source);
|
|
2119
|
+
const invalidKey = objectKeys(target).find((key) => !sourceKeys.includes(key));
|
|
2086
2120
|
if (invalidKey)
|
|
2087
2121
|
throw new DisTubeError("INVALID_KEY", sourceName, invalidKey);
|
|
2088
2122
|
}
|
|
@@ -2095,6 +2129,12 @@ function isRecord(obj) {
|
|
|
2095
2129
|
return isObject(obj);
|
|
2096
2130
|
}
|
|
2097
2131
|
__name(isRecord, "isRecord");
|
|
2132
|
+
function objectKeys(obj) {
|
|
2133
|
+
if (!isObject(obj))
|
|
2134
|
+
return [];
|
|
2135
|
+
return Object.keys(obj);
|
|
2136
|
+
}
|
|
2137
|
+
__name(objectKeys, "objectKeys");
|
|
2098
2138
|
|
|
2099
2139
|
// src/plugin/DirectLink.ts
|
|
2100
2140
|
var import_undici = require("undici");
|
|
@@ -2377,6 +2417,7 @@ __name(DisTube, "DisTube");
|
|
|
2377
2417
|
DisTubeStream,
|
|
2378
2418
|
DisTubeVoice,
|
|
2379
2419
|
DisTubeVoiceManager,
|
|
2420
|
+
Events,
|
|
2380
2421
|
ExtractorPlugin,
|
|
2381
2422
|
FilterManager,
|
|
2382
2423
|
GuildIdManager,
|
|
@@ -2410,6 +2451,7 @@ __name(DisTube, "DisTube");
|
|
|
2410
2451
|
isTextChannelInstance,
|
|
2411
2452
|
isURL,
|
|
2412
2453
|
isVoiceChannelEmpty,
|
|
2454
|
+
objectKeys,
|
|
2413
2455
|
parseNumber,
|
|
2414
2456
|
resolveGuildId,
|
|
2415
2457
|
toSecond,
|