如何在不和谐的 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 的用户的主要内容,如果未能解决你的问题,请参考以下文章