Saya mencoba membuat skrip saluran pribadi di Discord.js v12 yang pernah menjadi anggota bergabung, ia membuat kamar pribadi yang hanya orang yang dibuat dapat bergabung dan yang lain tidak dapat (hanya dengan perintah).

Saya mencoba memblokir izin @everyone {CONNECT tetapi saya tidak bisa mengaturnya. Saya mencoba mendefinisikannya melalui ID, menggunakan const sambil merujuk pada settings.json, juga mencoba menggunakan guild.defaultRole, dll. Tapi tidak ada yang bekerja. Bisakah seseorang membantu saya dengan skrip saya?

const { VoiceState } = require('discord.js');
const SettingsJSON = require('../../Configuration/Settings.json');
const Settings = SettingsJSON.PrivHub;

module.exports = async (oldState, newState) => {
  let mainChannel = oldState.guild.channels.cache.get(Settings.Room);
  if (!mainChannel) return;

  if (
    !oldState.channelID &&
    newState.channelID &&
    newState.channel.parentID == mainChannel.parentID &&
    newState.channelID == mainChannel.id
  ) {
    newState.guild.channels
      .create(
        `${Settings.Symbol} ${newState.member.displayName} kişisinin odası`,
        {
          type: 'voice',
          parent: mainChannel.parentID,
          permissionOverwrites: [
            mainChannel.permissionOverwrites.clone().set(
              newState.member.id,
              {
                id: newState.member.id,
                allow: [
                  'MANAGE_CHANNELS',
                  'STREAM',
                  'VIEW_CHANNEL',
                  'CONNECT',
                  'SPEAK',
                  'USE_VAD',
                ],
              },
              {
                id: everyone /*// problem is here /*/,
                deny: ['CONNECT'],
              },
            ),
          ],
        },
      )
      .then((channel) => {
        if (newState.member && newState.member.voice.channelID)
          newState.member.voice.setChannel(channel);
      });
    return;
  } else if (oldState.channelID && newState.channelID) {
    let oldChannel = oldState.channel;
    if (
      oldChannel.position > mainChannel.position &&
      oldChannel.parentID == mainChannel.parentID &&
      oldChannel.members.size <= 0 &&
      !oldChannel.deleted
    )
      oldChannel.delete().catch(undefined);
    if (
      newState.channelID == mainChannel.id &&
      newState.channel.parentID == mainChannel.parentID
    ) {
      newState.guild.channels
        .create(
          `${Settings.Symbol} ${newState.member.displayName} kişisinin odası`,
          {
            type: 'voice',
            parent: mainChannel.parentID,
            permissionOverwrites: [
              mainChannel.permissionOverwrites.clone().set(
                newState.member.id,
                {
                  id: newState.member.id,
                  allow: [
                    'MANAGE_CHANNELS',
                    'STREAM',
                    'VIEW_CHANNEL',
                    'CONNECT',
                    'SPEAK',
                    'USE_VAD',
                  ],
                },
                {
                  id: everyone /*// problem is here //*/,
                  deny: ['CONNECT'],
                },
              ),
            ],
          },
        )
        .then((channel) => {
          if (newState.member && newState.member.voice.channelID)
            newState.member.voice.setChannel(channel);
        });
    }
    return;
  } else if (
    oldState.channelID &&
    oldState.channel.parentID == mainChannel.parentID &&
    !newState.channelID
  ) {
    let oldChannel = oldState.channel;
    if (
      oldChannel.position > mainChannel.position &&
      oldChannel.members.size <= 0 &&
      !oldChannel.deleted
    )
      oldChannel.delete().catch(undefined);
  }
};

module.exports.config = {
  Event: 'voiceStateUpdate',
};
1
Umutcan Yılmaz 5 April 2021, 17:35

2 jawaban

Jawaban Terbaik

Anda dapat menggunakan {a > yang mengembalikan peran @everyone dari guild atau cukup gunakan ID Guild. Semua ini akan berhasil:

{
  id: oldState.guild.roles.everyone.id,
  deny: ['CONNECT'],
};

Atau:

{
  id: oldState.guild.id,
  deny: ['CONNECT'],
};

Atau:

{
  id: newState.guild.roles.everyone.id,
  deny: ['CONNECT'],
};

Atau:

{
  id: newState.guild.id,
  deny: ['CONNECT'],
};
0
Zsolt Meszaros 5 April 2021, 16:20

Anda dapat menemukan peran semua orang dengan Rolemanager # semua orang getter.

Dalam contoh Anda, Anda dapat melakukannya:

id: oldState.guild.roles.everyone.id,
deny: ["CONNECT"]
0
Dorian349 5 April 2021, 16:13