簡體   English   中英

檢查權限覆蓋時的 RangeError [BITFIELD_INVALID] (Discord.js v12)

[英]RangeError [BITFIELD_INVALID] when checking for permission overwrites (Discord.js v12)

我試圖創建一個鎖定命令,用戶可以在其中 select 覆蓋什么權限。 但是,這僅在刪除第 3 和第 4 個if語句(檢查現有權限覆蓋)時才有效,因為會產生以下錯誤: RangeError [BITFIELD_INVALID]: Invalid bitfield flag or number. 會有解決方法嗎?

const channel = bot.channels.cache.get(args[0]);

      if(!channel) {
        return message.reply('Please provide a channel id!');
      }

      if(!args[1]) {
        return message.reply('Please set the lock type!');
      }

      if (!channel.permissionsFor(message.guild.roles.everyone).has('VIEW_CHANNEL')) {
        const errorEmbed = new Discord.MessageEmbed()
          .setDescription(`❌ \`VIEW_CHANNEL\` for \`${channel.name}\` is already disabled.`)
          .setColor('RED');
        return message.channel.send(errorEmbed);
      }

      if (!channel.permissionsFor(message.guild.roles.everyone).has('READ_MESSAGES')) {
        const errorEmbed = new Discord.MessageEmbed()
          .setDescription(`❌ \`READ_MESSAGES\` for \`${channel.name}\` is already disabled.`)
          .setColor('RED');
        return message.channel.send(errorEmbed);
      }

      else if (args[1] === 'view' || args[1] === 'read') {
        channel.updateOverwrite(message.channel.guild.roles.everyone, { VIEW_CHANNEL: false }).then(() => {
          const msgEmbed = new Discord.MessageEmbed()
            .setDescription(`✅ The channel\`${message.channel.name}\` has been locked.`)
            .setColor('GREEN');
          message.channel.send(msgEmbed);
        }).catch((error) => {
          console.log(error);
          const errorEmbed = new Discord.MessageEmbed()
            .setDescription(`❌ Unable to lock \`${channel.name}\`.`)
            .setColor('RED');
          message.channel.send(errorEmbed);
        });
      }
      else if (args[1] === 'send') {
        channel.updateOverwrite(message.channel.guild.roles.everyone, { SEND_MESSAGES: false }).then(() => {
          const msgEmbed = new Discord.MessageEmbed()
            .setDescription(`✅ The channel\`${channel.name}\` has been locked.`)
            .setColor('GREEN');
          message.channel.send(msgEmbed);
        }).catch((error) => {
          console.log(error);
          const errorEmbed = new Discord.MessageEmbed()
            .setDescription(`❌ Unable to lock \`${channel.name}\`.`)
            .setColor('RED');
          message.channel.send(errorEmbed);
        });
      }

我認為這是因為您使用的是READ_MESSAGES而不是到處使用VIEW_CHANNEL (它是相同的,我認為READ_MESSAGES已從 Discord.js v12 中刪除)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM