ziplayer 0.0.2 → 0.0.4

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 (54) hide show
  1. package/README.md +156 -150
  2. package/dist/extensions/BaseExtension.d.ts +9 -0
  3. package/dist/extensions/BaseExtension.d.ts.map +1 -0
  4. package/dist/extensions/BaseExtension.js +7 -0
  5. package/dist/extensions/BaseExtension.js.map +1 -0
  6. package/dist/extensions/index.d.ts +12 -0
  7. package/dist/extensions/index.d.ts.map +1 -0
  8. package/dist/extensions/index.js +31 -0
  9. package/dist/extensions/index.js.map +1 -0
  10. package/dist/index.d.ts +1 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +1 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/plugins/BasePlugin.d.ts.map +1 -1
  15. package/dist/plugins/BasePlugin.js.map +1 -1
  16. package/dist/plugins/index.d.ts.map +1 -1
  17. package/dist/plugins/index.js.map +1 -1
  18. package/dist/structures/Player.d.ts +6 -2
  19. package/dist/structures/Player.d.ts.map +1 -1
  20. package/dist/structures/Player.js +96 -45
  21. package/dist/structures/Player.js.map +1 -1
  22. package/dist/structures/PlayerManager.d.ts +16 -4
  23. package/dist/structures/PlayerManager.d.ts.map +1 -1
  24. package/dist/structures/PlayerManager.js +66 -6
  25. package/dist/structures/PlayerManager.js.map +1 -1
  26. package/dist/structures/Queue.d.ts +4 -2
  27. package/dist/structures/Queue.d.ts.map +1 -1
  28. package/dist/structures/Queue.js +16 -1
  29. package/dist/structures/Queue.js.map +1 -1
  30. package/dist/types/index.d.ts +16 -1
  31. package/dist/types/index.d.ts.map +1 -1
  32. package/package.json +45 -42
  33. package/src/extensions/BaseExtension.ts +10 -0
  34. package/src/extensions/index.ts +32 -0
  35. package/src/index.ts +11 -10
  36. package/src/plugins/BasePlugin.ts +26 -29
  37. package/src/plugins/index.ts +32 -32
  38. package/src/structures/Player.ts +576 -526
  39. package/src/structures/PlayerManager.ts +143 -86
  40. package/src/structures/Queue.ts +103 -87
  41. package/src/types/index.ts +99 -82
  42. package/tsconfig.json +23 -23
  43. package/dist/plugins/SoundCloudPlugin.d.ts +0 -22
  44. package/dist/plugins/SoundCloudPlugin.d.ts.map +0 -1
  45. package/dist/plugins/SoundCloudPlugin.js +0 -171
  46. package/dist/plugins/SoundCloudPlugin.js.map +0 -1
  47. package/dist/plugins/SpotifyPlugin.d.ts +0 -26
  48. package/dist/plugins/SpotifyPlugin.d.ts.map +0 -1
  49. package/dist/plugins/SpotifyPlugin.js +0 -183
  50. package/dist/plugins/SpotifyPlugin.js.map +0 -1
  51. package/dist/plugins/YouTubePlugin.d.ts +0 -25
  52. package/dist/plugins/YouTubePlugin.d.ts.map +0 -1
  53. package/dist/plugins/YouTubePlugin.js +0 -314
  54. package/dist/plugins/YouTubePlugin.js.map +0 -1
