? Это продолжение моей первой статьи:
Как я сделал Telegram-бота для управления компьютером с доступом для незрячих
Там я рассказал о боте, который управляет ПК, озвучивает текст, делает скриншоты и синтезирует речь. Сейчас покажу, как встроил Telegram API-сервер в .exe, добавил систему плагинов и улучшил доступность для незрячих.


? Зачем встроенный Telegram API?

После релиза первой версии стало ясно: Telegram порой ограничивает размер и скорость передачи файлов, а ещё появляется зависимость от внешнего API. Чтобы обойти эти ограничения, я решил встроить официальный сервер Telegram Bot API прямо в своё приложение.

Это позволило:

  • ? передавать файлы до 2 ГБ;

  • ⚙️ работать офлайн;

  • ? использовать Telegram как локальный инструмент, не обращаясь к внешнему API.


? Как это работает

  1. Я скомпилировал telegram-bot-api.exe под Windows.

  2. Запаковал его в serverapibot.zip и встроил в дистрибутив программы.

  3. При первом запуске приложение:

    • распаковывает сервер в папку 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"],
  "

? Как работает установка:

  1. Вы отправляете ZIP-файл в Telegram-бота.

  2. Бот:

    • распаковывает его в папку 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;

  • ищете решение с удобной установкой и обновлением;


? Ссылки


Спасибо, что прочитали!
Хочу сделать ещё несколько плагинов и подготовить визуальный мастер установки — пишите, если это интересно.


? Особенности сборки и планы на будущее

Для корректной работы плагинов рядом с .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 или другими читалками.

Комментарии (2)


  1. shqiptar
    08.07.2025 20:08

    молодец!