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

如何在discord.js中检查自身机器人是否有发消息权限并编写对应if语句

discord.js 机器人自身发送消息权限校验实现

要校验机器人自身的权限,首先可以通过当前服务器实例的guild.members.me属性获取机器人在该服务器的成员实例,再基于该实例做权限校验即可,具体的if语句写法分两种场景:

场景1:校验服务器全局发送消息权限

适用于不需要区分频道,只需要判断机器人在整个服务器有没有发消息基础权限的情况:

// guild为当前服务器的Guild实例
const botGuildMember = guild.members.me;

if (botGuildMember.permissions.has('SendMessages')) {
  // 有权限的执行逻辑
} else {
  // 无权限的降级处理逻辑
}

场景2:校验指定频道内的发送消息权限

频道可能会单独覆写权限,即使服务器全局有权限,也可能在指定频道被禁止发消息,建议优先用这个校验方案:

// channel为要校验的目标频道实例,比如interaction.channel
const botChannelPermissions = channel.permissionsFor(guild.members.me);

if (botChannelPermissions?.has('SendMessages')) {
  // 该频道内有权限发消息的执行逻辑
} else {
  // 该频道内无权限的降级处理逻辑
}
  • 注意:如果你使用的是discord.js v14及以上版本,权限标识需要使用导入的枚举值,替换为PermissionFlagsBits.SendMessages即可,避免硬写字符串出现拼写错误。

内容的提问来源于stack exchange,提问作者Tachanks

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:54:02