我的机器人遇到了一个小问题。为了开发我的机器人,我制作了一个新的开发机器人,它与我的普通机器人共享相同的代码,但它拥有自己的令牌。 但是,我在开发过程中遇到了一个小问题。
我使用此代码,以获得某些人和#39;化身:
client.users.get(event.user.uid).avatarURL
这在我的正常情况下工作正常,但是在我的Dev-Bot上我收到此错误消息:
Error getting documents TypeError: Cannot read property 'AvatarURL' of undefined
我认为这是因为我的Bot无法访问用户的头像,因为它不会与该用户共享同一个服务器/公会。
我可以使用任何解决方法吗?
答案 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权限错误),这意味着您的机器人无法获知用户的头像而无需知道用户是谁(或共享公会与用户)。快乐的编码!