Как собрать все функции в одну Python Telegram Bot?
Всем доброго времени суток, пишу бота на telebot, всё пашет исправного хотелось бы вопросы, записанные в функциях, поместить в одну функцию, пыталась что-то построить- не выходит. Помогите пожалуйста
'''
#УСТОЙЧИВЫЕ ВЫРАЖЕНИЯ
#НА РУССКОМ
#ВОПРОС 1
def answ1(message):
print(message.text)
if message.text == "На русском":
bot.send_message(message.chat.id, "Отлично, напишите (Извините) на немецком ")
bot.register_next_step_handler(message, answ2)
else:
bot.register_next_step_handler(message, ger)
#ВОПРОС 2
def answ2(message):
first_answer = message.text
print(first_answer)
if first_answer == "Tut mir leit":
bot.send_message(message.chat.id, "?")
bot.send_message(message.chat.id, "Напишите (Я к сожалению пришёл не вовремя)")
bot.register_next_step_handler(message, answ3)
else:
bot.send_message(message.chat.id, "Неправильно! Попробуй ещё раз")
bot.register_next_step_handler(message, answ2)
#ВОПРОС 3
def answ3(message):
second_answer= message.text
if second_answer == "Ich komme leider nicht punktlich":
bot.send_message(message.chat.id, "?")
bot.send_message(message.chat.id, "Напишите (Поэтому я приеду немного позже)")
bot.register_next_step_handler(message, answ4)
else:
bot.send_message(message.chat.id, "Неправильно! Попробуй ещё раз")
bot.register_next_step_handler(message, answ3)
#ВОПРОС 4
def answ4(message):
third_answer=message.text
if third_answer == "Deswegen komme ich etwas spater":
bot.send_message(message.chat.id, "?")
bot.send_message(message.chat.id, "Напишите (Я пропустил автобус)")
bot.register_next_step_handler(message, answ5)
else:
bot.send_message(message.chat.id, "Неправильно! Попробуй ещё раз")
bot.register_next_step_handler(message, answ4)
#ВОПРОС 5
def answ5(message):
fourth_answer =message.text
if fourth_answer == "Ich habe den Bus verpasst":
bot.send_message(message.chat.id, "?")
bot.send_message(message.chat.id, "Напишите (Но я буду в половине второго около Кинотеатра)")
bot.register_next_step_handler(message, answ6)
else:
bot.send_message(message.chat.id, "Неправильно! Попробуй ещё раз")
bot.register_next_step_handler(message, answ5)
#ВОПРОС 6
def answ6(message):
fifth_answer = message.text
if fifth_answer == "Aber ich bin um halb zwei wor dem Kino":
bot.send_message(message.chat.id, "?")
bot.send_message(message.chat.id, "Напишите (Как насчёт того, что)")
bot.register_next_step_handler(message, answ7)
else:
bot.send_message(message.chat.id, "Неправильно! Попробуй ещё раз")
bot.register_next_step_handler(message, answ6)
#ВОПРОС 7
def answ7(message):
sixth_answer = message.text
if sixth_answer == 'Wie ware es, denn':
bot.send_message(message.chat.id, "?")
bot.send_message(message.chat.id, "Напишите (Это для тебя подходит?)")
bot.register_next_step_handler(message, answ8)
else:
bot.send_message(message.chat.id, "Неправильно! Попробуй ещё раз")
bot.register_next_step_handler(message, answ7)
#ВОПРОС 8
def answ8(message):
seventh_answer = message.text
if seventh_answer == 'Passt das fur dich?':
bot.send_message(message.chat.id, "?")
bot.send_message(message.chat.id, "Напишите (До скорого)")
bot.register_next_step_handler(message, answ9)
else:
bot.send_message(message.chat.id, "Неправильно! Попробуй ещё раз")
bot.register_next_step_handler(message, answ8)
#ВОПРОС 9
def answ9(message):
seventh_answer = message.text
if seventh_answer == 'Bis gleich':
bot.send_message(message.chat.id, "?")
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton("Немецкий")
item2 = types.KeyboardButton("Во сколько у меня урок?")
markup.add(item1, item2)
bot.send_message(message.chat.id, "Что дальше?", reply_markup=markup)
else:
bot.send_message(message.chat.id, "Неправильно! Попробуй ещё раз")
bot.register_next_step_handler(message, answ9)
'''
Ответы (1 шт):
Автор решения: Evgeny Ivanov
→ Ссылка
Я бы все вопросы и ответы держал как словарь, чтобы сверяться с поступающими ответами.
all_answers = {
"Вводный вопрос": "На русском",
"Отлично, напишите (Извините) на немецком": "Tut mir leit",
"Напишите (Я к сожалению пришёл не вовремя)": "Ich komme leider nicht punktlich",
"Напишите (Поэтому я приеду немного позже)": "Deswegen komme ich etwas spater",
"Напишите (Я пропустил автобус)": "Ich habe den Bus verpasst",
"Напишите (Но я буду в половине второго около Кинотеатра)": "Aber ich bin um halb zwei wor dem Kino",
"Напишите (Как насчёт того, что)": "Wie ware es, denn",
"Напишите (Это для тебя подходит?)": "Passt das fur dich",
"Напишите (До скорого)": "Bis gleich"
}
def answers(message):
answer = message.text
if answer in all_answers:
bot.send_message(message.chat.id, "?")
if answer != "Bis gleich"
temp = list(all_answers)
try:
res = temp[temp.index(answer) + 1]
except (ValueError, IndexError):
res = None
bot.send_message(message.chat.id, str(res))
else:
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton("Немецкий")
item2 = types.KeyboardButton("Во сколько у меня урок?")
markup.add(item1, item2)
bot.send_message(message.chat.id, "Что дальше?", reply_markup=markup)
else:
bot.send_message(message.chat.id, "Неправильно! Попробуй ещё раз")
bot.register_next_step_handler(message, answers)
Таким образом мы проверяем поступивший ответ в списке правильных ответов. Если ответ правильный, то мы берем следующий ключ, который является вопросом и отправляем пользователю. Если ответ неверный то пользователь еще раз вводит ответ. Если ответ является последним, то мы шлем пользователю сообщение с двумя клавишами.