如何使用pyTelegramBotAPI发送同时带链接与图片的Telegram消息
问题根因
你当前的实现是依赖Telegram的网页预览机制显示图片,而Telegram单条文本消息仅会对第一个可被解析的公开链接生成网页预览,你代码中先拼接了bit.ly短链接,后置的图片链接自然不会被识别生成预览,就出现了看不到图片的问题。
解决方法
有两种可行方案:
方案1:调整链接拼接顺序(最小改动)
把图片链接的拼接逻辑放到所有普通链接之前,让Telegram优先识别图片链接生成预览,修改后对应代码片段如下:
# 先拼接图片链接,放在最前面(零宽字符保留不要删除) tg_message_to_send = "<a href='https://www.collinsdictionary.com/images/thumb/tree_267376982_250.jpg?version=4.0.200'>‍</a>" tg_message_to_send += "Title\n\n" tg_message_to_send += "🔺Other text: €\n" tg_message_to_send += "🏷Text #2: €\n" tg_message_to_send += "Text #3 %\n\n" tg_message_to_send += "► https://bit.ly/dsfini"
send_message方法的disable_web_page_preview参数保持为False即可正常生成图片预览。
方案2:使用send_photo方法发送(更稳定,推荐)
直接调用官方提供的图片发送接口,将图片作为独立媒体附件发送,文字内容放在caption参数中,完全不受文字内链接的影响,修改后的完整代码如下:
import telebot from telebot import types TOKEN = '' bot = telebot.TeleBot(TOKEN) tg_markup = types.InlineKeyboardMarkup(row_width=2) tg_itembtn1 = types.InlineKeyboardButton("👉 GO 👈", url='http://google.it') tg_markup.add(tg_itembtn1) # 文字内容直接写在caption参数中,不需要额外加隐藏的图片链接 tg_caption = "Title\n\n" tg_caption += "🔺Other text: €\n" tg_caption += "🏷Text #2: €\n" tg_caption += "Text #3 %\n\n" tg_caption += "► https://bit.ly/dsfini" bot.send_photo( chat_id='CHAT_ID_HERE', photo='https://www.collinsdictionary.com/images/thumb/tree_267376982_250.jpg?version=4.0.200', caption=tg_caption, parse_mode='HTML', reply_markup=tg_markup )
内容的提问来源于stack exchange,提问作者Floppy88
相关产品推荐
相关产品推荐

