为了账号安全,请及时绑定邮箱和手机立即绑定

Discord:通过 ID 获取用户

Discord:通过 ID 获取用户

潇潇雨雨 2023-08-18 10:15:06
我正在尝试创建一个 Web 应用程序来管理我的 Discord 服务器的用户。在我的数据库中,我只存储了用户的 ID。我尝试使用discord.js API,但据我了解,它需要一个discord 机器人才能做到这一点。那不是我想要的。我想从我的前端检索用户的信息,甚至通过调用后端函数,但没有始终在线的不和谐机器人。换句话说,我需要一些更简单的东西。我想仅使用 id 来请求用户信息。在 JavaScript 中执行此操作的最佳方法是什么?
查看完整描述

2 回答

?
12345678_0001

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对象。



查看完整回答
反对 回复 2023-08-18
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

你可以做的就是

let user = message.guild.cache.get('id');

(由@cherryblossom修改)


查看完整回答
反对 回复 2023-08-18
  • 2 回答
  • 0 关注
  • 143 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信