使用pyTelegramBotAPI发送照片报错:'Message'对象无file_id属性
解决pyTelegramBotAPI发送照片时的AttributeError问题
问题原因
接收照片消息时,Message对象本身并不直接包含file_id属性,照片的文件ID存储在message.photo列表中——这个列表里的每个元素是不同分辨率的PhotoSize对象,每个对象才拥有file_id属性。
修复后的代码
bot = telebot.TeleBot("TOKEN", parse_mode=None) @bot.message_handler(content_types=['photo']) def handle_docs_photo(message): # 确保消息中存在照片内容 if message.photo: # 取最高分辨率的照片file_id(列表最后一个元素) photo_file_id = message.photo[-1].file_id # 目标用户ID建议用整数类型,字符串也可兼容 bot.send_photo(1267203280, photo_file_id)
额外注意事项
- 确认目标用户ID
1267203280是正确的,且你的Bot已经和该用户有过对话(否则无法主动发送消息) - 如果需要发送特定分辨率的照片,可以调整
message.photo的索引,比如message.photo[0]是最低分辨率的版本
内容的提问来源于stack exchange,提问作者nima_cpp
相关产品推荐
相关产品推荐

