TelegramBot sendMessage с inline_keyboard - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь создавать сообщения без сторонних библиотек и ботов.Обычное сообщение успешно отправлено.Но если я добавлю 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"
}

Что не так с параметрами?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018
str(jsData) != json.dumps(jsData, separators=(',',':'))

Результат:

params = {'reply_markup': json.dumps(jsKeyboards, separators=(',',':')) }
0 голосов
/ 14 декабря 2018

Похоже, вы не можете отправить встроенную клавиатуру с URL.

Я настоятельно рекомендую использовать pyTelegramBotAPI .Это действительно легко учиться и позволяет создавать удивительные вещи.Один из созданных мной ботов показывает файлы из папки и может отправить их мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...