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

如何通过Telethon检测并获取Telegram频道的编辑消息?

捕获Telegram频道中编辑后的消息

要获取频道中被编辑的消息,你只需在现有代码基础上添加events.MessageEdited事件的监听处理器,和处理新消息的逻辑类似,就能捕获到消息编辑事件并更新本地存储的内容。

修改后的完整代码

from telethon import events

# 提取重复的消息保存逻辑为单独函数,避免代码冗余
async def save_message(event):
    print("============================")
    msg_id = event.id
    texts = event.text or ""  # 处理消息编辑后文本为空的情况
    raw_text = texts.replace('[🔗','🔗[')
    file_name = str(msg_id) + '.tlmsg'
    
    # 处理媒体(如果编辑后媒体有变化也会重新下载覆盖)
    if event.photo:
        media_name = f"media/{msg_id}.jpg"
        print(f"Media saved/updated on {media_name}")
        await event.download_media(media_name)
    
    print(raw_text)
    # 覆盖写入原文件,实现编辑后内容的更新
    with open(f"message/{file_name}", "w", encoding="utf-8") as f:
        f.write(raw_text)

# 监听新消息
@client.on(events.NewMessage)
async def handle_new_message(event):
    await save_message(event)

# 监听编辑后的消息
@client.on(events.MessageEdited)
async def handle_edited_message(event):
    await save_message(event)

关键说明

  • events.MessageEdited事件会在任何消息被编辑时触发,不管编辑者是频道管理员还是其他有权限的用户,完全满足你捕获频道中他人编辑消息的需求。
  • 将消息保存逻辑抽成save_message函数,既减少代码重复,也方便后续统一修改逻辑。
  • 编辑消息时,消息ID不会改变,用原文件名覆盖写入即可直接更新本地存储的内容;如果编辑后媒体(比如图片)有变化,也会重新下载覆盖原文件。
  • 添加texts = event.text or ""是为了避免消息编辑后文本为空时出现AttributeError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 20:12:16