DiscordAPIError:createOverwrite 上缺少访问权限
Posted
技术标签:
【中文标题】DiscordAPIError:createOverwrite 上缺少访问权限【英文标题】:DiscordAPIError: Missing Access on createOverwrite 【发布时间】:2021-01-20 20:05:22 【问题描述】: 使用 Discord.js 开发 Discord 审核机器人 面临错误“DiscordAPIError: Missing Access”我的机器人用户,拥有除“管理员”之外的所有服务器权限,highest.rawPosition 为 18(所有角色中最高的):
user: ClientUser
id: 'XXXXXXXXX',
bot: true,
username: 'Bot',
discriminator: '1863',
avatar: '2e8af5cccdc5cf15a0f88818dbb044e6',
lastMessageID: null,
lastMessageChannelID: null,
verified: true,
mfaEnabled: true,
_typing: Map
,
正在尝试添加此角色(rawPosition 为 2):
Role
id: 'XXXXXXXXX',
name: 'Mod',
color: 0,
hoist: false,
rawPosition: 2,
permissions: Permissions bitfield: 37211712 ,
managed: false,
mentionable: false,
deleted: false
作为对该频道的覆盖权限:
CategoryChannel
type: 'category',
deleted: false,
id: 'XXXXXXXXX',
name: 'Section Job',
rawPosition: 6,
parentID: null,
使用此代码:
await channel.createOverwrite(role,
VIEW_CHANNEL: true,
READ_MESSAGES: true,
SEND_MESSAGES: true,
CONNECT: true
);
这是我得到的错误:
[2020/10/06 00:52:56:427] DiscordAPIError: Missing Access
我在发布之前进行了搜索。 Discord 对这个特定错误给出了许多可能的解释,但没有一个适合我的问题:https://discordjs.guide/popular-topics/permissions-extended.html#missing-permissions
Your bot is missing the needed permission to execute this action in it's calculated base or final permissions (requirement changes based on the type of action you are trying to execute).
--> My bot has all permissions except "Administrator"
You provided an invalid permission number while trying to create overwrites. (The calculator on the apps page returns decimal values while the developer documentation lists the flags in hex. Make sure you are not mixing the two and don't use the hex prefix 0x where not applicable)
--> I give the exact same permissions, formatted exactly the same as another group, and it works
It is trying to execute an action on a guild member with a role higher than or equal to your bots highest role.
--> Not executing an action on a user, but on a group
It is trying to modify or assign a role that is higher than or equal to its highest role.
--> Bot highest role is 18, and added role rawPosition is 2
It is trying to add a managed role to a member.
--> As you can see it is not "managed"
It is trying to remove a managed role from a member.
--> Not trying to remove a role
It is trying to execute a forbidden action on the server owner.
--> Not editing a user, but a channel (and server owwner does not have this role)
It is trying to execute an action based on another unfulfilled factor (for example reserved for partnered guilds).
--> I don't understand this one but it couldn't be that
It is trying to execute an action on a voice channel without the VIEW_CHANNEL permission.
--> Not executing an action on a voice channel, but on a Category channel, and it has VIEW_CHANNEL permission
更多信息: 1/ 完全相同的上下文中的相同命令适用于其他一些组,例如这个:
Role
id: 'XXXXXXXXX',
name: 'Job',
color: 0,
hoist: false,
rawPosition: 1,
permissions: Permissions bitfield: 37211712 ,
managed: false,
mentionable: false,
deleted: false
2/ 相同的命令适用于分配给机器人的“管理员”权限 3/ 当然,为机器人添加“管理员”权限不是一种选择
感谢您的帮助!
【问题讨论】:
【参考方案1】:好的,感谢 discord Js 社区,我找到了解决方案 我忘记授予我的机器人对该特定频道的读取权限,因此该机器人无法向他无权访问的频道授予权限...
我刚刚加了
permissionOverwrites: [
id: guild.me.roles.highest,
allow: ['VIEW_CHANNEL', 'MANAGE_CHANNELS', 'MANAGE_ROLES']
]
到我的频道创建,它的工作原理。
【讨论】:
以上是关于DiscordAPIError:createOverwrite 上缺少访问权限的主要内容,如果未能解决你的问题,请参考以下文章
DiscordAPIError:无效的表单正文 - Discord 斜杠命令
DiscordAPIError:无法使用 Discord 嵌入发送空消息