Разработка и автоматизация
Май 2025
Telegram-сервис
Самостоятельная разработка Telegram-сервиса с пользовательскими сценариями, хранением данных, административной частью и запуском на VPS.
- Python
- aiogram
- Telegram API
- SQLite
- aiosqlite
- Git
- Linux
- VPS

- Роль
- Самостоятельный разработчик
- Задача
- Автоматизировать реферальный пользовательский сценарий, хранение данных, обработку заявок и управление сервисом внутри Telegram.
- Инструменты
- Python · aiogram · Telegram API · SQLite · aiosqlite · Git · Linux · VPS
- Период
- Май 2025
Контекст
Сервис создавался для автоматизации реферального сценария внутри стороннего онлайн-проекта. Он проводил пользователя через последовательность действий, проверял условия доступа, принимал заявку и после модерации открывал основную функцию.
До появления сервиса отдельные этапы такого сценария пришлось бы контролировать вручную. Telegram-бот должен был объединить их в одном интерфейсе: показать пользователю нужные действия, принять данные, сохранить заявку и передать её администратору для проверки.
Проект был связан с тематикой, которую я не хочу делать центральной частью портфолио. В этом кейсе важнее техническая сторона: устройство пользовательского сценария, работа с состояниями и базой данных, административные функции и запуск приложения на удалённом сервере.
Задача
Нужно было собрать работающий Telegram-сервис с собственной логикой, хранением данных и разграничением доступа к функциям.
Пользователь начинал работу с команды и меню, проходил проверку подписки, отправлял идентификатор и ожидал решения по заявке. После одобрения ему открывалась основная функция сервиса.
Администратору требовалась отдельная часть для управления проектом: просмотр статистики, работа с поступившими заявками, их одобрение или отклонение, а также отправка рассылок зарегистрированным пользователям.
Важно было не только реализовать эти сценарии в коде, но и запустить сервис так, чтобы он работал независимо от моего компьютера.
Моё участие
Я самостоятельно разработал проект на Python с использованием aiogram и Telegram API.
Пользовательскую и административную логику разделил на отдельные обработчики. Для кнопок и переходов использовал inline-клавиатуры, а для сценариев, в которых бот должен ожидать следующий ответ пользователя, — конечные состояния FSM.
Отдельные фильтры проверяли подписку на канал и наличие пользователя в базе. Это позволяло управлять доступом к функциям без дублирования одной и той же проверки в разных обработчиках.
Для хранения данных использовал SQLite и асинхронную библиотеку aiosqlite. В базе сохранялись пользователи, их Telegram ID и имена, даты регистрации, поданные заявки и их текущие статусы.
Административная часть позволяла просматривать общую статистику, открывать список заявок, принимать решение по каждой из них и уведомлять пользователя о результате. Также была реализована рассылка с подсчётом успешно отправленных сообщений и ошибок доставки.
Для контроля изменений в проекте использовал Git. После разработки и проверки основных сценариев самостоятельно перенёс сервис в Linux-среду на VPS.
Как строилась работа
Сначала я разложил общий процесс на отдельные шаги: вход пользователя, проверка условия доступа, регистрация, подача заявки, модерация и открытие основной функции.
Затем определил, какие части проекта лучше разделить. Точка запуска отвечала за подключение обработчиков и запуск бота. Пользовательские и административные сценарии находились в отдельных модулях. Клавиатуры, фильтры и работа с базой данных также были вынесены из основного кода.
После этого последовательно реализовал команды, кнопки, FSM-состояния и проверки доступа. Подключил SQLite, настроил регистрацию пользователей и сохранение заявок. Затем добавил административное меню, статистику, модерацию и рассылку.
Каждый сценарий проверял целиком: от первого сообщения пользователя до изменения статуса заявки и открытия доступа. Если отдельная часть не работала или нарушала следующий шаг, находил причину, корректировал код и повторно проходил сценарий.
Рабочая версия была собрана примерно за одну-две недели в мае 2025 года.
Главной технической трудностью стал перенос уже собранного проекта из локальной среды на VPS. До этого сервис запускался на моём компьютере. Я самостоятельно арендовал удалённый сервер, перенёс на него файлы приложения и SQLite-базу, разобрался с запуском проекта в Linux и проверил, что связанные части продолжают работать вне локальной среды.
После переноса бот работал независимо от моего компьютера и обрабатывал сообщения с удалённого сервера.
AI как рабочий инструмент
При разработке я использовал AI-инструменты для подготовки отдельных фрагментов кода, работы с базой данных и поиска причин ошибок.
Полученные решения я адаптировал под существующую структуру проекта, связывал с обработчиками и проверял на пользовательских сценариях. Если предложенный вариант не подходил или конфликтовал с другой частью сервиса, разбирался в проблеме и исправлял реализацию.
Проект был разработан мной самостоятельно. AI ускорял работу, но объединение модулей, проверка логики, исправление ошибок и запуск на сервере оставались моей ответственностью.
Результат
За одну-две недели сервис был доведён до рабочего состояния и запущен на удалённом сервере.
В готовой версии работали пользовательские сценарии, проверка доступа, регистрация, подача и модерация заявок, хранение данных, административная статистика и рассылка.
Дальнейшее развитие проекта остановилось из-за начала военной службы. Позже я решил не возвращать сервис в работу и не демонстрировать его интерфейс публично: проект был связан с гемблингом, а сегодня эта тематика не соответствует моим профессиональным и этическим принципам.
Что показал этот проект
Проект дал мне практический опыт самостоятельной разработки Telegram-сервиса, в котором связаны пользовательские и административные сценарии, состояния диалога, SQLite-база и серверная среда.
Я прошёл путь от разбора логики и структуры приложения до тестирования, переноса файлов и базы на VPS и запуска проекта в Linux.
Главным результатом стал опыт сборки не отдельного фрагмента кода, а цельного работающего сервиса, части которого должны корректно взаимодействовать друг с другом.