Отключение звука всего голосового канала Discord (JS) - PullRequest
2 голосов
/ 14 июля 2020

Я работаю над ботом Discord для игрового сервера моей группы друзей. Я хочу добавить команду, которая отключает всех в голосовом канале. Я подумал, что этот msg.member.voice.channel.members.setmute(true); будет работать, но он возвращается, не будучи функцией, и вылетает из бота. Этот msg.member.voice.setMute(true); работает так, как если бы сервер отключал звук для участника, который отправляет сообщение, но, очевидно, не для всего канала, к чему я и собираюсь. Я новичок в Discord. js, и документация была немного запутанной. Спасибо за уделенное время!

1 Ответ

1 голос
/ 14 июля 2020

Я сделал что-то подобное в не слишком длинном проекте go, где мне пришлось отключить всех, кроме человека, выдавшего команду.

Вы можете sh этого добиться, перебирая массив всех пользователей в текущем канале.

// Your invokation here, for example your switch/case hook for some command (i.e. '!muteall')
// Check if user is in a voice channel:
if (message.member.voice.channel) {
  let channel = message.guild.channels.cache.get(message.member.voice.channel.id);
  for (const [memberID, member] of channel.members) {
    // I added the following if statement to mute everyone but the invoker:
    // if (member != message.member)

    // This single line however, nested inside the for loop, should mute everyone in the channel:
    member.voice.setMute(true);
  }
} else {
  message.reply('You need to join a voice channel first!');
}
...