TelegramBot sendMessage inline_keyboard
TelegramBot sendMessage with inline_keyboard
我正在尝试在没有第三方库和机器人的情况下创建消息。
正常消息发送成功。
但是如果我添加 inline_keyboard,我会收到错误响应。
要求:
def pushMsg(self, url, id_chat, id_message):
jsKeyboards = {
'inline_keyboard': [
[{ 'text': 'BOOM', 'callback_data': 'click_113' }],
[{ 'text': 'DEAD', 'callback_data': 'click_119' }]
]
}
params = {'reply_markup': str(jsKeyboards), 'reply_to_message_id': id_message }
self.sendMessage(url, id_chat, "TEST", params)
def sendMessage(self, url, chat_id, text, params):
URL_FULL = url + '/' + "sendMessage?chat_id=" + str(chat_id) + "&text=" + str(text)
print("sendMessage: " + URL_FULL)
return self.postUrl(URL_FULL, params)
def postUrl(self, urlFull, params):
print('urlFull: ' + urlFull + ' params: ' + str(params))
try:
req = requests.post(urlFull, proxies=self.proxies, data=params)
except requests.exceptions.RequestException as e:
print("error: " + str(e))
except:
print('Except requests')
return {}
json = req.json()
if not req.status_code == 200:
print("status_code: " + str(req.status_code) + "; body: " + str(json))
return {}
if not req.json()['ok']:
print("body: " + str(json))
return {}
return json
答案:
{
'ok': False,
'error_code': 400,
'description': "Bad Request: can't parse reply keyboard markup JSON object"
}
参数有什么问题?
您似乎无法使用 URL 发送内联键盘。
我强烈建议您使用 pyTelegramBotAPI。它真的很容易学习,可以让你创造出惊人的东西。我创建的一个机器人显示文件夹中的文件并可以将它们发送给我。
str(jsData) != json.dumps(jsData, separators=(',',':'))
结果:
params = {'reply_markup': json.dumps(jsKeyboards, separators=(',',':')) }
我正在尝试在没有第三方库和机器人的情况下创建消息。 正常消息发送成功。 但是如果我添加 inline_keyboard,我会收到错误响应。 要求:
def pushMsg(self, url, id_chat, id_message):
jsKeyboards = {
'inline_keyboard': [
[{ 'text': 'BOOM', 'callback_data': 'click_113' }],
[{ 'text': 'DEAD', 'callback_data': 'click_119' }]
]
}
params = {'reply_markup': str(jsKeyboards), 'reply_to_message_id': id_message }
self.sendMessage(url, id_chat, "TEST", params)
def sendMessage(self, url, chat_id, text, params):
URL_FULL = url + '/' + "sendMessage?chat_id=" + str(chat_id) + "&text=" + str(text)
print("sendMessage: " + URL_FULL)
return self.postUrl(URL_FULL, params)
def postUrl(self, urlFull, params):
print('urlFull: ' + urlFull + ' params: ' + str(params))
try:
req = requests.post(urlFull, proxies=self.proxies, data=params)
except requests.exceptions.RequestException as e:
print("error: " + str(e))
except:
print('Except requests')
return {}
json = req.json()
if not req.status_code == 200:
print("status_code: " + str(req.status_code) + "; body: " + str(json))
return {}
if not req.json()['ok']:
print("body: " + str(json))
return {}
return json
答案:
{
'ok': False,
'error_code': 400,
'description': "Bad Request: can't parse reply keyboard markup JSON object"
}
参数有什么问题?
您似乎无法使用 URL 发送内联键盘。
我强烈建议您使用 pyTelegramBotAPI。它真的很容易学习,可以让你创造出惊人的东西。我创建的一个机器人显示文件夹中的文件并可以将它们发送给我。
str(jsData) != json.dumps(jsData, separators=(',',':'))
结果:
params = {'reply_markup': json.dumps(jsKeyboards, separators=(',',':')) }