const { PermissionsBitField } = require('discord.js'); function getQueueOrReply(interaction, queues, message = 'Not in a voice channel!') { const queue = queues.get(interaction.guild.id); if (!queue) { interaction.reply(message); return null; } return queue; } function requireVoiceChannel(interaction) { const voiceChannel = interaction.member?.voice?.channel; if (!voiceChannel) { interaction.editReply('You need to be in a voice channel!'); return null; } const botMember = interaction.guild?.members?.me; if (!botMember) { interaction.editReply('Could not validate bot permissions in your voice channel. Try again in a moment.'); return null; } const perms = voiceChannel.permissionsFor(botMember); const missing = []; if (!perms?.has(PermissionsBitField.Flags.ViewChannel)) missing.push('View Channel'); if (!perms?.has(PermissionsBitField.Flags.Connect)) missing.push('Connect'); if (!perms?.has(PermissionsBitField.Flags.Speak)) missing.push('Speak'); if (missing.length > 0) { interaction.editReply(`I am missing permissions in that voice channel: ${missing.join(', ')}`); return null; } return voiceChannel; } module.exports = { getQueueOrReply, requireVoiceChannel, };