2 回答
TA贡献1802条经验 获得超5个赞
您可以使用 Discord API。
首先,在此处创建一个 Discord 应用程序。完成此操作后,单击侧边栏上的“机器人”并为该应用程序创建一个机器人。在那里,您将在机器人用户名下看到一个名为“令牌”的部分。复制此内容并将其存储在安全的地方。切勿分享您的令牌,这一点很重要。如果这样做,您应该重新生成它以防止滥用。
然后,您可以使用获取用户端点 ( /users/{user.id}/
) 来检索用户的 ID。这应该由后端完成,因为它涉及使用机器人令牌进行身份验证。
直接使用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 库来执行此操作。以下示例还处理速率限制。
@discordjs/rest + Discord-api-类型
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>
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.jsUser
对象。
添加回答
举报