@howuu

Как реализовать input в telebot?

Сейчас у меня есть функция, которая принимает все сообщения и потом
@bot.message_handler(func=lambda m: True)
def messages(message):
	if 'hello' in message.text:
		hello(message)
	else:
		something(message)


Я хочу сделать функцию, которая принимает настроение пользователя, через message.text,
пользователь нажимает кнопку и функция начинает свою работу, то что введет пользователь, нужно поймать и сохранить в базу данных, проблема в том, что если перехватывать сообщения вариантом выше, то могут выполниться другие команды, да и нужно придумать формат, так как, нужно будет выполнить похожие действия, для любимого цвета и любимой песни. Пока у меня идея отправлять сообщение : Введите настроение в формате
Настроение: ваше настроение", и отлавливать ключевое слово, но чувствую что это неудобный велосипед, возможно есть другие варианты, например заблокировать @bot.message_handler(func=lambda m: True) на время выполнения функции проверки настроения?
  • Вопрос задан
  • 1257 просмотров
Пригласить эксперта
Ответы на вопрос 2
Allepta
@Allepta
Просто добавьте CallbackQueryHandler и делайте в нем обработку.
Ответ написан
@howuu Автор вопроса
В общем пришел к такому решению: Храню состояние пользователя в базе данных, когда дело доходит до введение цвета, проверяю состояние, тем самым блокирую все другие функции, проще показать
@bot.message_handler(func=lambda message: get_current_state(username = message.from_user.username) != regular)


функция get_current_state() запрашивает состояние пользователя, когда он хочет указать что-то, его состояние из regular, меняется на например color_except ( условие != regular, чисто для примера), этот декоратор весит выше других, по-этому выполняется первым, что блокирует другие функции, буду рад если кому-то приходиться
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы