const { MessageFlags } = require('discord.js'); const { createAudioPlayer, createAudioResource, getVoiceConnection, joinVoiceChannel } = require('@discordjs/voice'); const RadioPlayer = require('./RadioPlayer.js'); async function play(interaction, sound){ try{ const member = interaction.member; const VC = member.voice.channel; if(!VC){ return( { content: 'Join a voice channel and try again!', flags: MessageFlags.Ephemeral } ); } else{ var connection = joinVoiceChannel({ channelId: VC.id, guildId: VC.guild.id, adapterCreator: VC.guild.voiceAdapterCreator, }); if(sound.startsWith('http')) { var player = await RadioPlayer.getAudioPlayer(sound); connection.subscribe(player); } else { console.log('Playing local file'); var resource = createAudioResource(sound); var player = createAudioPlayer(); //console.log('Playing ' + sound); connection.subscribe(player); player.play(resource); } } } catch(error){ console.error(error); return( { content: 'Something went wrong! Do I have permission to join the voice channel and speak?', flags: MessageFlags.Ephemeral } ); } return('Now speaking in voice channel!'); } function disconnect(interaction) { const connection = getVoiceConnection(interaction.guildId); if(connection) { connection.destroy(); return("Bye!"); } else { return( { content: 'Can\'t disconnect me because I\'m not in a voice channel!', flags: MessageFlags.Ephemeral } ); } } module.exports = { play, disconnect };