diff --git a/examples/step_example.py b/examples/step_example.py new file mode 100644 index 0000000..7f12546 --- /dev/null +++ b/examples/step_example.py @@ -0,0 +1,82 @@ +# -*- coding: utf-8 -*- +""" +This Example will show you how to use register_next_step handler. +""" +import time + +import telebot +from telebot import types + +API_TOKEN = '' + +bot = telebot.TeleBot(API_TOKEN) + +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') + msg = bot.reply_to(message, 'What is your sex', reply_markup=markup) + 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: + raise Exception() + 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') + + +bot.polling() + +while True: + time.sleep(1) + pass