DiscordJS 获取用户不正确
Posted
技术标签:
【中文标题】DiscordJS 获取用户不正确【英文标题】:DiscordJS Incorrect fetch user 【发布时间】:2021-03-13 18:48:57 【问题描述】:编辑 我想我的问题可以归结为discord js有时在获取时会返回错误的用户。
client.users.fetch(args[0]).then(user => message.reply(user.id));
谁是 187548574697914368
277199585372274689
机器人返回了错误的用户。我认为它与一些奇怪的缓存问题有关,但将 force
参数设置为 true 仍然返回错误的用户。
client.users.fetch(args[0], false, true).then(...);
我不明白这个错误来自哪里。有没有办法刷新缓存,所以我可以正确获取用户?
原帖
我的机器人遇到了一个非常奇怪的问题。 有时,我不明白之后发生了什么,但是当有些人使用机器人时,他们可以切换 id。 机器人开始从 message.author.id 读取错误的值,并将一些消息解释为其他人发送的消息。当某人被“窃听”时,他的 id 总是被另一个值误读(UserA.id 将始终被读取为用户 b 的 id)我不知道用户 A 和用户 B 之间的链接是什么(用户 B 的 id 可以有时还可以,而用户A切换到用户B)
client.on('message', message =>
console.log("Message recieved : <#" + message.channel.id + "> <@" + message.author.id + "> : " + message.content);
...
);
Message recieved : #general @UserB : I'm user A
似乎这个函数是错误的来源(我不确定)
async execute(messageReaction, arg)
let users = await messageReaction.users.fetch();
console.log("Looting gift : " + users.map(user => user.username + ' '));
users.delete(messageReaction.message.client.user.id);
Doing stuff ....
await messageReaction.message.reactions.removeAll();
,
似乎机器人在某些时候损坏了缓存数据,并不断从中加载用户 ID(我不知道是否可能) 所以我尝试在函数末尾添加这个:
messageReaction.message.guild.members.fetch(users.map(user => user.id))
.catch(err => console.log('Erreur while fetching members : ' + users.map(user => user.id) + ' : \n ' + err ));
for(user of messageReaction.message.client.inventory.inventory.keys())
messageReaction.message.client.users.fetch(user).catch(err => console.log('Erreur while fetching user : ' + users.id + ' : \n ' + err ));
但问题仍然存在,我不明白为什么。到目前为止,我发现的唯一解决方案是注销机器人并重新启动它。它不是很方便,我还能做些什么来理解该错误或将其删除。
【问题讨论】:
【参考方案1】:您是否偶然将user.id
作为整数存储在您的表中?我遇到了你的帖子,因为我遇到了类似的问题,storing it as a string solved it for me.
【讨论】:
【参考方案2】:如果您在使用 .fetch()
时遇到问题,请尝试使用 .cache.get()
。例如,在您的情况下,您会执行 await client.users.cache.get(args[0])
之类的操作。
【讨论】:
以上是关于DiscordJS 获取用户不正确的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用 Discord Invite Api 的情况下让 DiscordJS Selfbot 加入服务器?
如何使用 nodeJS 和 discordJS 更改 Discord 频道名称?
Discord.js v13,@discordjs/voice 播放音乐命令