簡體   English   中英

使用 discord.js v14 編輯頻道權限

[英]Editing channel permissions using discord.js v14

我在 const 值通道和原因中得到了我的選項,我正在嘗試編輯通道權限以鎖定通道。 這是此命令的當前代碼。

const { SlashCommandBuilder } = require("discord.js");

module.exports = {
  data: new SlashCommandBuilder()
    .setName("lock")
    .setDescription("Locks the channel u specify.")
    .addChannelOption((option) =>
      option
        .setName("channel")
        .setDescription("The channel u want to lock.")
        .setRequired(true)
    )
    .addStringOption((option) =>
      option
        .setName("reason")
        .setDescription("The reason why the channel was locked.")
        .setRequired(true)
    ),
  async execute(interaction, client) {
    const channel = interaction.options.getChannel("channel");
    let reason = interaction.options.getString("reason");

        channel.permissionOverwrites.edit(interaction.guild.roles.everyone.id, {
            VIEW_CHANNEL: true,
            SEND_MESSAGES: false,
            READ_MESSAGE_HISTORY: true,
            ATTACH_FILES: false
        });
      await interaction.reply({
        content: `Locked channel ${channel} for the reason ${reason}`
      });
  },
};

但是我在channel.permissionOverwrites.edit所在的第 23 行收到錯誤。 錯誤:

C:\Users\Robin\Documents\Bobbie\node_modules\discord.js\src\util\BitField.js:168
    throw new RangeError(ErrorCodes.BitFieldInvalid, bit);
          ^
    at PermissionOverwriteManager.upsert (C:\Users\Robin\Documents\Bobbie\node_modules\discord.js\src\managers\PermissionOverwriteManager.js:100:50)
    at PermissionOverwriteManager.edit (C:\Users\Robin\Documents\Bobbie\node_modules\discord.js\src\managers\PermissionOverwriteManager.js:145:17)
    at Object.execute (C:\Users\Robin\Documents\Bobbie\src\commands\moderation\lock.js:23:38)
    at Object.execute (C:\Users\Robin\Documents\Bobbie\src\events\client\interactionCreate.js:11:31)    at Client.<anonymous> (C:\Users\Robin\Documents\Bobbie\src\functions\handlers\handleEvents.js:21:23)
    at Client.emit (node:events:527:28)    at InteractionCreateAction.handle (C:\Users\Robin\Documents\Bobbie\node_modules\discord.js\src\client\actions\InteractionCreate.js:81:12) {  code: 'BitFieldInvalid'
}
[nodemon] app crashed - waiting for file changes before starting...

我找到了這個問題的答案。 新的 discord.js 更新 v14 現在使用PermissionsBitField.Flags

所以固定代碼是

channel.permissionOverwrites.set([
  {
    id: interaction.guild.id,
    deny: [PermissionsBitField.Flags.SendMessages],
  }, {
    id: interaction.guild.id,
    allow: [PermissionsBitField.Flags.ViewChannel],
  }, {
    id: interaction.guild.id,
    allow: [PermissionsBitField.Flags.ReadMessageHistory]
  }, {
     id: interaction.guild.id,
    deny: [PermissionsBitField.Flags.CreatePublicThreads]
  }, {
    id: interaction.guild.id,
    deny: [PermissionsBitField.Flags.CreatePrivateThreads]
  }
]);

暫無
暫無

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

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