@MarianaSE

Как изменить вид inline-кнопки?

Привет! Уже долгое время мучаюсь с этим кодом :
@bot.message_handler(content_types=["text"])
def start(message):
    keyboard = types.InlineKeyboardMarkup()
    keyboard.add(*[types.KeyboardButton(name) for name in ['Russian', 'English','German']])
    bot.send_message(message.chat.id, 'Choice your prefer language, please.', reply_markup = keyboard)
def name(message):
    if message.text == 'Russian':
        lang = 'ru'
    elif message.text == 'English':
        lang = 'en'
    elif message.text == 'German':
        lang = 'de'

Есть 2 проблемы :
1. Когда запускаю функцию выводит ошибку :
2017-08-20 18:30:18,684 (__init__.py:291 MainThread) ERROR - TeleBot: "A request to the Telegram API was unsuccessful. The server returned HTTP 400 Bad Request. Response body:
[b'{"ok":false,"error_code":400,"description":"Bad Request: can\'t parse inline keyboard button: Text buttons are unallowed in the inline keyboard"}']"

2. Не знаю, как сделать так, чтобы 2 кнопки выводились в одном ряду, а 3 кнопка выводилась снизу.

Буду рад, если у кого-то есть решение этих проблем. Заранее спасибо.
  • Вопрос задан
  • 22249 просмотров
Решения вопроса 1
Berloga
@Berloga
Студент IT-специальности. Люблю python
1. Нужно внимательно глядеть в документацию и также внимательно читать ошибки: ты отправляешь InlineKeyboardMarkup с массивом из KeyboardButton, а там нужны InlineKeyboardButton, которые содержат text и callback_data: https://core.telegram.org/bots/api#inlinekeyboardmarkup
2. Используй не .add, а два .row, в первом передай две кнопки, во втором - одну
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@hackyourrself
types.InlineKeyboardMarkup(row_width=3) Где row_width=3 количество кнопок в одно ряду
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы