Answer the question
In order to leave comments, you need to log in
How to make two message_handler for a bot in python?
I am learning pyletelegrambotapi. When writing a bot, I ran into a problem. I created several ifs in message_handler and I need the user to be able to type text from the keyboard when hitting one of them. I tried to write it through else. That is, the user will get into the if through the buttons, instead of the keyboard, then the buttons disappear in the right place and the keyboard appears. And all text typed from the keyboard is processed through else in message_handler. The problem itself is that the user can remove the buttons at any stage and send the text, and it will be processed as if the user is in a certain place if. But I need the bot to be able to process the text entered from the keyboard only at a certain stage (When it gets to elif message.text == 'Good' :)
Bot: https://t.me/lestex_bot (To go to the desired if, you must click "Leave a request for work" And click "OK")
PS. The code can be very collective, I'm just studying all this
@bot.message_handler(content_types=['text'])
def otvet(message):
if message.text == "Привет":
user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
user_markup.row('Чат с работами', 'Показать новости')
user_markup.row('Оставить заявку на выполнение работы')
bot.send_message(message.from_user.id, "Выбери, что ты хочешь сделать.", reply_markup=user_markup)
elif message.text == 'Чат с работами':
markup = types.InlineKeyboardMarkup()
btn_my_site = types.InlineKeyboardButton(text='Чат с работами', url='https://t.me/AnonChanBot?start=-1001502978392')
markup.add(btn_my_site)
bot.send_message(message.chat.id, "Здесь вы можете присылать работы, которые давали вам преподаватели, чтобы облегчить жизнь тем, кому их ещё не давали. Ваши сообщения АНОНИМНЫ.", reply_markup=markup)
elif message.text == "Показать новости":
bot.send_message(message.from_user.id, "Тут будут показываться новости")
elif message.text == 'Оставить заявку на выполнение работы':
user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
user_markup.row('Хорошо','Назад')
bot.send_message(message.from_user.id, "Опишите какую работу вы хотите заказать, после этого с вами свяжутся. Для связи укажите ваш номер телефона в осписании работы", reply_markup=user_markup)
elif message.text == 'Хорошо':
markup = types.ReplyKeyboardRemove(selective=False)
bot.send_message(message.from_user.id, " Пример: \nРеферат \nФилософия \nПреподователь \n1 курс \n+78007005060", reply_markup = markup)
elif message.text == 'Назад':
user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
user_markup.row('Чат с работами', 'Показать новости')
user_markup.row('Оставить заявку на выполнение работы')
bot.send_message(message.from_user.id, "Выбери, что ты хочешь сделать.", reply_markup=user_markup)
else:
bot.send_message(message.from_user.id,"Мы приняли ваши заявку✅")
user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
user_markup.row('Чат с работами', 'Показать новости')
user_markup.row('Оставить заявку на выполнение работы')
bot.send_message(message.from_user.id, "Выбери, что ты хочешь сделать.", reply_markup=user_markup)
Answer the question
In order to leave comments, you need to log in
If you don't like the if structure, you can scatter everything into separate handlers.
@bot.message_handler(func=lambda message: message.text=='Привет')
def privet(message):
user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
user_markup.row('Чат с работами', 'Показать новости')
user_markup.row('Оставить заявку на выполнение работы')
bot.send_message(message.from_user.id, "Выбери, что ты хочешь сделать.", reply_markup=user_markup)
@bot.message_handler(func=lambda message: message.text=='Чат с работами')
def chat_with_works(message):
markup = types.InlineKeyboardMarkup()
btn_my_site = types.InlineKeyboardButton(text='Чат с работами', url='https://t.me/AnonChanBot?start=-1001502978392')
markup.add(btn_my_site)
bot.send_message(message.chat.id, "Здесь вы можете присылать работы, которые давали вам преподаватели, чтобы облегчить жизнь тем, кому их ещё не давали. Ваши сообщения АНОНИМНЫ.", reply_markup=markup)
# Ну и так далее...
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question