You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 04:00:52