import fs from "fs";
import path from "path";
import { Command } from "types/command";
import { SlashCommandBuilder } from "@discordjs/builders";
import { DiscordGatewayAdapterCreator, joinVoiceChannel, createAudioPlayer, createAudioResource, AudioPlayer, AudioPlayerStatus } from "@discordjs/voice";
const audio: Command = {
data: new SlashCommandBuilder()
.setName("som")
.setDescription("ELE GOOOOOOSTA!")
.addStringOption(option =>
option.setName("audio")
.setDescription("Qual áudio você ouvir")
.setRequired(true)
.setChoices(...getAudioChoices())),
execute: async (interaction) => {
const file = interaction.options.getString("audio");
const user = await interaction.guild.members.cache.get(interaction.user.id).fetch();
if (user.voice.channelId === null) {
await interaction.reply({ content: "Você precisa estar em um canal de voz para usar esse comando!", ephemeral: true });
return;
}
const connection = joinVoiceChannel({
channelId: user.voice.channelId,
guildId: user.voice.guild.id,
adapterCreator: user.voice.channel.guild.voiceAdapterCreator as unknown as DiscordGatewayAdapterCreator,
});
const audioPlayer = createAudioPlayer();
connection.subscribe(audioPlayer);
const audio = createAudioResource(file);
audioPlayer.play(audio);
await interaction.reply({ content: "Ratinhoooooooo!", ephemeral: true });
}
}
function getAudioChoices() {
const audioPath = path.join(__dirname, "../../media/audio/");
const files = fs.readdirSync(audioPath);
return files.map(file => {
return { name: file.split("-").join(" ").replace(".ogg", ""), value: path.join(audioPath, file) }
});
}
module.exports = audio;