Events & Listeners
Tìm hiểu cách sử dụng hệ thống events mạnh mẽ của ZiPlayer để tương tác với player và tạo trải nghiệm người dùng phong phú.
Playback Events
Theo dõi trạng thái phát nhạc
- trackStart
- trackEnd
- playerPause
- playerResume
- playerStop
Queue Events
Quản lý danh sách phát
- queueAdd
- queueRemove
- queueAddList
- willPlay
- queueEnd
Control Events
Điều khiển player
- volumeChange
- playerDestroy
Error Events
Xử lý lỗi và sự cố
- playerError
- connectionError
Events Cơ Bản
Các events cơ bản để theo dõi trạng thái phát nhạc và tương tác với player.
1// Lắng nghe các events cơ bản
2player.on("trackStart", (track) => {
3 console.log("Bắt đầu phát:", track.title);
4});
5
6player.on("trackEnd", (track) => {
7 console.log("Kết thúc:", track.title);
8});
9
10player.on("queueEnd", () => {
11 console.log("Hết queue, tự động thoát...");
12});
13
14player.on("playerPause", (track) => {
15 console.log("Tạm dừng:", track.title);
16});
17
18player.on("playerResume", (track) => {
19 console.log("Tiếp tục:", track.title);
20});
1// Events liên quan đến queue
2player.on("queueAdd", (track) => {
3 console.log("Thêm vào queue:", track.title);
4});
5
6player.on("queueAddList", (tracks) => {
7 console.log("Thêm playlist:", tracks.length, "bài hát");
8});
9
10player.on("queueRemove", (track, index) => {
11 console.log("Xóa khỏi queue:", track.title, "tại vị trí", index);
12});
13
14player.on("willPlay", (track, tracks) => {
15 console.log("Sắp phát:", track.title);
16 console.log("Còn lại:", tracks.length, "bài hát");
17});
1// Xử lý lỗi
2player.on("playerError", (error, track) => {
3 console.error("Lỗi phát nhạc:", error.message);
4 console.error("Bài hát:", track?.title || "Unknown");
5
6 // Có thể thử phát bài tiếp theo
7 if (player.queue.length > 0) {
8 player.queue.skip();
9 }
10});
11
12player.on("connectionError", (error) => {
13 console.error("Lỗi kết nối:", error.message);
14
15 // Thử kết nối lại sau 5 giây
16 setTimeout(() => {
17 player.connect(voiceChannel).catch(console.error);
18 }, 5000);
19});