Python开发Telegram机器人:如何实现图片与对应文案匹配发送?
Telegram机器人:图片与对应文案不匹配问题修复
问题分析
你的代码中,每次循环都将整个caps列表赋值给caption字段,但Telegram Bot API的caption参数需要单个字符串而非列表。API会自动把列表转换成默认字符串形式(比如['1', '2', '3']),这就导致所有图片都显示同一个“文案”。
修复方案
需要同时遍历图片URL列表和文案列表,让每一张图片对应索引相同的文案。可以用Python的zip()函数配对两个列表的元素,确保每次循环取到一组对应的图片和文案。
修改后的代码
import requests import time base_url = "https://api.telegram.org/botnotgoingtodisplayforsafety/sendPhoto" urls = [ "https://cdn.mos.cms.futurecdn.net/ASHH5bDmsp6wnK6mEfZdcU.jpg", "https://hips.hearstapps.com/hmg-prod/images/small-fluffy-dog-breeds-maltipoo-66300ad363389.jpg?crop=0.668xw:1.00xh;0.151xw,0&resize=640:*", "https://media-cldnry.s-nbcnews.com/image/upload/t_fit-760w,f_auto,q_auto:best/streams/2013/May/130522/6C7536084-g-hlt-120105-puppy-423p.jpg" ] caps = ["1", "2", "3"] # 用zip配对urls和caps的对应元素 for url, cap in zip(urls, caps): time.sleep(1) parameters = { "chat_id": "-notgoingtodisplayforsafety", "photo": url, "caption": cap # 取当前配对的文案字符串 } resp = requests.get(base_url, data=parameters) print(resp.text)
关键修改点
- 使用
zip(urls, caps)同时遍历两个列表,每次循环拿到一组对应的图片URL和文案 - 将
caption的值从整个列表caps改为当前循环的单个文案cap
内容的提问来源于stack exchange,提问作者Kunigami
相关产品推荐
相关产品推荐

