如何通过 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 + '">‍</a>
&#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:缺少语音消息音频频谱图。一个错误?
找出我自己的用户 ID 以使用 Telegram API 发送消息
Telegram bot api:错误代码 429,错误:请求太多:稍后重试