使用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
相关产品推荐
相关产品推荐

