Extensions & Add-ons
Mở rộng chức năng player với hệ thống extensions mạnh mẽ. Thêm TTS, lyrics, và các tính năng tùy chỉnh.
Voice Extension
Speech recognizers với nhiều ngôn ngữ và giọng nói
- Multi-language TTS
- Voice selection
- Ignore Bots
- Auto attach connection
Lyrics Extension
Hiển thị lyrics tự động cho bài hát
- Auto-fetch lyrics
- Multiple sources
- Language support
- Embed display
Custom Extensions
Tạo extensions tùy chỉnh cho chức năng riêng
- Custom logic
- Event handling
- API integration
- Database support
Voice Extension
Thêm khả năng Text-to-Speech vào player để thông báo và tương tác với người dùng.
1import { voiceExt, lyricsExt } from "@ziplayer/extension";
2
3const lrc = new lyricsExt(null, {
4 includeSynced: true,
5 autoFetchOnTrackStart: true,
6 sanitizeTitle: true,
7});
8
9const manager = new PlayerManager({
10 extensions: [
11 lrc,
12 new voiceExt(null, { client, lang: "en-US", minimalVoiceMessageDuration: 1 })
13 ]
14});
15
16const player = manager.create(message.guild.id, {
17 userdata: {
18 channel: message.channel,
19 },
20 extensions: ["lyricsExt","voiceExt"],
21});
22
23manager.on("lyricsCreate", (_player, track, result) => {
24 if (result.synced) {
25 console.log("[LRC]
26" + result.synced.slice(0, 256) + (result.synced.length > 256 ? "..." : ""));
27 } else if (result.text) {
28 console.log("[TEXT]
29" + result.text.slice(0, 256) + (result.text.length > 256 ? "..." : ""));
30 } else {
31 console.log("No lyrics found");
32 }
33});
34
35manager.on("lyricsChange", async (_player, track, result) => {
36 // Per-line update when synced lyrics available
37 if (result.current) {
38 console.log(`[LINE ${result.lineIndex}] ${result.current}`);
39 } else if (result.text) {
40 // Fallback plain text chunk
41 }
42});
43manager.on("voiceCreate", async (plr, evt) => {
44 const userTag = evt.user?.tag || evt.userId;
45 const lowerContent = evt.content.toLowerCase();
46 console.log(lowerContent);
47});
48
Configuration Options
lang
- Ngôn ngữ TTSvoice
- Giọng nói cụ thểspeed
- Tốc độ nói (0.5-2.0)pitch
- Cao độ (-20 đến 20)
Use Cases
- Thông báo bài hát mới
- Hướng dẫn sử dụng
- Thông báo lỗi
- Tương tác với người dùng
Tạo Custom Extension
Tạo extension tùy chỉnh để thêm chức năng riêng cho player.
1import { BaseExtension } from "@ziplayer/extension";
2
3export class CustomExtension extends BaseExtension {
4 name = "custom-extension";
5
6 async active({ manager, player }) {
7 // Khởi tạo extension khi player được tạo
8 console.log("Custom extension activated for player:", player.guildId);
9
10 // Lắng nghe events
11 player.on("trackStart", (track) => {
12 this.handleTrackStart(track);
13 });
14 }
15
16 async inactive() {
17 // Cleanup khi extension bị vô hiệu hóa
18 console.log("Custom extension deactivated");
19 }
20
21 private handleTrackStart(track) {
22 // Logic tùy chỉnh khi bắt đầu phát nhạc
23 console.log("Custom logic for track:", track.title);
24 }
25}
Tiếp theo: Examples
Xem các ví dụ thực tế và best practices để sử dụng ZiPlayer hiệu quả.
Xem Examples