2015-07-30 06:30:16 +03:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
|
|
This Example will show you how to use register_next_step handler.
|
|
|
|
"""
|
|
|
|
|
2018-04-28 13:50:59 +03:00
|
|
|
import telebot
|
|
|
|
from telebot import types
|
2015-07-30 06:30:16 +03:00
|
|
|
|
|
|
|
API_TOKEN = '<api_token>'
|
|
|
|
|
2018-04-28 13:50:59 +03:00
|
|
|
bot = telebot.TeleBot(API_TOKEN)
|
2015-07-30 06:30:16 +03:00
|
|
|
|
|
|
|
user_dict = {}
|
|
|
|
|
|
|
|
|
|
|
|
class User:
|
|
|
|
def __init__(self, name):
|
|
|
|
self.name = name
|
|
|
|
self.age = None
|
|
|
|
self.sex = None
|
|
|
|
|
|
|
|
|
|
|
|
# Handle '/start' and '/help'
|
|
|
|
@bot.message_handler(commands=['help', 'start'])
|
|
|
|
def send_welcome(message):
|
|
|
|
msg = bot.reply_to(message, """\
|
|
|
|
Hi there, I am Example bot.
|
|
|
|
What's your name?
|
|
|
|
""")
|
|
|
|
bot.register_next_step_handler(msg, process_name_step)
|
|
|
|
|
|
|
|
|
|
|
|
def process_name_step(message):
|
|
|
|
try:
|
|
|
|
chat_id = message.chat.id
|
|
|
|
name = message.text
|
|
|
|
user = User(name)
|
|
|
|
user_dict[chat_id] = user
|
|
|
|
msg = bot.reply_to(message, 'How old are you?')
|
|
|
|
bot.register_next_step_handler(msg, process_age_step)
|
|
|
|
except Exception as e:
|
|
|
|
bot.reply_to(message, 'oooops')
|
|
|
|
|
|
|
|
|
|
|
|
def process_age_step(message):
|
|
|
|
try:
|
|
|
|
chat_id = message.chat.id
|
|
|
|
age = message.text
|
|
|
|
if not age.isdigit():
|
|
|
|
msg = bot.reply_to(message, 'Age should be a number. How old are you?')
|
|
|
|
bot.register_next_step_handler(msg, process_age_step)
|
|
|
|
return
|
|
|
|
user = user_dict[chat_id]
|
|
|
|
user.age = age
|
|
|
|
markup = types.ReplyKeyboardMarkup(one_time_keyboard=True)
|
|
|
|
markup.add('Male', 'Female')
|
2015-07-30 06:40:54 +03:00
|
|
|
msg = bot.reply_to(message, 'What is your gender', reply_markup=markup)
|
2015-07-30 06:30:16 +03:00
|
|
|
bot.register_next_step_handler(msg, process_sex_step)
|
|
|
|
except Exception as e:
|
|
|
|
bot.reply_to(message, 'oooops')
|
|
|
|
|
|
|
|
|
|
|
|
def process_sex_step(message):
|
|
|
|
try:
|
|
|
|
chat_id = message.chat.id
|
|
|
|
sex = message.text
|
|
|
|
user = user_dict[chat_id]
|
|
|
|
if (sex == u'Male') or (sex == u'Female'):
|
|
|
|
user.sex = sex
|
|
|
|
else:
|
2020-12-24 19:55:24 +03:00
|
|
|
raise Exception("Unknown sex")
|
2015-07-30 06:30:16 +03:00
|
|
|
bot.send_message(chat_id, 'Nice to meet you ' + user.name + '\n Age:' + str(user.age) + '\n Sex:' + user.sex)
|
|
|
|
except Exception as e:
|
|
|
|
bot.reply_to(message, 'oooops')
|
|
|
|
|
|
|
|
|
2018-05-26 17:21:39 +03:00
|
|
|
# Enable saving next step handlers to file "./.handlers-saves/step.save".
|
|
|
|
# Delay=2 means that after any change in next step handlers (e.g. calling register_next_step_handler())
|
|
|
|
# saving will hapen after delay 2 seconds.
|
|
|
|
bot.enable_save_next_step_handlers(delay=2)
|
|
|
|
|
|
|
|
# Load next_step_handlers from save file (default "./.handlers-saves/step.save")
|
|
|
|
# WARNING It will work only if enable_save_next_step_handlers was called!
|
|
|
|
bot.load_next_step_handlers()
|
|
|
|
|
2021-09-28 19:17:09 +03:00
|
|
|
bot.infinity_polling()
|