package/README.md CHANGED
@@ -1,150 +1,156 @@
1
- # ziplayer
2
-
3
- A modular Discord voice player with plugin system for @discordjs/voice.
4
-
5
- ## Features
6
-
7
- - 🎵 **Plugin-based architecture** - Easy to extend with new sources
8
- - 🎶 **Multiple source support** - YouTube, SoundCloud, Spotify (with fallback)
9
- - 🔊 **Queue management** - Add, remove, shuffle, clear
10
- - 🎚️ **Volume control** - 0-200% volume range
11
- - ⏯️ **Playback control** - Play, pause, resume, stop, skip
12
- - 🔁 **Auto play** - Automatically replay the queue when it ends
13
- - 📊 **Progress bar** - Display playback progress with customizable icons
14
- - 🔔 **Event-driven** - Rich event system for all player actions
15
- - 🎭 **Multi-guild support** - Manage players across multiple Discord servers
16
- - 🗃️ **User data** - Attach custom data to each player for later use
17
-
18
- ## Installation
19
-
20
- ```bash
21
- npm install ziplayer @ziplayer/plugin @discordjs/voice discord.js
22
- ```
23
-
24
- ## Quick Start
25
-
26
- ```typescript
27
- import { PlayerManager } from "ziplayer";
28
- import { SoundCloudPlugin, YouTubePlugin, SpotifyPlugin } from "@ziplayer/plugin";
29
-
30
- const soundcloudPlugin = new SoundCloudPlugin();
31
- const youtubePlugin = new YouTubePlugin();
32
- const spotifyPlugin = new SpotifyPlugin();
33
-
34
- // Create player manager with YouTube and SoundCloud plugins
35
- const manager = new PlayerManager({
36
- plugins: [soundcloudPlugin, youtubePlugin, spotifyPlugin],
37
- });
38
-
39
- // Create player
40
- const player = manager.create(guildId, {
41
- leaveOnEnd: true,
42
- leaveTimeout: 30000,
43
- userdata: { channel: textChannel }, // store channel for events
44
- });
45
-
46
- // Connect and play
47
- await player.connect(voiceChannel);
48
- await player.play("Never Gonna Give You Up", userId);
49
-
50
- // Play a full YouTube playlist
51
- await player.play("https://www.youtube.com/playlist?list=PL123", userId);
52
-
53
- // Enable autoplay
54
- player.queue.autoPlay(true);
55
-
56
- // Play a full SoundCloud playlist
57
- await player.play("https://soundcloud.com/artist/sets/playlist", userId);
58
-
59
- // Events
60
- player.on("willPlay", (track) => {
61
- console.log(`Up next: ${track.title}`);
62
- });
63
- player.on("trackStart", (track) => {
64
- console.log(`Now playing: ${track.title}`);
65
- player.userdata?.channel?.send(`Now playing: ${track.title}`);
66
- });
67
- ```
68
-
69
- ## Available Plugins
70
-
71
- ### YouTubePlugin
72
-
73
- Supports YouTube videos and playlists.
74
-
75
- ```typescript
76
- import { YouTubePlugin } from "@ziplayer/plugin";
77
- const youtube = new YouTubePlugin();
78
- ```
79
-
80
- ### SoundCloudPlugin
81
-
82
- Supports SoundCloud tracks and playlists.
83
-
84
- ```typescript
85
- import { SoundCloudPlugin } from "@ziplayer/plugin";
86
- const soundcloud = new SoundCloudPlugin();
87
- ```
88
-
89
- ### SpotifyPlugin
90
-
91
- Supports Spotify tracks, albums, and playlists (requires fallback plugin for streaming).
92
-
93
- ```typescript
94
- import { SpotifyPlugin } from "@ziplayer/plugin";
95
- const spotify = new SpotifyPlugin();
96
- ```
97
-
98
- ## Creating Custom Plugins
99
-
100
- ```typescript
101
- import { BasePlugin, Track, SearchResult, StreamInfo } from "@zibot/player";
102
-
103
- export class MyPlugin extends BasePlugin {
104
- name = "myplugin";
105
- version = "1.0.0";
106
-
107
- canHandle(query: string): boolean {
108
- return query.includes("mysite.com");
109
- }
110
-
111
- async search(query: string, requestedBy: string): Promise<SearchResult> {
112
- // Implement search logic
113
- return {
114
- tracks: [
115
- /* ... */
116
- ],
117
- };
118
- }
119
-
120
- async getStream(track: Track): Promise<StreamInfo> {
121
- // Return audio stream
122
- return { stream, type: "arbitrary" };
123
- }
124
- }
125
- ```
126
-
127
- ## Events
128
-
129
- All player events are forwarded through the PlayerManager:
130
-
131
- - `trackStart` - When a track starts playing
132
- - `willPlay` - Before a track begins playing
133
- - `trackEnd` - When a track finishes
134
- - `queueEnd` - When the queue is empty
135
- - `playerError` - When an error occurs
136
- - `queueAdd` - When a track is added
137
- - `volumeChange` - When volume changes
138
- - And more...
139
-
140
- ## Progress Bar
141
-
142
- Display the current playback progress with `getProgressBar`:
143
-
144
- ```typescript
145
- console.log(player.getProgressBar({ size: 30, barChar: "-", progressChar: "🔘" }));
146
- ```
147
-
148
- ## License
149
-
150
- MIT License
1
+ <img width="1244" height="305" alt="logo" src="https://github.com/user-attachments/assets/c8181e90-fdc9-4e08-8fe4-b4419cb8a25b" />
2
+
3
+ # ziplayer
4
+
5
+ A modular Discord voice player with plugin system for @discordjs/voice.
6
+
7
+ ## Features
8
+
9
+ - 🎵 **Plugin-based architecture** - Easy to extend with new sources
10
+ - 🎶 **Multiple source support** - YouTube, SoundCloud, Spotify (with fallback)
11
+ - 🔊 **Queue management** - Add, remove, shuffle, clear
12
+ - 🎚️ **Volume control** - 0-200% volume range
13
+ - ⏯️ **Playback control** - Play, pause, resume, stop, skip
14
+ - 🔁 **Auto play** - Automatically replay the queue when it ends
15
+ - 🔂 **Loop control** - Repeat a single track or the entire queue
16
+ - 📊 **Progress bar** - Display playback progress with customizable icons
17
+ - 🔔 **Event-driven** - Rich event system for all player actions
18
+ - 🎭 **Multi-guild support** - Manage players across multiple Discord servers
19
+ - 🗃️ **User data** - Attach custom data to each player for later use
20
+
21
+ ## Installation
22
+
23
+ ```bash
24
+ npm install ziplayer @ziplayer/plugin @discordjs/voice discord.js
25
+ ```
26
+
27
+ ## Quick Start
28
+
29
+ ```typescript
30
+ import { PlayerManager } from "ziplayer";
31
+ import { SoundCloudPlugin, YouTubePlugin, SpotifyPlugin } from "@ziplayer/plugin";
32
+
33
+ const soundcloudPlugin = new SoundCloudPlugin();
34
+ const youtubePlugin = new YouTubePlugin();
35
+ const spotifyPlugin = new SpotifyPlugin();
36
+
37
+ // Create player manager with YouTube and SoundCloud plugins
38
+ const manager = new PlayerManager({
39
+ plugins: [soundcloudPlugin, youtubePlugin, spotifyPlugin],
40
+ });
41
+
42
+ // Create player
43
+ const player = manager.create(guildId, {
44
+ leaveOnEnd: true,
45
+ leaveTimeout: 30000,
46
+ userdata: { channel: textChannel }, // store channel for events
47
+ });
48
+
49
+ // Connect and play
50
+ await player.connect(voiceChannel);
51
+ await player.play("Never Gonna Give You Up", userId);
52
+
53
+ // Play a full YouTube playlist
54
+ await player.play("https://www.youtube.com/playlist?list=PL123", userId);
55
+
56
+ // Enable autoplay
57
+ player.queue.autoPlay(true);
58
+
59
+ // Loop the entire queue
60
+ player.loop("queue");
61
+
62
+ // Play a full SoundCloud playlist
63
+ await player.play("https://soundcloud.com/artist/sets/playlist", userId);
64
+
65
+ // Events
66
+ player.on("willPlay", (track) => {
67
+ console.log(`Up next: ${track.title}`);
68
+ });
69
+ player.on("trackStart", (track) => {
70
+ console.log(`Now playing: ${track.title}`);
71
+ player.userdata?.channel?.send(`Now playing: ${track.title}`);
72
+ });
73
+ ```
74
+
75
+ ## Available Plugins
76
+
77
+ ### YouTubePlugin
78
+
79
+ Supports YouTube videos and playlists.
80
+
81
+ ```typescript
82
+ import { YouTubePlugin } from "@ziplayer/plugin";
83
+ const youtube = new YouTubePlugin();
84
+ ```
85
+
86
+ ### SoundCloudPlugin
87
+
88
+ Supports SoundCloud tracks and playlists.
89
+
90
+ ```typescript
91
+ import { SoundCloudPlugin } from "@ziplayer/plugin";
92
+ const soundcloud = new SoundCloudPlugin();
93
+ ```
94
+
95
+ ### SpotifyPlugin
96
+
97
+ Supports Spotify tracks, albums, and playlists (requires fallback plugin for streaming).
98
+
99
+ ```typescript
100
+ import { SpotifyPlugin } from "@ziplayer/plugin";
101
+ const spotify = new SpotifyPlugin();
102
+ ```
103
+
104
+ ## Creating Custom Plugins
105
+
106
+ ```typescript
107
+ import { BasePlugin, Track, SearchResult, StreamInfo } from "ziplayer";
108
+
109
+ export class MyPlugin extends BasePlugin {
110
+ name = "myplugin";
111
+ version = "1.0.0";
112
+
113
+ canHandle(query: string): boolean {
114
+ return query.includes("mysite.com");
115
+ }
116
+
117
+ async search(query: string, requestedBy: string): Promise<SearchResult> {
118
+ // Implement search logic
119
+ return {
120
+ tracks: [
121
+ /* ... */
122
+ ],
123
+ };
124
+ }
125
+
126
+ async getStream(track: Track): Promise<StreamInfo> {
127
+ // Return audio stream
128
+ return { stream, type: "arbitrary" };
129
+ }
130
+ }
131
+ ```
132
+
133
+ ## Events
134
+
135
+ All player events are forwarded through the PlayerManager:
136
+
137
+ - `trackStart` - When a track starts playing
138
+ - `willPlay` - Before a track begins playing
139
+ - `trackEnd` - When a track finishes
140
+ - `queueEnd` - When the queue is empty
141
+ - `playerError` - When an error occurs
142
+ - `queueAdd` - When a track is added
143
+ - `volumeChange` - When volume changes
144
+ - And more...
145
+
146
+ ## Progress Bar
147
+
148
+ Display the current playback progress with `getProgressBar`:
149
+
150
+ ```typescript
151
+ console.log(player.getProgressBar({ size: 30, barChar: "-", progressChar: "🔘" }));
152
+ ```
153
+
154
+ ## License
155
+
156
+ MIT License
@@ -0,0 +1,9 @@
1
+ import { SourceExtension } from "../types";
2
+ import { Player } from "../structures/Player";
3
+ export declare abstract class BaseExtension implements SourceExtension {
4
+ abstract name: string;
5
+ abstract version: string;
6
+ abstract player: Player | null;
7
+ abstract active(alas: any): boolean;
8
+ }
9
+ //# sourceMappingURL=BaseExtension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseExtension.d.ts","sourceRoot":"","sources":["../../src/extensions/BaseExtension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAmC,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,8BAAsB,aAAc,YAAW,eAAe;IAC7D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/B,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO;CACnC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseExtension = void 0;
4
+ class BaseExtension {
5
+ }
6
+ exports.BaseExtension = BaseExtension;
7
+ //# sourceMappingURL=BaseExtension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseExtension.js","sourceRoot":"","sources":["../../src/extensions/BaseExtension.ts"],"names":[],"mappings":";;;AAGA,MAAsB,aAAa;CAMlC;AAND,sCAMC"}
@@ -0,0 +1,12 @@
1
+ import { BaseExtension } from "./BaseExtension";
2
+ export { BaseExtension } from "./BaseExtension";
3
+ export declare class ExtensionManager {
4
+ private extensions;
5
+ register(extension: BaseExtension): void;
6
+ unregister(name: string): boolean;
7
+ get(name: string): BaseExtension | undefined;
8
+ getAll(): BaseExtension[];
9
+ findExtension(alas: any): BaseExtension | undefined;
10
+ clear(): void;
11
+ }
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,UAAU,CAAyC;IAE3D,QAAQ,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI;IAIxC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI5C,MAAM,IAAI,aAAa,EAAE;IAIzB,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,aAAa,GAAG,SAAS;IAInD,KAAK,IAAI,IAAI;CAGb"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExtensionManager = exports.BaseExtension = void 0;
4
+ var BaseExtension_1 = require("./BaseExtension");
5
+ Object.defineProperty(exports, "BaseExtension", { enumerable: true, get: function () { return BaseExtension_1.BaseExtension; } });
6
+ // Extension factory
7
+ class ExtensionManager {
8
+ constructor() {
9
+ this.extensions = new Map();
10
+ }
11
+ register(extension) {
12
+ this.extensions.set(extension.name, extension);
13
+ }
14
+ unregister(name) {
15
+ return this.extensions.delete(name);
16
+ }
17
+ get(name) {
18
+ return this.extensions.get(name);
19
+ }
20
+ getAll() {
21
+ return Array.from(this.extensions.values());
22
+ }
23
+ findExtension(alas) {
24
+ return this.getAll().find((extension) => extension.active(alas));
25
+ }
26
+ clear() {
27
+ this.extensions.clear();
28
+ }
29
+ }
30
+ exports.ExtensionManager = ExtensionManager;
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":";;;AAEA,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AAEtB,oBAAoB;AACpB,MAAa,gBAAgB;IAA7B;QACS,eAAU,GAA+B,IAAI,GAAG,EAAE,CAAC;IAyB5D,CAAC;IAvBA,QAAQ,CAAC,SAAwB;QAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAChD,CAAC;IAED,UAAU,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,GAAG,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,MAAM;QACL,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,aAAa,CAAC,IAAS;QACtB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;CACD;AA1BD,4CA0BC"}
package/dist/index.d.ts CHANGED
@@ -4,5 +4,6 @@ export { Queue } from "./structures/Queue";
4
4
  export { PlayerManager } from "./structures/PlayerManager";
