You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 17:15:11