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.
Files changed (223) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +98 -90
  3. package/dist/src/Node/Node.d.ts +77 -4
  4. package/dist/src/Node/Node.js +53 -10
  5. package/dist/src/Node/Node.js.map +1 -1
  6. package/dist/src/Node/Rest.d.ts +27 -9
  7. package/dist/src/Node/Rest.js +8 -5
  8. package/dist/src/Node/Rest.js.map +1 -1
  9. package/dist/src/Player/Connection.js.map +1 -1
  10. package/dist/src/Player/CustomFilters.js.map +1 -1
  11. package/dist/src/Player/Filters.d.ts +1 -1
  12. package/dist/src/Player/Filters.js.map +1 -1
  13. package/dist/src/Player/Player.d.ts +88 -52
  14. package/dist/src/Player/Player.js +153 -94
  15. package/dist/src/Player/Player.js.map +1 -1
  16. package/dist/src/Plugin.d.ts +0 -1
  17. package/dist/src/Plugin.js +0 -1
  18. package/dist/src/Plugin.js.map +1 -1
  19. package/dist/src/Poru.d.ts +74 -33
  20. package/dist/src/Poru.js +35 -29
  21. package/dist/src/Poru.js.map +1 -1
  22. package/dist/src/config.d.ts +1 -1
  23. package/dist/src/config.js +2 -2
  24. package/dist/src/config.js.map +1 -1
  25. package/dist/src/guild/Queue.d.ts +32 -4
  26. package/dist/src/guild/Queue.js +30 -1
  27. package/dist/src/guild/Queue.js.map +1 -1
  28. package/dist/src/guild/Response.d.ts +52 -11
  29. package/dist/src/guild/Response.js +42 -4
  30. package/dist/src/guild/Response.js.map +1 -1
  31. package/dist/src/guild/Track.d.ts +20 -6
  32. package/dist/src/guild/Track.js +19 -15
  33. package/dist/src/guild/Track.js.map +1 -1
  34. package/docs/.nojekyll +1 -0
  35. package/docs/README.md +174 -0
  36. package/docs/classes/Connection.md +161 -0
  37. package/docs/classes/Filters.md +433 -0
  38. package/docs/classes/Node.md +518 -0
  39. package/docs/classes/Player.md +2125 -0
  40. package/docs/classes/Plugin.md +67 -0
  41. package/docs/classes/Poru.md +1673 -0
  42. package/docs/classes/Response.md +91 -0
  43. package/docs/classes/Rest.md +268 -0
  44. package/docs/classes/Track.md +105 -0
  45. package/docs/classes/customFilter.md +722 -0
  46. package/docs/enums/RequestMethod.md +63 -0
  47. package/docs/interfaces/ConnectionOptions.md +74 -0
  48. package/docs/interfaces/ErrorResponses.md +94 -0
  49. package/docs/interfaces/FiltersOptions.md +140 -0
  50. package/docs/interfaces/IVoiceServer.md +41 -0
  51. package/docs/interfaces/LoadTrackResponseEmpty.md +30 -0
  52. package/docs/interfaces/LoadTrackResponseError.md +38 -0
  53. package/docs/interfaces/LoadTrackResponsePlaylist.md +40 -0
  54. package/docs/interfaces/LoadTrackResponseSearch.md +30 -0
  55. package/docs/interfaces/LoadTrackResponseTrack.md +30 -0
  56. package/docs/interfaces/NodeGroup.md +74 -0
  57. package/docs/interfaces/NodeStats.md +99 -0
  58. package/docs/interfaces/PlayerEvent.md +55 -0
  59. package/docs/interfaces/PlayerObjectFromAPI.md +85 -0
  60. package/docs/interfaces/PlayerState.md +52 -0
  61. package/docs/interfaces/PoruEvents.md +500 -0
  62. package/docs/interfaces/PoruOptions.md +140 -0
  63. package/docs/interfaces/ResolveOptions.md +41 -0
  64. package/docs/interfaces/TrackEndEvent.md +81 -0
  65. package/docs/interfaces/TrackExceptionEvent.md +70 -0
  66. package/docs/interfaces/TrackStartEvent.md +70 -0
  67. package/docs/interfaces/TrackStuckEvent.md +81 -0
  68. package/docs/interfaces/WebSocketClosedEvent.md +92 -0
  69. package/docs/interfaces/channelMixOptions.md +62 -0
  70. package/docs/interfaces/playOptions.md +44 -0
  71. package/docs/interfaces/trackData.md +52 -0
  72. package/docs/interfaces/trackInfo.md +129 -0
  73. package/docs/modules.md +186 -0
  74. package/guide.md +4 -4
  75. package/package.json +8 -7
  76. package/src/Node/Node.ts +291 -210
  77. package/src/Node/Rest.ts +129 -108
  78. package/src/Player/Connection.ts +65 -62
  79. package/src/Player/CustomFilters.ts +91 -86
  80. package/src/Player/Filters.ts +216 -216
  81. package/src/Player/Player.ts +526 -466
  82. package/src/Plugin.ts +1 -2
  83. package/src/Poru.ts +522 -462
  84. package/src/config.ts +1 -1
  85. package/src/guild/Queue.ts +54 -27
  86. package/src/guild/Response.ts +96 -22
  87. package/src/guild/Track.ts +76 -67
  88. package/dist/src/Connection.d.ts +0 -17
  89. package/dist/src/Connection.js +0 -51
  90. package/dist/src/Connection.js.map +0 -1
  91. package/dist/src/Error.d.ts +0 -3
  92. package/dist/src/Error.js +0 -8
  93. package/dist/src/Error.js.map +0 -1
  94. package/dist/src/Filters.d.ts +0 -77
  95. package/dist/src/Filters.js +0 -95
  96. package/dist/src/Filters.js.map +0 -1
  97. package/dist/src/Node.d.ts +0 -59
  98. package/dist/src/Node.js +0 -180
  99. package/dist/src/Node.js.map +0 -1
  100. package/dist/src/Player.d.ts +0 -57
  101. package/dist/src/Player.js +0 -271
  102. package/dist/src/Player.js.map +0 -1
  103. package/dist/src/Rest.d.ts +0 -40
  104. package/dist/src/Rest.js +0 -89
  105. package/dist/src/Rest.js.map +0 -1
  106. package/docs/404.html +0 -17
  107. package/docs/CNAME +0 -1
  108. package/docs/assets/css/styles.19b7e1c8.css +0 -1
  109. package/docs/assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg +0 -0
  110. package/docs/assets/js/01a85c17.c382ddaa.js +0 -1
  111. package/docs/assets/js/031793e1.464e1edc.js +0 -1
  112. package/docs/assets/js/096bfee4.78c46930.js +0 -1
  113. package/docs/assets/js/1506.34d25216.js +0 -1
  114. package/docs/assets/js/16577f9a.d7f6c8f0.js +0 -1
  115. package/docs/assets/js/17896441.d609b563.js +0 -1
  116. package/docs/assets/js/1be78505.46a6fe35.js +0 -1
  117. package/docs/assets/js/1df93b7f.877d1540.js +0 -1
  118. package/docs/assets/js/1f391b9e.2460d8d9.js +0 -1
  119. package/docs/assets/js/23d28cd9.4690daaf.js +0 -1
  120. package/docs/assets/js/2529.a9550492.js +0 -1
  121. package/docs/assets/js/2ffe84b7.ba4147a4.js +0 -1
  122. package/docs/assets/js/30a24c52.a9606a65.js +0 -1
  123. package/docs/assets/js/36193b8e.61b20281.js +0 -1
  124. package/docs/assets/js/393be207.96f26120.js +0 -1
  125. package/docs/assets/js/3aca03ba.b631699a.js +0 -1
  126. package/docs/assets/js/447f5094.6fb93d12.js +0 -1
  127. package/docs/assets/js/4972.6409a348.js +0 -1
  128. package/docs/assets/js/4c9e35b1.16c8156d.js +0 -1
  129. package/docs/assets/js/59362658.a73dbaaa.js +0 -1
  130. package/docs/assets/js/608ae6a4.3fe0da16.js +0 -1
  131. package/docs/assets/js/61f113e4.8d034d09.js +0 -1
  132. package/docs/assets/js/66406991.d9b0d6dc.js +0 -1
  133. package/docs/assets/js/6875c492.0909867c.js +0 -1
  134. package/docs/assets/js/6e2b62af.e097a1ba.js +0 -1
  135. package/docs/assets/js/723dca8e.ddd8e725.js +0 -1
  136. package/docs/assets/js/73664a40.64d15814.js +0 -1
  137. package/docs/assets/js/7661071f.571acd05.js +0 -1
  138. package/docs/assets/js/799429b6.2655e3ef.js +0 -1
  139. package/docs/assets/js/7d0c5b8d.b45db6ee.js +0 -1
  140. package/docs/assets/js/7f6b0998.430c14a8.js +0 -1
  141. package/docs/assets/js/814f3328.42f8b6ef.js +0 -1
  142. package/docs/assets/js/81c9c92c.cd523465.js +0 -1
  143. package/docs/assets/js/8717b14a.0acdf3dd.js +0 -1
  144. package/docs/assets/js/925b3f96.dd561723.js +0 -1
  145. package/docs/assets/js/935f2afb.e744b90a.js +0 -1
  146. package/docs/assets/js/9e4087bc.ef864928.js +0 -1
  147. package/docs/assets/js/a06b102f.8b27adc5.js +0 -1
  148. package/docs/assets/js/a09c2993.60386213.js +0 -1
  149. package/docs/assets/js/a6aa9e1f.75919748.js +0 -1
  150. package/docs/assets/js/a7023ddc.21028a75.js +0 -1
  151. package/docs/assets/js/a80da1cf.940186a7.js +0 -1
  152. package/docs/assets/js/ac56a297.7b2000bd.js +0 -1
  153. package/docs/assets/js/ae9224e9.4b62437b.js +0 -1
  154. package/docs/assets/js/b183f0d5.37966e06.js +0 -1
  155. package/docs/assets/js/b2b675dd.d1d922e4.js +0 -1
  156. package/docs/assets/js/b2f554cd.225e5eb9.js +0 -1
  157. package/docs/assets/js/b3c080cc.e2e54a0d.js +0 -1
  158. package/docs/assets/js/be9eaf5a.d3e2b468.js +0 -1
  159. package/docs/assets/js/cb2f5ba0.69954a96.js +0 -1
  160. package/docs/assets/js/ccc49370.81bd2934.js +0 -1
  161. package/docs/assets/js/d47a1793.f9ca9100.js +0 -1
  162. package/docs/assets/js/d9353602.0c0417ed.js +0 -1
  163. package/docs/assets/js/d9f32620.dd6f9d8f.js +0 -1
  164. package/docs/assets/js/e16015ca.43931c9c.js +0 -1
  165. package/docs/assets/js/e273c56f.df0dc249.js +0 -1
  166. package/docs/assets/js/e35b347a.19ecd515.js +0 -1
  167. package/docs/assets/js/e55ac21f.ff66dfb3.js +0 -1
  168. package/docs/assets/js/e6d723e4.6418e284.js +0 -1
  169. package/docs/assets/js/e9779ed7.02b0aa3b.js +0 -1
  170. package/docs/assets/js/f4f34a3a.1e1c3ca2.js +0 -1
  171. package/docs/assets/js/f760aea6.d6a0030c.js +0 -1
  172. package/docs/assets/js/main.5068e5c4.js +0 -2
  173. package/docs/assets/js/main.5068e5c4.js.LICENSE.txt +0 -63
  174. package/docs/assets/js/runtime~main.cbb198ca.js +0 -1
  175. package/docs/blog/archive/index.html +0 -17
  176. package/docs/blog/atom.xml +0 -70
  177. package/docs/blog/first-blog-post/index.html +0 -17
  178. package/docs/blog/index.html +0 -17
  179. package/docs/blog/long-blog-post/index.html +0 -17
  180. package/docs/blog/mdx-blog-post/index.html +0 -17
  181. package/docs/blog/rss.xml +0 -52
  182. package/docs/blog/tags/docusaurus/index.html +0 -17
  183. package/docs/blog/tags/facebook/index.html +0 -17
  184. package/docs/blog/tags/hello/index.html +0 -17
  185. package/docs/blog/tags/hola/index.html +0 -17
  186. package/docs/blog/tags/index.html +0 -17
  187. package/docs/blog/welcome/index.html +0 -17
  188. package/docs/docs/classes/Connection/index.html +0 -17
  189. package/docs/docs/classes/Filters/index.html +0 -17
  190. package/docs/docs/classes/Node/index.html +0 -17
  191. package/docs/docs/classes/Player/index.html +0 -17
  192. package/docs/docs/classes/Plugin/index.html +0 -17
  193. package/docs/docs/classes/Poru/index.html +0 -17
  194. package/docs/docs/classes/Response/index.html +0 -17
  195. package/docs/docs/classes/Rest/index.html +0 -17
  196. package/docs/docs/classes/Track/index.html +0 -17
  197. package/docs/docs/classes/customFilter/index.html +0 -17
  198. package/docs/docs/enums/RequestMethod/index.html +0 -17
  199. package/docs/docs/interfaces/ConnectionOptions/index.html +0 -17
  200. package/docs/docs/interfaces/IVoiceServer/index.html +0 -17
  201. package/docs/docs/interfaces/LavalinkResponse/index.html +0 -17
  202. package/docs/docs/interfaces/NodeGroup/index.html +0 -17
  203. package/docs/docs/interfaces/NodeStats/index.html +0 -17
  204. package/docs/docs/interfaces/PoruEvents/index.html +0 -17
  205. package/docs/docs/interfaces/PoruOptions/index.html +0 -17
  206. package/docs/docs/interfaces/ResolveOptions/index.html +0 -17
  207. package/docs/docs/interfaces/channelMixOptions/index.html +0 -17
  208. package/docs/docs/interfaces/playOptions/index.html +0 -17
  209. package/docs/docs/interfaces/trackData/index.html +0 -17
  210. package/docs/docs/interfaces/trackInfo/index.html +0 -17
  211. package/docs/docs/introduction/index.html +0 -23
  212. package/docs/docs/modules/index.html +0 -17
  213. package/docs/img/docusaurus-social-card.jpg +0 -0
  214. package/docs/img/docusaurus.png +0 -0
  215. package/docs/img/favicon.ico +0 -0
  216. package/docs/img/logo.svg +0 -1
  217. package/docs/img/poru.png +0 -0
  218. package/docs/img/undraw_docusaurus_mountain.svg +0 -171
  219. package/docs/img/undraw_docusaurus_react.svg +0 -170
  220. package/docs/img/undraw_docusaurus_tree.svg +0 -40
  221. package/docs/index.html +0 -17
  222. package/docs/markdown-page/index.html +0 -17
  223. package/docs/sitemap.xml +0 -1
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2022 parasop
3
+ Copyright (c) 2024 parasop
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
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
- [![Discord](https://img.shields.io/discord/567705326774779944?style=flat-square)](https://discord.gg/Zmmc47Nrh8)
7
- [![npm](https://img.shields.io/npm/v/poru?style=flat-square)](https://www.npmjs.com/package/poru)
8
- ![Github Stars](https://img.shields.io/github/stars/parasop/poru?style=flat-square)
9
- ![GitHub issues](https://img.shields.io/github/issues-raw/parasop/poru?style=flat-square)
10
- ![Snyk Vulnerabilities for npm package](https://img.shields.io/snyk/vulnerabilities/npm/poru?style=flat-square)
11
- ![NPM](https://img.shields.io/npm/l/poru?style=flat-square)
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 support only lavalink v3
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/"><img src="https://nodei.co/npm/poru.png?downloads=true&downloadRank=true&stars=true"></a>
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
- // Using npm
37
+ ```bash
38
+ # Using npm
36
39
  npm install poru
37
40
 
38
- // Using yarn
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/freyacodes/Lavalink) instance.
47
+ To use, you need a configured [Lavalink](https://github.com/lavalink-devs/Lavalink) instance.
45
48
 
46
49
  - Stable client
47
- - support typescript
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 spotify,apple music and deezer
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
- name: "local-node",
84
- host: "localhost",
85
- port: 2333,
86
- password: "youshallnotpass",
87
- },
75
+ {
76
+ name: "local-node",
77
+ host: "localhost",
78
+ port: 2333,
79
+ password: "youshallnotpass",
80
+ },
88
81
  ];
82
+
89
83
  const PoruOptions = {
90
- library:"discord.js",
91
- defaultPlatform: "scsearch",
84
+ library: "discord.js",
85
+ defaultPlatform: "scsearch",
92
86
  };
87
+
93
88
  const client = new Client({
94
- intents: [
95
- GatewayIntentBits.Guilds,
96
- GatewayIntentBits.GuildMessages,
97
- GatewayIntentBits.GuildVoiceStates,
98
- GatewayIntentBits.MessageContent,
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
- const channel = client.channels.cache.get(player.textChannel);
105
- return channel.send(`Now playing \`${track.info.title}\``);
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
- console.log("Ready!");
110
- client.poru.init(client);
105
+ console.log("Ready!");
106
+ client.poru.init(client);
111
107
  });
112
108
 
113
109
  client.on("interactionCreate", async (interaction) => {
114
- if (!interaction.isChatInputCommand()) return;
115
- if (!interaction.member.voice.channel)
116
- return interaction.reply({
117
- content: `Please connect with voice channel `,
118
- ephemeral: true,
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
- const track = interaction.options.getString("track");
118
+ const track = interaction.options.getString("track");
122
119
 
123
- const res = await client.poru.resolve({query:track,source:"scsearch",requester:interaction.member});
120
+ const res = await client.poru.resolve({ query: track, source: "scsearch", requester: interaction.member });
124
121
 
125
- if (res.loadType === "LOAD_FAILED") {
126
- return interaction.reply("Failed to load track.");
127
- } else if (res.loadType === "NO_MATCHES") {
128
- return interaction.reply("No source found!");
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
- //create connection with discord voice channnel
132
- const player = client.poru.createConnection({
133
- guildId: interaction.guild.id,
134
- voiceChannel: interaction.member.voice.channelId,
135
- textChannel: interaction.channel.id,
136
- deaf: true,
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
- if (res.loadType === "PLAYLIST_LOADED") {
140
- for (const track of res.tracks) {
141
- track.info.requester = interaction.user;
142
- player.queue.add(track);
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
- interaction.reply(
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 [discord server](https://discord.gg/Zmmc47Nrh8), Give us suggestions and advice about errors and new features.
164
- with ❤️ by [Paras](https://github.com/parasop) .
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).
@@ -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: any;
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
- disconnect(): void;
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
- getRoutePlannerStatus(): Promise<any>;
78
- unmarkFailedAddress(address: string): Promise<any>;
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
  }
@@ -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, { headers });
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
- disconnect() {
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.AutoMoveNode();
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
- open() {
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(`/v3/sessions/${this.sessionId}`, { resumingKey: this.resumeKey, timeout: this.resumeTimeout });
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(`/v3/routeplanner/status`);
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(`/v3/routeplanner/free/address`, { address });
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;AAwB9B,MAAa,IAAI;IACR,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,CAAM;IACtB,OAAO,CAAS;IAChB,KAAK,CAAmB;IACxB,OAAO,CAAY;IAC1B;;;;;OAKG;IACH,YAAY,IAAU,EAAE,IAAe,EAAE,OAAoB;QAC3D,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,GAAG,CAAC;QAC9E,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;IACpB,CAAC;IACD;;;OAGG;IACI,OAAO;QACZ,IAAI,IAAI,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC;YACjC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAC,IAAI,CAAC,CAAA;SACpC;QACD,MAAM,OAAO,GAAG;YACd,aAAa,EAAE,IAAI,CAAC,QAAQ;YAC5B,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;YAC3B,aAAa,EAAE,eAAM,CAAC,UAAU;SACjC,CAAC;QACF,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3D,IAAI,CAAC,EAAE,GAAG,IAAI,YAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACrD,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;IAC7C,CAAC;IACD;;;;OAIG;IACI,IAAI,CAAC,OAAY;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAU,EAAE,EAAE;YAChC,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IACD;;;;OAIG;IACI,SAAS;QACd,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,GAAG,EAAE;YACtC,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE;gBACtC,MAAM,IAAI,KAAK,CACb,2CAA2C,IAAI,CAAC,IAAI,eAAe,IAAI,CAAC,cAAc,QAAQ,CAC/F,CAAC;aACH;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;QACjB,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC5B,CAAC;IACM,UAAU;QACf,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAE9B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACnC,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE;gBACvB,MAAM,CAAC,YAAY,EAAE,CAAC;aACvB;QACH,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;IACzC,CAAC;IAED,IAAI,SAAS;QACX,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,CACrB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAC1D,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;YACzB,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;YAC3C,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;SAC/C;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,IAAI;QACV,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACpC,OAAO,IAAI,CAAC,gBAAgB,CAAC;SAC9B;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;YACnB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;gBAC/C,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE;oBACxB,MAAM,CAAC,OAAO,EAAE,CAAC;iBAClB;aACF;SACF;IACH,CAAC;IAEO,QAAQ,CAAC,MAAiB;QAChC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;IACtB,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,OAAY;QAChC,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;YACzB,OAAO,MAAM,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACvB;QACD,IAAI,MAAM,CAAC,EAAE,KAAK,OAAO,EAAE;YACzB,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;gBAClB,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;gBAC/G,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,kDAAkD,CACpF,CAAC;aACH;SAEF;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;IAC/D,CAAC;IAEO,KAAK,CAAC,KAAU;QACtB,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,cAC9F,EAAE,CACH,CAAC;QACF,IAAI,KAAK,KAAK,IAAI;YAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IACvC,CAAC;IAEO,KAAK,CAAC,KAAU;QACtB,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,CACZ,OAAO,EAAE,8CAA8C,IAAI,CAAC,IAAI,qBAAqB,KAAK,CAAC,IAAI,IAAI,KACnG,EAAE,CACH,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,qBAAqB;QAChC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;IACvD,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,OAAe;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;IAErE,CAAC;CAEF;AAhND,oBAgNC"}
1
+ {"version":3,"file":"Node.js","sourceRoot":"","sources":["../../../src/Node/Node.ts"],"names":[],"mappings":"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"}
@@ -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
- encodedTrack?: string | null;
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<unknown>;
33
- updatePlayer(options: playOptions): Promise<unknown>;
34
- destroyPlayer(guildId: string): Promise<void>;
35
- get(path: RouteLike): Promise<unknown>;
36
- patch(endpoint: RouteLike, body: any): Promise<unknown>;
37
- post(endpoint: RouteLike, body: any): Promise<unknown>;
38
- delete(endpoint: RouteLike): Promise<unknown>;
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
  }
@@ -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 = exports.RequestMethod || (exports.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(`/v3/sessions/${this.sessionId}/players`);
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(`/v3/sessions/${this.sessionId}/players/${options.guildId}/?noReplace=false`, options.data);
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(`/v3/sessions/${this.sessionId}/players/${guildId}`);
37
+ return await this.delete(`/v4/sessions/${this.sessionId}/players/${guildId}`);
35
38
  }
36
39
  async get(path) {
37
40
  try {