如何解决Telegram机器人回复图片时报Photo_invalid_dimensions错误
Telegram机器人回复图片报错解决方法
1. 修复图片读取模式错误
你当前使用文本模式r读取二进制图片文件,会导致文件内容损坏,Telegram服务端无法解析有效图片信息,是触发Photo_invalid_dimensions错误的核心原因。将读取模式修改为二进制模式rb即可:
修改对应代码行:
# 原错误代码 # update.message.reply_photo(open('df.png', 'r')) # 修正后代码 update.message.reply_photo(open('df.png', 'rb'))
更推荐使用上下文管理器自动关闭文件,避免资源泄漏:
if text_received == "12345": with open('df.png', 'rb') as img_file: update.message.reply_photo(img_file)
2. 补全缺失的处理函数
你当前代码中注册的start、help命令处理器和error错误处理器没有实现,运行时会抛出未定义错误,需要补充基础实现:
def start(update, context): update.message.reply_text('你好!发送12345即可获取指定图片') def help(update, context): update.message.reply_text('功能说明:发送12345获取指定图片,其他消息会被回显') def error(update, context): print(f"更新 {update} 触发错误:{context.error}")
3. 检查图片合规性
如果修改后仍然报错,确认你使用的df.png符合Telegram平台要求:
- 图片宽高比处于1:20到20:1区间内
- 文件大小不超过10MB
- 文件没有损坏,且路径与脚本运行的工作目录匹配
内容的提问来源于stack exchange,提问作者A.Rahman Mahmoud
相关产品推荐
相关产品推荐

