【发布时间】:2021-07-27 02:03:34
【问题描述】:
直截了当地说,我从来没有这么困惑过...这个命令被设计得简单易行,正是直到这个问题。
当在 discord ex 上获取一个名字时,它工作得很好,但是当它遇到像我这样较长的 id 时,它只会在最后抛出 3 个随机数
例如:我的实际推特 ID (1054084643346137089) |我的机器人显示的内容 (1054084643346137100)
如您所见,它只是为最后 3 个抛出随机数
您可以在 https://tweeterid.com/ 上自行测试
代码-
const Discord = require("discord.js");
const request = require("node-superfetch");
const { stripIndents } = require("common-tags");
const bearer =
""; // empty only for this
module.exports = {
name: "twit",
aliases: ["twitter", "twitid"],
description: "This command allows admins to grab twitter user ids.",
/**
* @param {Client} client
* @param {Message} message
* @param {String[]} args
*/
run: async (client, message, args) => {
const username = args[0];
if (!username)
return message.channel.send("You must provide a username to search for.");
try {
const { body } = await request
.get("https://api.twitter.com/1.1/users/show.json")
.set({ Authorization: `Bearer ${bearer}` })
.query({ screen_name: username });
message.channel.send(
`Twitter ID For ${username}: http://www.twitter.com/I/user/${body.id}`
);
} catch (error) {
if (error.status === 403)
return message.channel.send(
"This user either went private or deactivated their account."
);
else if (error.status === 404)
return message.channel.send("Couldn't find this user.");
else return message.channel.send(`Unknown Error: ${error.message}`);
}
},
};
【问题讨论】:
-
您有什么问题吗?
-
请不要在外部网站上托管您的代码,而是编辑您的问题以将您的代码包含为Minimal, Reproducible Example。外部链接往往会改变/破坏您问题的未来访问者的价值。
-
更重要的是,听起来您的代码在某种程度上将此标识符转换为其整数表示形式,并且您遇到了精度问题,因为结果整数超过了
MAX_SAFE_INTEGER。不要将其转换为代码中任何位置的int,并将其保留为字符串 -
我该怎么做呢?大多数标准 ID 现在超过 16 个字符
-
使用字符串而不是数字来存储ID
标签: node.js twitter discord discord.js