KMF*_*MFR 7 python bots telegram python-telegram-bot telegram-bot
我希望我的 Telegram 机器人将 URL 发送到频道。但是,该 url 包含“&”字符,该字符会缩短尝试发送的消息。Telegram API 文档说我需要使用 & (没有空格)来替换 & 但要么我不明白某些东西,要么它不起作用。
这就是我正在做的:
requests.get("https://api.telegram.org/"+botID+"/sendMessage?chat_id="+chatid+"&text="+movieSearch+"&parse_mode=HTML")
Run Code Online (Sandbox Code Playgroud)
movieSearch 是:
movieSearch = ("https://www.imdb.com/search/title?release_date="+year+"-01-01,2018-12-31&user_rating="+score+",&genres="+genres)
Run Code Online (Sandbox Code Playgroud)
您可以看到,在 movieSearch 中,release_date 之后有 &user_ rating=... 等等。但是,机器人只会在 & 字符之前发送 URL(因此直到“2018-12-31”)。
我尝试将 & 替换为 & amp; 但它仍然不会发送整个 URL。我尝试过不使用 parse_mode=HTML 但它也不起作用。
代替:
requests.get("https://api.telegram.org/"+botID+"/sendMessage?chat_id="
+chatid+"&text="+movieSearch+"&parse_mode=HTML")
Run Code Online (Sandbox Code Playgroud)
做这个:
params = {
"chat_id": chatid,
"text": movieSearch,
"parse_mode": "HTML",
}
requests.get(
"https://api.telegram.org/{}/sendMessage".format(botID),
params=params
)
Run Code Online (Sandbox Code Playgroud)
我认为问题的发生是因为您&在 URL 中具有“text”参数的值,但没有将其转义为%26. 最好使用字典,让requests库为你转义。你仍然需要逃避&as &:
movieSearch = "https://www.imdb.com/search/title?release_date={}"
"-01-01,2018-12-31&user_rating={}&genres={}".format(
year, score, genres)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10650 次 |
| 最近记录: |