您可以使用 Discord API。
首先,创建一个 Discord 应用程序here。完成后,单击侧边栏上的“机器人”并为该应用程序创建一个机器人。在那里,您会在机器人用户名下看到一个名为“令牌”的部分。复制它并将其存储在安全的地方。 切勿分享您的令牌,这一点很重要。如果这样做,您应该重新生成它以防止滥用。
然后,您可以使用 Get User 端点 (/users/{user.id}/) 检索用户的 ID。这应该由后端完成,因为它涉及authenticating with the bot token。
直接使用 API
这是一个最小示例,说明如何使用 Node.js 使用 Discord API 通过用户 ID 获取用户:
const fetch = require('node-fetch')
// You might want to store this in an environment variable or something
const token = 'YOUR_TOKEN'
const fetchUser = async id => {
const response = await fetch(`https://discord.com/api/v9/users/${id}`, {
headers: {
Authorization: `Bot ${token}`
}
})
if (!response.ok) throw new Error(`Error status code: ${response.status}`)
return JSON.parse(await response.json())
}
响应会是这样的:
{
"id": "123456789012345678",
"username": "some username",
"avatar": null,
"discriminator": "1234",
"public_flags": 0,
"banner": null,
"banner_color": null,
"accent_color": null
}
使用库
或者,您也可以使用 Discord 库来代替。以下示例还处理速率限制。
const {REST} = require('@discordjs/rest')
const {Routes} = require('discord-api-types/v9')
const token = 'YOUR_TOKEN'
const rest = new REST().setToken(token)
const fetchUser = async id => rest.get(Routes.user(id))
结果将是与上述相同的 JSON。
对于 TypeScript 用户:
import type {RESTGetAPIUserResult, Snowflake} from 'discord-api-types/v9'
const fetchUser = async (id: Snowflake): Promise<RESTGetAPIUserResult> =>
rest.get(Routes.user(id)) as Promise<RESTGetAPIUserResult>
当我第一次发布这个答案时,@discordjs/rest 还不存在。
const {Client} = require('discord.js')
const token = 'YOUR_TOKEN'
const client = new Client({intents: []})
client.token = token
const fetchUser = async id => client.users.fetch(id)
fetchUser 的结果将是一个 discord.js User 对象。