? Это продолжение моей первой статьи:
Как я сделал 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 или другими читалками.
shqiptar
молодец!