I'm trying to find a way to move all members which are in a specific vc to the vc which the sender of the command is in. The command should be -warp. This is what i have so far:
if (!message.member?.permissions.has('MOVE_MEMBERS')) return;
const member = message.mentions.members?.first();
if (!member) return message.reply("Error: Didn't specify member.");
if (!member.voice.channel) return message.reply("Error: Mentioned member is not in a Voice Channel.");
if (!message.member.voice.channel) return message.reply("Error: Executor of command is not in a Voice Channel.");
member.voice.setChannel(message.member.voice.channel)
message.reply('Success: Moved member.')
It works but i can only move one user at the time and from every vc. I want everyone to be able to move others but only from a specific vc. Thanks for your help!
CodePudding user response:
This works for me, let me know if you have any troubles:
client.on('messageCreate', async message => {
if (message.author.bot) return;
if (message.content === '-warp') {
// doing the same validation here as you did
if (!message.member.voice.channel) {
await message.reply('Error: Executor of command is not in a Voice Channel.');
return;
}
const sendersChannel = message.member.voice.channel;
const mentionedMember = message.mentions.members?.first();
if (!mentionedMember) {
await message.reply('Error: Didn\'t specify member.');
return;
}
if (!mentionedMember.voice.channel) {
await message.reply('Error: Mentioned member is not in a Voice Channel.');
return;
}
// get the channel of the mentioned member
const targetChannel = mentionedMember.voice.channel;
// iterate over all the members in that voice channel and move them to the sender's channel
for (const [, member] of targetChannel.members) {
await member.voice.setChannel(sendersChannel);
}
await message.reply(`Moved all members from ${targetChannel.name} to ${sendersChannel.name}`);
}
});
CodePudding user response:
Give this a try
const channel2pullFrom = message.guild.channels.cache.get(‘channelID’)
const sendersChannel = message.member.voice.channel.id
const totalCount = channel2pullFrom.members.size
if (!message.member.permissions.has('MOVE_MEMBERS')) return
if (!message.member.voice.channel) return message.reply("Error: Executor of command is not in a Voice Channel.")
channel2pullFrom.members.forEach((member) => {
member.voice.setChannel(sendersChannel)
})
message.reply(`Moved ${totalCount} members.`)
Code:
Before Command:
After Command: