如何使用requests库调用Telegram接口发送带#号标签的消息?
问题解决方案
错误原因
- 手动拼接URL查询参数时,
#属于URL特殊锚点分隔符,会导致#后的内容无法被提交到Telegram服务端,触发接口报错 - 手动替换
#为%23后直接拼接URL,会被requests自动做二次转义,最终Telegram收到的是二次转义后的内容,显示出来就是%23Hello
正确实现
不要手动拼接查询参数,直接使用requests内置的params参数自动完成标准化URL编码,代码如下:
import requests def sendMsg(text): token = BOT_TOKEN chat_id = CHANNEL_ID params = { "chat_id": chat_id, "text": text } requests.get(f"https://api.telegram.org/bot{token}/sendMessage", params=params) # 直接传入带#的原文即可正常发送 sendMsg('#Hello')
该方案中requests会自动把#转义为%23提交给接口,Telegram收到后会自动解析回#,既能正常发送不会报错,也能正确显示标签效果。
内容的提问来源于stack exchange,提问作者Mr. AMI
相关产品推荐
相关产品推荐

