[英]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.