반응형
저번에 특정 노래만을 재생하도록 만들어놨으니 이번엔 URL을 받으면 그 노래를 반복재생하도록 추가해보았다.
else if (command.indexOf('https://www.youtube.com') != -1) {
const playUrl = command;
voiceChannel = message.member.voice.channel;
if (!voiceChannel) {
return message.reply('채널에 먼저 들가라');
}
const permissions = voiceChannel.permissionsFor(message.client.user);
if (!permissions.has('CONNECT') || !permissions.has('SPEAK')) {
return message.reply('권한내놔');
}
try {
connection = joinVoiceChannel({
channelId: voiceChannel.id,
guildId: message.guild.id,
adapterCreator: message.guild.voiceAdapterCreator,
});
const playStream = () => {
const stream = ytdl(playUrl, {
filter: 'audioonly',
fmt: "mp3",
highWaterMark: 1 << 62,
liveBuffer: 1 << 62,
dlChunkSize: 0, //disabling chunking is recommended in discord bot
bitrate: 128,
quality: "lowestaudio"
});
const resource = createAudioResource(stream);
player.play(resource);
}
player = createAudioPlayer();
playStream();
connection.subscribe(player);
//현재 플레이되는 곡의 재생 종료 이벤트를 받는 구간
player.on(AudioPlayerStatus.Idle, () => {
playStream();
});
} catch (error) {
console.error(error);
message.reply('ㅅㅂ에러');
}
}
else if 로 커맨드에 youtube url 이 섞여있다면 해당 url를 youtube에서 가져와서 재생시키도록해놨다
connection, voiceChannel, player 는 하나로 하기위에 처음 만들때 let 으로 이미 초기화해두었다.
곡 재생 종료 이벤트를 받게되면 다시 playStream() 을 호출하여 무한재생되도록 해두었다.
playStream 속에
player.play(resource);
가 들어있다.
반응형
'디스코드봇' 카테고리의 다른 글
[JS] 디스코드 노래 봇 6 (1) | 2024.10.17 |
---|---|
[JS] 디스코드 노래 봇 5 (0) | 2024.08.24 |
[JS] 디스코드 노래 봇 4 (1) | 2024.07.14 |
[JS] 디스코드 노래 봇 3 (0) | 2024.06.30 |
[JS] 디스코드 노래 봇 (1) | 2024.06.16 |