CodeShadow pinned «🤔 Стоит выкладывать кейсы по Фронтенду (HTML, CSS, создание лендингов)?🐍»
bot_handlers.py
44.2 KB
Привет, кодеры! Продолжаем разбор Telegram-бота для планирования задач. В первом посте я рассказал о проекте, в Части 1 — про базу данных (config.py, db.py, models.py), в Части 2 — про хелперы и напоминания (utils.py, scheduler.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_noscript) и данные (payload).
Пример: добавление задачи — пользователь вводит название, дату, время напоминания.
Обработчики для диалогов: Проверяют состояние и обрабатывают ввод (например, handle_task_noscript, handle_task_datetime).
Как работает добавление задачи:
Пользователь нажимает "
Вводит название → сохраняется в payload, состояние меняется на awaiting_task_datetime.
Вводит дату/время → парсится через parse_datetime_user, затем запрашивается время напоминания.
⭐️ FSM в памяти (user_states) подходит для MVP. Для продакшена используйте Redis или БД для хранения состояний.⭐️ Логируйте действия пользователей для отладки.⭐️ Добавляйте валидацию ввода, чтобы избежать ошибок (например, некорректные даты).
В следующем посте разберём main.py (запуск бота) и подведём итоги. Хочешь больше примеров диалогов или деталей? Пиши в комментах!
#CodeShadow #TelegramBot #Python #Telebot #Планировщик
Please open Telegram to view this post
VIEW IN TELEGRAM
Сегодня хочу поговорить о буднях настоящего программиста-фрилансера: что ждёт новичка, насколько полезны курсы и что реально придётся осваивать на практике.
Фриланс — это зона ответственности и свободы одновременно. Здесь ты сам себе начальник, продюсер и маркетолог. Нет начальника, который скажет, куда двигаться дальше. Зато есть полная независимость: хочешь — зарабатываешь больше, ленишься — доходы уменьшаются. Всё зависит исключительно от твоих усилий и решений.
Курсы действительно способны стать хорошей базой для старта. Они дают фундаментальные знания, которые пригодятся при создании реальных продуктов. Например, чаще всего востребованы умения интегрировать чистый Python в большие системы вроде CRM или N8N. Сам по себе чистый Python редко встречается в вакансиях, но знание основ программирования открывает двери к решению сложных интеграционных задач.💼 Получение первого заказа — настоящее испытание. Работа над проектом похожа на приготовление блюда для требовательного гурмана: нужно учитывать предпочтения клиента («специи»), соблюдать сроки и стараться сделать работу качественно. Тут важна внимательность к деталям и способность быстро учиться новому.
Please open Telegram to view this post
VIEW IN TELEGRAM
main.py
513 B
Привет, кодеры! Разбираем финальную часть Telegram-бота для планирования задач. В первом посте — идея и функционал, в Части 1 — база данных (config.py, db.py, models.py), в Части 2 — хелперы и напоминания (utils.py, scheduler.py), в Части 3 — обработчики команд (bot_handlers.py). Сегодня завершаем разбор с main.py — точкой старта бота — и подводим итоги.
Этот файл инициализирует базу данных, загружает напоминания и запускает бота в режиме polling.
— init_db: Создаёт таблицы в БД (используя Base.metadata из models.py).
— load_all_jobs: Загружает активные задачи и занятия в APScheduler для напоминаний (из scheduler.py).
— start_bot: Запускает бота в режиме бесконечного polling через telebot.
— main.py инициализирует БД (db.py, models.py).
— Загружает напоминания (scheduler.py) для существующих задач/занятий.
— Запускает бота (bot_handlers.py), который обрабатывает команды и диалоги, используя хелперы (utils.py).
💎 Локально: Установите зависимости (pip install telebot sqlalchemy apscheduler python-dotenv pytz), настройте .env с BOT_TOKEN, запустите python main.py.💎 Продакшен: Используйте Docker или Heroku, настройте PostgreSQL вместо SQLite, добавьте SQLAlchemyJobStore для APScheduler.💎 Тестирование: Проверьте команды (/start, /done <id>), добавление задач и расписания. Логируйте ошибки (например, блокировку бота юзером).
Бот готов для использования! Он поддерживает задачи с напоминаниями, еженедельное расписание, отчёты и настройки. Код компактный, но масштабируемый. Что дальше? Можно добавить Google Calendar, графики отчётов (Matplotlib) или голосовые заметки. Скоро выложу код на GitHub — следите за каналом!💎 Если наберёте 7 реакций под последним постом — выкладываю полный код проекта в канал💪
#CodeShadow #TelegramBot #Python #Планировщик
Please open Telegram to view this post
VIEW IN TELEGRAM
🏁 Финал: твой путь во фриланс
Мы прошли путь от мини-скриптов до поиска заказов.
Теперь у тебя есть:
- понимание простых проектов
- базовый набор кода для стартовых заказов
- знание, где брать клиентов
Фриланс — это не теория, а практика.
Начни с маленького, и каждый новый проект будет поднимать тебя выше.
Удачи, разработчик! 🚀
P.S. На этом посте закончилась рубрика "Путь во Фриланс"
Мы прошли путь от мини-скриптов до поиска заказов.
Теперь у тебя есть:
- понимание простых проектов
- базовый набор кода для стартовых заказов
- знание, где брать клиентов
Фриланс — это не теория, а практика.
Начни с маленького, и каждый новый проект будет поднимать тебя выше.
Удачи, разработчик! 🚀
P.S. На этом посте закончилась рубрика "Путь во Фриланс"
Решил запустить новую рубрику - обучение языку Python на кейсах👨💻 💻 💻 💻
Пилотным запуском станет создание консольного приложения SafeBox - личный шифратор паролей)
Урок выйдет совсем скоро⏱
Пиши свои идеи для рубрики в комментариях⬇️
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Мы вместе разобрали синтаксис и шаг за шагом начали строить программу
Хочу узнать ваше мнение
Please open Telegram to view this post
VIEW IN TELEGRAM
Был ли для вас полезен урок?
Anonymous Poll
80%
Да, всё было понятно и доступно 🥺
0%
Всё понятно, но хотелось бы помедленнее ☺️
20%
Сложновато 😅
Please open Telegram to view this post
VIEW IN TELEGRAM
Знаешь, что самое сложное? Начать.
Первый заказ, первый скрипт, первая ошибка.
Ты думаешь: “я не готов”. Но никто не готов.
Готовность появляется в процессе.
Помню себя на первом курсе университета, когда казалось, что любые домашние задания и лабораторные работы похожи на настоящие бизнес-задачи: там тоже есть чёткое техзадание, да и поправки порой прилетают. Но потом наступила реальность…
Главное отличие – это деньги. Если на учёбе за проваленное задание самое страшное наказание – отправить тебя на доработку, то в бизнесе каждая ошибка дорого обходится. Сделал недостаточно хорошо – потерял деньги и репутацию перед заказчиком.
Но самое серьёзное изменение – это понимание ценности твоей работы. Когда пишешь код или решаешь проблему для учебного проекта, кажется, будто это пустые упражнения. А вот когда берёшься за реальный заказ, тут-то и приходит осознание, что твоя работа влияет на прибыль и успех бизнеса. Так что готовьте своё портфолио заранее, друзья мои!
Учёба даёт отличную базу, а опыт, полученный вовремя занятий, облегчает переход к профессиональным задачам. Просто всегда помните: каждый проект имеет значение и важен именно потому, что приносит пользу.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
"Фриланс — это не про свободу бездельничать. Это про свободу выбирать, за что тебе платят."
👋 Сегодня расскажу, как даже простая HTML-страничка может стать твоим кейсом для портфолио.
Представь, тебе пишет заказчик: “Нужна лендинг-страница визитка — чтобы было стильно, аккуратно и без лишних сложностей.”
Что ты делаешь? Берёшь базовый HTML, добавляешь немного CSS, и уже через пару часов показываешь первый результат.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<noscript>Мой первый сайт</noscript>
<style>
body {
font-family: Arial, sans-serif;
background: #f5f5f5;
margin: 0;
padding: 0;
text-align: center;
}
header {
background: #222;
color: #fff;
padding: 20px;
}
.btn {
display: inline-block;
margin-top: 20px;
padding: 10px 20px;
background: #e63946;
color: #fff;
text-decoration: none;
border-radius: 5px;
}
.btn:hover {
background: #d62828;
}
</style>
</head>
<body>
<header>
<h1>Привет! Это мой сайт</h1>
<p>Здесь могла бы быть ваша реклама 🚀</p>
<a href="#" class="btn">Связаться</a>
</header>
</body>
</html>
👨💻 Код максимально простой, но уже выглядит как маленький лендинг.
Такие вещи часто заказывают на фрилансе, и даже на первых заказах это может быть твоим “боевым кейсом”.🤵♂ В следующем посте расскажу, как запустить эту страницу у себя и показать заказчику.
Please open Telegram to view this post
VIEW IN TELEGRAM
Привет!👋 В прошлый раз мы собрали простую HTML-страницу со стилями.
Но код — это одно, а показать результат — совсем другое. Давай разберём, как всё это запустить у себя и показать клиенту.
Скопируй туда весь код, который я показывал в прошлом посте.
# сохрани файл как server.py
import http.server
import socketserver
PORT = 8000
handler = http.server.SimpleHTTPRequestHandler
httpd = socketserver.TCPServer(("", PORT), handler)
print("Сервер запущен на http://localhost:8000")
httpd.serve_forever()
Запусти его, и по адресу http://localhost:8000 увидишь свою страничку.
И вот у тебя уже не просто кусок кода, а реально работающий сайт. А это и есть кейс для портфолио🎯
Please open Telegram to view this post
VIEW IN TELEGRAM
Я запускаю серию постов про то, как Telegram-бот может стать твоим менеджером по продажам, записям на тренировки или занятия.
Без лишних теорий — только практика, код и готовые кейсы.
1. собирает заявки,
2. сохраняет их в таблицу,
#CodeShadow #TelegramBot #Python #ВоронкаПродаж
Please open Telegram to view this post
VIEW IN TELEGRAM
Один из моих учеников сказал: “я слишком стар для программирования”.
А потом сделал Telegram-бота за неделю.
Знаешь, что я ему ответил?
“Ты не старый. Ты просто наконец-то понял, что хочешь делать.”
🤩3🆒3 2
Привет!👋
Серия стартовала! Telegram-бот как менеджер по продажам — без теории, только код из реального проекта. Разберём, как этот бот собирает лиды быстрее лендинга, и напишем базу: приветствие + меню услуг.
Лендинг: юзер читает текст, заполняет форму... и сливает (конверсия 2-5%).
Бот: диалог в чате — меню на кнопках, шаг за шагом до контакта. За 1-2 минуты!
Бонус: лимит 2 заявки/сутки, база в SQLite — всё локально, без облаков.
Итог: экономия на менеджерах, лиды в кармане.🚀
Старт проекта в файле main1.py. Токен из token.txt, БД на SQLite. Функция check_reset_user — для лимита. show_user_menu — приветствие с клавиатурой.
#CodeShadow #TelegramBot #Python #ВоронкаПродаж #КлиентБот
Please open Telegram to view this post
VIEW IN TELEGRAM
👋 Из Поста 1: юзер зашёл, увидел меню. Теперь воронка в действии — анкета как разговор. Бот спрашивает: услуга? Имя? Контакт? Сохраняет в user_data, ведёт до конца. Нет хаоса — только лиды.
Форма на сайте: 10 полей, юзер заполнит 1.
Бот: шаг за шагом, кнопки для выбора — конверсия до 20-30%.
Лимит из Поста 1 + user_data = "память" без ошибок.
Добавляем обработку сообщений. service_selection: Выбор услуги + чек лимита. handle_form: Шаги ввода (имя → контакт → info). Inline-кнопки для удобства.
Смотри main2.py
В main():
app.add_handler(CallbackQueryHandler(contact_selection, pattern="^contact_"))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_form))
⚡️ Тести: Выбери услугу → введи имя → кликни Telegram → @username. Бот "помнит" всё!
#CodeShadow #TelegramBot #Python #ВоронкаПродаж #КлиентБот
Please open Telegram to view this post
VIEW IN TELEGRAM