5
5
  export * from "./types";
6
6
  export * from "./plugins";
7
+ export * from "./extensions";
7
8
  export default PlayerManager;
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAG1B,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAG7B,eAAe,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -24,6 +24,7 @@ var PlayerManager_2 = require("./structures/PlayerManager");
24
24
  Object.defineProperty(exports, "PlayerManager", { enumerable: true, get: function () { return PlayerManager_2.PlayerManager; } });
25
25
  __exportStar(require("./types"), exports);
26
26
  __exportStar(require("./plugins"), exports);
27
+ __exportStar(require("./extensions"), exports);
27
28
  // Default export
28
29
  exports.default = PlayerManager_1.PlayerManager;
29
30
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8DAA2D;AAE3D,8CAA6C;AAApC,gGAAA,MAAM,OAAA;AACf,4CAA2C;AAAlC,8FAAA,KAAK,OAAA;AACd,4DAA2D;AAAlD,8GAAA,aAAa,OAAA;AACtB,0CAAwB;AACxB,4CAA0B;AAE1B,iBAAiB;AACjB,kBAAe,6BAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8DAA2D;AAE3D,8CAA6C;AAApC,gGAAA,MAAM,OAAA;AACf,4CAA2C;AAAlC,8FAAA,KAAK,OAAA;AACd,4DAA2D;AAAlD,8GAAA,aAAa,OAAA;AACtB,0CAAwB;AACxB,4CAA0B;AAC1B,+CAA6B;AAE7B,iBAAiB;AACjB,kBAAe,6BAAa,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"BasePlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/BasePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEzE,8BAAsB,UAAW,YAAW,YAAY;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAC1C,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAC1E,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;IAErD,WAAW,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;IAI/C,gBAAgB,CAAC,CACf,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAA;KAAE,GAC5D,OAAO,CAAC,KAAK,EAAE,CAAC;IAInB,QAAQ,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI/B,eAAe,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;CAGrE"}
1
+ {"version":3,"file":"BasePlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/BasePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEzE,8BAAsB,UAAW,YAAW,YAAY;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAC1C,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAC1E,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;IAErD,WAAW,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;IAI/C,gBAAgB,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAIpH,QAAQ,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI/B,eAAe,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;CAGpE"}
@@ -1 +1 @@
1
- {"version":3,"file":"BasePlugin.js","sourceRoot":"","sources":["../../src/plugins/BasePlugin.ts"],"names":[],"mappings":";;;AAEA,MAAsB,UAAU;IAQ9B,WAAW,CAAE,KAAY;QACvB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,gBAAgB,CACd,QAAgB,EAChB,IAA6D;QAE7D,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,QAAQ,CAAE,GAAW;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,eAAe,CAAE,GAAW,EAAE,WAAmB;QAC/C,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;CACF;AA1BD,gCA0BC"}
1
+ {"version":3,"file":"BasePlugin.js","sourceRoot":"","sources":["../../src/plugins/BasePlugin.ts"],"names":[],"mappings":";;;AAEA,MAAsB,UAAU;IAQ/B,WAAW,CAAE,KAAY;QACxB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB,CAAE,QAAgB,EAAE,IAA6D;QAChG,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,QAAQ,CAAE,GAAW;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,eAAe,CAAE,GAAW,EAAE,WAAmB;QAChD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;CACD;AAvBD,gCAuBC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAsC;IAErD,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAIlC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIzC,MAAM,IAAI,UAAU,EAAE;IAItB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIjD,KAAK,IAAI,IAAI;CAGd"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,qBAAa,aAAa;IACzB,OAAO,CAAC,OAAO,CAAsC;IAErD,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAIlC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIzC,MAAM,IAAI,UAAU,EAAE;IAItB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIjD,KAAK,IAAI,IAAI;CAGb"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":";;;AAEA,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AAEnB,iBAAiB;AACjB,MAAa,aAAa;IAA1B;QACU,YAAO,GAA4B,IAAI,GAAG,EAAE,CAAC;IAyBvD,CAAC;IAvBC,QAAQ,CAAC,MAAkB;QACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,UAAU,CAAC,KAAa;QACtB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF;AA1BD,sCA0BC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":";;;AAEA,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AAEnB,iBAAiB;AACjB,MAAa,aAAa;IAA1B;QACS,YAAO,GAA4B,IAAI,GAAG,EAAE,CAAC;IAyBtD,CAAC;IAvBA,QAAQ,CAAC,MAAkB;QAC1B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,UAAU,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,GAAG,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM;QACL,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,UAAU,CAAC,KAAa;QACvB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CACD;AA1BD,sCA0BC"}
@@ -1,9 +1,10 @@
1
1
  import { EventEmitter } from "events";
