feat: add better checks before joining

This commit is contained in:
2026-01-14 21:26:48 -03:00
parent c1d355993e
commit 71da6e841d
+30 -6
View File
@@ -1,6 +1,7 @@
import {
ChatInputCommandInteraction,
GuildMember,
PermissionsBitField,
SlashCommandBuilder
} from 'discord.js';
import { Command } from '../../commands';
@@ -25,7 +26,7 @@ const cmd: Command = {
return;
}
if (!member.voice.channelId) {
if (!member.voice.channel || !member.voice.channelId) {
interaction.reply('You are not currently on a voice channel');
return;
}
@@ -40,12 +41,35 @@ const cmd: Command = {
return;
}
const voiceChannel = member.voice.channel;
if (voiceChannel.userLimit != 0 && voiceChannel.members.size >= voiceChannel.userLimit) {
interaction.reply('Channel is full');
return;
}
const perms = voiceChannel.permissionsFor(me)
if (!perms.has(PermissionsBitField.Flags.ViewChannel)) {
interaction.reply("I don't have permissions to see that channel")
return;
}
if (!perms.has(PermissionsBitField.Flags.Connect)) {
interaction.reply("I don't have the permissions to join that channel");
return;
}
if (!perms.has(PermissionsBitField.Flags.Speak)) {
interaction.reply("I don't have permissions to speak on that channel")
return;
}
const voiceOptions: JoinVoiceChannelOptions & CreateVoiceConnectionOptions =
{
channelId: member.voice.channelId,
guildId: interaction.guild.id,
adapterCreator: interaction.guild.voiceAdapterCreator
};
{
channelId: member.voice.channelId,
guildId: interaction.guild.id,
adapterCreator: interaction.guild.voiceAdapterCreator
};
const connection = await joinVoiceChannel(voiceOptions);
if (!connection) {