You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询Telegram API Auth Key生成中N的含义及Telethon源码对应关系

关于Telegram MTProto msg_id表达式及Telethon对应实现的疑问解答

1. 表达式(unixtime() << 32) + (N*4)中N的含义

这个表达式是MTProto协议生成**消息ID(msg_id)**的核心逻辑:

  • 高32位:unixtime()取当前时间的秒级时间戳,左移32位后占据msg_id的高半段;
  • 低32位:N*4是为了保证低32位是4的倍数(MTProto协议强制要求),N本质是以4纳秒为单位的精细时间计数——既可以是当前秒内的消息递增序号(同一秒内每发一条消息N加1,低32位加4),也可以直接用当前时间的纳秒数(此时N就是纳秒数,N*4则将纳秒单位转换为4纳秒单位的数值,同时满足4的倍数要求)。

2. Telethon中nanoseconds << 2与N的对应关系

Telethon源码里的nanoseconds << 2完全对应原表达式中的N*4:

  • 这里的nanoseconds是当前秒内的纳秒偏移量(0~999,999,999),左移2位等价于乘以4;
  • 从数值对应关系看,nanoseconds就是原表达式里的N,两者都是用来生成msg_id低32位的核心值,最终目的都是生成符合MTProto要求的4的倍数低32位段。

内容的提问来源于stack exchange,提问作者Tdy Peng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 09:57:35