You need to enable JavaScript to run this app. 如何检测被ping的用户是否拥有指定角色?Discord.js开发问题
优惠活动
大模型
产品
解决方案
定价
更多

如何检测被ping的用户是否拥有指定角色?Discord.js开发问题

报错原因与修复方案
  • 对象类型调用错误
    message.mentions.users.first() 获取到的是全局User对象,该对象不存储服务器内的角色相关数据,只有服务器成员GuildMember对象才有roles属性。需要改为调用message.mentions.members.first()获取被@用户的服务器成员实例。
  • 边界判断缺失
    如果用户发送指令时没有@任何人,first() 会返回undefined,直接调用属性会触发同类型报错,需要先判断是否存在被@的目标用户再执行后续逻辑。
  • 条件判断逻辑错误
    原有代码中r.name === "Admin" || "Mod"的写法逻辑错误,该表达式会恒返回真值"Mod",无法正确匹配两个角色。可改为数组匹配写法简化逻辑,降低出错概率。

修复后代码

const targetMember = message.mentions.members.first()
if (targetMember) {
  if(targetMember.roles.cache.some(r => ["Admin", "Mod"].includes(r.name))) {
    message.channel.send('This user has a role!')  
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 04:24:04