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

使用Pyrogram发送频道Story图片遇[400 FILE_REFERENCE_EXPIRED]错误求助

Pyrogram获取Telegram Story图片遇FILE_REFERENCE_EXPIRED错误的解决办法

你遇到的FILE_REFERENCE_EXPIRED错误,核心原因是直接使用story.photo.file_id时,这个ID包含的文件引用已过期。Telegram的文件引用存在有效期,单独提取file_id会丢失最新的有效引用信息。

解决方法

不要单独传递file_id,直接使用Story返回的完整Photo对象给send_photo方法,Pyrogram会自动处理其中的有效文件引用。同时要确保获取的是最新的Story对象,避免使用缓存的旧数据。

修改后的代码

app.start()
# 获取最新1条自己的Story,注意get_stories返回的是列表,需取第一个元素
stories = app.get_stories("me", limit=1)
if stories:
    story = stories[0]
    if story.photo:
        # 发送Story链接
        link_story = app.export_story_link("me", story.id)
        app.send_message("me", link_story.link)
        # 直接传递Photo对象,而非单独的file_id
        app.send_photo(chat_id="me", photo=story.photo)
app.stop()

补充说明

  • 原代码中story = app.get_stories("me", 1)存在错误:get_stories的第二个参数是limit,返回的是Story对象列表,需要通过索引[0]获取具体的Story实例。
  • 直接使用媒体对象(如story.photo)时,Pyrogram会自动携带当前有效的文件引用,从根源避免过期问题。如果必须使用file_id,则需每次从最新的Story/消息对象中提取,不能复用之前保存的旧file_id。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 20:56:05