feat: add join and leave commands

This commit is contained in:
2026-01-10 12:22:12 -03:00
parent c9c88baa11
commit ace276b2a8
3 changed files with 87 additions and 0 deletions
+47
View File
@@ -0,0 +1,47 @@
import { ChatInputCommandInteraction, GuildMember, SlashCommandBuilder } from "discord.js";
import { Command } from "../../commands";
import { CreateVoiceConnectionOptions, getVoiceConnection, joinVoiceChannel, JoinVoiceChannelOptions } from "@discordjs/voice";
const builder = new SlashCommandBuilder()
.setName("join")
.setDescription("Makes the bot join your current voice channel");
const cmd: Command = {
name: builder.name,
builder: builder,
execute: async (interaction: ChatInputCommandInteraction): Promise<void> => {
const member = interaction.member as GuildMember;
if (!member || !interaction.guild) {
interaction.reply("This command only works on guilds");
return;
}
if (!member.voice.channelId) {
interaction.reply("You are not currently on a voice channel");
return;
}
const me = interaction.guild.members.me as GuildMember;
if (getVoiceConnection(interaction.guild.id) && me.voice.channelId === member.voice.channelId) {
interaction.reply("Already connected");
return;
}
const voiceOptions: JoinVoiceChannelOptions & CreateVoiceConnectionOptions = {
channelId: member.voice.channelId,
guildId: interaction.guild.id,
adapterCreator: interaction.guild.voiceAdapterCreator
};
const connection = await joinVoiceChannel(voiceOptions);
if (!connection) {
interaction.reply("Unable to join");
return
}
interaction.reply("Joined");
}
}
export default cmd;