如何用Bash的curl向Telegram单条消息发送带多行格式化文本的图片
解决Telegram sendPhoto接口多行caption换行及格式化问题
问题根源在于请求格式的差异:sendMessage用-d参数时采用application/x-www-form-urlencoded格式,需要用%0A作为URL编码的换行符;但sendPhoto用-F参数时是multipart/form-data格式,直接使用原始换行符即可,无需URL编码。
以下是Ubuntu 22.04.3 LTS环境下的可行curl命令示例:
示例1:使用转义换行符\n
curl -X POST "https://api.telegram.org/botXXXXX/sendPhoto" \ -F chat_id=YYYY \ -F photo=@"path_to_photo.jpg" \ -F caption='<b>加粗的第一行</b>\n第二行普通文本\n第三行带<i>斜体</i>的内容' \ -F parse_mode="HTML"
示例2:直接输入换行(shell原生支持)
curl -X POST "https://api.telegram.org/botXXXXX/sendPhoto" \ -F chat_id=YYYY \ -F photo=@"path_to_photo.jpg" \ -F caption='<b>加粗的第一行</b> 第二行普通文本 第三行带<i>斜体</i>的内容' \ -F parse_mode="HTML"
注意事项
- 替换命令中的
XXXXX为你的机器人Token,YYYY为目标聊天ID,path_to_photo.jpg为本地图片的实际路径 parse_mode="HTML"会正常解析caption中的HTML标签,实现文本格式化效果
内容的提问来源于stack exchange,提问作者Benno
相关产品推荐
相关产品推荐

