Задать вопрос
  • Не работают кнопки в тг боте на python как починить?

    @twistfire92
    Python backend developer
    При любом событии (новое сообщение, нажатие на кнопку и пр.) бот проходит по всем хендлерам и смотрит какой хендлер удовлетворяет условиям. После того, как найден нужный - выполняет описанную в нем функцию.

    А теперь смотрим:
    1. Пользователь жмет кнопку
    2. Побежали по нашим хендлерам. Видим первый с
    @bot.callback_query_handler(func=lambda call: True)

    что значит "при нажатии на ЛЮБУЮ inline кнопку"
    3. Выполняем функцию которая в этом хендлере описана
    4. Ожидаем новых событий.

    В вашем случае на 3-м шаге выполнится функция list (кстати очень неудачное название, это зарезервированное имя, его лучше не использовать, почитайте про это)
    если уберете ее, выполнится game_processing

    Что делать?
    вариант 1 - как подсказали в комментариях, делать однин хендлер и внутри описывать все сценарии
    if call.data == 'users':
        ...
    elif call.data == 'go_play':
        ....
    elif call.data == 'go_play_next':
        ...


    Вариант 2 (более правильный) - отфильтровывать call.data в хендлерах. Сейчас там лежит func=lambda call: True, т.е. функция, возвращающая ВСЕГДА True. нужно как-то ее видоизменить, чтобы возвращалось True только при необходимых значениях call.data. Например func=lambda call: call.data=="foo" отработает только тогда, когда в call.data будет значение "foo".

    Дальше сами
    Ответ написан
    Комментировать