关于Discord客户端搜索API中min_id与max_id时间戳格式的问询
Discord Guild消息搜索API的min_id/max_id时间戳格式说明
这个https://discord.com/api/v9/guilds/<guildId>/messages/search端点是Discord官方客户端专属接口,不对外开放给机器人使用。你遇到的min_id和max_id参数数值,本质是Discord雪花ID的时间戳部分,并非标准Unix纪元(epoch)时间戳,具体规则如下:
核心格式规则
Discord的所有对象ID(包括消息ID)都采用雪花ID结构,其中前42位是时间戳:
- 该时间戳以2015年1月1日00:00:00 UTC为纪元起点,单位是毫秒
min_id/max_id就是对应时间点的雪花ID时间戳部分直接转成的十进制数值
时间转换方法
如果你需要生成指定时间的min_id/max_id:
- 先获取目标时间的Unix毫秒时间戳(从1970-01-01 UTC开始的毫秒数)
- 减去
1420070400000(这是2015-01-01 UTC对应的Unix毫秒时间戳) - 得到的结果就是可以直接传入的
min_id/max_id数值
反过来,解析已有的min_id/max_id到常规时间:
- 将数值加上
1420070400000,得到标准Unix毫秒时间戳 - 再转换为你需要的时间格式即可
参数对应逻辑
- 选择
after选项时,min_id限定返回发送时间晚于对应时间点的消息 - 选择
before选项时,max_id限定返回发送时间早于对应时间点的消息 - 选择
during选项时,min_id和max_id共同限定消息的发送时间范围
内容的提问来源于stack exchange,提问作者Ruri
相关产品推荐
相关产品推荐

