【问题标题】:Getting all of the pinged user in message, then check if they all have a role在消息中获取所有被 ping 的用户,然后检查他们是否都有角色
【发布时间】:2021-06-04 22:50:58
【问题描述】:

第一次在这里问。对不起,如果我做了奇怪的事情。 我想获取消息中被 ping 的所有人员,并获取他们的角色,以及其中一个(或一些)是否具有员工角色。

非常感谢!

编辑: 这是我的代码:

    message.mentions.users.forEach((user => {
        console.log(user)
        if(user.roles.cache.has('817753474791768074')) {
            message.channel.send('Stop pinging a Staff!')
        }
    }))

但是,它无法读取缓存的属性。我做错了什么?

编辑:2

我修好了,公会成员和用户不一样,我不得不这样做

    message.mentions.members.forEach((user => {
        console.log(user)
        if(user.roles.cache.has('817753474791768074')) {
            message.channel.send('Stop pinging a Staff!')
        }
    }))

感谢大家的帮助,现在我知道如何在stackoverflow中提问而不是那么愚蠢。

【问题讨论】:

  • StackOverflow 不是免费的代码编写服务。请尝试自己编写代码,并将您可能遇到的错误作为最后的选择来到这里。
  • 您很可能习惯于使用first() 来获得第一次提及。不调用 first() 将返回整个提及集合
  • 对不起。我知道message.mentions.members 返回一个集合,但我不知道如何从那里检查角色。
  • @Elitezen but won't first() 返回第一个被 ping 的人?
  • @Altqir first() 返回集合内的第一个元素。不包括它将返回整个集合,您可以从中使用.each() 检查它拥有的每个元素或记录它。

标签: javascript discord.js


【解决方案1】:

试试这样的:

message.mentions.users.map(m => {
let role = m.roles.find(r => r.name === "Role name");
if (role) {
    //do something
}
});

【讨论】:

    猜你喜欢
    • 2020-11-20
    • 2021-08-16
    • 1970-01-01
    • 2021-02-24
    • 2018-06-10
    • 1970-01-01
    • 2023-03-21
    • 2019-04-30
    • 1970-01-01
    相关资源
    最近更新 更多