bot-python icon indicating copy to clipboard operation
bot-python copied to clipboard

inlineKeyboardMarkup не отправляется

Open eremeevdev opened this issue 5 years ago • 3 comments

пробую отправить клавиатуру, как показано в примере:

if __name__ == "__main__":
    bot = Bot(token=TOKEN, name=NAME, version=VERSION, api_url_base=API_URL)
    bot.send_text(chat_id='746691278',
                text=U"helo\n\rworld<a href='aaa'>aaa</a>",
                inline_keyboard_markup="[{}]".format(json.dumps([
                    {"text": "Action 1", "url": "http://mail.ru"},
                    {"text": "Action 2", "callbackData": "call_back_id_2"},
                    {"text": "Action 3", "callbackData": "call_back_id_3"}
                ])))
    bot.dispatcher.add_handler(BotButtonCommandHandler(callback=buttons_answer_cb))
    bot.idle()

сообщение отправляется, а клавиатуры нет.

eremeevdev avatar May 06 '20 20:05 eremeevdev

inline_keyboard_markup="[{}]".format(json.dumps([ {"text": "Action 1", "url": "http://mail.ru"}, {"text": "Action 2", "callbackData": "call_back_id_2"}, {"text": "Action 3", "callbackData": "call_back_id_3"} ])))

Поправь вот на такой вариант: inline_keyboard_markup="{}".format(json.dumps([[ {"text": "Action 1", "url": "http://mail.ru"}, {"text": "Action 2", "callbackData": "call_back_id_2"}, {"text": "Action 3", "callbackData": "call_back_id_3"} ]])))

Duiesel avatar May 16 '20 23:05 Duiesel

Если для пользователя библиотеки сделать вот такой интерфейс

from icq import InlineKeyboardMarkup, InlineKeyboardButton
markup = InlineKeyboardMarkup()
makup.add(InlineKeyboardButton('text', data='action')
makup.add(InlineKeyboardButton('some url', url='https://t.me/')
bot.send_text(chat_id=746691278, text="Text", inline_keyboard_markup=markup)

То вопросы по формированию клавиатур в стиле [[{},{}],[],{}{}{}{][]} возникать не будут. Всю магию сериализации можно спрятать, т.к. она у всех пользователей библиотеки будет одинаковой (+ поддержку ujson можно в коробку положить)

Olegt0rr avatar Jun 07 '20 23:06 Olegt0rr

Если для пользователя библиотеки сделать вот такой интерфейс


from icq import InlineKeyboardMarkup, InlineKeyboardButton

markup = InlineKeyboardMarkup()

makup.add(InlineKeyboardButton('text', data='action')

makup.add(InlineKeyboardButton('some url', url='https://t.me/')

bot.send_text(chat_id=746691278, text="Text", inline_keyboard_markup=markup)

То вопросы по формированию клавиатур в стиле [[{},{}],[],{}{}{}{][]} возникать не будут.

Всю магию сериализации можно спрятать, т.к. она у всех пользователей библиотеки будет одинаковой (+ поддержку ujson можно в коробку положить)

Добрый день,

Недавно смерджил в мастер ветку этого репозитория, принцип работы так же как у pyTelegramBotAPI.)

dasshit avatar Mar 26 '21 01:03 dasshit