poru 4.5.0 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +98 -90
- package/dist/src/Node/Node.d.ts +77 -4
- package/dist/src/Node/Node.js +53 -10
- package/dist/src/Node/Node.js.map +1 -1
- package/dist/src/Node/Rest.d.ts +27 -9
- package/dist/src/Node/Rest.js +8 -5
- package/dist/src/Node/Rest.js.map +1 -1
- package/dist/src/Player/Connection.js.map +1 -1
- package/dist/src/Player/CustomFilters.js.map +1 -1
- package/dist/src/Player/Filters.d.ts +1 -1
- package/dist/src/Player/Filters.js.map +1 -1
- package/dist/src/Player/Player.d.ts +88 -52
- package/dist/src/Player/Player.js +153 -94
- package/dist/src/Player/Player.js.map +1 -1
- package/dist/src/Plugin.d.ts +0 -1
- package/dist/src/Plugin.js +0 -1
- package/dist/src/Plugin.js.map +1 -1
- package/dist/src/Poru.d.ts +74 -33
- package/dist/src/Poru.js +35 -29
- package/dist/src/Poru.js.map +1 -1
- package/dist/src/config.d.ts +1 -1
- package/dist/src/config.js +2 -2
- package/dist/src/config.js.map +1 -1
- package/dist/src/guild/Queue.d.ts +32 -4
- package/dist/src/guild/Queue.js +30 -1
- package/dist/src/guild/Queue.js.map +1 -1
- package/dist/src/guild/Response.d.ts +52 -11
- package/dist/src/guild/Response.js +42 -4
- package/dist/src/guild/Response.js.map +1 -1
- package/dist/src/guild/Track.d.ts +20 -6
- package/dist/src/guild/Track.js +19 -15
- package/dist/src/guild/Track.js.map +1 -1
- package/docs/.nojekyll +1 -0
- package/docs/README.md +174 -0
- package/docs/classes/Connection.md +161 -0
- package/docs/classes/Filters.md +433 -0
- package/docs/classes/Node.md +518 -0
- package/docs/classes/Player.md +2125 -0
- package/docs/classes/Plugin.md +67 -0
- package/docs/classes/Poru.md +1673 -0
- package/docs/classes/Response.md +91 -0
- package/docs/classes/Rest.md +268 -0
- package/docs/classes/Track.md +105 -0
- package/docs/classes/customFilter.md +722 -0
- package/docs/enums/RequestMethod.md +63 -0
- package/docs/interfaces/ConnectionOptions.md +74 -0
- package/docs/interfaces/ErrorResponses.md +94 -0
- package/docs/interfaces/FiltersOptions.md +140 -0
- package/docs/interfaces/IVoiceServer.md +41 -0
- package/docs/interfaces/LoadTrackResponseEmpty.md +30 -0
- package/docs/interfaces/LoadTrackResponseError.md +38 -0
- package/docs/interfaces/LoadTrackResponsePlaylist.md +40 -0
- package/docs/interfaces/LoadTrackResponseSearch.md +30 -0
- package/docs/interfaces/LoadTrackResponseTrack.md +30 -0
- package/docs/interfaces/NodeGroup.md +74 -0
- package/docs/interfaces/NodeStats.md +99 -0
- package/docs/interfaces/PlayerEvent.md +55 -0
- package/docs/interfaces/PlayerObjectFromAPI.md +85 -0
- package/docs/interfaces/PlayerState.md +52 -0
- package/docs/interfaces/PoruEvents.md +500 -0
- package/docs/interfaces/PoruOptions.md +140 -0
- package/docs/interfaces/ResolveOptions.md +41 -0
- package/docs/interfaces/TrackEndEvent.md +81 -0
- package/docs/interfaces/TrackExceptionEvent.md +70 -0
- package/docs/interfaces/TrackStartEvent.md +70 -0
- package/docs/interfaces/TrackStuckEvent.md +81 -0
- package/docs/interfaces/WebSocketClosedEvent.md +92 -0
- package/docs/interfaces/channelMixOptions.md +62 -0
- package/docs/interfaces/playOptions.md +44 -0
- package/docs/interfaces/trackData.md +52 -0
- package/docs/interfaces/trackInfo.md +129 -0
- package/docs/modules.md +186 -0
- package/guide.md +4 -4
- package/package.json +8 -7
- package/src/Node/Node.ts +291 -210
- package/src/Node/Rest.ts +129 -108
- package/src/Player/Connection.ts +65 -62
- package/src/Player/CustomFilters.ts +91 -86
- package/src/Player/Filters.ts +216 -216
- package/src/Player/Player.ts +526 -466
- package/src/Plugin.ts +1 -2
- package/src/Poru.ts +522 -462
- package/src/config.ts +1 -1
- package/src/guild/Queue.ts +54 -27
- package/src/guild/Response.ts +96 -22
- package/src/guild/Track.ts +76 -67
- package/dist/src/Connection.d.ts +0 -17
- package/dist/src/Connection.js +0 -51
- package/dist/src/Connection.js.map +0 -1
- package/dist/src/Error.d.ts +0 -3
- package/dist/src/Error.js +0 -8
- package/dist/src/Error.js.map +0 -1
- package/dist/src/Filters.d.ts +0 -77
- package/dist/src/Filters.js +0 -95
- package/dist/src/Filters.js.map +0 -1
- package/dist/src/Node.d.ts +0 -59
- package/dist/src/Node.js +0 -180
- package/dist/src/Node.js.map +0 -1
- package/dist/src/Player.d.ts +0 -57
- package/dist/src/Player.js +0 -271
- package/dist/src/Player.js.map +0 -1
- package/dist/src/Rest.d.ts +0 -40
- package/dist/src/Rest.js +0 -89
- package/dist/src/Rest.js.map +0 -1
- package/docs/404.html +0 -17
- package/docs/CNAME +0 -1
- package/docs/assets/css/styles.19b7e1c8.css +0 -1
- package/docs/assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg +0 -0
- package/docs/assets/js/01a85c17.c382ddaa.js +0 -1
- package/docs/assets/js/031793e1.464e1edc.js +0 -1
- package/docs/assets/js/096bfee4.78c46930.js +0 -1
- package/docs/assets/js/1506.34d25216.js +0 -1
- package/docs/assets/js/16577f9a.d7f6c8f0.js +0 -1
- package/docs/assets/js/17896441.d609b563.js +0 -1
- package/docs/assets/js/1be78505.46a6fe35.js +0 -1
- package/docs/assets/js/1df93b7f.877d1540.js +0 -1
- package/docs/assets/js/1f391b9e.2460d8d9.js +0 -1
- package/docs/assets/js/23d28cd9.4690daaf.js +0 -1
- package/docs/assets/js/2529.a9550492.js +0 -1
- package/docs/assets/js/2ffe84b7.ba4147a4.js +0 -1
- package/docs/assets/js/30a24c52.a9606a65.js +0 -1
- package/docs/assets/js/36193b8e.61b20281.js +0 -1
- package/docs/assets/js/393be207.96f26120.js +0 -1
- package/docs/assets/js/3aca03ba.b631699a.js +0 -1
- package/docs/assets/js/447f5094.6fb93d12.js +0 -1
- package/docs/assets/js/4972.6409a348.js +0 -1
- package/docs/assets/js/4c9e35b1.16c8156d.js +0 -1
- package/docs/assets/js/59362658.a73dbaaa.js +0 -1
- package/docs/assets/js/608ae6a4.3fe0da16.js +0 -1
- package/docs/assets/js/61f113e4.8d034d09.js +0 -1
- package/docs/assets/js/66406991.d9b0d6dc.js +0 -1
- package/docs/assets/js/6875c492.0909867c.js +0 -1
- package/docs/assets/js/6e2b62af.e097a1ba.js +0 -1
- package/docs/assets/js/723dca8e.ddd8e725.js +0 -1
- package/docs/assets/js/73664a40.64d15814.js +0 -1
- package/docs/assets/js/7661071f.571acd05.js +0 -1
- package/docs/assets/js/799429b6.2655e3ef.js +0 -1
- package/docs/assets/js/7d0c5b8d.b45db6ee.js +0 -1
- package/docs/assets/js/7f6b0998.430c14a8.js +0 -1
- package/docs/assets/js/814f3328.42f8b6ef.js +0 -1
- package/docs/assets/js/81c9c92c.cd523465.js +0 -1
- package/docs/assets/js/8717b14a.0acdf3dd.js +0 -1
- package/docs/assets/js/925b3f96.dd561723.js +0 -1
- package/docs/assets/js/935f2afb.e744b90a.js +0 -1
- package/docs/assets/js/9e4087bc.ef864928.js +0 -1
- package/docs/assets/js/a06b102f.8b27adc5.js +0 -1
- package/docs/assets/js/a09c2993.60386213.js +0 -1
- package/docs/assets/js/a6aa9e1f.75919748.js +0 -1
- package/docs/assets/js/a7023ddc.21028a75.js +0 -1
- package/docs/assets/js/a80da1cf.940186a7.js +0 -1
- package/docs/assets/js/ac56a297.7b2000bd.js +0 -1
- package/docs/assets/js/ae9224e9.4b62437b.js +0 -1
- package/docs/assets/js/b183f0d5.37966e06.js +0 -1
- package/docs/assets/js/b2b675dd.d1d922e4.js +0 -1
- package/docs/assets/js/b2f554cd.225e5eb9.js +0 -1
- package/docs/assets/js/b3c080cc.e2e54a0d.js +0 -1
- package/docs/assets/js/be9eaf5a.d3e2b468.js +0 -1
- package/docs/assets/js/cb2f5ba0.69954a96.js +0 -1
- package/docs/assets/js/ccc49370.81bd2934.js +0 -1
- package/docs/assets/js/d47a1793.f9ca9100.js +0 -1
- package/docs/assets/js/d9353602.0c0417ed.js +0 -1
- package/docs/assets/js/d9f32620.dd6f9d8f.js +0 -1
- package/docs/assets/js/e16015ca.43931c9c.js +0 -1
- package/docs/assets/js/e273c56f.df0dc249.js +0 -1
- package/docs/assets/js/e35b347a.19ecd515.js +0 -1
- package/docs/assets/js/e55ac21f.ff66dfb3.js +0 -1
- package/docs/assets/js/e6d723e4.6418e284.js +0 -1
- package/docs/assets/js/e9779ed7.02b0aa3b.js +0 -1
- package/docs/assets/js/f4f34a3a.1e1c3ca2.js +0 -1
- package/docs/assets/js/f760aea6.d6a0030c.js +0 -1
- package/docs/assets/js/main.5068e5c4.js +0 -2
- package/docs/assets/js/main.5068e5c4.js.LICENSE.txt +0 -63
- package/docs/assets/js/runtime~main.cbb198ca.js +0 -1
- package/docs/blog/archive/index.html +0 -17
- package/docs/blog/atom.xml +0 -70
- package/docs/blog/first-blog-post/index.html +0 -17
- package/docs/blog/index.html +0 -17
- package/docs/blog/long-blog-post/index.html +0 -17
- package/docs/blog/mdx-blog-post/index.html +0 -17
- package/docs/blog/rss.xml +0 -52
- package/docs/blog/tags/docusaurus/index.html +0 -17
- package/docs/blog/tags/facebook/index.html +0 -17
- package/docs/blog/tags/hello/index.html +0 -17
- package/docs/blog/tags/hola/index.html +0 -17
- package/docs/blog/tags/index.html +0 -17
- package/docs/blog/welcome/index.html +0 -17
- package/docs/docs/classes/Connection/index.html +0 -17
- package/docs/docs/classes/Filters/index.html +0 -17
- package/docs/docs/classes/Node/index.html +0 -17
- package/docs/docs/classes/Player/index.html +0 -17
- package/docs/docs/classes/Plugin/index.html +0 -17
- package/docs/docs/classes/Poru/index.html +0 -17
- package/docs/docs/classes/Response/index.html +0 -17
- package/docs/docs/classes/Rest/index.html +0 -17
- package/docs/docs/classes/Track/index.html +0 -17
- package/docs/docs/classes/customFilter/index.html +0 -17
- package/docs/docs/enums/RequestMethod/index.html +0 -17
- package/docs/docs/interfaces/ConnectionOptions/index.html +0 -17
- package/docs/docs/interfaces/IVoiceServer/index.html +0 -17
- package/docs/docs/interfaces/LavalinkResponse/index.html +0 -17
- package/docs/docs/interfaces/NodeGroup/index.html +0 -17
- package/docs/docs/interfaces/NodeStats/index.html +0 -17
- package/docs/docs/interfaces/PoruEvents/index.html +0 -17
- package/docs/docs/interfaces/PoruOptions/index.html +0 -17
- package/docs/docs/interfaces/ResolveOptions/index.html +0 -17
- package/docs/docs/interfaces/channelMixOptions/index.html +0 -17
- package/docs/docs/interfaces/playOptions/index.html +0 -17
- package/docs/docs/interfaces/trackData/index.html +0 -17
- package/docs/docs/interfaces/trackInfo/index.html +0 -17
- package/docs/docs/introduction/index.html +0 -23
- package/docs/docs/modules/index.html +0 -17
- package/docs/img/docusaurus-social-card.jpg +0 -0
- package/docs/img/docusaurus.png +0 -0
- package/docs/img/favicon.ico +0 -0
- package/docs/img/logo.svg +0 -1
- package/docs/img/poru.png +0 -0
- package/docs/img/undraw_docusaurus_mountain.svg +0 -171
- package/docs/img/undraw_docusaurus_react.svg +0 -170
- package/docs/img/undraw_docusaurus_tree.svg +0 -40
- package/docs/index.html +0 -17
- package/docs/markdown-page/index.html +0 -17
- package/docs/sitemap.xml +0 -1
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -1,25 +1,28 @@
|
|
|
1
1
|
<p align="center">
|
|
2
2
|
<img src="https://cdn.discordapp.com/attachments/732987654165233744/987656504373026816/20220618_000923_0000.png" />
|
|
3
3
|
</p>
|
|
4
|
-
<p align="center">
|
|
5
|
-
|
|
6
|
-
[](https://discord.gg/Zmmc47Nrh8)
|
|
7
|
-
[](https://www.npmjs.com/package/poru)
|
|
8
|
-

|
|
9
|
-

|
|
10
|
-

|
|
11
|
-

|
|
12
4
|
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="https://discord.gg/Zmmc47Nrh8">
|
|
7
|
+
<img src="https://img.shields.io/discord/567705326774779944?style=flat-square" alt="Discord">
|
|
8
|
+
</a>
|
|
9
|
+
<a href="https://www.npmjs.com/package/poru">
|
|
10
|
+
<img src="https://img.shields.io/npm/v/poru?style=flat-square" alt="npm">
|
|
11
|
+
</a>
|
|
12
|
+
<img src="https://img.shields.io/github/stars/parasop/poru?style=flat-square" alt="GitHub Stars">
|
|
13
|
+
<img src="https://img.shields.io/github/issues-raw/parasop/poru?style=flat-square" alt="GitHub issues">
|
|
14
|
+
<img src="https://img.shields.io/snyk/vulnerabilities/npm/poru?style=flat-square" alt="Snyk Vulnerabilities for npm package">
|
|
15
|
+
<img src="https://img.shields.io/npm/l/poru?style=flat-square" alt="NPM">
|
|
13
16
|
</p>
|
|
14
17
|
|
|
15
18
|
<p align="center">
|
|
16
|
-
this version
|
|
19
|
+
note: this version supports only Lavalink v4 or above
|
|
17
20
|
</p>
|
|
18
21
|
|
|
19
|
-
|
|
20
|
-
|
|
21
22
|
<p align="center">
|
|
22
|
-
<a href="https://nodei.co/npm/poru/"
|
|
23
|
+
<a href="https://nodei.co/npm/poru/">
|
|
24
|
+
<img src="https://nodei.co/npm/poru.png?downloads=true&downloadRank=true&stars=true" alt="Poru NPM Package">
|
|
25
|
+
</a>
|
|
23
26
|
</p>
|
|
24
27
|
|
|
25
28
|
## Table of contents
|
|
@@ -31,134 +34,139 @@ this version support only lavalink v3
|
|
|
31
34
|
|
|
32
35
|
# Installation
|
|
33
36
|
|
|
34
|
-
```
|
|
35
|
-
|
|
37
|
+
```bash
|
|
38
|
+
# Using npm
|
|
36
39
|
npm install poru
|
|
37
40
|
|
|
38
|
-
|
|
41
|
+
# Using yarn
|
|
39
42
|
yarn add poru
|
|
40
43
|
```
|
|
41
44
|
|
|
42
45
|
# About
|
|
43
46
|
|
|
44
|
-
To use you need a configured [Lavalink](https://github.com/
|
|
47
|
+
To use, you need a configured [Lavalink](https://github.com/lavalink-devs/Lavalink) instance.
|
|
45
48
|
|
|
46
49
|
- Stable client
|
|
47
|
-
-
|
|
50
|
+
- Support TypeScript
|
|
48
51
|
- 100% Compatible with Lavalink
|
|
49
52
|
- Object-oriented
|
|
50
53
|
- 100% Customizable
|
|
51
54
|
- Easy to setup
|
|
52
55
|
- Inbuilt Queue System
|
|
53
|
-
- Inbuilt support for
|
|
54
|
-
## Implementation
|
|
55
|
-
|
|
56
|
-
[Poru Music](https://github.com/parasop/poru-example) **Example bot as guide for beginning.**
|
|
57
|
-
|
|
56
|
+
- Inbuilt support for Spotify, Apple Music, and Deezer
|
|
58
57
|
|
|
59
58
|
## Implementation Repo:
|
|
60
|
-
Note : Send pr to add your repo here
|
|
61
|
-
|
|
62
|
-
URL | Features | Additional Information
|
|
63
|
-
-------|----------|-----------------
|
|
64
|
-
[Poru Music](https://github.com/parasop/poru-example) | Basic example | works with latest djs version |
|
|
65
|
-
[The world machine](https://github.com/Reishimanfr/TWM-bot) | See github repo for full list | - |
|
|
66
|
-
[Lunox](https://github.com/adh319/Lunox) | Look over the repo for the full list of features. | Simply powerfull Discord Music Bot |
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
59
|
|
|
60
|
+
Note: Send PR to add your repo here
|
|
74
61
|
|
|
62
|
+
| URL | Features | Additional Information |
|
|
63
|
+
|-----|----------|------------------------|
|
|
64
|
+
| [Poru Music](https://github.com/parasop/poru-example) | Basic example | Works with the latest Discord.js version |
|
|
65
|
+
| [The world machine](https://github.com/Reishimanfr/TWM-bot) | See GitHub repo for the full list | - |
|
|
66
|
+
| [Lunox](https://github.com/adh319/Lunox) | Look over the repo for the full list of features | Simply powerful Discord Music Bot |
|
|
75
67
|
|
|
76
68
|
## Example usage basic bot
|
|
77
69
|
|
|
78
70
|
```javascript
|
|
79
71
|
const { Client, GatewayIntentBits } = require("discord.js");
|
|
80
72
|
const { Poru } = require("poru");
|
|
73
|
+
|
|
81
74
|
const nodes = [
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
75
|
+
{
|
|
76
|
+
name: "local-node",
|
|
77
|
+
host: "localhost",
|
|
78
|
+
port: 2333,
|
|
79
|
+
password: "youshallnotpass",
|
|
80
|
+
},
|
|
88
81
|
];
|
|
82
|
+
|
|
89
83
|
const PoruOptions = {
|
|
90
|
-
|
|
91
|
-
|
|
84
|
+
library: "discord.js",
|
|
85
|
+
defaultPlatform: "scsearch",
|
|
92
86
|
};
|
|
87
|
+
|
|
93
88
|
const client = new Client({
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
89
|
+
intents: [
|
|
90
|
+
GatewayIntentBits.Guilds,
|
|
91
|
+
GatewayIntentBits.GuildMessages,
|
|
92
|
+
GatewayIntentBits.GuildVoiceStates,
|
|
93
|
+
GatewayIntentBits.MessageContent,
|
|
94
|
+
],
|
|
100
95
|
});
|
|
96
|
+
|
|
101
97
|
client.poru = new Poru(client, nodes, PoruOptions);
|
|
102
98
|
|
|
103
99
|
client.poru.on("trackStart", (player, track) => {
|
|
104
|
-
|
|
105
|
-
|
|
100
|
+
const channel = client.channels.cache.get(player.textChannel);
|
|
101
|
+
return channel.send(`Now playing \`${track.info.title}\``);
|
|
106
102
|
});
|
|
107
103
|
|
|
108
104
|
client.on("ready", () => {
|
|
109
|
-
|
|
110
|
-
|
|
105
|
+
console.log("Ready!");
|
|
106
|
+
client.poru.init(client);
|
|
111
107
|
});
|
|
112
108
|
|
|
113
109
|
client.on("interactionCreate", async (interaction) => {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
110
|
+
if (!interaction.isChatInputCommand()) return;
|
|
111
|
+
if (!interaction.member.voice.channel) {
|
|
112
|
+
return interaction.reply({
|
|
113
|
+
content: `Please connect with a voice channel `,
|
|
114
|
+
ephemeral: true,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
120
117
|
|
|
121
|
-
|
|
118
|
+
const track = interaction.options.getString("track");
|
|
122
119
|
|
|
123
|
-
|
|
120
|
+
const res = await client.poru.resolve({ query: track, source: "scsearch", requester: interaction.member });
|
|
124
121
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
122
|
+
if (res.loadType === "error") {
|
|
123
|
+
return interaction.reply("Failed to load track.");
|
|
124
|
+
} else if (res.loadType === "empty") {
|
|
125
|
+
return interaction.reply("No source found!");
|
|
126
|
+
}
|
|
130
127
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
128
|
+
// Create connection with Discord voice channel
|
|
129
|
+
const player = client.poru.createConnection({
|
|
130
|
+
guildId: interaction.guild.id,
|
|
131
|
+
voiceChannel: interaction.member.voice.channelId,
|
|
132
|
+
textChannel: interaction.channel.id,
|
|
133
|
+
deaf: true,
|
|
134
|
+
});
|
|
138
135
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
136
|
+
if (res.loadType === "playlist") {
|
|
137
|
+
for (const track of res.tracks) {
|
|
138
|
+
track.info.requester = interaction.user;
|
|
139
|
+
player.queue.add(track);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
interaction.reply(
|
|
143
|
+
`${res.playlistInfo.name} has been loaded with ${res.tracks.length}`
|
|
144
|
+
);
|
|
145
|
+
} else {
|
|
146
|
+
const track = res.tracks[0];
|
|
147
|
+
track.info.requester = interaction.user;
|
|
148
|
+
player.queue.add(track);
|
|
149
|
+
interaction.reply(`Queued Track \n \`${track.info.title}\``)
|
|
143
150
|
}
|
|
144
151
|
|
|
145
|
-
|
|
146
|
-
`${res.playlistInfo.name} has been loaded with ${res.tracks.length}`
|
|
147
|
-
);
|
|
148
|
-
} else {
|
|
149
|
-
const track = res.tracks[0];
|
|
150
|
-
track.info.requester = interaction.user;
|
|
151
|
-
player.queue.add(track);
|
|
152
|
-
interaction.reply(`Queued Track \n \`${track.info.title}\``)
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
if (!player.isPlaying && player.isConnected) player.play();
|
|
152
|
+
if (!player.isPlaying && player.isConnected) player.play();
|
|
156
153
|
});
|
|
157
154
|
|
|
158
155
|
client.login("TOKEN");
|
|
159
156
|
```
|
|
160
157
|
|
|
158
|
+
## Plugins list:
|
|
159
|
+
|
|
160
|
+
Note: Open a PR to add your plugin here
|
|
161
|
+
|
|
162
|
+
| Name | Link | Additional Description |
|
|
163
|
+
|------|------|------------------------|
|
|
164
|
+
| Poru Spotify | [poru-spotify](https://github.com/parasop/poru-spotify) | Plugin for integrating Spotify with Poru |
|
|
165
|
+
| Poru Deezer | [poru-deezer](https://github.com/parasop/poru-deezer) | Plugin for integrating Deezer with Poru |
|
|
166
|
+
| Poru Apple Music | [poru-applemusic](https://github.com/parasop/poru-applemusic) | Plugin for integrating Apple Music with Poru |
|
|
167
|
+
|
|
161
168
|
## Need Help?
|
|
162
169
|
|
|
163
|
-
Feel free to join our [
|
|
164
|
-
|
|
170
|
+
Feel free to join our [Discord server](https://discord.gg/Zmmc47Nrh8). Give us suggestions and advice about errors and new features.
|
|
171
|
+
|
|
172
|
+
With ❤️ by [Paras](https://github.com/parasop).
|
package/dist/src/Node/Node.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import { Poru, PoruOptions, NodeGroup } from "../Poru";
|
|
2
3
|
import WebSocket from "ws";
|
|
3
4
|
import { Rest } from "./Rest";
|
|
@@ -22,6 +23,37 @@ export interface NodeStats {
|
|
|
22
23
|
};
|
|
23
24
|
uptime: number;
|
|
24
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* This interface represents the LavaLink V4 Error Responses
|
|
28
|
+
* @reference https://lavalink.dev/api/rest.html#error-responses
|
|
29
|
+
*/
|
|
30
|
+
export interface ErrorResponses {
|
|
31
|
+
/**
|
|
32
|
+
* The timestamp of the error in milliseconds since the Unix epoch
|
|
33
|
+
*/
|
|
34
|
+
timestamp: number;
|
|
35
|
+
/**
|
|
36
|
+
* The HTTP status code
|
|
37
|
+
*/
|
|
38
|
+
status: number;
|
|
39
|
+
/**
|
|
40
|
+
* The HTTP status code message
|
|
41
|
+
*/
|
|
42
|
+
error: string;
|
|
43
|
+
/**
|
|
44
|
+
* The stack trace of the error when trace=true as query param has been sent
|
|
45
|
+
* @optional
|
|
46
|
+
*/
|
|
47
|
+
trace?: string;
|
|
48
|
+
/**
|
|
49
|
+
* The error message
|
|
50
|
+
*/
|
|
51
|
+
message: string;
|
|
52
|
+
/**
|
|
53
|
+
* The path of the request
|
|
54
|
+
*/
|
|
55
|
+
path: string;
|
|
56
|
+
}
|
|
25
57
|
export declare class Node {
|
|
26
58
|
isConnected: boolean;
|
|
27
59
|
poru: Poru;
|
|
@@ -39,7 +71,7 @@ export declare class Node {
|
|
|
39
71
|
readonly autoResume: boolean;
|
|
40
72
|
readonly reconnectTimeout: number;
|
|
41
73
|
reconnectTries: number;
|
|
42
|
-
reconnectAttempt:
|
|
74
|
+
reconnectAttempt: NodeJS.Timeout | null;
|
|
43
75
|
attempt: number;
|
|
44
76
|
stats: NodeStats | null;
|
|
45
77
|
options: NodeGroup;
|
|
@@ -67,13 +99,54 @@ export declare class Node {
|
|
|
67
99
|
* @returns {void}
|
|
68
100
|
*/
|
|
69
101
|
reconnect(): void;
|
|
70
|
-
|
|
102
|
+
/**
|
|
103
|
+
* This function will make the node disconnect
|
|
104
|
+
* @returns {Promise<void>} void
|
|
105
|
+
*/
|
|
106
|
+
disconnect(): Promise<void>;
|
|
107
|
+
/**
|
|
108
|
+
* This function will get the penalties from the current node
|
|
109
|
+
* @returns {number} The amount of penalties
|
|
110
|
+
*/
|
|
71
111
|
get penalties(): number;
|
|
112
|
+
/**
|
|
113
|
+
* This function will open up again the node
|
|
114
|
+
* @returns {Promise<void>} The Promise<void>
|
|
115
|
+
*/
|
|
72
116
|
private open;
|
|
117
|
+
/**
|
|
118
|
+
* This function will set the stats accordingly from the NodeStats
|
|
119
|
+
* @param {NodeStats} packet The NodeStats
|
|
120
|
+
* @returns {void} void
|
|
121
|
+
*/
|
|
73
122
|
private setStats;
|
|
123
|
+
/**
|
|
124
|
+
* This will send a message to the node
|
|
125
|
+
* @param {any} payload any
|
|
126
|
+
* @returns {Promise<void>} void
|
|
127
|
+
*/
|
|
74
128
|
private message;
|
|
129
|
+
/**
|
|
130
|
+
* This will close the connection to the node
|
|
131
|
+
* @param {any} event any
|
|
132
|
+
* @returns {void} void
|
|
133
|
+
*/
|
|
75
134
|
private close;
|
|
135
|
+
/**
|
|
136
|
+
* This function will emit the error so that the user's listeners can get them and listen to them
|
|
137
|
+
* @param {any} event any
|
|
138
|
+
* @returns {void} void
|
|
139
|
+
*/
|
|
76
140
|
private error;
|
|
77
|
-
|
|
78
|
-
|
|
141
|
+
/**
|
|
142
|
+
* This function will get the RoutePlanner status
|
|
143
|
+
* @returns {Promise<null>}
|
|
144
|
+
*/
|
|
145
|
+
getRoutePlannerStatus(): Promise<null>;
|
|
146
|
+
/**
|
|
147
|
+
* This function will Unmark a failed address
|
|
148
|
+
* @param {string} address The address to unmark as failed. This address must be in the same ip block.
|
|
149
|
+
* @returns {null | ErrorResponses} This function will most likely error if you havn't enabled the route planner
|
|
150
|
+
*/
|
|
151
|
+
unmarkFailedAddress(address: string): Promise<null | ErrorResponses>;
|
|
79
152
|
}
|
package/dist/src/Node/Node.js
CHANGED
|
@@ -7,6 +7,7 @@ exports.Node = void 0;
|
|
|
7
7
|
const ws_1 = __importDefault(require("ws"));
|
|
8
8
|
const config_1 = require("../config");
|
|
9
9
|
const Rest_1 = require("./Rest");
|
|
10
|
+
;
|
|
10
11
|
class Node {
|
|
11
12
|
isConnected;
|
|
12
13
|
poru;
|
|
@@ -39,7 +40,7 @@ class Node {
|
|
|
39
40
|
this.name = node.name;
|
|
40
41
|
this.options = node;
|
|
41
42
|
this.restURL = `http${node.secure ? "s" : ""}://${node.host}:${node.port}`;
|
|
42
|
-
this.socketURL = `${this.secure ? "wss" : "ws"}://${node.host}:${node.port}
|
|
43
|
+
this.socketURL = `${this.secure ? "wss" : "ws"}://${node.host}:${node.port}/v4/websocket`;
|
|
43
44
|
this.password = node.password || "youshallnotpass";
|
|
44
45
|
this.secure = node.secure || false;
|
|
45
46
|
this.regions = node.region || null;
|
|
@@ -73,7 +74,7 @@ class Node {
|
|
|
73
74
|
};
|
|
74
75
|
if (this.resumeKey)
|
|
75
76
|
headers["Resume-Key"] = this.resumeKey;
|
|
76
|
-
this.ws = new ws_1.default(this.socketURL
|
|
77
|
+
this.ws = new ws_1.default(`${this.socketURL}`, { headers });
|
|
77
78
|
this.ws.on("open", this.open.bind(this));
|
|
78
79
|
this.ws.on("error", this.error.bind(this));
|
|
79
80
|
this.ws.on("message", this.message.bind(this));
|
|
@@ -110,13 +111,18 @@ class Node {
|
|
|
110
111
|
this.attempt++;
|
|
111
112
|
}, this.reconnectTimeout);
|
|
112
113
|
}
|
|
113
|
-
|
|
114
|
+
/**
|
|
115
|
+
* This function will make the node disconnect
|
|
116
|
+
* @returns {Promise<void>} void
|
|
117
|
+
*/
|
|
118
|
+
async disconnect() {
|
|
114
119
|
if (!this.isConnected)
|
|
115
120
|
return;
|
|
116
|
-
this.poru.players.forEach((player) => {
|
|
121
|
+
this.poru.players.forEach(async (player) => {
|
|
117
122
|
if (player.node == this) {
|
|
118
|
-
player.
|
|
123
|
+
await player.autoMoveNode();
|
|
119
124
|
}
|
|
125
|
+
;
|
|
120
126
|
});
|
|
121
127
|
this.ws.close(1000, "destroy");
|
|
122
128
|
this.ws?.removeAllListeners();
|
|
@@ -125,6 +131,10 @@ class Node {
|
|
|
125
131
|
this.poru.nodes.delete(this.name);
|
|
126
132
|
this.poru.emit("nodeDisconnect", this);
|
|
127
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* This function will get the penalties from the current node
|
|
136
|
+
* @returns {number} The amount of penalties
|
|
137
|
+
*/
|
|
128
138
|
get penalties() {
|
|
129
139
|
let penalties = 0;
|
|
130
140
|
if (!this.isConnected)
|
|
@@ -137,7 +147,11 @@ class Node {
|
|
|
137
147
|
}
|
|
138
148
|
return penalties;
|
|
139
149
|
}
|
|
140
|
-
|
|
150
|
+
/**
|
|
151
|
+
* This function will open up again the node
|
|
152
|
+
* @returns {Promise<void>} The Promise<void>
|
|
153
|
+
*/
|
|
154
|
+
async open() {
|
|
141
155
|
if (this.reconnectAttempt) {
|
|
142
156
|
clearTimeout(this.reconnectAttempt);
|
|
143
157
|
delete this.reconnectAttempt;
|
|
@@ -148,14 +162,24 @@ class Node {
|
|
|
148
162
|
if (this.autoResume) {
|
|
149
163
|
for (const player of this.poru.players.values()) {
|
|
150
164
|
if (player.node === this) {
|
|
151
|
-
player.restart();
|
|
165
|
+
await player.restart();
|
|
152
166
|
}
|
|
153
167
|
}
|
|
154
168
|
}
|
|
155
169
|
}
|
|
170
|
+
/**
|
|
171
|
+
* This function will set the stats accordingly from the NodeStats
|
|
172
|
+
* @param {NodeStats} packet The NodeStats
|
|
173
|
+
* @returns {void} void
|
|
174
|
+
*/
|
|
156
175
|
setStats(packet) {
|
|
157
176
|
this.stats = packet;
|
|
158
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* This will send a message to the node
|
|
180
|
+
* @param {any} payload any
|
|
181
|
+
* @returns {Promise<void>} void
|
|
182
|
+
*/
|
|
159
183
|
async message(payload) {
|
|
160
184
|
const packet = JSON.parse(payload);
|
|
161
185
|
if (!packet?.op)
|
|
@@ -171,7 +195,7 @@ class Node {
|
|
|
171
195
|
this.sessionId = packet.sessionId;
|
|
172
196
|
this.poru.emit("debug", this.name, `[Web Socket] Ready Payload received ${JSON.stringify(packet)}`);
|
|
173
197
|
if (this.resumeKey) {
|
|
174
|
-
this.rest.patch(`/
|
|
198
|
+
await this.rest.patch(`/v4/sessions/${this.sessionId}`, { resumingKey: this.resumeKey, timeout: this.resumeTimeout });
|
|
175
199
|
this.poru.emit("debug", this.name, `[Lavalink Rest] Resuming configured on Lavalink`);
|
|
176
200
|
}
|
|
177
201
|
}
|
|
@@ -179,6 +203,11 @@ class Node {
|
|
|
179
203
|
if (packet.guildId && player)
|
|
180
204
|
player.emit(packet.op, packet);
|
|
181
205
|
}
|
|
206
|
+
/**
|
|
207
|
+
* This will close the connection to the node
|
|
208
|
+
* @param {any} event any
|
|
209
|
+
* @returns {void} void
|
|
210
|
+
*/
|
|
182
211
|
close(event) {
|
|
183
212
|
this.disconnect();
|
|
184
213
|
this.poru.emit("nodeDisconnect", this, event);
|
|
@@ -186,17 +215,31 @@ class Node {
|
|
|
186
215
|
if (event !== 1000)
|
|
187
216
|
this.reconnect();
|
|
188
217
|
}
|
|
218
|
+
/**
|
|
219
|
+
* This function will emit the error so that the user's listeners can get them and listen to them
|
|
220
|
+
* @param {any} event any
|
|
221
|
+
* @returns {void} void
|
|
222
|
+
*/
|
|
189
223
|
error(event) {
|
|
190
224
|
if (!event)
|
|
191
225
|
return;
|
|
192
226
|
this.poru.emit("nodeError", this, event);
|
|
193
227
|
this.poru.emit("debug", `[Web Socket] Connection for Lavalink Node (${this.name}) has error code: ${event.code || event}`);
|
|
194
228
|
}
|
|
229
|
+
/**
|
|
230
|
+
* This function will get the RoutePlanner status
|
|
231
|
+
* @returns {Promise<null>}
|
|
232
|
+
*/
|
|
195
233
|
async getRoutePlannerStatus() {
|
|
196
|
-
return await this.rest.get(`/
|
|
234
|
+
return await this.rest.get(`/v4/routeplanner/status`);
|
|
197
235
|
}
|
|
236
|
+
/**
|
|
237
|
+
* This function will Unmark a failed address
|
|
238
|
+
* @param {string} address The address to unmark as failed. This address must be in the same ip block.
|
|
239
|
+
* @returns {null | ErrorResponses} This function will most likely error if you havn't enabled the route planner
|
|
240
|
+
*/
|
|
198
241
|
async unmarkFailedAddress(address) {
|
|
199
|
-
return this.rest.post(`/
|
|
242
|
+
return this.rest.post(`/v4/routeplanner/free/address`, { address });
|
|
200
243
|
}
|
|
201
244
|
}
|
|
202
245
|
exports.Node = Node;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Node.js","sourceRoot":"","sources":["../../../src/Node/Node.ts"],"names":[],"mappings":";;;;;;AACA,4CAA2B;AAC3B,sCAA6C;AAC7C,iCAA8B;
|
|
1
|
+
{"version":3,"file":"Node.js","sourceRoot":"","sources":["../../../src/Node/Node.ts"],"names":[],"mappings":";;;;;;AACA,4CAA2B;AAC3B,sCAA6C;AAC7C,iCAA8B;AAsB7B,CAAC;AAwCF,MAAa,IAAI;IACN,WAAW,CAAU;IACrB,IAAI,CAAO;IACF,IAAI,CAAS;IACb,OAAO,CAAS;IAChB,SAAS,CAAS;IAC3B,QAAQ,CAAS;IACR,MAAM,CAAU;IAChB,OAAO,CAAgB;IAChC,SAAS,CAAS;IAClB,IAAI,CAAO;IACX,EAAE,CAAmB;IACZ,SAAS,CAAgB;IACzB,aAAa,CAAS;IACtB,UAAU,CAAU;IACpB,gBAAgB,CAAS;IAClC,cAAc,CAAS;IACvB,gBAAgB,CAAwB;IACxC,OAAO,CAAS;IAChB,KAAK,CAAmB;IACxB,OAAO,CAAY;IAC1B;;;;;OAKG;IACH,YAAY,IAAU,EAAE,IAAe,EAAE,OAAoB;QACzD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3E,IAAI,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,eAAe,CAAC;QAC1F,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,iBAAiB,CAAC;QACnD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,WAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC;QAC9C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC;QACzD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;IAED;;;OAGG;IACI,OAAO;QACV,IAAI,IAAI,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACxC,CAAC;QACD,MAAM,OAAO,GAAG;YACZ,aAAa,EAAE,IAAI,CAAC,QAAQ;YAC5B,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;YAC3B,aAAa,EAAE,eAAM,CAAC,UAAU;SACnC,CAAC;QACF,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3D,IAAI,CAAC,EAAE,GAAG,IAAI,YAAS,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACI,IAAI,CAAC,OAAY;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAU,EAAE,EAAE;YAC9B,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;YACxB,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACI,SAAS;QACZ,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,GAAG,EAAE;YACpC,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CACX,2CAA2C,IAAI,CAAC,IAAI,eAAe,IAAI,CAAC,cAAc,QAAQ,CACjG,CAAC;YACN,CAAC;YACD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,EAAE,EAAE,kBAAkB,EAAE,CAAC;YAC9B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,UAAU;QACnB,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAE9B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACvC,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;gBACtB,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;YAChC,CAAC;YAAA,CAAC;QACN,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC/B,IAAI,CAAC,EAAE,EAAE,kBAAkB,EAAE,CAAC;QAC9B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,yBAAyB;QACzB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,IAAI,SAAS;QACT,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO,SAAS,CAAC;QACxC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAChC,SAAS,IAAI,IAAI,CAAC,KAAK,CACnB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAC5D,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YACxB,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;YAC3C,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,IAAI;QACd,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACpC,OAAO,IAAI,CAAC,gBAAgB,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,iCAAiC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAEtF,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC9C,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;oBACvB,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC3B,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,QAAQ,CAAC,MAAiB;QAC9B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,OAAO,CAAC,OAAY;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE,EAAE;YAAE,OAAO;QAExB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QACrC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,uCAAuC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAErG,IAAI,MAAM,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,MAAM,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,uCAAuC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACnG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAA;gBACrH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,kDAAkD,CACpF,CAAC;YACN,CAAC;QAEL,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,KAAU;QACpB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,oDAAoD,KAAK,IAAI,cAC5F,EAAE,CACL,CAAC;QACF,IAAI,KAAK,KAAK,IAAI;YAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,KAAU;QACpB,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,IAAI,CACV,OAAO,EAAE,8CAA8C,IAAI,CAAC,IAAI,qBAAqB,KAAK,CAAC,IAAI,IAAI,KACnG,EAAE,CACL,CAAC;IACN,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,qBAAqB;QAC9B,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAO,yBAAyB,CAAC,CAAA;IAC/D,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,mBAAmB,CAAC,OAAe;QAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAwB,+BAA+B,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;IAC9F,CAAC;CACJ;AA3PD,oBA2PC"}
|
package/dist/src/Node/Rest.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import { Node } from "./Node";
|
|
1
|
+
import { ErrorResponses, Node } from "./Node";
|
|
2
2
|
import { Poru } from "../Poru";
|
|
3
|
+
import { trackData } from "../guild/Track";
|
|
4
|
+
import { FiltersOptions } from '../Player/Filters';
|
|
5
|
+
import { IVoiceServer } from "../Player/Connection";
|
|
3
6
|
export interface playOptions {
|
|
4
7
|
guildId: string;
|
|
5
8
|
data: {
|
|
6
|
-
|
|
9
|
+
track?: any;
|
|
7
10
|
identifier?: string;
|
|
8
11
|
startTime?: number;
|
|
9
12
|
endTime?: number;
|
|
@@ -14,6 +17,21 @@ export interface playOptions {
|
|
|
14
17
|
voice?: any;
|
|
15
18
|
};
|
|
16
19
|
}
|
|
20
|
+
export interface PlayerObjectFromAPI {
|
|
21
|
+
guildId: string;
|
|
22
|
+
track: trackData;
|
|
23
|
+
volume: number;
|
|
24
|
+
paused: boolean;
|
|
25
|
+
state: PlayerState;
|
|
26
|
+
voice: IVoiceServer;
|
|
27
|
+
filters: FiltersOptions;
|
|
28
|
+
}
|
|
29
|
+
export interface PlayerState {
|
|
30
|
+
time: number;
|
|
31
|
+
position: number;
|
|
32
|
+
connected: boolean;
|
|
33
|
+
ping: number;
|
|
34
|
+
}
|
|
17
35
|
export type RouteLike = `/${string}`;
|
|
18
36
|
export declare enum RequestMethod {
|
|
19
37
|
"Get" = "GET",
|
|
@@ -29,11 +47,11 @@ export declare class Rest {
|
|
|
29
47
|
poru: Poru;
|
|
30
48
|
constructor(poru: Poru, node: Node);
|
|
31
49
|
setSessionId(sessionId: string): void;
|
|
32
|
-
getAllPlayers(): Promise<
|
|
33
|
-
updatePlayer(options: playOptions): Promise<
|
|
34
|
-
destroyPlayer(guildId: string): Promise<
|
|
35
|
-
get(path: RouteLike): Promise<
|
|
36
|
-
patch(endpoint: RouteLike, body: any): Promise<
|
|
37
|
-
post(endpoint: RouteLike, body: any): Promise<
|
|
38
|
-
delete(endpoint: RouteLike): Promise<
|
|
50
|
+
getAllPlayers(): Promise<PlayerObjectFromAPI | ErrorResponses>;
|
|
51
|
+
updatePlayer(options: playOptions): Promise<PlayerObjectFromAPI | ErrorResponses>;
|
|
52
|
+
destroyPlayer(guildId: string): Promise<null | ErrorResponses>;
|
|
53
|
+
get<T = unknown>(path: RouteLike): Promise<T>;
|
|
54
|
+
patch<T = unknown | null>(endpoint: RouteLike, body: any): Promise<T>;
|
|
55
|
+
post<T = unknown>(endpoint: RouteLike, body: any): Promise<T>;
|
|
56
|
+
delete<T = unknown>(endpoint: RouteLike): Promise<T>;
|
|
39
57
|
}
|
package/dist/src/Node/Rest.js
CHANGED
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Rest = exports.RequestMethod = void 0;
|
|
4
4
|
const undici_1 = require("undici");
|
|
5
|
+
;
|
|
6
|
+
;
|
|
7
|
+
;
|
|
5
8
|
var RequestMethod;
|
|
6
9
|
(function (RequestMethod) {
|
|
7
10
|
RequestMethod["Get"] = "GET";
|
|
@@ -9,7 +12,7 @@ var RequestMethod;
|
|
|
9
12
|
RequestMethod["Post"] = "POST";
|
|
10
13
|
RequestMethod["Patch"] = "PATCH";
|
|
11
14
|
RequestMethod["Put"] = "PUT";
|
|
12
|
-
})(RequestMethod
|
|
15
|
+
})(RequestMethod || (exports.RequestMethod = RequestMethod = {}));
|
|
13
16
|
class Rest {
|
|
14
17
|
sessionId;
|
|
15
18
|
password;
|
|
@@ -24,14 +27,14 @@ class Rest {
|
|
|
24
27
|
setSessionId(sessionId) {
|
|
25
28
|
this.sessionId = sessionId;
|
|
26
29
|
}
|
|
27
|
-
getAllPlayers() {
|
|
28
|
-
return this.get(`/
|
|
30
|
+
async getAllPlayers() {
|
|
31
|
+
return await this.get(`/v4/sessions/${this.sessionId}/players`);
|
|
29
32
|
}
|
|
30
33
|
async updatePlayer(options) {
|
|
31
|
-
return await this.patch(`/
|
|
34
|
+
return await this.patch(`/v4/sessions/${this.sessionId}/players/${options.guildId}?noReplace=false`, options.data);
|
|
32
35
|
}
|
|
33
36
|
async destroyPlayer(guildId) {
|
|
34
|
-
await this.delete(`/
|
|
37
|
+
return await this.delete(`/v4/sessions/${this.sessionId}/players/${guildId}`);
|
|
35
38
|
}
|
|
36
39
|
async get(path) {
|
|
37
40
|
try {
|