Все проекты

Разработка и автоматизация

Май 2025

Telegram-сервис

Самостоятельная разработка Telegram-сервиса с пользовательскими сценариями, хранением данных, административной частью и запуском на VPS.

  • Python
  • aiogram
  • Telegram API
  • SQLite
  • aiosqlite
  • Git
  • Linux
  • VPS
Схема Telegram-сервиса с пользовательскими сценариями, модерацией, базой данных и запуском на 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.

Главным результатом стал опыт сборки не отдельного фрагмента кода, а цельного работающего сервиса, части которого должны корректно взаимодействовать друг с другом.

Есть похожая задача — давайте обсудим.