2
2
  import { VoiceConnection, AudioPlayer as DiscordAudioPlayer } from "@discordjs/voice";
3
3
  import { VoiceChannel } from "discord.js";
4
- import { Track, PlayerOptions, PlayerEvents, SourcePlugin, SearchResult, ProgressBarOptions } from "../types";
4
+ import { Track, PlayerOptions, PlayerEvents, SourcePlugin, SearchResult, ProgressBarOptions, LoopMode } from "../types";
5
5
  import { Queue } from "./Queue";
6
6
  import { PluginManager } from "../plugins";
7
+ import type { PlayerManager } from "./PlayerManager";
7
8
  export declare interface Player {
8
9
  on<K extends keyof PlayerEvents>(event: K, listener: (...args: PlayerEvents[K]) => void): this;
9
10
  emit<K extends keyof PlayerEvents>(event: K, ...args: PlayerEvents[K]): boolean;
@@ -19,12 +20,14 @@ export declare class Player extends EventEmitter {
19
20
  options: PlayerOptions;
20
21
  pluginManager: PluginManager;
21
22
  userdata?: Record<string, any>;
23
+ private manager;
22
24
  private leaveTimeout;
23
25
  private currentResource;
24
26
  private volumeInterval;
27
+ private skipLoop;
25
28
  private withTimeout;
26
29
  private debug;
27
- constructor(guildId: string, options?: PlayerOptions);
30
+ constructor(guildId: string, options: PlayerOptions | undefined, manager: PlayerManager);
28
31
  private setupEventListeners;
29
32
  addPlugin(plugin: SourcePlugin): void;
30
33
  removePlugin(name: string): boolean;
@@ -37,6 +40,7 @@ export declare class Player extends EventEmitter {
37
40
  resume(): boolean;
38
41
  stop(): boolean;
39
42
  skip(): boolean;
43
+ loop(mode?: LoopMode): LoopMode;
40
44
  setVolume(volume: number): boolean;
41
45
  shuffle(): void;
42
46
  clearQueue(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../../src/structures/Player.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAIN,eAAe,EACf,WAAW,IAAI,kBAAkB,EAKjC,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9G,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,CAAC,OAAO,WAAW,MAAM;IAC9B,EAAE,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/F,IAAI,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;CAChF;AAED,qBAAa,MAAO,SAAQ,YAAY;IACvC,SAAgB,OAAO,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,eAAe,GAAG,IAAI,CAAQ;IAC1C,WAAW,EAAE,kBAAkB,CAAC;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAO;IACrB,SAAS,EAAE,OAAO,CAAS;IAC3B,QAAQ,EAAE,OAAO,CAAS;IAC1B,OAAO,EAAE,aAAa,CAAC;IACvB,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,cAAc,CAA+B;IAErD,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,KAAK;gBAMD,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB;IAuBxD,OAAO,CAAC,mBAAmB;IA2C3B,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAKrC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAK7B,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;IAkCxD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAiBjE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAyC3D,gBAAgB;YA4BhB,QAAQ;IAsGtB,KAAK,IAAI,OAAO;IAQhB,MAAM,IAAI,OAAO;IAgBjB,IAAI,IAAI,OAAO;IAUf,IAAI,IAAI,OAAO;IAQf,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IA+BlC,OAAO,IAAI,IAAI;IAKf,UAAU,IAAI,IAAI;IAKlB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI;IASnC,cAAc,CAAC,OAAO,GAAE,kBAAuB,GAAG,MAAM;IAiBxD,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,aAAa;IAcrB,OAAO,IAAI,IAAI;IAuBf,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,YAAY,IAAI,KAAK,GAAG,IAAI,CAE/B;IAED,IAAI,cAAc,IAAI,KAAK,EAAE,CAE5B;IAED,IAAI,cAAc,IAAI,KAAK,EAAE,CAE5B;IAED,IAAI,gBAAgB,IAAI,MAAM,EAAE,CAE/B;CACD"}
1
+ {"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../../src/structures/Player.ts"],"names":[],"mappings":"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"}