How to implement input in the telebot?

Now I have a function that receives all messages and then
@bot.message_handler(func=lambda m: True)
def messages(message):
 if 'hello' in message.text:
hello(message)
else:
 something(message)


I want to make a function that takes the mood of the user through message.text
the user clicks the button and the function starts working, then it will introduce the user to catch and save in database, the problem is that if you intercept the messages option above, you can run other commands, and need to come up with the format, as you will need to do similar things, for the favorite color and favorite song. So far I have the idea to send the message : Enter mood format
Mood: your mood", and catch the key word, but I feel that is an uncomfortable bike, maybe there are other options, such as block @bot.message_handler(func=lambda m: True) on the execution time of the function check mood?
March 23rd 20 at 19:43
2 answers
March 23rd 20 at 19:45
Just add CallbackQueryHandler and perform processing.
and what is callback? Let's say the user enters the name - it is handled by this decorator
@bot.message_handler(func=lambda m: True)
and not call=True - Christopher.Hoppe commented on March 23rd 20 at 19:48
March 23rd 20 at 19:47
In General came to this decision: Keep the user's status in database when it comes to the introduction of color, check position, thereby locking all other functions, easier to show
@bot.message_handler(func=lambda message: get_current_state(username = message.from_user.username) != regular)


get_current_state function() requests the status of the user when he wants to specify something, its state of regular changes to for example color_except ( condition != regular, purely for example), this decorator weighs higher than the others, this is the first time that blocking other functions, I will be glad if someone have

Find more questions by tags TelegramBots