如何用Discord.js检查机器人在指定频道的发消息及嵌入消息权限
检查Discord机器人在指定频道的消息发送权限
要让机器人检查自身在指定频道的权限,核心是获取机器人自身的服务器成员实例,再用类似你现有代码的逻辑进行权限校验,具体操作如下:
- 首先,获取机器人在当前服务器的成员对象:用
message.guild.me,这个对象代表机器人自己在该服务器的身份。 - 然后调用
permissionsIn()方法(注意Discord.js v12+版本已将旧版的permissionIn改为复数形式permissionsIn,hasPermission改为has),传入目标频道的ID或频道对象,再检查对应权限。
示例代码
// 替换成你要检查的频道ID const targetChannelId = '123456789012345678'; // 获取机器人的服务器成员实例 const botMember = message.guild.me; // 检查发送普通消息的权限 const canSendMessages = botMember.permissionsIn(targetChannelId).has('SEND_MESSAGES'); // 检查发送嵌入消息的权限(嵌入消息需要EMBED_LINKS权限) const canSendEmbeds = botMember.permissionsIn(targetChannelId).has('EMBED_LINKS'); // 可以根据结果做后续处理 if (canSendMessages && canSendEmbeds) { console.log('机器人拥有发送消息和嵌入消息的权限'); } else { console.log('机器人缺少必要权限'); }
注意事项
- 如果你的Discord.js版本较低(v11及以下),可以保留旧写法:
botMember.permissionIn(targetChannelId).hasPermission('SEND_MESSAGES') - 如果是在DM频道中,
message.guild会是null,此时机器人默认可以发送消息和嵌入内容,无需额外校验。
内容的提问来源于stack exchange,提问作者Furious Prospekt
相关产品推荐
相关产品推荐

