【问题标题】:Get avatar of an user in discord.js that doesn't share the same server在不共享同一服务器的 discord.js 中获取用户的头像
【发布时间】:2018-07-07 02:10:32
【问题描述】:

我的机器人有一个小问题。为了开发我的机器人,我制作了一个新的开发机器人,它与我的普通机器人共享相同的代码,但有自己的令牌。 但是,我在开发过程中遇到了一个小问题。

我用这段代码来获取某人的头像:

client.users.get(event.user.uid).avatarURL

这在我的正常情况下工作正常,但是在我的 Dev-Bot 上我收到以下错误消息:

Error getting documents TypeError: Cannot read property 'AvatarURL' of undefined

我认为这是因为我的 Bot 无法访问用户的头像,因为它不与该用户共享相同的服务器/公会。

有什么我可以使用的解决方法吗?

【问题讨论】:

  • console.log(event.user.uid)console.log(client.users) 并在此处回复。
  • 这将返回我的 ID,然后是我、Clyde 和我的 Dev-Bot 的集合。
  • 能否请edit您对输出的问题?

标签: javascript node.js discord discord.js


【解决方案1】:

由于 Discord.js 及其缓存方式,并非所有用户都会被缓存在机器人中。虽然它实际上对用户一无所知的可能性很小,但很有可能 Discord API 仍然允许您从中获取信息。

要通过缓存在最新的 master 中解决这个问题,我们必须使用 Client.users,它返回一个 UserStore。在 UserStore 中,我们可以使用一个名为 fetch 的方法来获取有关用户的信息。

为了解决这个问题在最新的稳定版中,我们必须使用一个名为 Client.fetchUser 的方法,它做同样的事情,但返回一个用户而不是用户存储。

请注意,这仅适用于机器人帐户。以下是它的用法示例:

// Using Discord.js Stable
bot.fetchUser(theUsersID).then(myUser => {
    console.log(myUser.avatarURL); // My user's avatar is here!
});

// Using Discord.js Master
bot.users.fetch(theUsersID).then(myUser => {
    console.log(myUser.avatarURL()); // My user's avatar is here!
});

如果在获取用户时出现错误(例如,DiscordAPI 权限错误),这意味着您的机器人无法在不知道用户是谁的第一名(或与用户共享公会)的情况下获取用户的头像)。编码愉快!

【讨论】:

    猜你喜欢
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多