const client = require("./client.js");
const logger = require("./logger.js");

module.exports = async (sound, message) => {
  if (message.member.voiceState.channelID) {
    if (!message.channel.guild.members.get(client.user.id).permission.has("voiceConnect") || !message.channel.permissionsOf(client.user.id).has("voiceConnect")) return client.createMessage(message.channel.id, `${message.author.mention}, I can't join this voice channel!`);
    const voiceChannel = message.channel.guild.channels.get(message.member.voiceState.channelID);
    if (!voiceChannel.permissionsOf(client.user.id).has("voiceConnect")) return client.createMessage(message.channel.id, `${message.author.mention}, I don't have permission to join this voice channel!`);
    const connection = await voiceChannel.join({
      opusOnly: true
    });
    if (connection.playing) return client.createMessage(message.channel.id, `${message.author.mention}, I'm already playing a sound!`);
    const playingMessage = await client.createMessage(message.channel.id, "🔊 Playing sound...");
    if (connection.playing) {
      connection.stopPlaying();
    }
    connection.play(sound);
    connection.on("error", (error) => {
      voiceChannel.leave();
      playingMessage.delete();
      logger.error(error);
    });
    connection.once("end", () => {
      voiceChannel.leave();
      playingMessage.delete();
    });
  } else {
    client.createMessage(message.channel.id, `${message.author.mention}, you need to be in a voice channel first!`);
  }
};