➡️ПЕРВЫЙ ПОСТ ПО ПРОЕКТУ
➡️ЧАСТЬ 1
➡️ЧАСТЬ 2
Привет, кодеры! Продолжаем разбор Telegram-бота для планирования задач. В первом посте я рассказал о проекте, в Части 1 — про базу данных (config.py, db.py, models.py), в Части 2 — про хелперы и напоминания (utils.py, scheduler.py). Сегодня разберём bot_handlers.py — мозг бота, который обрабатывает команды и диалоги с пользователями.
🗂 bot_handlers.py: Логика взаимодействия
Этот файл содержит обработчики команд (/start, /done) и диалогов (добавление задач/занятий, настройки).
Для управления многошаговыми диалогами (например, ввод названия, даты, времени) используется простая FSM (finite-state machine) через словарь user_states.
Ключевые моменты:
— get_or_create_user: Создаёт или получает пользователя по Telegram ID.
— cmd_start: Запускает бота, показывает главное меню.
— FSM через user_states: Хранит состояние диалога (например, awaiting_task_title) и данные (payload).
Пример: добавление задачи — пользователь вводит название, дату, время напоминания.
Обработчики для диалогов: Проверяют состояние и обрабатывают ввод (например, handle_task_title, handle_task_datetime). 😞
Как работает добавление задачи:
Пользователь нажимает "➕ Добавить задачу" → состояние awaiting_task_title.
Вводит название → сохраняется в payload, состояние меняется на awaiting_task_datetime.
Вводит дату/время → парсится через parse_datetime_user, затем запрашивается время напоминания.
🔧 Советы:
⭐️FSM в памяти (user_states) подходит для MVP. Для продакшена используйте Redis или БД для хранения состояний.
⭐️Логируйте действия пользователей для отладки.
⭐️Добавляйте валидацию ввода, чтобы избежать ошибок (например, некорректные даты).
В следующем посте разберём main.py (запуск бота) и подведём итоги. Хочешь больше примеров диалогов или деталей? Пиши в комментах!
🧠 Какой функционал для диалогов добавил бы ты? Делись идеями!
#CodeShadow #TelegramBot #Python #Telebot #Планировщик