【问题标题】: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

标签: node.js discord.js


【解决方案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 以获取完整的列表数组。

【讨论】:

    猜你喜欢
    • 2021-11-15
    • 2021-10-25
    • 2020-09-21
    • 2021-04-06
    • 1970-01-01
    • 2023-03-03
    • 2021-01-02
    • 2020-12-25
    • 2020-12-27
    相关资源
    最近更新 更多