机器人找不到我的公会成员之一

时间:2021-03-12 15:35:03

标签: javascript node.js discord.js

我创建了一个机器人来在我的服务器中执行简单的任务。我有 3 个成员,只有我和我的朋友。

我使用 guild = client.guilds.cache.get("guildid") 获取公会对象,使用 guild.members.cache.get("userid") 获取成员对象。这对我和我的一个朋友来说很好用,但另一个没有返回。我已经三重检查了 ID 是否正确。

有谁知道为什么我的机器人检测不到他?他已经在这里几个月了,所以这不是新成员的问题。

1 个答案:

答案 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)
}