lavacord 2.0.0 → 2.0.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/cloudstorm.js.map +1 -0
- package/dist/detritus.js.map +1 -0
- package/dist/discord.js.js.map +1 -0
- package/dist/eris.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/LavalinkNode.d.ts +105 -0
- package/dist/lib/LavalinkNode.js +240 -0
- package/dist/lib/LavalinkNode.js.map +1 -0
- package/dist/lib/Manager.d.ts +137 -0
- package/dist/lib/Manager.js +239 -0
- package/dist/lib/Manager.js.map +1 -0
- package/dist/lib/Player.d.ts +139 -0
- package/dist/lib/Player.js +202 -0
- package/dist/lib/Player.js.map +1 -0
- package/dist/lib/Rest.d.ts +63 -0
- package/dist/lib/Rest.js +117 -0
- package/dist/lib/Rest.js.map +1 -0
- package/dist/lib/Types.d.ts +177 -0
- package/dist/lib/Types.js +3 -0
- package/dist/lib/Types.js.map +1 -0
- package/dist/oceanic.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +19 -8
- package/cloudstorm.js.map +0 -1
- package/detritus.js.map +0 -1
- package/discord.js.js.map +0 -1
- package/eris.js.map +0 -1
- package/oceanic.js.map +0 -1
- /package/{cloudstorm.d.ts → dist/cloudstorm.d.ts} +0 -0
- /package/{cloudstorm.js → dist/cloudstorm.js} +0 -0
- /package/{detritus.d.ts → dist/detritus.d.ts} +0 -0
- /package/{detritus.js → dist/detritus.js} +0 -0
- /package/{discord.js.d.ts → dist/discord.js.d.ts} +0 -0
- /package/{discord.js.js → dist/discord.js.js} +0 -0
- /package/{eris.d.ts → dist/eris.d.ts} +0 -0
- /package/{eris.js → dist/eris.js} +0 -0
- /package/{oceanic.d.ts → dist/oceanic.d.ts} +0 -0
- /package/{oceanic.js → dist/oceanic.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudstorm.js","sourceRoot":"","sources":["../src/cloudstorm.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAAuD;AAKvD,0CAAwB;AAExB,MAAa,OAAQ,SAAQ,iBAAW;IACD;IAAnC,YAAmC,MAAc,EAAE,KAAiC,EAAE,OAAuB;QACzG,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QADS,WAAM,GAAN,MAAM,CAAQ;QAG7C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE;gBACjB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW;oBAAE,OAAO,KAAK,CAAC;gBACnD,sCAAsC;gBACtC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;gBAE5G,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAE3G,IAAI,CAAC,EAAE;oBACH,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBACzC,OAAO,IAAI,CAAC;iBACf;qBAAM;oBACH,OAAO,KAAK,CAAC;iBAChB;YACL,CAAC,CAAC;SACL;QAED,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;YACxB,IAAI,MAAM,CAAC,CAAC,KAAK,qBAAqB,EAAE;gBACpC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAsB,CAAC,CAAC;aACzD;iBAAM,IAAI,MAAM,CAAC,CAAC,KAAK,oBAAoB,EAAE;gBAC1C,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAqB,CAAC,CAAC;aACvD;iBAAM,IAAI,MAAM,CAAC,CAAC,KAAK,cAAc,EAAE;gBACpC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,EAAE;oBAC7C,IAAI,CAAC,gBAAgB,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAG,MAAM,CAAC,CAAgC,CAAC,EAAE,EAAsB,CAAC,CAAC;iBAClH;aACJ;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAjCD,0BAiCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detritus.js","sourceRoot":"","sources":["../src/detritus.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAAuD;AAKvD,0CAAwB;AAExB,MAAa,OAAQ,SAAQ,iBAAW;IACD;IAAnC,YAAmC,MAAmC,EAAE,KAAiC,EAAE,OAAuB;QAC9H,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QADS,WAAM,GAAN,MAAM,CAA6B;QAGlE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE;gBACjB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAuB,CAAC;gBAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAqB,CAAC;gBAE3C,IAAI,OAAO,CAAC,MAAM,EAAE;oBAChB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;oBAC1C,OAAO,IAAI,CAAC;iBACf;qBAAM,IAAI,SAAS,CAAC,MAAM,EAAE;oBACzB,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAC1E,IAAI,KAAK,EAAE;wBACP,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;wBACxC,OAAO,IAAI,CAAC;qBACf;yBAAM;wBACH,OAAO,KAAK,CAAC;qBAChB;iBACJ;YACL,CAAC,CAAC;SACL;QAED,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;YACtB,IAAI,MAAM,CAAC,CAAC,KAAK,qBAAqB;gBAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;iBACpE,IAAI,MAAM,CAAC,CAAC,KAAK,oBAAoB;gBAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;iBACvE,IAAI,MAAM,CAAC,CAAC,KAAK,cAAc;gBAAE,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE;oBAAE,IAAI,CAAC,gBAAgB,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtJ,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AA9BD,0BA8BC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discord.js.js","sourceRoot":"","sources":["../src/discord.js.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAAuD;AAGvD,2CAA2D;AAE3D,0CAAwB;AAExB,MAAa,OAAQ,SAAQ,iBAAW;IACD;IAAnC,YAAmC,MAAc,EAAE,KAAiC,EAAE,OAAwB;QAC1G,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,IAAI;YAAE,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAClD,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAHS,WAAM,GAAN,MAAM,CAAQ;QAK7C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE;gBACjB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAC9D,IAAI,KAAK,EAAE;oBACP,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACzB,OAAO,IAAI,CAAC;iBACf;qBAAM;oBACH,OAAO,KAAK,CAAC;iBAChB;YACL,CAAC,CAAC;SACL;QAED,MAAM,CAAC,EAAE;aACJ,EAAE,CAAC,kCAAqB,CAAC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC9E,EAAE,CAAC,kCAAqB,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC5E,EAAE,CAAC,kCAAqB,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE;YAC1C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE;gBAAE,IAAI,CAAC,gBAAgB,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACxG,CAAC,CAAC,CAAC;IACX,CAAC;CACJ;AAzBD,0BAyBC"}
|
package/dist/eris.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eris.js","sourceRoot":"","sources":["../src/eris.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAAuD;AAKvD,0CAAwB;AAExB,MAAa,OAAQ,SAAQ,iBAAW;IACD;IAAnC,YAAmC,MAAc,EAAE,KAAiC,EAAE,OAAwB;QAC1G,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,IAAI;YAAE,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAClD,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAHS,WAAM,GAAN,MAAM,CAAQ;QAK7C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE;gBACjB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBACxD,IAAI,KAAK,EAAE;oBACP,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;oBACxC,OAAO,IAAI,CAAC;iBACf;qBAAM;oBACH,OAAO,KAAK,CAAC;iBAChB;YACL,CAAC,CAAC;SACL;QAED,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,MAAqB,EAAE,EAAE;YACzC,IAAI,MAAM,CAAC,CAAC,KAAK,qBAAqB;gBAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;iBACpE,IAAI,MAAM,CAAC,CAAC,KAAK,oBAAoB;gBAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;iBACvE,IAAI,MAAM,CAAC,CAAC,KAAK,cAAc;gBAAE,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE;oBAAE,IAAI,CAAC,gBAAgB,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtJ,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAxBD,0BAwBC"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./lib/LavalinkNode"), exports);
|
|
18
|
+
__exportStar(require("./lib/Player"), exports);
|
|
19
|
+
__exportStar(require("./lib/Manager"), exports);
|
|
20
|
+
__exportStar(require("./lib/Rest"), exports);
|
|
21
|
+
__exportStar(require("./lib/Types"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,+CAA6B;AAC7B,gDAA8B;AAC9B,6CAA2B;AAC3B,8CAA4B"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import WebSocket from "ws";
|
|
2
|
+
import type { Manager } from "./Manager";
|
|
3
|
+
import type { LavalinkNodeOptions } from "./Types";
|
|
4
|
+
import type { Stats } from "lavalink-types";
|
|
5
|
+
/**
|
|
6
|
+
* The class for handling everything to do with connecting to Lavalink
|
|
7
|
+
*/
|
|
8
|
+
export declare class LavalinkNode {
|
|
9
|
+
manager: Manager;
|
|
10
|
+
/**
|
|
11
|
+
* The id of the LavalinkNode so Nodes are better organized
|
|
12
|
+
*/
|
|
13
|
+
id: string;
|
|
14
|
+
/**
|
|
15
|
+
* The host of the LavalinkNode, this could be a ip or domain.
|
|
16
|
+
*/
|
|
17
|
+
host: string;
|
|
18
|
+
/**
|
|
19
|
+
* The port of the LavalinkNode
|
|
20
|
+
*/
|
|
21
|
+
port: number | string;
|
|
22
|
+
/**
|
|
23
|
+
* The interval that the node will try to reconnect to lavalink at in milliseconds
|
|
24
|
+
*/
|
|
25
|
+
reconnectInterval: number;
|
|
26
|
+
/**
|
|
27
|
+
* The password of the lavalink node
|
|
28
|
+
*/
|
|
29
|
+
password: string;
|
|
30
|
+
/**
|
|
31
|
+
* The WebSocket instance for this LavalinkNode
|
|
32
|
+
*/
|
|
33
|
+
ws: WebSocket | null;
|
|
34
|
+
/**
|
|
35
|
+
* The statistics of the LavalinkNode
|
|
36
|
+
*/
|
|
37
|
+
stats: Stats;
|
|
38
|
+
/**
|
|
39
|
+
* The resume key to send to the LavalinkNode so you can resume properly
|
|
40
|
+
*/
|
|
41
|
+
resumeKey?: string;
|
|
42
|
+
/**
|
|
43
|
+
* The resume timeout
|
|
44
|
+
*/
|
|
45
|
+
resumeTimeout: number;
|
|
46
|
+
/**
|
|
47
|
+
* Extra info attached to your node, not required and is not sent to lavalink, purely for you.
|
|
48
|
+
*/
|
|
49
|
+
state?: any;
|
|
50
|
+
/**
|
|
51
|
+
* The major version of the LavaLink node as indicated by /version
|
|
52
|
+
*/
|
|
53
|
+
version?: number;
|
|
54
|
+
/**
|
|
55
|
+
* The session ID sent by LavaLink on connect. Used for some REST routes
|
|
56
|
+
*/
|
|
57
|
+
sessionId?: string;
|
|
58
|
+
/**
|
|
59
|
+
* The reconnect timeout
|
|
60
|
+
* @private
|
|
61
|
+
*/
|
|
62
|
+
private _reconnect?;
|
|
63
|
+
/**
|
|
64
|
+
* The base of the connection to lavalink
|
|
65
|
+
* @param manager The manager that created the LavalinkNode
|
|
66
|
+
* @param options The options of the LavalinkNode {@link LavalinkNodeOptions}
|
|
67
|
+
*/
|
|
68
|
+
constructor(manager: Manager, options: LavalinkNodeOptions);
|
|
69
|
+
/**
|
|
70
|
+
* Connects the node to Lavalink
|
|
71
|
+
*/
|
|
72
|
+
connect(): Promise<WebSocket>;
|
|
73
|
+
/**
|
|
74
|
+
* Destroys the connection to the Lavalink Websocket
|
|
75
|
+
*/
|
|
76
|
+
destroy(): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Whether or not the node is connected
|
|
79
|
+
*/
|
|
80
|
+
get connected(): boolean;
|
|
81
|
+
/**
|
|
82
|
+
* A private function for handling the open event from WebSocket
|
|
83
|
+
*/
|
|
84
|
+
private onOpen;
|
|
85
|
+
/**
|
|
86
|
+
* Private function for handling the message event from WebSocket
|
|
87
|
+
* @param data The data that came from lavalink
|
|
88
|
+
*/
|
|
89
|
+
private onMessage;
|
|
90
|
+
/**
|
|
91
|
+
* Private function for handling the error event from WebSocket
|
|
92
|
+
* @param error WebSocket error
|
|
93
|
+
*/
|
|
94
|
+
private onError;
|
|
95
|
+
/**
|
|
96
|
+
* Private function for handling the close event from WebSocket
|
|
97
|
+
* @param code WebSocket close code
|
|
98
|
+
* @param reason WebSocket close reason
|
|
99
|
+
*/
|
|
100
|
+
private onClose;
|
|
101
|
+
/**
|
|
102
|
+
* Handles reconnecting if something happens and the node discounnects
|
|
103
|
+
*/
|
|
104
|
+
private reconnect;
|
|
105
|
+
}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.LavalinkNode = void 0;
|
|
7
|
+
const ws_1 = __importDefault(require("ws"));
|
|
8
|
+
const Rest_1 = require("./Rest");
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
10
|
+
const { version } = require("../../package.json");
|
|
11
|
+
/**
|
|
12
|
+
* The class for handling everything to do with connecting to Lavalink
|
|
13
|
+
*/
|
|
14
|
+
class LavalinkNode {
|
|
15
|
+
manager;
|
|
16
|
+
/**
|
|
17
|
+
* The id of the LavalinkNode so Nodes are better organized
|
|
18
|
+
*/
|
|
19
|
+
id;
|
|
20
|
+
/**
|
|
21
|
+
* The host of the LavalinkNode, this could be a ip or domain.
|
|
22
|
+
*/
|
|
23
|
+
host = "localhost";
|
|
24
|
+
/**
|
|
25
|
+
* The port of the LavalinkNode
|
|
26
|
+
*/
|
|
27
|
+
port = 2333;
|
|
28
|
+
/**
|
|
29
|
+
* The interval that the node will try to reconnect to lavalink at in milliseconds
|
|
30
|
+
*/
|
|
31
|
+
reconnectInterval = 10000;
|
|
32
|
+
/**
|
|
33
|
+
* The password of the lavalink node
|
|
34
|
+
*/
|
|
35
|
+
password = "youshallnotpass";
|
|
36
|
+
/**
|
|
37
|
+
* The WebSocket instance for this LavalinkNode
|
|
38
|
+
*/
|
|
39
|
+
ws = null;
|
|
40
|
+
/**
|
|
41
|
+
* The statistics of the LavalinkNode
|
|
42
|
+
*/
|
|
43
|
+
stats;
|
|
44
|
+
/**
|
|
45
|
+
* The resume key to send to the LavalinkNode so you can resume properly
|
|
46
|
+
*/
|
|
47
|
+
resumeKey;
|
|
48
|
+
/**
|
|
49
|
+
* The resume timeout
|
|
50
|
+
*/
|
|
51
|
+
resumeTimeout = 120;
|
|
52
|
+
/**
|
|
53
|
+
* Extra info attached to your node, not required and is not sent to lavalink, purely for you.
|
|
54
|
+
*/
|
|
55
|
+
state;
|
|
56
|
+
/**
|
|
57
|
+
* The major version of the LavaLink node as indicated by /version
|
|
58
|
+
*/
|
|
59
|
+
version;
|
|
60
|
+
/**
|
|
61
|
+
* The session ID sent by LavaLink on connect. Used for some REST routes
|
|
62
|
+
*/
|
|
63
|
+
sessionId;
|
|
64
|
+
/**
|
|
65
|
+
* The reconnect timeout
|
|
66
|
+
* @private
|
|
67
|
+
*/
|
|
68
|
+
_reconnect;
|
|
69
|
+
/**
|
|
70
|
+
* The base of the connection to lavalink
|
|
71
|
+
* @param manager The manager that created the LavalinkNode
|
|
72
|
+
* @param options The options of the LavalinkNode {@link LavalinkNodeOptions}
|
|
73
|
+
*/
|
|
74
|
+
constructor(manager, options) {
|
|
75
|
+
this.manager = manager;
|
|
76
|
+
this.id = options.id;
|
|
77
|
+
if (options.host)
|
|
78
|
+
Object.defineProperty(this, "host", { value: options.host });
|
|
79
|
+
if (options.port)
|
|
80
|
+
Object.defineProperty(this, "port", { value: options.port });
|
|
81
|
+
if (options.password)
|
|
82
|
+
Object.defineProperty(this, "password", { value: options.password });
|
|
83
|
+
if (options.reconnectInterval)
|
|
84
|
+
this.reconnectInterval = options.reconnectInterval;
|
|
85
|
+
if (options.resumeKey)
|
|
86
|
+
this.resumeKey = options.resumeKey;
|
|
87
|
+
if (options.resumeTimeout)
|
|
88
|
+
this.resumeTimeout = options.resumeTimeout;
|
|
89
|
+
if (options.state)
|
|
90
|
+
this.state = options.state;
|
|
91
|
+
this.stats = {
|
|
92
|
+
players: 0,
|
|
93
|
+
playingPlayers: 0,
|
|
94
|
+
uptime: 0,
|
|
95
|
+
memory: {
|
|
96
|
+
free: 0,
|
|
97
|
+
used: 0,
|
|
98
|
+
allocated: 0,
|
|
99
|
+
reservable: 0
|
|
100
|
+
},
|
|
101
|
+
cpu: {
|
|
102
|
+
cores: 0,
|
|
103
|
+
systemLoad: 0,
|
|
104
|
+
lavalinkLoad: 0
|
|
105
|
+
},
|
|
106
|
+
frameStats: {
|
|
107
|
+
sent: 0,
|
|
108
|
+
nulled: 0,
|
|
109
|
+
deficit: 0
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Connects the node to Lavalink
|
|
115
|
+
*/
|
|
116
|
+
async connect() {
|
|
117
|
+
this.ws = await new Promise((resolve, reject) => {
|
|
118
|
+
if (this.connected)
|
|
119
|
+
this.ws.close();
|
|
120
|
+
return Rest_1.Rest.version(this)
|
|
121
|
+
.then(nodeVersion => {
|
|
122
|
+
const major = typeof nodeVersion === "string" && nodeVersion.indexOf(".") !== -1 ? nodeVersion.split(".")[0] : undefined;
|
|
123
|
+
if (!major || isNaN(Number(major)))
|
|
124
|
+
return reject(new Error("Node didn't respond to /version with a major.minor.patch version string"));
|
|
125
|
+
const numMajor = Number(major);
|
|
126
|
+
this.version = numMajor;
|
|
127
|
+
const headers = {
|
|
128
|
+
Authorization: this.password,
|
|
129
|
+
"User-Id": this.manager.user,
|
|
130
|
+
"Client-Name": `Lavacord/${version}`
|
|
131
|
+
};
|
|
132
|
+
if (this.resumeKey)
|
|
133
|
+
headers["Resume-Key"] = this.resumeKey;
|
|
134
|
+
const ws = new ws_1.default(`ws://${this.host}:${this.port}/v${numMajor}/websocket`, { headers });
|
|
135
|
+
const onEvent = (event) => {
|
|
136
|
+
ws.removeAllListeners();
|
|
137
|
+
reject(event);
|
|
138
|
+
};
|
|
139
|
+
const onOpen = () => {
|
|
140
|
+
this.onOpen();
|
|
141
|
+
ws.removeListener("open", onOpen);
|
|
142
|
+
ws.removeListener("error", onEvent);
|
|
143
|
+
ws.removeListener("close", onEvent);
|
|
144
|
+
resolve(ws);
|
|
145
|
+
};
|
|
146
|
+
ws
|
|
147
|
+
.once("open", onOpen)
|
|
148
|
+
.once("error", onEvent)
|
|
149
|
+
.once("close", onEvent);
|
|
150
|
+
}).catch(reject);
|
|
151
|
+
});
|
|
152
|
+
this.ws
|
|
153
|
+
.on("message", data => this.onMessage(data))
|
|
154
|
+
.on("error", error => this.onError(error))
|
|
155
|
+
.on("close", (code, reason) => this.onClose(code, reason));
|
|
156
|
+
return this.ws;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Destroys the connection to the Lavalink Websocket
|
|
160
|
+
*/
|
|
161
|
+
destroy() {
|
|
162
|
+
if (!this.connected)
|
|
163
|
+
return false;
|
|
164
|
+
this.ws.close(1000, "destroy");
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Whether or not the node is connected
|
|
169
|
+
*/
|
|
170
|
+
get connected() {
|
|
171
|
+
if (!this.ws)
|
|
172
|
+
return false;
|
|
173
|
+
return this.ws.readyState === ws_1.default.OPEN;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* A private function for handling the open event from WebSocket
|
|
177
|
+
*/
|
|
178
|
+
onOpen() {
|
|
179
|
+
if (this._reconnect)
|
|
180
|
+
clearTimeout(this._reconnect);
|
|
181
|
+
this.manager.emit("ready", this);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Private function for handling the message event from WebSocket
|
|
185
|
+
* @param data The data that came from lavalink
|
|
186
|
+
*/
|
|
187
|
+
onMessage(data) {
|
|
188
|
+
if (Array.isArray(data))
|
|
189
|
+
data = Buffer.concat(data);
|
|
190
|
+
else if (data instanceof ArrayBuffer)
|
|
191
|
+
data = Buffer.from(data);
|
|
192
|
+
const msg = JSON.parse(data.toString());
|
|
193
|
+
if (msg.op === "ready") {
|
|
194
|
+
this.sessionId = msg.sessionId;
|
|
195
|
+
if (this.resumeKey)
|
|
196
|
+
Rest_1.Rest.updateSession(this);
|
|
197
|
+
}
|
|
198
|
+
else if (msg.op && msg.op === "stats") {
|
|
199
|
+
this.stats = { ...msg };
|
|
200
|
+
delete this.stats.op;
|
|
201
|
+
}
|
|
202
|
+
else if ((msg.op === "event" || msg.op === "playerUpdate") && this.manager.players.has(msg.guildId)) {
|
|
203
|
+
this.manager.players.get(msg.guildId).emit(msg.op, msg);
|
|
204
|
+
}
|
|
205
|
+
this.manager.emit("raw", msg, this);
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Private function for handling the error event from WebSocket
|
|
209
|
+
* @param error WebSocket error
|
|
210
|
+
*/
|
|
211
|
+
onError(error) {
|
|
212
|
+
if (!error)
|
|
213
|
+
return;
|
|
214
|
+
this.manager.emit("error", error, this);
|
|
215
|
+
this.reconnect();
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Private function for handling the close event from WebSocket
|
|
219
|
+
* @param code WebSocket close code
|
|
220
|
+
* @param reason WebSocket close reason
|
|
221
|
+
*/
|
|
222
|
+
onClose(code, reason) {
|
|
223
|
+
this.manager.emit("disconnect", code, reason.toString(), this);
|
|
224
|
+
if (code !== 1000 || reason.toString() !== "destroy")
|
|
225
|
+
return this.reconnect();
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Handles reconnecting if something happens and the node discounnects
|
|
229
|
+
*/
|
|
230
|
+
reconnect() {
|
|
231
|
+
this._reconnect = setTimeout(() => {
|
|
232
|
+
this.ws.removeAllListeners();
|
|
233
|
+
this.ws = null;
|
|
234
|
+
this.manager.emit("reconnecting", this);
|
|
235
|
+
this.connect();
|
|
236
|
+
}, this.reconnectInterval);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
exports.LavalinkNode = LavalinkNode;
|
|
240
|
+
//# sourceMappingURL=LavalinkNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LavalinkNode.js","sourceRoot":"","sources":["../../src/lib/LavalinkNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { EventEmitter } from "events";
|
|
2
|
+
import { LavalinkNode } from "./LavalinkNode";
|
|
3
|
+
import { Player } from "./Player";
|
|
4
|
+
import WebSocket from "ws";
|
|
5
|
+
import type { JoinData, VoiceServerUpdate, VoiceStateUpdate, DiscordPacket, ManagerOptions, JoinOptions, LavalinkNodeOptions } from "./Types";
|
|
6
|
+
/**
|
|
7
|
+
* The class that handles everything to do with Lavalink. it is the hub of the library basically
|
|
8
|
+
*/
|
|
9
|
+
export declare class Manager extends EventEmitter {
|
|
10
|
+
/**
|
|
11
|
+
* A [**Map**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) of Lavalink Nodes
|
|
12
|
+
*/
|
|
13
|
+
nodes: Map<string, LavalinkNode>;
|
|
14
|
+
/**
|
|
15
|
+
* A [**Map**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) of all the players
|
|
16
|
+
*/
|
|
17
|
+
players: Map<string, Player>;
|
|
18
|
+
/**
|
|
19
|
+
* A [**Map**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) of all the VOICE_SERVER_UPDATE States
|
|
20
|
+
*/
|
|
21
|
+
voiceServers: Map<string, VoiceServerUpdate>;
|
|
22
|
+
/**
|
|
23
|
+
* A [**Map**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) of all the VOICE_STATE_UPDATE States
|
|
24
|
+
*/
|
|
25
|
+
voiceStates: Map<string, VoiceStateUpdate>;
|
|
26
|
+
/**
|
|
27
|
+
* The user id of the bot this Manager is managing
|
|
28
|
+
*/
|
|
29
|
+
user: string;
|
|
30
|
+
/**
|
|
31
|
+
* The send function needs for the library to function
|
|
32
|
+
*/
|
|
33
|
+
send?: (packet: DiscordPacket) => unknown;
|
|
34
|
+
/**
|
|
35
|
+
* The Player the manager will use when creating new Players
|
|
36
|
+
*/
|
|
37
|
+
private Player;
|
|
38
|
+
/**
|
|
39
|
+
* An Set of all the expecting connections guild id's
|
|
40
|
+
*/
|
|
41
|
+
private expecting;
|
|
42
|
+
/**
|
|
43
|
+
* The constructor of the Manager
|
|
44
|
+
* @param nodes A Array of {@link LavalinkNodeOptions} that the Manager will connect to
|
|
45
|
+
* @param options The options for the Manager {@link ManagerOptions}
|
|
46
|
+
*/
|
|
47
|
+
constructor(nodes: Array<LavalinkNodeOptions>, options: ManagerOptions);
|
|
48
|
+
/**
|
|
49
|
+
* Connects all the {@link LavalinkNode} to the respective Lavalink instance
|
|
50
|
+
*/
|
|
51
|
+
connect(): Promise<Array<WebSocket | boolean>>;
|
|
52
|
+
/**
|
|
53
|
+
* Disconnects everything, basically destorying the manager.
|
|
54
|
+
* Stops all players, leaves all voice channels then disconnects all LavalinkNodes
|
|
55
|
+
*/
|
|
56
|
+
disconnect(): Promise<Array<boolean>>;
|
|
57
|
+
/**
|
|
58
|
+
* Creating a {@link LavalinkNode} and adds it to the the nodes Map
|
|
59
|
+
* @param options The node options of the node you're creating
|
|
60
|
+
*/
|
|
61
|
+
createNode(options: LavalinkNodeOptions): LavalinkNode;
|
|
62
|
+
/**
|
|
63
|
+
* Disconnects and Deletes the specified node
|
|
64
|
+
* @param id The id of the node you want to remove
|
|
65
|
+
*/
|
|
66
|
+
removeNode(id: string): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Connects the bot to the selected voice channel
|
|
69
|
+
* @param data The Join Data
|
|
70
|
+
* @param joinOptions Selfmute and Selfdeaf options, if you want the bot to be deafen or muted upon joining
|
|
71
|
+
*/
|
|
72
|
+
join(data: JoinData, joinOptions?: JoinOptions): Promise<Player>;
|
|
73
|
+
/**
|
|
74
|
+
* Leaves the specified voice channel
|
|
75
|
+
* @param guild The guild you want the bot to leave the voice channel of
|
|
76
|
+
*/
|
|
77
|
+
leave(guild: string): Promise<boolean>;
|
|
78
|
+
/**
|
|
79
|
+
* Switch a player from one node to another, this is to implement fallback
|
|
80
|
+
* @param player The player you want to switch nodes with
|
|
81
|
+
* @param node The node you want to switch to
|
|
82
|
+
*/
|
|
83
|
+
switch(player: Player, node: LavalinkNode): Promise<Player>;
|
|
84
|
+
/**
|
|
85
|
+
* For handling voiceServerUpdate from the user's library of choice
|
|
86
|
+
* @param data The data directly from discord
|
|
87
|
+
*/
|
|
88
|
+
voiceServerUpdate(data: VoiceServerUpdate): Promise<boolean>;
|
|
89
|
+
/**
|
|
90
|
+
* For handling voiceStateUpdate from the user's library of choice
|
|
91
|
+
* @param data The data directly from discord
|
|
92
|
+
*/
|
|
93
|
+
voiceStateUpdate(data: VoiceStateUpdate): Promise<boolean>;
|
|
94
|
+
/**
|
|
95
|
+
* Just a utility method to easily send OPCode 4 websocket events to discord
|
|
96
|
+
* @param guild The guild is
|
|
97
|
+
* @param channel Voice channel id, or null to leave a voice channel
|
|
98
|
+
* @param param2 Selfmute and Selfdeaf options, if you want the bot to be deafen or muted upon joining
|
|
99
|
+
*/
|
|
100
|
+
sendWS(guild: string, channel: string | null, { selfmute, selfdeaf }?: JoinOptions): any;
|
|
101
|
+
/**
|
|
102
|
+
* Gets all connected nodes, sorts them by cou load of the node
|
|
103
|
+
*/
|
|
104
|
+
get idealNodes(): Array<LavalinkNode>;
|
|
105
|
+
/**
|
|
106
|
+
* Handles the data of voiceServerUpdate & voiceStateUpdate to see if a connection is possible with the data we have and if it is then make the connection to lavalink
|
|
107
|
+
* @param guildId The guild id that we're trying to attempt to connect to
|
|
108
|
+
*/
|
|
109
|
+
private _attemptConnection;
|
|
110
|
+
/**
|
|
111
|
+
* This creates the {@link Player}
|
|
112
|
+
* @param data The Join Data, this is called by {@link Manager.join}
|
|
113
|
+
*/
|
|
114
|
+
private spawnPlayer;
|
|
115
|
+
}
|
|
116
|
+
export interface ManagerEvents {
|
|
117
|
+
ready: [LavalinkNode];
|
|
118
|
+
raw: [unknown, LavalinkNode];
|
|
119
|
+
error: [unknown, LavalinkNode];
|
|
120
|
+
disconnect: [number, string, LavalinkNode];
|
|
121
|
+
reconnecting: [LavalinkNode];
|
|
122
|
+
}
|
|
123
|
+
export interface Manager {
|
|
124
|
+
addListener<E extends keyof ManagerEvents>(event: E, listener: (...args: ManagerEvents[E]) => any): this;
|
|
125
|
+
emit<E extends keyof ManagerEvents>(event: E, ...args: ManagerEvents[E]): boolean;
|
|
126
|
+
eventNames(): Array<keyof ManagerEvents>;
|
|
127
|
+
listenerCount(event: keyof ManagerEvents): number;
|
|
128
|
+
listeners(event: keyof ManagerEvents): Array<(...args: Array<any>) => any>;
|
|
129
|
+
off<E extends keyof ManagerEvents>(event: E, listener: (...args: ManagerEvents[E]) => any): this;
|
|
130
|
+
on<E extends keyof ManagerEvents>(event: E, listener: (...args: ManagerEvents[E]) => any): this;
|
|
131
|
+
once<E extends keyof ManagerEvents>(event: E, listener: (...args: ManagerEvents[E]) => any): this;
|
|
132
|
+
prependListener<E extends keyof ManagerEvents>(event: E, listener: (...args: ManagerEvents[E]) => any): this;
|
|
133
|
+
prependOnceListener<E extends keyof ManagerEvents>(event: E, listener: (...args: ManagerEvents[E]) => any): this;
|
|
134
|
+
rawListeners(event: keyof ManagerEvents): Array<(...args: Array<any>) => any>;
|
|
135
|
+
removeAllListeners(event?: keyof ManagerEvents): this;
|
|
136
|
+
removeListener<E extends keyof ManagerEvents>(event: E, listener: (...args: ManagerEvents[E]) => any): this;
|
|
137
|
+
}
|