如何判断Discord机器人中提及的用户是否为机器人?
解决Discord机器人判断提及用户是否为机器人的问题
Hey there! Let's sort out this issue you're stuck on with checking if a mentioned user is a bot.
问题根源
你用message.mentions.members.first()获取到的是GuildMember对象(也就是服务器成员实例),但bot这个布尔属性并不属于GuildMember——它是User对象的专属属性。User对象存储的是用户的全局账号信息,而GuildMember是用户在某个特定服务器里的身份数据,所以直接调用profileMentionned.bot自然拿不到正确的布尔值。
解决方案
只需要先通过GuildMember的user属性获取到对应的User对象,再去判断bot属性就可以了。另外建议先检查是否真的获取到了提及的成员,避免出现空值报错:
let profileMentionned = message.mentions.members.first(); // 先处理没有提及用户的情况 if (!profileMentionned) { return message.reply("你还没提及任何用户呢!"); } // 正确判断是否为机器人 if (profileMentionned.user.bot) { message.reply("这个用户是机器人哦!"); } else { message.reply("这是一个真实的用户~"); }
补充说明
简单区分下这两个对象:
- GuildMember:包含用户在当前服务器的专属数据,比如角色、服务器内昵称、加入时间等
- User:包含用户的全局账号数据,比如头像、用户名、是否是机器人(
bot属性)等
所以只要先拿到User对象,就能准确判断目标用户是否是机器人啦!
内容的提问来源于stack exchange,提问作者ZaKLaKe
相关产品推荐
相关产品推荐

