我已经尝试使用每个人所说的字面意思,但它一直给我空数组或未定义的数组。我相信我正在使用 discord.js v12。
我真的很确定我确实有这个角色的成员,并且 roleID 是正确的。为什么这是错误的?将 new_channel 与 channel 进行比较。我认为 find 函数中的 ${}
不是必需的,但这不是问题。直到 roles.cache.get(importantRole.id) 部分它都正确,但我似乎无法从中获取成员。
let importantRole = await new_channel.guild.roles.cache.find(r => r.name === `${new_channel.name}`)
console.log(importantRole.id) // --> gives the right role ID
let membersWithRole = await new_channel.guild.roles.cache.get(importantRole.id).members.map(m=>m.user.id);
console.log(membersWithRole) // --> gives []
答案 0 :(得分:0)
很可能没有缓存具有该角色的成员。您需要:
select t.*
from t
where asset like 'EZ%' and
not exists (select 1
from t t2
where t2.account = t.account and
(t2.asset like '7%' or t2.asset like '8%')
);
特权意图(如果您的机器人少于 100 个公会,这是一个简单的切换;如果您的机器人拥有超过 100 个公会并且经过验证,您需要申请这些,是为了保护用户隐私),以及GUILD_MEMBERS
特权意图(通过传递 GUILD_MEMBERS
传递给 new Client({...})
的对象另外,没有必要做 { ws: { intents: [ 'GUILD_MEMBERS' ] } }
,因为 `${variable}`
做同样的事情。 variable
和 `
语法仅在将变量与字符串 ${...}
(= `like${this}`
)
要获取所有公会成员,您可以:
'like' + this
请注意,出于某种原因,在我的测试中,已解决的 promise 的值不能用作有效的 <Guild>.members.fetch() // => Promise<GuildMemberManager>
,因此您应该这样做:
GuildMemberManager