我创建了一个机器人来在我的服务器中执行简单的任务。我有 3 个成员,只有我和我的朋友。
我使用 guild = client.guilds.cache.get("guildid")
获取公会对象,使用 guild.members.cache.get("userid")
获取成员对象。这对我和我的一个朋友来说很好用,但另一个没有返回。我已经三重检查了 ID 是否正确。
有谁知道为什么我的机器人检测不到他?他已经在这里几个月了,所以这不是新成员的问题。
答案 0 :(得分:1)
正如 Elitezen 提到的,原因可能是用户没有被缓存,所以你需要 fetch()
来代替。
guild.members
返回具有 GuildMemberManager 方法的 fetch()
。根据您的评论,您已经知道它返回的是承诺而不是 GuildMember,因此您需要先解决它。
您可以使用 .then()
:
const guild = client.guilds.cache.get("guildid")
guild.members.fetch("userid")
// the fetched member is available inside this "then"
.then(member => {
member.roles.add(role)
})
// log if there was an error
.catch(console.error)
或者你可以使用async/await;只需确保“父”函数是 async function:
const guild = client.guilds.cache.get("guildid")
try {
const member = await guild.members.fetch("userid")
member.roles.add(role)
} catch(err) {
console.error(err)
}