🧩 Это продолжение моей первой статьи:
Как я сделал Telegram-бота для управления компьютером с доступом для незрячих
Там я рассказал о боте, который управляет ПК, озвучивает текст, делает скриншоты и синтезирует речь. Сейчас покажу, как встроил Telegram API-сервер в.exe, добавил систему плагинов и улучшил доступность для незрячих.
📡 Зачем встроенный Telegram API?
После релиза первой версии стало ясно: Telegram порой ограничивает размер и скорость передачи файлов, а ещё появляется зависимость от внешнего API. Чтобы обойти эти ограничения, я решил встроить официальный сервер Telegram Bot API прямо в своё приложение.
Это позволило:
-
📤 передавать файлы до 2 ГБ;
-
⚙️ работать офлайн;
-
🛠 использовать Telegram как локальный инструмент, не обращаясь к внешнему API.
🛠 Как это работает
-
Я скомпилировал
telegram-bot-api.exeпод Windows. -
Запаковал его в
serverapibot.zipи встроил в дистрибутив программы. -
При первом запуске приложение:
-
распаковывает сервер в папку
serverapibot/; -
создаёт лог-файлы, конфигурации, временные каталоги;
-
запускает сервер с нужными параметрами через
QProcess; -
автоматически перезапускает его при сбоях.
-
⚙ Графический интерфейс для управления сервером
Я реализовал отдельный GUI для работы с Telegram API сервером. Он позволяет:
-
🔐 Ввести параметры:
api-id,api-hash, IP-адрес, порт и путь к логам; -
🧾 Выбрать уровень логирования и размер лог-файлов;
-
📁 Указать рабочую директорию и временную папку;
-
☑ Включить или выключить встроенный Telegram API;
-
▶ Нажать одну кнопку «Старт» — и сервер запускается автоматически.
GUI полностью адаптирован под работу с экранными читалками: каждый элемент подписан, доступен по клавиатуре и читается скринридером. Навигация по логам осуществляется стрелками, названия областей логов проговариваются.
🖥 Интерфейс для незрячих
Так как я сам незрячий, я знал, насколько важно, чтобы всё работало без мыши. Интерфейс сделан с учётом:
-
💬 озвучивания всех элементов;
-
↕ удобной навигации по логам;
-
🧭 доступности кнопок, выпадающих списков и форм ввода;
-
🗃 разделения логов GUI и Telegram API в разные панели.
Используется PyQt5, логика взаимодействия повторяет поведение привычных программ, понятных даже тем, кто пользуется только клавиатурой и экранными читалками (например, NVDA).
🔌 Система плагинов
Я хотел, чтобы функциональность бота можно было расширять без изменений в коде. Поэтому реализовал гибкую систему плагинов с полной изоляцией через venv.
Каждый плагин — это ZIP-файл с:
-
.pyфайлом (основной код); -
.jsonфайлом с настройками:
{ "name": "пример‑плагина", "dependencies": ["requests", "chardet"], "
🚀 Как работает установка:
-
Вы отправляете ZIP-файл в Telegram-бота.
-
Бот:
-
распаковывает его в папку
plugins/имя; -
создаёт виртуальное окружение
venv; -
ставит зависимости из
dependencies; -
импортирует
.pyи вызываетinit_plugin(dp); -
добавляет кнопки и команды в Telegram-интерфейс.
-
Поддерживается автоматическая загрузка, перезапуск, сброс состояния и удаление плагина прямо через Telegram.
📱 Управление плагинами через Telegram
Через Telegram можно:
-
🟢 включать и выключать автозапуск плагинов;
-
🔄 перезапускать любой плагин;
-
🧹 сбрасывать кэш и настройки;
-
📦 создавать резервные ZIP-архивы плагинов;
-
📤 скачивать обратно любой установленный плагин;
-
🗑 удалять без следа.
Все функции доступны через команды и клавиатуру Telegram — даже если вы не программист, вы сможете управлять всем через бот.
💡 Пример: file_manager — демонстрационный плагин
Чтобы продемонстрировать архитектуру, я написал плагин file_manager, который позволяет:
-
📂 просматривать содержимое папок;
-
📄 читать текстовые файлы в любой кодировке (определяется через
chardet); -
🗑 удалять файлы;
-
📥 загружать файлы в систему;
-
📤 отправлять их обратно в Telegram.
Этот плагин прост, стабилен и демонстрирует изоляцию, установку и использование зависимостей через venv.
📦 Скачать плагин можно на GitHub:
https://github.com/andreykadelite/AutoCraft-Bot
📈 Что получилось
-
🧠 Telegram-бот с плагин-платформой;
-
🚀 встроенный локальный Telegram API;
-
🖥 доступный GUI-интерфейс;
-
🔌 модульная архитектура;
-
💬 Telegram-менеджер для управления плагинами;
-
♿ полная доступность для незрячих пользователей.
👥 Кому подойдёт
Этот проект подойдёт вам, если:
-
вы хотите сделать расширяемого Telegram-бота;
-
не хотите зависеть от стороннего API;
-
ищете решение с удобной установкой и обновлением;
🔗 Ссылки
-
Первая часть: https://habr.com/ru/articles/922332/
-
GitHub проекта: https://github.com/andreykadelite/AutoCraft-Bot
Спасибо, что прочитали!
Хочу сделать ещё несколько плагинов и подготовить визуальный мастер установки — пишите, если это интересно.
🧩 Особенности сборки и планы на будущее
Для корректной работы плагинов рядом с .exe или в папке с исходниками должен лежать архив python.zip, содержащий нужные стандартные модули Python. Это позволяет использовать venv даже в полностью изолированной сборке.
🔧 Полную рабочую сборку с telegram-bot-api, встроенным сервером, GUI и плагинами я уже выложил на GitHub в разделе релизов:
https://github.com/andreykadelite/AutoCraft-Bot/releases
🔮 Что планирую дальше
-
📥 Возможность загружать плагины прямо из Telegram или по ссылке — онлайн-установка без ZIP-файлов;
-
🎥 Добавить запись видео с экрана с последующей отправкой в Telegram;
-
🎙 Реализовать запись звука с микрофона в удобном формате (OGG/WAV) и интеграцией в бота;
-
🔄 Улучшить систему обновлений плагинов — чтобы можно было обновлять отдельно, без удаления старой версии.
Все эти идеи — не просто концепты. Многие из них уже в разработке или тестируются.
🖼 Немного визуала: как выглядит интерфейс

Чтобы не быть голословным, вот как всё это выглядит на практике:
🧭 Главное окно AutoCraft Bot
Здесь можно ввести токен, PIN-код, выбрать режим подключения (локальный сервер или Telegram API), и — одним нажатием — запустить бота. Все логи отображаются в реальном времени, удобно прокручиваются и доступны для скринридеров. Кнопки имеют озвучку и понятные подписи.

🛠 Настройка локального Telegram API сервера
Здесь всё наглядно: вводите API ID, API Hash, IP, порт, указываете каталоги и исполняемый файл сервера, задаёте уровень логирования и объём логов. А потом просто нажимаете Старт — и сервер работает!
Каждая настройка подписана, можно пользоваться только клавиатурой. В нижней части окна — отдельные панели логов: для UI и для самого Telegram API. Всё разделено и читабельно даже с NVDA или другими читалками.
ссылка на оригинал статьи https://habr.com/ru/articles/926112/
Добавить комментарий