Создаем Telegram бота
Запланированный ответ на конкретное сообщение
Иногда нам приходиться проводить пользователя через конкретную цепочку вопросов, и проще всего сделать это с помощью функции bot.register_next_step_handler
. Она позволит нам создать сразу много функций (как и в обычном квесте) и в ответ на сообщения от пользователя последовательно вызывать нужную.
Попробуем с ее помощью провексти квест...
import telebot
bot = telebot.TeleBot(token="ВСТАВЬ СЮДА ТОКЕН")
@bot.message_handler(commands=['start'])
def start(message):
# кто нам написал? узнаем id чата!
chat_id = message.chat.id
# отправляем приветствие
answer = bot.send_message(chat_id, "Добро пожаловать в квест. Первое задание...")
# в ответ на приветствие просим вызвать функцию point1
bot.register_next_step_handler(answer, point1)
# название функции мы придумали сами, но параметр message обязателен
def point1(message):
# кто нам написал? узнаем id чата!
chat_id = message.chat.id
# что написали? узнаем текст входящего сообщения
# по сути это замена input
text = message.text
# если ответ верен
if text == "Ответ 1":
# пишем об этом пользвоателю и задаем следующие вопрос
answer = bot.send_message(chat_id, "Правильный ответ. Второе задание...")
# в ответ на сообщение просим вызвать функцию point2
bot.register_next_step_handler(answer, point2)
else:
# пишем, что ответ неверен
answer = bot.send_message(chat_id, "Нет, попробуйте еще раз...")
# в ответ на сообщение просим вызвать функцию point1
bot.register_next_step_handler(answer, point1)
# все по аналогии с point1
def point2(message):
chat_id = message.chat.id
text = message.text
if text == "Ответ 2":
answer = bot.send_message(chat_id, "Правильный ответ. Вы прошли квест!\nЧтобы повторить напишите /start.")
else:
answer = bot.send_message(chat_id, "Нет, попробуйте еще раз...")
bot.register_next_step_handler(answer, point2)
bot.polling(none_stop=True)