Python语法错误求助:调用Telegram API时触发Invalid Syntax
问题排查与修复
核心错误点
- f-string引号冲突:原代码用双引号包裹f-string,内部又直接使用双引号(即便转义也易出错),导致Python解析时触发语法错误。
- 手动拼接JSON易出错:直接字符串拼接JSON格式的键盘,不仅容易出现引号问题,还可能因格式不规范导致Telegram API无法识别。
- requests.get语句括号不完整:原代码最后一行的
requests.get()调用缺少闭合括号,引发语法错误。
修复后的代码
import json import requests import urllib.parse msgid = 123 # 用字典构建inline键盘结构,再转为标准JSON字符串 inline_keyboard = { "inline_keyboard": [ [{"text": "Rename", "callback_data": f"/rename_link_start {msgid}"}] ] } obj = json.dumps(inline_keyboard) obj2 = urllib.parse.quote_plus(obj) # 补全括号,同时使用编码后的obj2作为reply_markup参数 hit = requests.get( f"https://api.telegram.org/bot{token}/sendMessage?chat_id={id}&text=streaam&reply_markup={obj2}" )
关键说明
- 用Python字典构建键盘结构,再通过
json.dumps()转换为标准JSON字符串,彻底避免引号冲突和格式错误。 - 必须用
urllib.parse.quote_plus()对JSON字符串做URL编码,否则特殊字符会导致API请求失败。 - 确保所有函数调用的括号完整匹配,避免低级语法错误。
内容的提问来源于stack exchange,提问作者Legend Akshay
相关产品推荐
相关产品推荐

