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