Как заставить бот Discord создать новый V C при присоединении к указанному c V C [Javascript Discord.js] - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть команда, которая создает голосовой канал с определенными разрешениями и помещает его в категорию. Вместо этого я хочу, чтобы голосовой канал создавался, когда вы присоединяетесь к указанному c голосовому каналу, который называется «Присоединиться к созданию», и вы перемещаетесь в новый голосовой канал после его создания. Я также хочу, чтобы новый голосовой канал автоматически удалялся после того, как все его покинули.

Я не совсем уверен, как это сделать, поэтому я очень признателен за помощь. Вот код для команды:

  if (command === "createvc") {
    message.guild.channels.create(message.author.username + "'s Channel", {
    type: 'voice', parent: '703315964011479090',
      permissionOverwrites: [
        {
          id: message.guild.id, // everyone
          allow: ['CREATE_INSTANT_INVITE', 'VIEW_CHANNEL', 'CONNECT', 'SPEAK', 'STREAM', 'USE_VAD'],
          deny: ['MANAGE_CHANNELS', 'MANAGE_ROLES', 'MANAGE_WEBHOOKS', 'MUTE_MEMBERS', 'DEAFEN_MEMBERS', 'MOVE_MEMBERS', 'PRIORITY_SPEAKER']
        },
        {
          id: '705036984934203473', // Muted
          allow: ['CREATE_INSTANT_INVITE', 'VIEW_CHANNEL'],
          deny: ['CONNECT', 'SPEAK', 'STREAM', 'USE_VAD', 'MANAGE_CHANNELS', 'MANAGE_ROLES', 'MANAGE_WEBHOOKS', 'MUTE_MEMBERS', 'DEAFEN_MEMBERS', 'MOVE_MEMBERS', 'PRIORITY_SPEAKER']
        },
        {
          id: '705036553872998470', // Unverified
          deny: ['CREATE_INSTANT_INVITE', 'VIEW_CHANNEL', 'CONNECT', 'SPEAK', 'STREAM', 'USE_VAD', 'MANAGE_CHANNELS', 'MANAGE_ROLES', 'MANAGE_WEBHOOKS', 'MUTE_MEMBERS', 'DEAFEN_MEMBERS', 'MOVE_MEMBERS', 'PRIORITY_SPEAKER']
        },
      ],
    })
  }

Заранее спасибо.

1 Ответ

0 голосов
/ 30 апреля 2020

Вы можете определить, присоединился ли кто-либо к каналу Join to Create, используя событие voiceStateUpdate, а затем создать новый голосовой канал, используя guild.channels.create(), и, наконец, переместив GuildMember (s) на этот голосовой канал.

Ваше решение будет примерно таким:

client.on('voiceStateUpdate', (oldState, newState) => {
    if (newState.channel.name === 'Join to Create') { // You can also use `newState.channelID`
        newState.guild.channels.create("New Channel", {
            type: 'voice',
            parent: 'CATEGORY_ID'
        }).then(vc => {
            newState.setChannel(vc);
        })
    }
});
...