ziplayer 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,169 +1,181 @@
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 @ziplayer/extension @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
- import { voiceExt } from "@ziplayer/extension";
33
-
34
- const manager = new PlayerManager({
35
- plugins: [new SoundCloudPlugin(), new YouTubePlugin(), new SpotifyPlugin()],
36
- extensions: [
37
- new voiceExt(null, {
38
- lang: "vi-VN",
39
- minimalVoiceMessageDuration: 1,
40
- postSilenceDelayMs: 2000,
41
- }),
42
- ],
43
- });
44
-
45
- // Create player
46
- const player = manager.create(guildId, {
47
- leaveOnEnd: true,
48
- leaveTimeout: 30000,
49
- userdata: { channel: textChannel }, // store channel for events
50
- // Choose extensions for this player (by name or instances)
51
- extensions: ["voiceExt"],
52
- });
53
-
54
- // Connect and play
55
- await player.connect(voiceChannel);
56
- await player.play("Never Gonna Give You Up", userId);
57
-
58
- // Play a full YouTube playlist
59
- await player.play("https://www.youtube.com/playlist?list=PL123", userId);
60
-
61
- // Enable autoplay
62
- player.queue.autoPlay(true);
63
-
64
- // Play a full SoundCloud playlist
65
- await player.play("https://soundcloud.com/artist/sets/playlist", userId);
66
-
67
- // Events
68
- player.on("willPlay", (player, track) => {
69
- console.log(`Up next: ${track.title}`);
70
- });
71
- player.on("trackStart", (player, track) => {
72
- console.log(`Now playing: ${track.title}`);
73
- player.userdata?.channel?.send(`Now playing: ${track.title}`);
74
- });
75
-
76
- // Receive transcripts
77
- manager.on("voiceCreate", (player, evt) => {
78
- console.log(`User ${evt.userId} said: ${evt.content}`);
79
- });
80
- ```
81
-
82
- ## Available Plugins
83
-
84
- ### YouTubePlugin
85
-
86
- Supports YouTube videos and playlists.
87
-
88
- ```typescript
89
- import { YouTubePlugin } from "@ziplayer/plugin";
90
- const youtube = new YouTubePlugin();
91
- ```
92
-
93
- ### SoundCloudPlugin
94
-
95
- Supports SoundCloud tracks and playlists.
96
-
97
- ```typescript
98
- import { SoundCloudPlugin } from "@ziplayer/plugin";
99
- const soundcloud = new SoundCloudPlugin();
100
- ```
101
-
102
- ### SpotifyPlugin
103
-
104
- Supports Spotify tracks, albums, and playlists (requires fallback plugin for streaming).
105
-
106
- ```typescript
107
- import { SpotifyPlugin } from "@ziplayer/plugin";
108
- const spotify = new SpotifyPlugin();
109
- ```
110
-
111
- ## Creating Custom Plugins
112
-
113
- ```typescript
114
- import { BasePlugin, Track, SearchResult, StreamInfo } from "ziplayer";
115
-
116
- export class MyPlugin extends BasePlugin {
117
- name = "myplugin";
118
- version = "1.0.0";
119
-
120
- canHandle(query: string): boolean {
121
- return query.includes("mysite.com");
122
- }
123
-
124
- async search(query: string, requestedBy: string): Promise<SearchResult> {
125
- // Implement search logic
126
- return {
127
- tracks: [
128
- /* ... */
129
- ],
130
- };
131
- }
132
-
133
- async getStream(track: Track): Promise<StreamInfo> {
134
- // Return audio stream
135
- return { stream, type: "arbitrary" };
136
- }
137
- }
138
- ```
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
- ## Events
149
-
150
- All player events are forwarded through the PlayerManager:
151
-
152
- - `trackStart` - When a track starts playing
153
- - `willPlay` - Before a track begins playing
154
- - `trackEnd` - When a track finishes
155
- - `queueEnd` - When the queue is empty
156
- - `playerError` - When an error occurs
157
- - `queueAdd` - When a track is added
158
- - `volumeChange` - When volume changes
159
- - And more...
160
-
161
- ## Useful Links
162
-
163
- [Example](https://github.com/ZiProject/ZiPlayer/tree/main/examples) | [Repo](https://github.com/ZiProject/ZiPlayer) |
164
- [Package](https://www.npmjs.com/package/ziplayer) | [Plugin](https://www.npmjs.com/package/@ziplayer/plugin) |
165
- [Extension](https://www.npmjs.com/package/@ziplayer/extension)
166
-
167
- ## License
168
-
169
- MIT License
1
+ <img width="1175" height="305" alt="logo" src="https://github.com/user-attachments/assets/d4db4892-9c3d-4314-9228-701629555380" />
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 @ziplayer/extension @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
+ import { voiceExt } from "@ziplayer/extension";
33
+
34
+ const manager = new PlayerManager({
35
+ plugins: [new SoundCloudPlugin(), new YouTubePlugin(), new SpotifyPlugin()],
36
+ extensions: [
37
+ new voiceExt(null, {
38
+ lang: "vi-VN",
39
+ minimalVoiceMessageDuration: 1,
40
+ postSilenceDelayMs: 2000,
41
+ }),
42
+ ],
43
+ });
44
+
45
+ // Create player
46
+ const player = manager.create(guildId, {
47
+ leaveOnEnd: true,
48
+ leaveTimeout: 30000,
49
+ userdata: { channel: textChannel }, // store channel for events
50
+ // Choose extensions for this player (by name or instances)
51
+ extensions: ["voiceExt"],
52
+ });
53
+
54
+ // Connect and play
55
+ await player.connect(voiceChannel);
56
+ await player.play("Never Gonna Give You Up", userId);
57
+
58
+ // Play a full YouTube playlist
59
+ await player.play("https://www.youtube.com/playlist?list=PL123", userId);
60
+
61
+ // Enable autoplay
62
+ player.queue.autoPlay(true);
63
+
64
+ // Play a full SoundCloud playlist
65
+ await player.play("https://soundcloud.com/artist/sets/playlist", userId);
66
+
67
+ // Events
68
+ player.on("willPlay", (player, track) => {
69
+ console.log(`Up next: ${track.title}`);
70
+ });
71
+ player.on("trackStart", (player, track) => {
72
+ console.log(`Now playing: ${track.title}`);
73
+ player.userdata?.channel?.send(`Now playing: ${track.title}`);
74
+ });
75
+
76
+ // Receive transcripts
77
+ manager.on("voiceCreate", (player, evt) => {
78
+ console.log(`User ${evt.userId} said: ${evt.content}`);
79
+ });
80
+ ```
81
+
82
+ ### TTS (Interrupt Mode)
83
+
84
+ Play short text-to-speech messages without losing music progress. The player pauses music, plays TTS on a dedicated AudioPlayer,
85
+ then resumes.
86
+
87
+ - Requirements: `@ziplayer/plugin` with `TTSPlugin` installed and registered in `PlayerManager`.
88
+
89
+ ```ts
90
+ import { PlayerManager } from "ziplayer";
91
+ import { TTSPlugin, YouTubePlugin, SoundCloudPlugin, SpotifyPlugin } from "@ziplayer/plugin";
92
+
93
+ const manager = new PlayerManager({
94
+ plugins: [new TTSPlugin({ defaultLang: "vi" }), new YouTubePlugin(), new SoundCloudPlugin(), new SpotifyPlugin()],
95
+ });
96
+
97
+ // Create a player with TTS interrupt enabled
98
+ const player = manager.create(guildId, {
99
+ tts: {
100
+ createPlayer: true, // pre-create the internal TTS AudioPlayer
101
+ interrupt: true, // pause music, swap to TTS, then resume
102
+ volume: 1, // 1 => 100%
103
+ },
104
+ });
105
+
106
+ await player.connect(voiceChannel);
107
+
108
+ // Trigger TTS by playing a TTS query (depends on your TTS plugin)
109
+ await player.play("tts: xin chào mọi người", userId);
110
+
111
+ // Listen to TTS lifecycle events
112
+ manager.on("ttsStart", (plr, { track }) => console.log("TTS start", track?.title));
113
+ manager.on("ttsEnd", (plr) => console.log("TTS end"));
114
+ ```
115
+
116
+ Notes
117
+
118
+ - The detection uses track.source that includes "tts" or query starting with `tts:`.
119
+ - If you need more control, call `player.interruptWithTTSTrack(track)` after building a TTS track via your plugin.
120
+ - For CPU-heavy TTS generation, consider offloading to `worker_threads` or a separate process and pass a stream/buffer to the
121
+ plugin.
122
+
123
+ ## Creating Custom Plugins
124
+
125
+ ```typescript
126
+ import { BasePlugin, Track, SearchResult, StreamInfo } from "ziplayer";
127
+
128
+ export class MyPlugin extends BasePlugin {
129
+ name = "myplugin";
130
+ version = "1.0.0";
131
+
132
+ canHandle(query: string): boolean {
133
+ return query.includes("mysite.com");
134
+ }
135
+
136
+ async search(query: string, requestedBy: string): Promise<SearchResult> {
137
+ // Implement search logic
138
+ return {
139
+ tracks: [
140
+ /* ... */
141
+ ],
142
+ };
143
+ }
144
+
145
+ async getStream(track: Track): Promise<StreamInfo> {
146
+ // Return audio stream
147
+ return { stream, type: "arbitrary" };
148
+ }
149
+ }
150
+ ```
151
+
152
+ ## Progress Bar
153
+
154
+ Display the current playback progress with `getProgressBar`:
155
+
156
+ ```typescript
157
+ console.log(player.getProgressBar({ size: 30, barChar: "-", progressChar: "🔘" }));
158
+ ```
159
+
160
+ ## Events
161
+
162
+ All player events are forwarded through the PlayerManager:
163
+
164
+ - `trackStart` - When a track starts playing
165
+ - `willPlay` - Before a track begins playing
166
+ - `trackEnd` - When a track finishes
167
+ - `queueEnd` - When the queue is empty
168
+ - `playerError` - When an error occurs
169
+ - `queueAdd` - When a track is added
170
+ - `volumeChange` - When volume changes
171
+ - And more...
172
+
173
+ ## Useful Links
174
+
175
+ [Example](https://github.com/ZiProject/ZiPlayer/tree/main/examples) | [Repo](https://github.com/ZiProject/ZiPlayer) |
176
+ [Package](https://www.npmjs.com/package/ziplayer) | [Plugin](https://www.npmjs.com/package/@ziplayer/plugin) |
177
+ [Extension](https://www.npmjs.com/package/@ziplayer/extension)
178
+
179
+ ## License
180
+
181
+ MIT License
package/dist/index.d.ts CHANGED
@@ -6,4 +6,6 @@ export * from "./types";
6
6
  export * from "./plugins";
7
7
  export * from "./extensions";
8
8
  export default PlayerManager;
9
+ export declare const getManager: () => PlayerManager | null;
10
+ export declare const getPlayer: (guildOrId: string) => import("./structures/Player").Player | undefined;
9
11
  //# 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;AAC1B,cAAc,cAAc,CAAC;AAG7B,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAoB,MAAM,4BAA4B,CAAC;AAG7E,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;AAG7B,eAAO,MAAM,UAAU,4BAA2B,CAAC;AACnD,eAAO,MAAM,SAAS,GAAI,WAAW,MAAM,qDAAiC,CAAC"}
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.PlayerManager = exports.Queue = exports.Player = void 0;
17
+ exports.getPlayer = exports.getManager = exports.PlayerManager = exports.Queue = exports.Player = void 0;
18
18
  const PlayerManager_1 = require("./structures/PlayerManager");
19
19
  var Player_1 = require("./structures/Player");
20
20
  Object.defineProperty(exports, "Player", { enumerable: true, get: function () { return Player_1.Player; } });
@@ -27,4 +27,9 @@ __exportStar(require("./plugins"), exports);
27
27
  __exportStar(require("./extensions"), exports);
28
28
  // Default export
29
29
  exports.default = PlayerManager_1.PlayerManager;
30
+ // Simple shared-instance accessor
31
+ const getManager = () => (0, PlayerManager_1.getGlobalManager)();
32
+ exports.getManager = getManager;
33
+ const getPlayer = (guildOrId) => (0, exports.getManager)()?.get(guildOrId);
34
+ exports.getPlayer = getPlayer;
30
35
  //# 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;AAC1B,+CAA6B;AAE7B,iBAAiB;AACjB,kBAAe,6BAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8DAA6E;AAG7E,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;AAE7B,kCAAkC;AAC3B,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,IAAA,gCAAgB,GAAE,CAAC;AAAtC,QAAA,UAAU,cAA4B;AAC5C,MAAM,SAAS,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,IAAA,kBAAU,GAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;AAAhE,QAAA,SAAS,aAAuD"}
@@ -25,15 +25,28 @@ export declare class Player extends EventEmitter {
25
25
  private currentResource;
26
26
  private volumeInterval;
27
27
  private skipLoop;
28
+ private ttsPlayer;
29
+ private ttsQueue;
30
+ private ttsActive;
28
31
  private withTimeout;
29
32
  private debug;
30
33
  constructor(guildId: string, options: PlayerOptions | undefined, manager: PlayerManager);
31
34
  private setupEventListeners;
35
+ private ensureTTSPlayer;
32
36
  addPlugin(plugin: SourcePlugin): void;
33
37
  removePlugin(name: string): boolean;
34
38
  connect(channel: VoiceChannel): Promise<VoiceConnection>;
35
39
  search(query: string, requestedBy: string): Promise<SearchResult>;
36
40
  play(query: string | Track, requestedBy?: string): Promise<boolean>;
41
+ /**
42
+ * Interrupt current music with a TTS track. Pauses music, swaps the
43
+ * subscription to a dedicated TTS player, plays TTS, then resumes.
44
+ */
45
+ interruptWithTTSTrack(track: Track): Promise<void>;
46
+ /** Play queued TTS items sequentially */
47
+ private playNextTTS;
48
+ /** Build AudioResource for a given track using the plugin pipeline */
49
+ private resourceFromTrack;
37
50
  private generateWillNext;
38
51
  private playNext;
39
52
  pause(): boolean;
@@ -41,9 +54,17 @@ export declare class Player extends EventEmitter {
41
54
  stop(): boolean;
42
55
  skip(): boolean;
43
56
  loop(mode?: LoopMode): LoopMode;
57
+ autoPlay(mode?: boolean): boolean;
44
58
  setVolume(volume: number): boolean;
45
59
  shuffle(): void;
46
60
  clearQueue(): void;
61
+ /**
62
+ * Insert a track or list of tracks into the upcoming queue at a specific position (0 = play after current).
63
+ * - If `query` is a string, performs a search and inserts resulting tracks (playlist supported).
64
+ * - If a Track or Track[] is provided, inserts directly.
65
+ * Does not auto-start playback; it only modifies the queue.
66
+ */
67
+ insert(query: string | Track | Track[], index: number, requestedBy?: string): Promise<boolean>;
47
68
  remove(index: number): Track | null;
48
69
  getProgressBar(options?: ProgressBarOptions): string;
49
70
  private formatTime;
@@ -1 +1 @@
1
- {"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../../src/structures/Player.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../../src/structures/Player.ts"],"names":[],"mappings":"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"}