如何通过 Telegram Bot API 在消息中发送嵌入图像和文本

Posted

技术标签:

【中文标题】如何通过 Telegram Bot API 在消息中发送嵌入图像和文本【英文标题】:How to send an Embedded Image along with text in a Message via Telegram Bot API 【发布时间】:2016-12-05 18:04:25 【问题描述】:

使用 Telegram Bot API,

我知道可以通过https://core.telegram.org/bots/api#sendphoto发送图片

但是,如何将远程图像嵌入到格式化消息中?

我希望发送的消息可以与带有粗体标题的新闻文章、图片和带有链接的较长文本进行比较。我想出了如何使用markdown创建粗体文本和链接,但我在插入图像时失败了。我们该怎么做?

【问题讨论】:

据我所知,对于您的特定文本和图像,您现在只能发送带有一些文本作为标题的图像(大约 200 个字符) 这就是我所担心的。提出功能请求的最佳方式是什么? read this 对我来说最有趣的是 IMDB 的机器人实际上会在看似文本消息的内容中加载图像和一些图标。如果成功,我将进一步调查并更新此问题。 @jhenriquez 你有没有发现 IMDB 机器人如何在短信中包含图标,或者它们只是表情符号?下面的答案给我一个错误telegram.ext.dispatcher - WARNING - A TelegramError was raised while processing the Update.(使用v.6.0.3) 【参考方案1】:

您必须在 html 中设置 ParseMode 并在 A 标记中设置您的 Image Url,如下所示:

<a href="' + image + '">&#8205;</a>

&amp;#8205; -> 从不显示在消息中

【讨论】:

你也必须设置disable_web_page_preview=false image 可以是本地照片还是必须是 URL?【参考方案2】:

您可以使用零宽度空间技巧。适用于 Markdown 和 HTML 解析模式。

降价:

$data = [
    'chat_id'    => $chat_id,
    'parse_mode' => 'markdown',
    'text' => "[​​​​​​​​​​​](https://upload.wikimedia.org/wikipedia/commons/thumb/0/02/Stack_Overflow_logo.svg/200px-Stack_Overflow_logo.svg.png) Some text here.",
];

结果:

注意:括号“[​​​​​​​​​​​]”之间的宽度为零。

【讨论】:

这与我尝试的所有其他方法一样,只要 disable_web_page_preview=false 就可以工作。 java中宽度为零的括号是“[\u200B]”【参考方案3】:
import requests    
text="testing"    
img="http://imageurl.png"       
r = requests.get('https://api.telegram.org/botyour_token_here/sendMessage?chat_id=@your_channel_here&parse_mode=markdown&text='+"[​​​​​​​​​​​]("+img+")"+text)

【讨论】:

【参考方案4】:

使用 http://.......jpg>.. 的方法将在文本下方显示图像的预览。 像这样:

a href sample

如果您发送带有标题的图片会更好看。

caption sample

【讨论】:

在您的“标题示例”示例中,一条消息中是否有多个图像?你能告诉我你是怎么做到的吗? 哦,3 幅肖像看起来令人困惑 :-) 抱歉!两个样本都使用一个图像。但两者都是图像和文本的组合。【参考方案5】:

你应该只添加字幕

bot.send_video(user_id, video, caption='some interesting text')

在我们的例子中,标题是文本。 look this image

【讨论】:

以上是关于如何通过 Telegram Bot API 在消息中发送嵌入图像和文本的主要内容,如果未能解决你的问题,请参考以下文章

Telegram Bot API:缺少语音消息音频频谱图。一个错误?

Telegram 通过 bot api 将成员添加到频道

找出我自己的用户 ID 以使用 Telegram API 发送消息

Telegram bot api:错误代码 429,错误:请求太多:稍后重试

getUpdates Telegram bot API 中忽略的偏移量参数

如何使用 Telegram Bot API 获取 Telegram 频道用户列表