使用aiogram3通过Telegram企业模式发布Story图片上传失败
解决aiogram3企业模式发布Story的文件上传错误
问题场景
基于aiogram3开发Telegram企业机器人,尝试发布Story时触发错误:
aiogram.exceptions.TelegramBadRequest: Telegram server says - Bad Request: story photo must be uploaded as a file
使用的图片分辨率为1080x1920,符合Telegram官方要求。先后尝试两种传参方式均未解决:
- 使用
attach://a.jpg关联本地文件 - 直接将
FSInputFile传入InputStoryContentPhoto
解决方案
方案1:直接传入文件对象
无需使用attach语法,直接将FSInputFile实例传给InputStoryContentPhoto的photo参数:
photo = FSInputFile("./a.jpg", filename="a.jpg") content = InputStoryContentPhoto(photo=photo) await callback.bot.post_story( business_connection_id=user["business_connection_id"], content=content, active_period=86400, post_to_chat_page=True )
方案2:使用attach语法并指定文件附件
若坚持使用attach关联,需在post_story方法中额外传入files参数,将文件对象与关联名绑定:
photo = FSInputFile("./a.jpg", filename="a.jpg") content = InputStoryContentPhoto(photo="attach://a.jpg") await callback.bot.post_story( business_connection_id=user["business_connection_id"], content=content, active_period=86400, post_to_chat_page=True, files={"a.jpg": photo} )
说明
两种方案核心都是确保Telegram服务器能正确识别并接收本地文件。方案1更简洁,推荐优先使用;方案2适合需同时上传多个文件的场景。
内容的提问来源于stack exchange,提问作者chumazik
相关产品推荐
相关产品推荐

