mirror of
https://github.com/eternnoir/pyTelegramBotAPI.git
synced 2023-08-10 21:12:57 +03:00
Add step handler example.
This commit is contained in:
parent
9f6a3bfb26
commit
d546a4f1e9
82
examples/step_example.py
Normal file
82
examples/step_example.py
Normal file
@ -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 = '<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
|
Loading…
Reference in New Issue
Block a user