检查用户是不是在新的 discord.js 版本中具有角色
Posted
技术标签:
【中文标题】检查用户是不是在新的 discord.js 版本中具有角色【英文标题】:Check if user has a role in the new discord.js version检查用户是否在新的 discord.js 版本中具有角色 【发布时间】:2022-01-19 00:00:29 【问题描述】:嘿,我想检查一个用户是否有一个角色,尽管所有其他方法都已经过时了,而且我已经尝试了一些方法,但都不起作用。
我的尝试:
var guild = client.guilds.cache.get("Guild ID")
var buyerRole = guild.roles.cache.get("Role ID")
await guild.members.fetch()
const guildMember = guild.members.cache.get(message.author.id)
if(guildMember.roles.find(buyerRole.id))...
【问题讨论】:
是roles.cache.find,你只用ID所以用roles.cache.has 但是find()
接受一个函数,而不是一个 ID,所以可能是 roles.cache.has(buyerRole.id)
@ZsoltMeszaros TypeError: authorMember.roles.find is not a function
:(
查看previoustwo答案
@MrMythical TypeError: authorMember.roles.has is not a function
【参考方案1】:
好吧,你会想要使用 member.roles.cache.some() 来实现这一点。
var guild = client.guilds.cache.get("Guild ID")
var buyerRole = guild.roles.cache.get("Role ID")
const guildMember = await guild.members.fetch('User ID');
if(guildMember.roles.cache.some(x => x.id == buyerRole.id))...
.some 总是会返回一个布尔值,所以你最好这样使用它。
【讨论】:
guildMember.roles.cache.has(buyerRole.id)
的作用相同,而且更短。【参考方案2】:
经过一番调试,原来可以使用
message.author._roles
而不是 message.author.roles
以获取完整的列表数组。
【讨论】:
以上是关于检查用户是不是在新的 discord.js 版本中具有角色的主要内容,如果未能解决你的问题,请参考以下文章