Fix music player crash if resource can't be stream

This commit is contained in:
2022-03-03 22:37:41 +07:00
parent 0e37c89f8d
commit d7e5f5045f
2 changed files with 37 additions and 10 deletions
+23 -2
View File
@@ -61,6 +61,21 @@ const EMBEDS = {
user: (data instanceof Interaction) ? data.user : data.author
});
},
LOOKUP_ERROR: (data: Message | Interaction, error: Error) => {
let errorMessage = "";
if(error.message === "While getting info from url\nPrivate video")
errorMessage = "This is a private video";
else
errorMessage = error.message.replace("While getting info from url\n", "").replace("While getting info from url", "");
return makeErrorEmbed({
title: `Error while looking up the song`,
description: `${errorMessage}`,
user: (data instanceof Interaction) ? data.user : data.author
});
},
}
export default class Play extends DiscordModule {
@@ -201,7 +216,10 @@ export default class Play extends DiscordModule {
if (!instance) return;
let result = await DiscordMusicPlayer.searchYouTubeByYouTubeLink(DiscordMusicPlayer.parseYouTubeLink(interaction.values[0]));
let result = await DiscordMusicPlayer.searchYouTubeByYouTubeLink(DiscordMusicPlayer.parseYouTubeLink(interaction.values[0])).catch((err) => {
sendHybridInteractionMessageResponse(hybridData, { embeds: [EMBEDS.LOOKUP_ERROR(hybridData.getRaw(), err)] }, true);
return null;
});
if (!result) return;
instance.addTrackToQueue(result);
@@ -263,7 +281,10 @@ export default class Play extends DiscordModule {
return await sendHybridInteractionMessageResponse(data, { embeds: [EMBEDS.ADDED_SONGS_QUEUE(data.getRaw(), songs)] }, true);
}
let result = await DiscordMusicPlayer.searchYouTubeByYouTubeLink(linkData);
let result = await DiscordMusicPlayer.searchYouTubeByYouTubeLink(linkData).catch((err) => {
sendHybridInteractionMessageResponse(data, { embeds: [EMBEDS.LOOKUP_ERROR(data.getRaw(), err)] }, true);
return null;
});
if (!result) return;
+12 -6
View File
@@ -168,13 +168,19 @@ export class DiscordMusicPlayerInstance {
if (!this.voiceConnection) throw new Error("No voice connection");
const stream = await playdl.stream(track.url);
const resource = createAudioResource(stream.stream, {
inputType: stream.type
});
try {
const stream = await playdl.stream(track.url);
const resource = createAudioResource(stream.stream, {
inputType: stream.type
});
this.player.play(resource)
this.voiceConnection.subscribe(this.player)
} catch (error: any) {
this.events.emit('error', new PlayerErrorEvent(this, error));
this.skipTrack();
}
this.player.play(resource)
this.voiceConnection.subscribe(this.player)
}
public async skipTrack() {