如何在Python Telegram Bot API中获取图片附带的描述文本?
问题原因
- 带配文的图片消息,配文内容不会存储在
message.text字段中,而是存储在**message.caption**字段 - 触发TypeError的原因:消息类型为图片时
message.text为None,执行'#тренировка' in None会直接抛出类型错误 message.photo数组本身仅存储图片的不同分辨率规格、文件ID等元数据,不会包含配文内容
修复方案
修改判断逻辑,同时兼容纯文本和带配文的图片消息,统一匹配标签即可:
from telebot import * from config import bot from tasks.sport import sport @bot.message_handler(content_types=['photo', 'text']) def sport_photo(message): try: # 优先取纯文本内容,图片消息则取配文 content = message.text if message.text is not None else message.caption # 统一转小写匹配,无需重复写大小写两种标签 if content and '#тренировка' in content.lower(): sport(message) except TypeError as e: print(f"报错信息:{e}")
修改后即可正常识别带#тренировка标签的纯文本、带配文的图片消息。
内容的提问来源于stack exchange,提问作者ChastyEsc
相关产品推荐
相关产品推荐

