提问人:Ruri 提问时间:11/8/2023 最后编辑:SkullyRuri 更新时间:11/17/2023 访问量:109
Discord 客户端的搜索时间戳
Discord Client's Search Timestamp
问:
我正在向 Discord 的 API 发出一个简单的 HTTP 请求,以检索公会内的消息:
https://discord.com/api/v9/guilds/<guildId>/messages/search
这个端点是由实际的客户端使用的,而不是机器人,所以我无法弄清楚他们在日期参数中使用了什么样的时间戳,这些参数是 和 。这些值是数字的,它们似乎不是纪元。min_id
max_id
重新创建的步骤:
- 使用任何常规用户帐户登录 Discord
- 转到任何文本频道(私信、群组、公会频道)
- 打开开发者工具,然后转到“网络”选项卡
- 使用搜索框查找正在发送的 HTTP 请求以检索消息(
之前
、之后
、期间
)
您可以看到 API 请求包含参数,当所选选项为 时,或者当选项为 时,或者两者兼而有之。channel_id
min_id
after
max_id
before
最小值/最大值是消息 ID 中的时间戳范围。此信息不在文档中,因此我正在寻找有关这些值的澄清,以便在我自己的项目中使用它们与 API 交互。
答:
实际 Discord 客户端使用的时间戳是 Discord Epoch 时间戳,该时间戳类似于普通的 unix 时间戳,只是它从 2015 年 1 月 1 日开始或包括毫秒。1420070400000
所有 Discord 消息(以及其他需要唯一标识符的对象)都使用 Snowflakes 为消息创建时生成 (ISO8601):DateTime
Discord 确实提供了一个示例,说明如何生成您在 Discord 客户端的文档请求中看到的雪花 ID:
(timestamp_ms - DISCORD_EPOCH) << 22
您可能还对他们的文档感兴趣,该文档概述了他们如何将雪花与分页结合使用,以检索带有您看到的 and 参数的消息:before
after
我们通常在许多 API 路由中使用雪花 ID 进行分页。我们使用的标准化分页范式是您可以指定 ID 并结合使用来检索所需的结果页面的范例。有关详细信息,您需要参考特定的端点文档。
before
after
limit
需要注意的是,雪花 ID 只是带有时间戳的数字,因此在处理分页时,您希望从时间开始(在 Discord Epoch 中,但在这里也有效)或特定时间之前/之后的结果,您可以为该时间生成雪花 ID。
0
下一个:检查日期是否超过 6 个月
评论