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

Telethon如何获取最新消息ID?多媒体系列帖仅取首个ID的方案验证

问题解答

你的方案是正确的,属于Telethon处理媒体专辑(多图/视频帖子)的标准实现方式,核心逻辑没有问题,下面详细说明:

方案有效性说明

Telegram的多媒体专辑帖子在Telethon中会触发两类事件:

  • events.Album:当完整的专辑发布时触发,事件对象的messages属性包含专辑内所有媒体消息的列表,取event.messages[0].id就能拿到专辑首个媒体的消息ID,完全匹配你的需求。
  • events.NewMessage:专辑里的每一条媒体都会单独触发该事件,但这些消息都带有相同的grouped_id(用于标记同属一个专辑),通过if event.grouped_id: return可以过滤掉这些重复的单条媒体消息,只处理非专辑的普通单条消息。

需要修正的细节

你的代码里两个事件处理函数用了同一个名字newMessageListener,这会导致后定义的函数覆盖前一个,运行时只会执行handle_album逻辑,建议修改为不同的函数名:

@client.on(events.NewMessage)
async def handle_single_message(event):
    if event.grouped_id:
        return
    
    message_id = event.message.id
    print(f"Received single message {message_id}")

@client.on(events.Album)
async def handle_album(event):
    message_id = event.messages[0].id
    print(f"Received album, first message id {message_id}")

额外注意事项

  • 确保Telethon版本为较新稳定版,events.Album是后续版本新增的事件,旧版本可能不支持,可通过pip install --upgrade telethon更新。
  • 若机器人需要处理频道/超级群组的帖子,需确保机器人拥有读取消息的权限,否则可能无法正常接收Album事件。

内容的提问来源于stack exchange,提问作者Test This

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 01:13:12