如何在不和谐的 client.users.get 函数中检索没有硬编码 ID 的用户

Posted

技术标签:

【中文标题】如何在不和谐的 client.users.get 函数中检索没有硬编码 ID 的用户【英文标题】:How to retrieve user without hardcoding ID in discord client.users.get function 【发布时间】:2019-10-05 16:10:49 【问题描述】:

我希望我的 discord 机器人在服务器上的另一个用户想要加入他们的团队时向用户(队长)发送消息。 我将船长的 DiscordID 存储在我的 SQLite 数据库中,并且可以检索它。问题是当我将此变量作为参数传递给 client.users.get() 方法时,它返回未定义。我尝试将 DiscordID 转换为字符串,但它仍然返回未定义。当我对 DiscordID 进行硬编码时,它工作正常。

我对 discord.js 不是很有经验,所以我希望这只是一个可以快速解决的小问题。或者这是否有意避免机器人在不直接接收用户消息的情况下向用户发送消息?

const client = new Discord.Client();
client.users.get('12345'); <-- This returns the user object

const capt = 12345;
client.users.get(capt); <-- returns undefined

const capt = 12345;
const captString = capt.toString();
client.users.get(captString); <-- returns undefined

【问题讨论】:

必须使用字符串。尽管toString() 应该按预期工作,但请使用模板文字进行测试:client.users.get(`$capt`) 感谢您的建议,虽然这也不起作用! 字符串中有多少个数字? 将 DiscordID 存储为字符串解决了这个问题 :) 如果您解决了您的问题,请使用答案旁边的绿色勾号将问题标记为已解决 【参考方案1】:

Discord ID 需要存储为字符串,因为这个数字对于 Node.js 来说太大并且会被四舍五入。通过检查Number.MAX_SAFE_INTEGER,您会发现它少于 18 位,因此无法正确存储 ID。

不好:189855563893571595好:'189855563893571595'

【讨论】:

以上是关于如何在不和谐的 client.users.get 函数中检索没有硬编码 ID 的用户的主要内容,如果未能解决你的问题,请参考以下文章

如何在不和谐上发送私人消息[关闭]

如何检查用户是不是在不和谐中扮演角色

我如何在不和谐中 ping 某人

如何在不和谐 js 中使用消息获取?

如何在不和谐的服务器(js)中删除所有频道

如何在不和谐中制作乒乓球机器人