/
ilya.petrash
/
SimplePyScripts
Обзор
Документация
Войти
/
ilya.petrash
/
SimplePyScripts
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
telegram_bot__telethon__examples/step_example.py
102 строки
3 KB
gil9red
Refactoring. Using black code style
27 июн 2023, 15:24
27 июн 2023, 15:24
e9b9483
Код
Авторство
О чём код?
#!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = "ipetrash" # SOURCE: https://github.com/eternnoir/pyTelegramBotAPI/blob/40244902497ec496c1d18afd09954bf5fd450c38/examples/step_example.py import telebot from telebot import types from config import TOKEN bot = telebot.TeleBot(TOKEN) user_dict = 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 gender", 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 == "Male") or (sex == "Female"): user.sex = sex else: raise Exception("Unknown sex") 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") # 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() bot.polling(none_stop=True)