如何通过Discord.js判断Discord机器人是否已通过官方验证
如何通过Discord.js判断机器人是否已认证?
Discord机器人可以拥有官方认证标识(Verified check mark),请问是否可以通过Discord.js判断某一Discord机器人是否已通过验证?
我做这件事主要是为了防范突袭(raid)或炸服(nuke)机器人,现有代码如下:
client.on('guildMemberAdd', member => { if (member.user.bot) { // if is verified: // member.roles.add("<BOT_ROLE_ID>") // else: // member.ban(...) } })
若无法通过Discord.js实现,是否可以借助member.user.id属性或其他方式完成?
更新:用户标识(user flags)或许是解决方法。
可以通过Discord.js的**用户标识(User Flags)**来判断机器人是否已认证。
在Discord.js中,member.user.flags属性包含了用户的所有标识,其中**VerifiedBot**就是机器人已通过官方认证的标识。你可以直接基于这个字段完成判断逻辑:
完整实现代码
client.on('guildMemberAdd', member => { if (member.user.bot) { // 检查机器人是否已认证 const isVerified = member.user.flags?.has('VerifiedBot'); if (isVerified) { member.roles.add("<BOT_ROLE_ID>"); } else { member.ban({ reason: '未认证机器人,防范炸服/突袭风险' }); } } })
注意事项
flags属性有可能为null,所以使用可选链操作符?.可以避免出现运行时错误- 不需要借助
user.id来判断,官方提供的标识字段是最准确的验证依据 - 如果你使用的是Discord.js v12及更早版本,常量名称需要改为全大写的
VERIFIED_BOT,即member.user.flags.has('VERIFIED_BOT')
内容的提问来源于stack exchange,提问作者paoloose
相关产品推荐
相关产品推荐

