discord - RangeError [BITFIELD_INVALID]:无效的位域标志或数字
问题描述
你好,我正在处理我的静音命令,我想出了这个错误:
RangeError [BITFIELD_INVALID]: Invalid bitfield flag or number.
at Function.resolve (/app/node_modules/discord.js/src/util/BitField.js:150:19)
at /app/node_modules/discord.js/src/util/BitField.js:148:54
at Array.map (<anonymous>)
at Function.resolve (/app/node_modules/discord.js/src/util/BitField.js:148:40)
at RoleManager.create (/app/node_modules/discord.js/src/managers/RoleManager.js:112:58)
at Client.<anonymous> (/app/index.js:586:41)
at Client.emit (events.js:327:22)
at MessageCreateAction.handle (/app/node_modules/discord.js/src/client/actions/MessageCreate.js:31:14)
at Object.module.exports [as MESSAGE_CREATE] (/app/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)
at WebSocketManager.handlePacket (/app/node_modules/discord.js/src/client/websocket/WebSocketManager.js:384:31)
我想为我的静音命令设置一个静音角色,这是我的命令:
message.guild.roles.create({
data: {
name: 'muted',
color: '#ff0000',
permissions: [
"SEND_MESSAGES" === false,
"ADD_REACTIONS" === false
]
},
reason: 'to mute people',
})
.catch(console.error);
} catch (e) {
console.log(e.stack);
}
} return message.channel.send('Cant')
我不太知道如何解决它请帮助我
解决方案
我今天偶然发现了这个老问题,虽然我来晚了,但 Androz2091 发布的当前主要答案是不正确的。
您不能将数组用于权限值(它必须是对象):
这是完全错误的。在从 v11 到 v13 的任何版本的 discord.js 中,都没有权限值来创建一个角色,即该答案呈现的形式的对象文字。权限值必须是PermissionResolvable
. APermissionResolvable
可以是字符串,例如"SEND_MESSAGES"
,也可以是此类字符串的数组。查看文档。
至于 OP 实际出了什么问题,请注意他们是如何指定权限字符串的:
permissions: [
"SEND_MESSAGES" === false,
"ADD_REACTIONS" === false
]
这是不正确的。这和做是一样的permissions: [ false, false ]
。显然false
不是权限,这就是您收到无效位域标志错误的原因。
这不是创建角色时权限的工作方式。如果您查看公会的角色权限,您会发现每个权限都有两种状态:启用或禁用。权限值的工作方式guild.roles.create()
是,它启用指定的任何权限并禁用所有其他权限。这意味着,如果您想要SEND_MESSAGES
并ADD_REACTIONS
禁用您的 Muted 角色,您只需要不将它们包含在权限数组中。
相反,包括静音用户应该拥有的任何权限。例如,如果他们应该能够查看频道,请给他们VIEW_CHANNEL
. 这是一个示例解决方案:
permissions: [
"VIEW_CHANNEL",
"READ_MESSAGE_HISTORY"
]
这对于静音角色应该很有效。请注意,discord.js v12 和 v13 的权限以这种方式工作的方式仍然相同,但是您创建角色本身的方式在版本之间发生了一些变化。但是,此解决方案仍应适用于这两个版本。
推荐阅读
- c++11 - 错误:限定名称引用了变量模板的特化
- flutter - 如何设置团队内切换按钮的值?
- mysql - Sql Select 不存在记录?
- javascript - jquery数组与子字符串比较并且不区分大小写
- python - 为什么我这么简单的线性回归不起作用
- c++ - c++ 方差和标准差
- javascript - 发送发布请求时,请求的资源上不存在“Access-Control-Allow-Origin”标头
- flutter - 在 Flutter 中获取两个同时屏幕交互的时间和位置信息
- json - 如何在 Laravel AuthServiceProvider 中返回 JSON?
- java - Java selemium Tor 启动失败