获取discord.js中没有共享同一服务器的用户的头像

时间:2018-01-28 05:06:23

标签: javascript node.js discord discord.js

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

我使用此代码,以获得某些人和#39;化身:

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

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

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

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

我可以使用任何解决方法吗?

1 个答案:

答案 0 :(得分:1)

由于Discord.js及其缓存方式,并非所有用户都将被缓存在僵尸程序中。虽然它实际上不了解用户的可能性很小,但Discord API很可能仍然允许您从中获取信息。

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

要解决此问题在最新的稳定版中,我们必须使用名为Client。fetchUser的方法,它执行相同的操作但返回User而不是UserStore。

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

// 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权限错误),这意味着您的机器人无法获知用户的头像而无需知道用户是谁(或共享公会与用户)。快乐的编码!