distube 4.0.0-dev.2 → 4.0.0-dev.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/index.d.ts +593 -8
- package/dist/index.js +2360 -22
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2300 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +67 -40
- package/dist/DisTube.d.ts +0 -54
- package/dist/DisTube.d.ts.map +0 -1
- package/dist/DisTube.js +0 -279
- package/dist/DisTube.js.map +0 -1
- package/dist/constant.d.ts +0 -27
- package/dist/constant.d.ts.map +0 -1
- package/dist/constant.js +0 -47
- package/dist/constant.js.map +0 -1
- package/dist/core/DisTubeBase.d.ts +0 -14
- package/dist/core/DisTubeBase.d.ts.map +0 -1
- package/dist/core/DisTubeBase.js +0 -31
- package/dist/core/DisTubeBase.js.map +0 -1
- package/dist/core/DisTubeHandler.d.ts +0 -27
- package/dist/core/DisTubeHandler.d.ts.map +0 -1
- package/dist/core/DisTubeHandler.js +0 -230
- package/dist/core/DisTubeHandler.js.map +0 -1
- package/dist/core/DisTubeOptions.d.ts +0 -23
- package/dist/core/DisTubeOptions.d.ts.map +0 -1
- package/dist/core/DisTubeOptions.js +0 -90
- package/dist/core/DisTubeOptions.js.map +0 -1
- package/dist/core/DisTubeStream.d.ts +0 -19
- package/dist/core/DisTubeStream.d.ts.map +0 -1
- package/dist/core/DisTubeStream.js +0 -72
- package/dist/core/DisTubeStream.js.map +0 -1
- package/dist/core/index.d.ts +0 -7
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -19
- package/dist/core/index.js.map +0 -1
- package/dist/core/manager/BaseManager.d.ts +0 -7
- package/dist/core/manager/BaseManager.d.ts.map +0 -1
- package/dist/core/manager/BaseManager.js +0 -16
- package/dist/core/manager/BaseManager.js.map +0 -1
- package/dist/core/manager/FilterManager.d.ts +0 -16
- package/dist/core/manager/FilterManager.d.ts.map +0 -1
- package/dist/core/manager/FilterManager.js +0 -88
- package/dist/core/manager/FilterManager.js.map +0 -1
- package/dist/core/manager/GuildIdManager.d.ts +0 -9
- package/dist/core/manager/GuildIdManager.d.ts.map +0 -1
- package/dist/core/manager/GuildIdManager.js +0 -25
- package/dist/core/manager/GuildIdManager.js.map +0 -1
- package/dist/core/manager/QueueManager.d.ts +0 -11
- package/dist/core/manager/QueueManager.d.ts.map +0 -1
- package/dist/core/manager/QueueManager.js +0 -172
- package/dist/core/manager/QueueManager.js.map +0 -1
- package/dist/core/manager/index.d.ts +0 -5
- package/dist/core/manager/index.d.ts.map +0 -1
- package/dist/core/manager/index.js +0 -17
- package/dist/core/manager/index.js.map +0 -1
- package/dist/core/voice/DisTubeVoice.d.ts +0 -32
- package/dist/core/voice/DisTubeVoice.d.ts.map +0 -1
- package/dist/core/voice/DisTubeVoice.js +0 -190
- package/dist/core/voice/DisTubeVoice.js.map +0 -1
- package/dist/core/voice/DisTubeVoiceManager.d.ts +0 -10
- package/dist/core/voice/DisTubeVoiceManager.d.ts.map +0 -1
- package/dist/core/voice/DisTubeVoiceManager.js +0 -36
- package/dist/core/voice/DisTubeVoiceManager.js.map +0 -1
- package/dist/core/voice/index.d.ts +0 -3
- package/dist/core/voice/index.d.ts.map +0 -1
- package/dist/core/voice/index.js +0 -15
- package/dist/core/voice/index.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/plugin/http.d.ts +0 -10
- package/dist/plugin/http.d.ts.map +0 -1
- package/dist/plugin/http.js +0 -18
- package/dist/plugin/http.js.map +0 -1
- package/dist/plugin/https.d.ts +0 -19
- package/dist/plugin/https.d.ts.map +0 -1
- package/dist/plugin/https.js +0 -47
- package/dist/plugin/https.js.map +0 -1
- package/dist/plugin/index.d.ts +0 -3
- package/dist/plugin/index.d.ts.map +0 -1
- package/dist/plugin/index.js +0 -15
- package/dist/plugin/index.js.map +0 -1
- package/dist/struct/CustomPlugin.d.ts +0 -10
- package/dist/struct/CustomPlugin.d.ts.map +0 -1
- package/dist/struct/CustomPlugin.js +0 -16
- package/dist/struct/CustomPlugin.js.map +0 -1
- package/dist/struct/DisTubeError.d.ts +0 -55
- package/dist/struct/DisTubeError.d.ts.map +0 -1
- package/dist/struct/DisTubeError.js +0 -64
- package/dist/struct/DisTubeError.js.map +0 -1
- package/dist/struct/ExtractorPlugin.d.ts +0 -13
- package/dist/struct/ExtractorPlugin.d.ts.map +0 -1
- package/dist/struct/ExtractorPlugin.js +0 -16
- package/dist/struct/ExtractorPlugin.js.map +0 -1
- package/dist/struct/Playlist.d.ts +0 -25
- package/dist/struct/Playlist.d.ts.map +0 -1
- package/dist/struct/Playlist.js +0 -77
- package/dist/struct/Playlist.js.map +0 -1
- package/dist/struct/Plugin.d.ts +0 -17
- package/dist/struct/Plugin.d.ts.map +0 -1
- package/dist/struct/Plugin.js +0 -37
- package/dist/struct/Plugin.js.map +0 -1
- package/dist/struct/Queue.d.ts +0 -49
- package/dist/struct/Queue.d.ts.map +0 -1
- package/dist/struct/Queue.js +0 -272
- package/dist/struct/Queue.js.map +0 -1
- package/dist/struct/SearchResult.d.ts +0 -19
- package/dist/struct/SearchResult.d.ts.map +0 -1
- package/dist/struct/SearchResult.js +0 -30
- package/dist/struct/SearchResult.js.map +0 -1
- package/dist/struct/Song.d.ts +0 -43
- package/dist/struct/Song.d.ts.map +0 -1
- package/dist/struct/Song.js +0 -138
- package/dist/struct/Song.js.map +0 -1
- package/dist/struct/TaskQueue.d.ts +0 -8
- package/dist/struct/TaskQueue.d.ts.map +0 -1
- package/dist/struct/TaskQueue.js +0 -39
- package/dist/struct/TaskQueue.js.map +0 -1
- package/dist/struct/index.d.ts +0 -10
- package/dist/struct/index.d.ts.map +0 -1
- package/dist/struct/index.js +0 -22
- package/dist/struct/index.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/type.d.ts +0 -104
- package/dist/type.d.ts.map +0 -1
- package/dist/type.js +0 -3
- package/dist/type.js.map +0 -1
- package/dist/util.d.ts +0 -22
- package/dist/util.d.ts.map +0 -1
- package/dist/util.js +0 -189
- package/dist/util.js.map +0 -1
|
@@ -1,88 +0,0 @@
|
|
|
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 _FilterManager_instances, _FilterManager_validate, _FilterManager_resolveName, _FilterManager_resolveValue, _FilterManager_apply;
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.FilterManager = void 0;
|
|
10
|
-
const _1 = require(".");
|
|
11
|
-
const __1 = require("../..");
|
|
12
|
-
class FilterManager extends _1.BaseManager {
|
|
13
|
-
constructor(distube, queue) {
|
|
14
|
-
super(distube);
|
|
15
|
-
_FilterManager_instances.add(this);
|
|
16
|
-
this.queue = queue;
|
|
17
|
-
}
|
|
18
|
-
add(filterOrFilters, override = false) {
|
|
19
|
-
if (Array.isArray(filterOrFilters)) {
|
|
20
|
-
const resolvedFilters = filterOrFilters.map(f => __classPrivateFieldGet(this, _FilterManager_instances, "m", _FilterManager_validate).call(this, f));
|
|
21
|
-
const newFilters = resolvedFilters
|
|
22
|
-
.reduceRight((unique, o) => {
|
|
23
|
-
if (!unique.some((obj) => obj === o && obj.name === o) &&
|
|
24
|
-
!unique.some((obj) => obj !== o.name && obj.name !== o.name)) {
|
|
25
|
-
if (!this.has(o))
|
|
26
|
-
unique.push(o);
|
|
27
|
-
if (this.has(o) && override) {
|
|
28
|
-
this.remove(o);
|
|
29
|
-
unique.push(o);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return unique;
|
|
33
|
-
}, [])
|
|
34
|
-
.reverse();
|
|
35
|
-
return this.set([...this.collection.values(), ...newFilters]);
|
|
36
|
-
}
|
|
37
|
-
return this.set([...this.collection.values(), filterOrFilters]);
|
|
38
|
-
}
|
|
39
|
-
clear() {
|
|
40
|
-
return this.set([]);
|
|
41
|
-
}
|
|
42
|
-
set(filters) {
|
|
43
|
-
this.collection.clear();
|
|
44
|
-
for (const filter of filters) {
|
|
45
|
-
const resolved = __classPrivateFieldGet(this, _FilterManager_instances, "m", _FilterManager_validate).call(this, filter);
|
|
46
|
-
this.collection.set(__classPrivateFieldGet(this, _FilterManager_instances, "m", _FilterManager_resolveName).call(this, resolved), resolved);
|
|
47
|
-
}
|
|
48
|
-
__classPrivateFieldGet(this, _FilterManager_instances, "m", _FilterManager_apply).call(this);
|
|
49
|
-
return this;
|
|
50
|
-
}
|
|
51
|
-
remove(filterOrFilters) {
|
|
52
|
-
const remove = (f) => this.collection.delete(__classPrivateFieldGet(this, _FilterManager_instances, "m", _FilterManager_resolveName).call(this, __classPrivateFieldGet(this, _FilterManager_instances, "m", _FilterManager_validate).call(this, f)));
|
|
53
|
-
if (Array.isArray(filterOrFilters))
|
|
54
|
-
filterOrFilters.map(remove);
|
|
55
|
-
else
|
|
56
|
-
remove(filterOrFilters);
|
|
57
|
-
__classPrivateFieldGet(this, _FilterManager_instances, "m", _FilterManager_apply).call(this);
|
|
58
|
-
return this;
|
|
59
|
-
}
|
|
60
|
-
has(filter) {
|
|
61
|
-
return this.collection.has(__classPrivateFieldGet(this, _FilterManager_instances, "m", _FilterManager_resolveName).call(this, filter));
|
|
62
|
-
}
|
|
63
|
-
get names() {
|
|
64
|
-
return this.collection.map(f => __classPrivateFieldGet(this, _FilterManager_instances, "m", _FilterManager_resolveName).call(this, f));
|
|
65
|
-
}
|
|
66
|
-
get values() {
|
|
67
|
-
return this.collection.map(f => __classPrivateFieldGet(this, _FilterManager_instances, "m", _FilterManager_resolveValue).call(this, f));
|
|
68
|
-
}
|
|
69
|
-
toString() {
|
|
70
|
-
return this.names.toString();
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
exports.FilterManager = FilterManager;
|
|
74
|
-
_FilterManager_instances = new WeakSet(), _FilterManager_validate = function _FilterManager_validate(filter) {
|
|
75
|
-
if ((typeof filter === "string" && Object.prototype.hasOwnProperty.call(this.distube.filters, filter)) ||
|
|
76
|
-
(typeof filter === "object" && typeof filter.name === "string" && typeof filter.value === "string")) {
|
|
77
|
-
return filter;
|
|
78
|
-
}
|
|
79
|
-
throw new __1.DisTubeError("INVALID_TYPE", "FilterResolvable", filter, "filter");
|
|
80
|
-
}, _FilterManager_resolveName = function _FilterManager_resolveName(filter) {
|
|
81
|
-
return typeof filter === "string" ? filter : filter.name;
|
|
82
|
-
}, _FilterManager_resolveValue = function _FilterManager_resolveValue(filter) {
|
|
83
|
-
return typeof filter === "string" ? this.distube.filters[filter] : filter.value;
|
|
84
|
-
}, _FilterManager_apply = function _FilterManager_apply() {
|
|
85
|
-
this.queue.beginTime = this.queue.currentTime;
|
|
86
|
-
this.queues.playSong(this.queue);
|
|
87
|
-
};
|
|
88
|
-
//# sourceMappingURL=FilterManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FilterManager.js","sourceRoot":"","sources":["../../../src/core/manager/FilterManager.ts"],"names":[],"mappings":";;;;;;;;;AAAA,wBAAgC;AAChC,6BAAqC;AAOrC,MAAa,aAAc,SAAQ,cAA6B;IAE9D,YAAY,OAAgB,EAAE,KAAY;QACxC,KAAK,CAAC,OAAO,CAAC,CAAC;;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAgCD,GAAG,CAAC,eAAsD,EAAE,QAAQ,GAAG,KAAK;QAC1E,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;YAClC,MAAM,eAAe,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,uBAAA,IAAI,yDAAU,MAAd,IAAI,EAAW,CAAC,CAAC,CAAC,CAAC;YACpE,MAAM,UAAU,GAAG,eAAe;iBAC/B,WAAW,CAAC,CAAC,MAAM,EAAE,CAAM,EAAE,EAAE;gBAC9B,IACE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC;oBACvD,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,EACjE;oBACA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;wBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE;wBAC3B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;wBACf,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;qBAChB;iBACF;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC,EAAE,EAAwB,CAAC;iBAC3B,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;SAC/D;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IAClE,CAAC;IAMD,KAAK;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;IAOD,GAAG,CAAC,OAA2B;QAC7B,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,MAAM,QAAQ,GAAG,uBAAA,IAAI,yDAAU,MAAd,IAAI,EAAW,MAAM,CAAC,CAAC;YACxC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,uBAAA,IAAI,4DAAa,MAAjB,IAAI,EAAc,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;SAC5D;QACD,uBAAA,IAAI,sDAAO,MAAX,IAAI,CAAS,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,MAAM,CAAC,eAAsD;QAC3D,MAAM,MAAM,GAAG,CAAC,CAAmB,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,uBAAA,IAAI,4DAAa,MAAjB,IAAI,EAAc,uBAAA,IAAI,yDAAU,MAAd,IAAI,EAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACrG,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;YAAE,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;;YAC3D,MAAM,CAAC,eAAe,CAAC,CAAC;QAC7B,uBAAA,IAAI,sDAAO,MAAX,IAAI,CAAS,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,GAAG,CAAC,MAAwB;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,uBAAA,IAAI,4DAAa,MAAjB,IAAI,EAAc,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IAOD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,uBAAA,IAAI,4DAAa,MAAjB,IAAI,EAAc,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,uBAAA,IAAI,6DAAc,MAAlB,IAAI,EAAe,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC;CACF;AAzHD,sCAyHC;qGAlHW,MAAwB;IAChC,IACE,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAClG,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,EACnG;QACA,OAAO,MAAM,CAAC;KACf;IAED,MAAM,IAAI,gBAAY,CAAC,cAAc,EAAE,kBAAkB,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC/E,CAAC,mEAEY,MAAwB;IACnC,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3D,CAAC,qEAEa,MAAwB;IACpC,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAClF,CAAC;IAGC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;IAC9C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC","sourcesContent":["import { BaseManager } from \".\";\nimport { DisTubeError } from \"../..\";\nimport type { DisTube, FilterResolvable, Queue } from \"../..\";\n\n/**\n * Manage filters of a playing {@link Queue}\n * @extends {BaseManager}\n */\nexport class FilterManager extends BaseManager<FilterResolvable> {\n queue: Queue;\n constructor(distube: DisTube, queue: Queue) {\n super(distube);\n this.queue = queue;\n }\n\n #validate(filter: FilterResolvable): FilterResolvable {\n if (\n (typeof filter === \"string\" && Object.prototype.hasOwnProperty.call(this.distube.filters, filter)) ||\n (typeof filter === \"object\" && typeof filter.name === \"string\" && typeof filter.value === \"string\")\n ) {\n return filter;\n }\n\n throw new DisTubeError(\"INVALID_TYPE\", \"FilterResolvable\", filter, \"filter\");\n }\n\n #resolveName(filter: FilterResolvable): string {\n return typeof filter === \"string\" ? filter : filter.name;\n }\n\n #resolveValue(filter: FilterResolvable): string {\n return typeof filter === \"string\" ? this.distube.filters[filter] : filter.value;\n }\n\n #apply() {\n this.queue.beginTime = this.queue.currentTime;\n this.queues.playSong(this.queue);\n }\n\n /**\n * Enable a filter or multiple filters to the manager\n * @param {FilterResolvable|FilterResolvable[]} filterOrFilters The filter or filters to enable\n * @param {boolean} [override=false] Wether or not override the applied filter with new filter value\n * @returns {FilterManager}\n */\n add(filterOrFilters: FilterResolvable | FilterResolvable[], override = false) {\n if (Array.isArray(filterOrFilters)) {\n const resolvedFilters = filterOrFilters.map(f => this.#validate(f));\n const newFilters = resolvedFilters\n .reduceRight((unique, o: any) => {\n if (\n !unique.some((obj: any) => obj === o && obj.name === o) &&\n !unique.some((obj: any) => obj !== o.name && obj.name !== o.name)\n ) {\n if (!this.has(o)) unique.push(o);\n if (this.has(o) && override) {\n this.remove(o);\n unique.push(o);\n }\n }\n return unique;\n }, [] as FilterResolvable[])\n .reverse();\n return this.set([...this.collection.values(), ...newFilters]);\n }\n return this.set([...this.collection.values(), filterOrFilters]);\n }\n\n /**\n * Clear enabled filters of the manager\n * @returns {FilterManager}\n */\n clear() {\n return this.set([]);\n }\n\n /**\n * Set the filters applied to the manager\n * @param {FilterResolvable[]} filters The filters to apply\n * @returns {FilterManager}\n */\n set(filters: FilterResolvable[]) {\n this.collection.clear();\n for (const filter of filters) {\n const resolved = this.#validate(filter);\n this.collection.set(this.#resolveName(resolved), resolved);\n }\n this.#apply();\n return this;\n }\n\n /**\n * Disable a filter or multiple filters\n * @param {FilterResolvable|FilterResolvable[]} filterOrFilters The filter or filters to disable\n * @returns {FilterManager}\n */\n remove(filterOrFilters: FilterResolvable | FilterResolvable[]) {\n const remove = (f: FilterResolvable) => this.collection.delete(this.#resolveName(this.#validate(f)));\n if (Array.isArray(filterOrFilters)) filterOrFilters.map(remove);\n else remove(filterOrFilters);\n this.#apply();\n return this;\n }\n\n /**\n * Check whether a filter enabled or not\n * @param {FilterResolvable} filter The filter to check\n * @returns {boolean}\n */\n has(filter: FilterResolvable) {\n return this.collection.has(this.#resolveName(filter));\n }\n\n /**\n * Array of enabled filter name\n * @type {Array<string>}\n * @readonly\n */\n get names() {\n return this.collection.map(f => this.#resolveName(f));\n }\n\n get values() {\n return this.collection.map(f => this.#resolveValue(f));\n }\n\n toString() {\n return this.names.toString();\n }\n}\n"]}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { BaseManager } from ".";
|
|
2
|
-
import type { GuildIdResolvable } from "../..";
|
|
3
|
-
export declare abstract class GuildIdManager<V> extends BaseManager<V> {
|
|
4
|
-
add(idOrInstance: GuildIdResolvable, data: V): this | import("@discordjs/collection").Collection<string, V>;
|
|
5
|
-
get(idOrInstance: GuildIdResolvable): V | undefined;
|
|
6
|
-
remove(idOrInstance: GuildIdResolvable): boolean;
|
|
7
|
-
has(idOrInstance: GuildIdResolvable): boolean;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=GuildIdManager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GuildIdManager.d.ts","sourceRoot":"","sources":["../../../src/core/manager/GuildIdManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC;AAEhC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAQ/C,8BAAsB,cAAc,CAAC,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IAC5D,GAAG,CAAC,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;IAM5C,GAAG,CAAC,YAAY,EAAE,iBAAiB,GAAG,CAAC,GAAG,SAAS;IAGnD,MAAM,CAAC,YAAY,EAAE,iBAAiB,GAAG,OAAO;IAGhD,GAAG,CAAC,YAAY,EAAE,iBAAiB,GAAG,OAAO;CAG9C"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GuildIdManager = void 0;
|
|
4
|
-
const _1 = require(".");
|
|
5
|
-
const __1 = require("../..");
|
|
6
|
-
class GuildIdManager extends _1.BaseManager {
|
|
7
|
-
add(idOrInstance, data) {
|
|
8
|
-
const id = (0, __1.resolveGuildId)(idOrInstance);
|
|
9
|
-
const existing = this.get(id);
|
|
10
|
-
if (existing)
|
|
11
|
-
return this;
|
|
12
|
-
return this.collection.set(id, data);
|
|
13
|
-
}
|
|
14
|
-
get(idOrInstance) {
|
|
15
|
-
return this.collection.get((0, __1.resolveGuildId)(idOrInstance));
|
|
16
|
-
}
|
|
17
|
-
remove(idOrInstance) {
|
|
18
|
-
return this.collection.delete((0, __1.resolveGuildId)(idOrInstance));
|
|
19
|
-
}
|
|
20
|
-
has(idOrInstance) {
|
|
21
|
-
return this.collection.has((0, __1.resolveGuildId)(idOrInstance));
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
exports.GuildIdManager = GuildIdManager;
|
|
25
|
-
//# sourceMappingURL=GuildIdManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GuildIdManager.js","sourceRoot":"","sources":["../../../src/core/manager/GuildIdManager.ts"],"names":[],"mappings":";;;AAAA,wBAAgC;AAChC,6BAAuC;AASvC,MAAsB,cAAkB,SAAQ,cAAc;IAC5D,GAAG,CAAC,YAA+B,EAAE,IAAO;QAC1C,MAAM,EAAE,GAAG,IAAA,kBAAc,EAAC,YAAY,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IACD,GAAG,CAAC,YAA+B;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAA,kBAAc,EAAC,YAAY,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,CAAC,YAA+B;QACpC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAA,kBAAc,EAAC,YAAY,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,GAAG,CAAC,YAA+B;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAA,kBAAc,EAAC,YAAY,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF;AAhBD,wCAgBC","sourcesContent":["import { BaseManager } from \".\";\nimport { resolveGuildId } from \"../..\";\nimport type { GuildIdResolvable } from \"../..\";\n\n/**\n * Manages the collection of a data model paired with a guild id.\n * @abstract\n * @private\n * @extends BaseManager\n */\nexport abstract class GuildIdManager<V> extends BaseManager<V> {\n add(idOrInstance: GuildIdResolvable, data: V) {\n const id = resolveGuildId(idOrInstance);\n const existing = this.get(id);\n if (existing) return this;\n return this.collection.set(id, data);\n }\n get(idOrInstance: GuildIdResolvable): V | undefined {\n return this.collection.get(resolveGuildId(idOrInstance));\n }\n remove(idOrInstance: GuildIdResolvable): boolean {\n return this.collection.delete(resolveGuildId(idOrInstance));\n }\n has(idOrInstance: GuildIdResolvable): boolean {\n return this.collection.has(resolveGuildId(idOrInstance));\n }\n}\n"]}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { GuildIdManager } from ".";
|
|
2
|
-
import { DisTubeStream, Queue } from "../..";
|
|
3
|
-
import type { Song } from "../..";
|
|
4
|
-
import type { GuildTextBasedChannel, VoiceBasedChannel } from "discord.js";
|
|
5
|
-
export declare class QueueManager extends GuildIdManager<Queue> {
|
|
6
|
-
#private;
|
|
7
|
-
create(channel: VoiceBasedChannel, song: Song[] | Song, textChannel?: GuildTextBasedChannel): Promise<Queue | true>;
|
|
8
|
-
createStream(queue: Queue): DisTubeStream;
|
|
9
|
-
playSong(queue: Queue): Promise<boolean>;
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=QueueManager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"QueueManager.d.ts","sourceRoot":"","sources":["../../../src/core/manager/QueueManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,CAAC;AACnC,OAAO,EAAgB,aAAa,EAAE,KAAK,EAAc,MAAM,OAAO,CAAC;AACvE,OAAO,KAAK,EAAsB,IAAI,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAM3E,qBAAa,YAAa,SAAQ,cAAc,CAAC,KAAK,CAAC;;IAc/C,MAAM,CACV,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EACnB,WAAW,CAAC,EAAE,qBAAqB,GAClC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAoHxB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa;IAenC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;CA8C/C"}
|
|
@@ -1,172 +0,0 @@
|
|
|
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 _QueueManager_instances, _QueueManager_voiceEventHandler, _QueueManager_handleSongFinish, _QueueManager_handlePlayingError, _QueueManager_emitPlaySong;
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.QueueManager = void 0;
|
|
10
|
-
const _1 = require(".");
|
|
11
|
-
const __1 = require("../..");
|
|
12
|
-
class QueueManager extends _1.GuildIdManager {
|
|
13
|
-
constructor() {
|
|
14
|
-
super(...arguments);
|
|
15
|
-
_QueueManager_instances.add(this);
|
|
16
|
-
}
|
|
17
|
-
async create(channel, song, textChannel) {
|
|
18
|
-
if (this.has(channel.guild.id))
|
|
19
|
-
throw new __1.DisTubeError("QUEUE_EXIST");
|
|
20
|
-
const voice = this.voices.create(channel);
|
|
21
|
-
const queue = new __1.Queue(this.distube, voice, song, textChannel);
|
|
22
|
-
await queue._taskQueue.queuing();
|
|
23
|
-
try {
|
|
24
|
-
await voice.join();
|
|
25
|
-
__classPrivateFieldGet(this, _QueueManager_instances, "m", _QueueManager_voiceEventHandler).call(this, queue);
|
|
26
|
-
this.add(queue.id, queue);
|
|
27
|
-
this.emit("initQueue", queue);
|
|
28
|
-
const err = await this.playSong(queue);
|
|
29
|
-
return err || queue;
|
|
30
|
-
}
|
|
31
|
-
finally {
|
|
32
|
-
queue._taskQueue.resolve();
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
createStream(queue) {
|
|
36
|
-
const { duration, formats, isLive, source, streamURL } = queue.songs[0];
|
|
37
|
-
const ffmpegArgs = queue.filters.size ? ["-af", queue.filters.values.join(",")] : undefined;
|
|
38
|
-
const seek = duration ? queue.beginTime : undefined;
|
|
39
|
-
const streamOptions = { ffmpegArgs, seek, isLive };
|
|
40
|
-
if (source === "youtube")
|
|
41
|
-
return __1.DisTubeStream.YouTube(formats, streamOptions);
|
|
42
|
-
return __1.DisTubeStream.DirectLink(streamURL, streamOptions);
|
|
43
|
-
}
|
|
44
|
-
async playSong(queue) {
|
|
45
|
-
if (!queue)
|
|
46
|
-
return true;
|
|
47
|
-
if (!queue.songs.length) {
|
|
48
|
-
queue.stop();
|
|
49
|
-
return true;
|
|
50
|
-
}
|
|
51
|
-
if (queue.stopped)
|
|
52
|
-
return false;
|
|
53
|
-
const song = queue.songs[0];
|
|
54
|
-
try {
|
|
55
|
-
const { url, source, formats, streamURL } = song;
|
|
56
|
-
if (source === "youtube" && !formats)
|
|
57
|
-
song._patchYouTube(await this.handler.getYouTubeInfo(url));
|
|
58
|
-
if (source !== "youtube" && !streamURL) {
|
|
59
|
-
for (const plugin of [...this.distube.extractorPlugins, ...this.distube.customPlugins]) {
|
|
60
|
-
if (await plugin.validate(url)) {
|
|
61
|
-
const info = [plugin.getStreamURL(url), plugin.getRelatedSongs(url)];
|
|
62
|
-
const result = await Promise.all(info);
|
|
63
|
-
song.streamURL = result[0];
|
|
64
|
-
song.related = result[1];
|
|
65
|
-
break;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
const stream = this.createStream(queue);
|
|
70
|
-
queue.voice.play(stream);
|
|
71
|
-
song.streamURL = stream.url;
|
|
72
|
-
if (queue.stopped)
|
|
73
|
-
queue.stop();
|
|
74
|
-
else if (queue.paused)
|
|
75
|
-
queue.voice.pause();
|
|
76
|
-
return false;
|
|
77
|
-
}
|
|
78
|
-
catch (e) {
|
|
79
|
-
__classPrivateFieldGet(this, _QueueManager_instances, "m", _QueueManager_handlePlayingError).call(this, queue, e);
|
|
80
|
-
return true;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
exports.QueueManager = QueueManager;
|
|
85
|
-
_QueueManager_instances = new WeakSet(), _QueueManager_voiceEventHandler = function _QueueManager_voiceEventHandler(queue) {
|
|
86
|
-
queue._listeners = {
|
|
87
|
-
disconnect: error => {
|
|
88
|
-
queue.remove();
|
|
89
|
-
this.emit("disconnect", queue);
|
|
90
|
-
if (error)
|
|
91
|
-
this.emitError(error, queue.textChannel);
|
|
92
|
-
},
|
|
93
|
-
error: error => __classPrivateFieldGet(this, _QueueManager_instances, "m", _QueueManager_handlePlayingError).call(this, queue, error),
|
|
94
|
-
finish: () => __classPrivateFieldGet(this, _QueueManager_instances, "m", _QueueManager_handleSongFinish).call(this, queue),
|
|
95
|
-
};
|
|
96
|
-
for (const event of Object.keys(queue._listeners)) {
|
|
97
|
-
queue.voice.on(event, queue._listeners[event]);
|
|
98
|
-
}
|
|
99
|
-
}, _QueueManager_handleSongFinish = async function _QueueManager_handleSongFinish(queue) {
|
|
100
|
-
this.emit("finishSong", queue, queue.songs[0]);
|
|
101
|
-
await queue._taskQueue.queuing();
|
|
102
|
-
try {
|
|
103
|
-
if (queue.stopped)
|
|
104
|
-
return;
|
|
105
|
-
if (queue.repeatMode === __1.RepeatMode.QUEUE && !queue._prev)
|
|
106
|
-
queue.songs.push(queue.songs[0]);
|
|
107
|
-
if (queue._prev) {
|
|
108
|
-
if (queue.repeatMode === __1.RepeatMode.QUEUE)
|
|
109
|
-
queue.songs.unshift(queue.songs.pop());
|
|
110
|
-
else
|
|
111
|
-
queue.songs.unshift(queue.previousSongs.pop());
|
|
112
|
-
}
|
|
113
|
-
if (queue.songs.length <= 1 && (queue._next || queue.repeatMode === __1.RepeatMode.DISABLED)) {
|
|
114
|
-
if (queue.autoplay) {
|
|
115
|
-
try {
|
|
116
|
-
await queue.addRelatedSong();
|
|
117
|
-
}
|
|
118
|
-
catch {
|
|
119
|
-
this.emit("noRelated", queue);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
if (queue.songs.length <= 1) {
|
|
123
|
-
if (this.options.leaveOnFinish)
|
|
124
|
-
queue.voice.leave();
|
|
125
|
-
if (!queue.autoplay)
|
|
126
|
-
this.emit("finish", queue);
|
|
127
|
-
queue.remove();
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
const emitPlaySong = __classPrivateFieldGet(this, _QueueManager_instances, "m", _QueueManager_emitPlaySong).call(this, queue);
|
|
132
|
-
if (!queue._prev && (queue.repeatMode !== __1.RepeatMode.SONG || queue._next)) {
|
|
133
|
-
const prev = queue.songs.shift();
|
|
134
|
-
delete prev.formats;
|
|
135
|
-
delete prev.streamURL;
|
|
136
|
-
if (this.options.savePreviousSongs)
|
|
137
|
-
queue.previousSongs.push(prev);
|
|
138
|
-
else
|
|
139
|
-
queue.previousSongs.push({ id: prev.id });
|
|
140
|
-
}
|
|
141
|
-
queue._next = queue._prev = false;
|
|
142
|
-
queue.beginTime = 0;
|
|
143
|
-
const err = await this.playSong(queue);
|
|
144
|
-
if (!err && emitPlaySong)
|
|
145
|
-
this.emit("playSong", queue, queue.songs[0]);
|
|
146
|
-
}
|
|
147
|
-
finally {
|
|
148
|
-
queue._taskQueue.resolve();
|
|
149
|
-
}
|
|
150
|
-
}, _QueueManager_handlePlayingError = function _QueueManager_handlePlayingError(queue, error) {
|
|
151
|
-
const song = queue.songs.shift();
|
|
152
|
-
try {
|
|
153
|
-
error.name = "PlayingError";
|
|
154
|
-
error.message = `${error.message}\nId: ${song.id}\nName: ${song.name}`;
|
|
155
|
-
}
|
|
156
|
-
catch { }
|
|
157
|
-
this.emitError(error, queue.textChannel);
|
|
158
|
-
if (queue.songs.length > 0) {
|
|
159
|
-
this.playSong(queue).then(e => {
|
|
160
|
-
if (!e)
|
|
161
|
-
this.emit("playSong", queue, queue.songs[0]);
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
queue.stop();
|
|
166
|
-
}
|
|
167
|
-
}, _QueueManager_emitPlaySong = function _QueueManager_emitPlaySong(queue) {
|
|
168
|
-
return (!this.options.emitNewSongOnly ||
|
|
169
|
-
(queue.repeatMode === __1.RepeatMode.SONG && queue._next) ||
|
|
170
|
-
(queue.repeatMode !== __1.RepeatMode.SONG && queue.songs[0]?.id !== queue.songs[1]?.id));
|
|
171
|
-
};
|
|
172
|
-
//# sourceMappingURL=QueueManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"QueueManager.js","sourceRoot":"","sources":["../../../src/core/manager/QueueManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { GuildIdManager } from \".\";\nimport { DisTubeError, DisTubeStream, Queue, RepeatMode } from \"../..\";\nimport type { DisTubeVoiceEvents, Song } from \"../..\";\nimport type { GuildTextBasedChannel, VoiceBasedChannel } from \"discord.js\";\n\n/**\n * Queue manager\n * @extends GuildIdManager\n */\nexport class QueueManager extends GuildIdManager<Queue> {\n /**\n * Collection of {@link Queue}.\n * @name QueueManager#collection\n * @type {Discord.Collection<string, Queue>}\n */\n /**\n * Create a {@link Queue}\n * @private\n * @param {Discord.BaseGuildVoiceChannel} channel A voice channel\n * @param {Song|Song[]} song First song\n * @param {Discord.BaseGuildTextChannel} textChannel Default text channel\n * @returns {Promise<Queue|true>} Returns `true` if encounter an error\n */\n async create(\n channel: VoiceBasedChannel,\n song: Song[] | Song,\n textChannel?: GuildTextBasedChannel,\n ): Promise<Queue | true> {\n if (this.has(channel.guild.id)) throw new DisTubeError(\"QUEUE_EXIST\");\n const voice = this.voices.create(channel);\n const queue = new Queue(this.distube, voice, song, textChannel);\n await queue._taskQueue.queuing();\n try {\n await voice.join();\n this.#voiceEventHandler(queue);\n this.add(queue.id, queue);\n this.emit(\"initQueue\", queue);\n const err = await this.playSong(queue);\n return err || queue;\n } finally {\n queue._taskQueue.resolve();\n }\n }\n /**\n * Get a Queue from this QueueManager.\n * @method get\n * @memberof QueueManager#\n * @param {GuildIdResolvable} guild Resolvable thing from a guild\n * @returns {Queue?}\n */\n /**\n * Listen to DisTubeVoice events and handle the Queue\n * @private\n * @param {Queue} queue Queue\n */\n #voiceEventHandler(queue: Queue) {\n queue._listeners = {\n disconnect: error => {\n queue.remove();\n this.emit(\"disconnect\", queue);\n if (error) this.emitError(error, queue.textChannel);\n },\n error: error => this.#handlePlayingError(queue, error),\n finish: () => this.#handleSongFinish(queue),\n };\n for (const event of Object.keys(queue._listeners) as (keyof DisTubeVoiceEvents)[]) {\n queue.voice.on(event, queue._listeners[event]);\n }\n }\n /**\n * Handle the queue when a Song finish\n * @private\n * @param {Queue} queue queue\n * @returns {Promise<void>}\n */\n async #handleSongFinish(queue: Queue): Promise<void> {\n this.emit(\"finishSong\", queue, queue.songs[0]);\n await queue._taskQueue.queuing();\n try {\n if (queue.stopped) return;\n if (queue.repeatMode === RepeatMode.QUEUE && !queue._prev) queue.songs.push(queue.songs[0]);\n if (queue._prev) {\n if (queue.repeatMode === RepeatMode.QUEUE) queue.songs.unshift(queue.songs.pop() as Song);\n else queue.songs.unshift(queue.previousSongs.pop() as Song);\n }\n if (queue.songs.length <= 1 && (queue._next || queue.repeatMode === RepeatMode.DISABLED)) {\n if (queue.autoplay) {\n try {\n await queue.addRelatedSong();\n } catch {\n this.emit(\"noRelated\", queue);\n }\n }\n if (queue.songs.length <= 1) {\n if (this.options.leaveOnFinish) queue.voice.leave();\n if (!queue.autoplay) this.emit(\"finish\", queue);\n queue.remove();\n return;\n }\n }\n const emitPlaySong = this.#emitPlaySong(queue);\n if (!queue._prev && (queue.repeatMode !== RepeatMode.SONG || queue._next)) {\n const prev = queue.songs.shift() as Song;\n delete prev.formats;\n delete prev.streamURL;\n if (this.options.savePreviousSongs) queue.previousSongs.push(prev);\n else queue.previousSongs.push({ id: prev.id } as Song);\n }\n queue._next = queue._prev = false;\n queue.beginTime = 0;\n const err = await this.playSong(queue);\n if (!err && emitPlaySong) this.emit(\"playSong\", queue, queue.songs[0]);\n } finally {\n queue._taskQueue.resolve();\n }\n }\n /**\n * Handle error while playing\n * @private\n * @param {Queue} queue queue\n * @param {Error} error error\n */\n #handlePlayingError(queue: Queue, error: Error) {\n const song = queue.songs.shift() as Song;\n try {\n error.name = \"PlayingError\";\n error.message = `${error.message}\\nId: ${song.id}\\nName: ${song.name}`;\n } catch {}\n this.emitError(error, queue.textChannel);\n if (queue.songs.length > 0) {\n this.playSong(queue).then(e => {\n if (!e) this.emit(\"playSong\", queue, queue.songs[0]);\n });\n } else {\n queue.stop();\n }\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 ffmpegArgs = queue.filters.size ? [\"-af\", queue.filters.values.join(\",\")] : undefined;\n const seek = duration ? queue.beginTime : undefined;\n const streamOptions = { ffmpegArgs, seek, isLive };\n if (source === \"youtube\") return DisTubeStream.YouTube(formats, streamOptions);\n return DisTubeStream.DirectLink(streamURL as string, streamOptions);\n }\n\n /**\n * Play a song on voice connection\n * @private\n * @param {Queue} queue The guild queue\n * @returns {Promise<boolean>} error?\n */\n async playSong(queue: Queue): Promise<boolean> {\n if (!queue) return true;\n if (!queue.songs.length) {\n queue.stop();\n return true;\n }\n if (queue.stopped) return false;\n const song = queue.songs[0];\n try {\n const { url, source, formats, streamURL } = song;\n if (source === \"youtube\" && !formats) song._patchYouTube(await this.handler.getYouTubeInfo(url));\n if (source !== \"youtube\" && !streamURL) {\n for (const plugin of [...this.distube.extractorPlugins, ...this.distube.customPlugins]) {\n if (await plugin.validate(url)) {\n const info = [plugin.getStreamURL(url), plugin.getRelatedSongs(url)] as const;\n const result = await Promise.all(info);\n song.streamURL = result[0];\n song.related = result[1];\n break;\n }\n }\n }\n const stream = this.createStream(queue);\n queue.voice.play(stream);\n song.streamURL = stream.url;\n if (queue.stopped) queue.stop();\n else if (queue.paused) queue.voice.pause();\n return false;\n } catch (e: any) {\n this.#handlePlayingError(queue, e);\n return true;\n }\n }\n /**\n * Whether or not emit playSong event\n * @param {Queue} queue Queue\n * @private\n * @returns {boolean}\n */\n #emitPlaySong(queue: Queue): boolean {\n return (\n !this.options.emitNewSongOnly ||\n (queue.repeatMode === RepeatMode.SONG && queue._next) ||\n (queue.repeatMode !== RepeatMode.SONG && queue.songs[0]?.id !== queue.songs[1]?.id)\n );\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/manager/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
-
};
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
__exportStar(require("./BaseManager"), exports);
|
|
14
|
-
__exportStar(require("./GuildIdManager"), exports);
|
|
15
|
-
__exportStar(require("./QueueManager"), exports);
|
|
16
|
-
__exportStar(require("./FilterManager"), exports);
|
|
17
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/manager/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gDAA8B;AAC9B,mDAAiC;AACjC,iDAA+B;AAC/B,kDAAgC","sourcesContent":["export * from \"./BaseManager\";\nexport * from \"./GuildIdManager\";\nexport * from \"./QueueManager\";\nexport * from \"./FilterManager\";\n"]}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { TypedEmitter } from "tiny-typed-emitter";
|
|
2
|
-
import type { DisTubeStream, DisTubeVoiceEvents, DisTubeVoiceManager } from "../..";
|
|
3
|
-
import type { AudioPlayer, AudioResource, VoiceConnection } from "@discordjs/voice";
|
|
4
|
-
import type { Snowflake, VoiceBasedChannel, VoiceState } from "discord.js";
|
|
5
|
-
export declare class DisTubeVoice extends TypedEmitter<DisTubeVoiceEvents> {
|
|
6
|
-
#private;
|
|
7
|
-
readonly id: Snowflake;
|
|
8
|
-
readonly voices: DisTubeVoiceManager;
|
|
9
|
-
readonly audioPlayer: AudioPlayer;
|
|
10
|
-
connection: VoiceConnection;
|
|
11
|
-
audioResource?: AudioResource;
|
|
12
|
-
emittedError: boolean;
|
|
13
|
-
isDisconnected: boolean;
|
|
14
|
-
constructor(voiceManager: DisTubeVoiceManager, channel: VoiceBasedChannel);
|
|
15
|
-
get channel(): VoiceBasedChannel;
|
|
16
|
-
set channel(channel: VoiceBasedChannel);
|
|
17
|
-
join(channel?: VoiceBasedChannel): Promise<DisTubeVoice>;
|
|
18
|
-
leave(error?: Error): void;
|
|
19
|
-
stop(force?: boolean): void;
|
|
20
|
-
play(stream: DisTubeStream): void;
|
|
21
|
-
set volume(volume: number);
|
|
22
|
-
get volume(): number;
|
|
23
|
-
get playbackDuration(): number;
|
|
24
|
-
pause(): void;
|
|
25
|
-
unpause(): void;
|
|
26
|
-
get selfDeaf(): boolean;
|
|
27
|
-
get selfMute(): boolean;
|
|
28
|
-
setSelfDeaf(selfDeaf: boolean): boolean;
|
|
29
|
-
setSelfMute(selfMute: boolean): boolean;
|
|
30
|
-
get voiceState(): VoiceState | undefined;
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=DisTubeVoice.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DisTubeVoice.d.ts","sourceRoot":"","sources":["../../../src/core/voice/DisTubeVoice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAUlD,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAK3E,qBAAa,YAAa,SAAQ,YAAY,CAAC,kBAAkB,CAAC;;IAChE,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,UAAU,EAAG,eAAe,CAAC;IAC7B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,EAAG,OAAO,CAAC;IACvB,cAAc,UAAS;gBAGX,YAAY,EAAE,mBAAmB,EAAE,OAAO,EAAE,iBAAiB;IAqDzE,IAAI,OAAO,IAGU,iBAAiB,CADrC;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,iBAAiB,EAQrC;IAaK,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IAoB9D,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK;IAenB,IAAI,CAAC,KAAK,UAAQ;IAQlB,IAAI,CAAC,MAAM,EAAE,aAAa;IAe1B,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EASxB;IACD,IAAI,MAAM,IAVS,MAAM,CAYxB;IAKD,IAAI,gBAAgB,WAEnB;IACD,KAAK;IAGL,OAAO;IAOP,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAKD,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAMD,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO;IAcvC,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO;IAavC,IAAI,UAAU,IAAI,UAAU,GAAG,SAAS,CAEvC;CACF"}
|
|
@@ -1,190 +0,0 @@
|
|
|
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 __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
8
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
9
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
10
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
11
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
12
|
-
};
|
|
13
|
-
var _DisTubeVoice_instances, _DisTubeVoice_channel, _DisTubeVoice_volume, _DisTubeVoice_join;
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.DisTubeVoice = void 0;
|
|
16
|
-
const tiny_typed_emitter_1 = require("tiny-typed-emitter");
|
|
17
|
-
const __1 = require("../..");
|
|
18
|
-
const voice_1 = require("@discordjs/voice");
|
|
19
|
-
class DisTubeVoice extends tiny_typed_emitter_1.TypedEmitter {
|
|
20
|
-
constructor(voiceManager, channel) {
|
|
21
|
-
super();
|
|
22
|
-
_DisTubeVoice_instances.add(this);
|
|
23
|
-
this.isDisconnected = false;
|
|
24
|
-
_DisTubeVoice_channel.set(this, void 0);
|
|
25
|
-
_DisTubeVoice_volume.set(this, 100);
|
|
26
|
-
if (!(0, __1.isSupportedVoiceChannel)(channel)) {
|
|
27
|
-
throw new __1.DisTubeError("INVALID_TYPE", "BaseGuildVoiceChannel", channel, "channel");
|
|
28
|
-
}
|
|
29
|
-
if (!channel.joinable) {
|
|
30
|
-
if (channel.full)
|
|
31
|
-
throw new __1.DisTubeError("VOICE_FULL");
|
|
32
|
-
else
|
|
33
|
-
throw new __1.DisTubeError("VOICE_MISSING_PERMS");
|
|
34
|
-
}
|
|
35
|
-
this.id = channel.guild.id;
|
|
36
|
-
this.channel = channel;
|
|
37
|
-
this.voices = voiceManager;
|
|
38
|
-
this.voices.add(this.id, this);
|
|
39
|
-
this.audioPlayer = (0, voice_1.createAudioPlayer)()
|
|
40
|
-
.on(voice_1.AudioPlayerStatus.Idle, oldState => {
|
|
41
|
-
if (oldState.status !== voice_1.AudioPlayerStatus.Idle) {
|
|
42
|
-
delete this.audioResource;
|
|
43
|
-
this.emit("finish");
|
|
44
|
-
}
|
|
45
|
-
})
|
|
46
|
-
.on("error", error => {
|
|
47
|
-
if (this.emittedError)
|
|
48
|
-
return;
|
|
49
|
-
this.emittedError = true;
|
|
50
|
-
this.emit("error", error);
|
|
51
|
-
});
|
|
52
|
-
this.connection
|
|
53
|
-
.on(voice_1.VoiceConnectionStatus.Disconnected, (_, newState) => {
|
|
54
|
-
if (newState.reason === voice_1.VoiceConnectionDisconnectReason.WebSocketClose && newState.closeCode === 4014) {
|
|
55
|
-
(0, __1.entersState)(this.connection, voice_1.VoiceConnectionStatus.Connecting, 5e3).catch(() => {
|
|
56
|
-
this.leave();
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
else if (this.connection.rejoinAttempts < 5) {
|
|
60
|
-
setTimeout(() => {
|
|
61
|
-
this.connection.rejoin();
|
|
62
|
-
}, (this.connection.rejoinAttempts + 1) * 5e3).unref();
|
|
63
|
-
}
|
|
64
|
-
else if (this.connection.state.status !== voice_1.VoiceConnectionStatus.Destroyed) {
|
|
65
|
-
this.leave(new __1.DisTubeError("VOICE_RECONNECT_FAILED"));
|
|
66
|
-
}
|
|
67
|
-
})
|
|
68
|
-
.on(voice_1.VoiceConnectionStatus.Destroyed, () => {
|
|
69
|
-
this.leave(new __1.DisTubeError("VOICE_RECONNECT_FAILED"));
|
|
70
|
-
});
|
|
71
|
-
this.connection.subscribe(this.audioPlayer);
|
|
72
|
-
}
|
|
73
|
-
get channel() {
|
|
74
|
-
return __classPrivateFieldGet(this, _DisTubeVoice_channel, "f");
|
|
75
|
-
}
|
|
76
|
-
set channel(channel) {
|
|
77
|
-
if (!(0, __1.isSupportedVoiceChannel)(channel)) {
|
|
78
|
-
throw new __1.DisTubeError("INVALID_TYPE", "BaseGuildVoiceChannel", channel, "DisTubeVoice#channel");
|
|
79
|
-
}
|
|
80
|
-
if (channel.guild.id !== this.id)
|
|
81
|
-
throw new __1.DisTubeError("VOICE_CHANGE_GUILD");
|
|
82
|
-
this.connection = __classPrivateFieldGet(this, _DisTubeVoice_instances, "m", _DisTubeVoice_join).call(this, channel);
|
|
83
|
-
this.audioResource?.encoder?.setBitrate(channel.bitrate);
|
|
84
|
-
__classPrivateFieldSet(this, _DisTubeVoice_channel, channel, "f");
|
|
85
|
-
}
|
|
86
|
-
async join(channel) {
|
|
87
|
-
const TIMEOUT = 30e3;
|
|
88
|
-
if (channel) {
|
|
89
|
-
this.channel = channel;
|
|
90
|
-
}
|
|
91
|
-
try {
|
|
92
|
-
await (0, __1.entersState)(this.connection, voice_1.VoiceConnectionStatus.Ready, TIMEOUT);
|
|
93
|
-
}
|
|
94
|
-
catch {
|
|
95
|
-
if (this.connection.state.status !== voice_1.VoiceConnectionStatus.Destroyed) {
|
|
96
|
-
this.connection.destroy();
|
|
97
|
-
}
|
|
98
|
-
this.voices.remove(this.id);
|
|
99
|
-
throw new __1.DisTubeError("VOICE_CONNECT_FAILED", TIMEOUT / 1e3);
|
|
100
|
-
}
|
|
101
|
-
return this;
|
|
102
|
-
}
|
|
103
|
-
leave(error) {
|
|
104
|
-
this.stop(true);
|
|
105
|
-
if (!this.isDisconnected) {
|
|
106
|
-
this.emit("disconnect", error);
|
|
107
|
-
this.isDisconnected = true;
|
|
108
|
-
}
|
|
109
|
-
if (this.connection.state.status !== voice_1.VoiceConnectionStatus.Destroyed)
|
|
110
|
-
this.connection.destroy();
|
|
111
|
-
this.voices.remove(this.id);
|
|
112
|
-
}
|
|
113
|
-
stop(force = false) {
|
|
114
|
-
this.audioPlayer.stop(force);
|
|
115
|
-
}
|
|
116
|
-
play(stream) {
|
|
117
|
-
this.emittedError = false;
|
|
118
|
-
stream.stream.on("error", (error) => {
|
|
119
|
-
if (this.emittedError || error.code === "ERR_STREAM_PREMATURE_CLOSE")
|
|
120
|
-
return;
|
|
121
|
-
this.emittedError = true;
|
|
122
|
-
this.emit("error", error);
|
|
123
|
-
});
|
|
124
|
-
this.audioResource = (0, voice_1.createAudioResource)(stream.stream, {
|
|
125
|
-
inputType: stream.type,
|
|
126
|
-
inlineVolume: true,
|
|
127
|
-
});
|
|
128
|
-
this.volume = __classPrivateFieldGet(this, _DisTubeVoice_volume, "f");
|
|
129
|
-
this.audioResource.encoder?.setBitrate(this.channel.bitrate);
|
|
130
|
-
this.audioPlayer.play(this.audioResource);
|
|
131
|
-
}
|
|
132
|
-
set volume(volume) {
|
|
133
|
-
if (typeof volume !== "number" || isNaN(volume)) {
|
|
134
|
-
throw new __1.DisTubeError("INVALID_TYPE", "number", volume, "volume");
|
|
135
|
-
}
|
|
136
|
-
if (volume < 0) {
|
|
137
|
-
throw new __1.DisTubeError("NUMBER_COMPARE", "Volume", "bigger or equal to", 0);
|
|
138
|
-
}
|
|
139
|
-
__classPrivateFieldSet(this, _DisTubeVoice_volume, volume, "f");
|
|
140
|
-
this.audioResource?.volume?.setVolume(Math.pow(__classPrivateFieldGet(this, _DisTubeVoice_volume, "f") / 100, 0.5 / Math.log10(2)));
|
|
141
|
-
}
|
|
142
|
-
get volume() {
|
|
143
|
-
return __classPrivateFieldGet(this, _DisTubeVoice_volume, "f");
|
|
144
|
-
}
|
|
145
|
-
get playbackDuration() {
|
|
146
|
-
return (this.audioResource?.playbackDuration ?? 0) / 1000;
|
|
147
|
-
}
|
|
148
|
-
pause() {
|
|
149
|
-
this.audioPlayer.pause();
|
|
150
|
-
}
|
|
151
|
-
unpause() {
|
|
152
|
-
this.audioPlayer.unpause();
|
|
153
|
-
}
|
|
154
|
-
get selfDeaf() {
|
|
155
|
-
return this.connection.joinConfig.selfDeaf;
|
|
156
|
-
}
|
|
157
|
-
get selfMute() {
|
|
158
|
-
return this.connection.joinConfig.selfMute;
|
|
159
|
-
}
|
|
160
|
-
setSelfDeaf(selfDeaf) {
|
|
161
|
-
if (typeof selfDeaf !== "boolean") {
|
|
162
|
-
throw new __1.DisTubeError("INVALID_TYPE", "boolean", selfDeaf, "selfDeaf");
|
|
163
|
-
}
|
|
164
|
-
return this.connection.rejoin({
|
|
165
|
-
...this.connection.joinConfig,
|
|
166
|
-
selfDeaf,
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
setSelfMute(selfMute) {
|
|
170
|
-
if (typeof selfMute !== "boolean") {
|
|
171
|
-
throw new __1.DisTubeError("INVALID_TYPE", "boolean", selfMute, "selfMute");
|
|
172
|
-
}
|
|
173
|
-
return this.connection.rejoin({
|
|
174
|
-
...this.connection.joinConfig,
|
|
175
|
-
selfMute,
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
get voiceState() {
|
|
179
|
-
return this.channel?.guild?.me?.voice;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
exports.DisTubeVoice = DisTubeVoice;
|
|
183
|
-
_DisTubeVoice_channel = new WeakMap(), _DisTubeVoice_volume = new WeakMap(), _DisTubeVoice_instances = new WeakSet(), _DisTubeVoice_join = function _DisTubeVoice_join(channel) {
|
|
184
|
-
return (0, voice_1.joinVoiceChannel)({
|
|
185
|
-
channelId: channel.id,
|
|
186
|
-
guildId: this.id,
|
|
187
|
-
adapterCreator: channel.guild.voiceAdapterCreator,
|
|
188
|
-
});
|
|
189
|
-
};
|
|
190
|
-
//# sourceMappingURL=DisTubeVoice.js.map
|