import { SlashCommandBuilder } from "discord.js"; import { findChannelfromCache } from "../utils.js"; import { ROLE_ID_RUNNER, VOICE_ID_PICKING, VOICE_ID_BLU, VOICE_ID_RED } from "../config.json"; const data = new SlashCommandBuilder() .setName("end") .setDescription("Moves the team channel members back to the picking channel"); const permissions = [ROLE_ID_RUNNER]; const execute = async (interaction) => { await interaction.reply("Moving members..."); // get voice channels const picking = findChannelfromCache( interaction.guild.channels.cache, "picking", VOICE_ID_PICKING ); const blu = findChannelfromCache( interaction.guild.channels.cache, "blu", VOICE_ID_BLU ); const red = findChannelfromCache( interaction.guild.channels.cache, "red", VOICE_ID_RED ); if (!picking || !blu || !red) { return console.error("Could not find all channels for /end"); } // get members in voice channel let members = blu.members.concat(red.members); if (members.size === 0) { return await interaction.followUp("Found no members in blu or red"); } let eCount = 0; // move members to picking const moveToPicking = async (member) => { try { await member.voice.setChannel(picking); } catch (error) { console.error(error); eCount++; } }; const moveAllToPicking = async () => { return Promise.all( Array.from(members, async ([memberId, member]) => { await moveToPicking(member); }) ); }; moveAllToPicking().then(() => interaction.followUp( `Moved members in blu and red${ eCount > 0 ? ` (error moving ${eCount} members)` : "" }` ) ); }; const synonyms = ["resetteams"]; export { data, permissions, execute, synonyms };