如何使用Python的telebot转发带说明文字的图片至群组
用Python+telebot实现带说明文字的图片消息转发到指定群组
核心实现步骤
要完成带说明文字的图片转发,只需给机器人新增图片消息的处理逻辑,具体分为三步:
- 注册图片消息处理器,捕获用户发送的带说明的图片消息
- 提取图片的文件ID和附带的说明文字(caption)
- 调用telebot接口将消息转发或重新发送到指定群组
完整代码示例
import telebot # 替换为你的机器人Token BOT_TOKEN = "你的机器人Token" # 替换为目标群组的数字ID(超级群组/频道ID以-开头) TARGET_GROUP_ID = -1001234567890 bot = telebot.TeleBot(BOT_TOKEN) # 保留原有纯文本消息转发功能 @bot.message_handler(content_types=["text"]) def forward_text(message): bot.forward_message(TARGET_GROUP_ID, message.chat.id, message.message_id) # 新增带说明文字的图片消息处理逻辑 @bot.message_handler(content_types=["photo"]) def forward_photo_with_caption(message): # 获取最高分辨率的图片文件ID(photo数组最后一个元素对应最高清版本) high_res_photo_id = message.photo[-1].file_id # 获取图片附带的说明文字,无说明则为空字符串 photo_caption = message.caption or "" # 方式1:直接转发原消息(保留原发送者信息和所有消息属性) bot.forward_message( chat_id=TARGET_GROUP_ID, from_chat_id=message.chat.id, message_id=message.message_id ) # 方式2:重新发送图片+说明文字(机器人作为发送者,可修改caption) # bot.send_photo( # chat_id=TARGET_GROUP_ID, # photo=high_res_photo_id, # caption=photo_caption # ) # 启动机器人 bot.polling(none_stop=True)
关键细节说明
- 消息类型捕获:通过
content_types=["photo"]指定处理器只响应图片消息 - 图片资源选择:
message.photo是包含不同分辨率图片对象的列表,取最后一个元素可获得最高清的图片 - 说明文字处理:
message.caption对应图片附带的文字,需处理为空的场景 - 两种转发方式区别:
forward_message:直接转发原消息,保留原发送者信息(需群组权限允许)send_photo:由机器人重新发送图片和说明,支持修改caption内容
- 群组ID获取:可调用
bot.get_updates()接口,或使用Telegram ID查询工具获取目标群组的数字ID
内容的提问来源于stack exchange,提问作者miraculous_guru
相关产品推荐
相关产品推荐

