Open-source desktop-приложение для управления Telegram-ботами, входящими диалогами и ответами из одного интерфейса.
BotDesk нужен для простой работы с сообщениями Telegram-ботов без отдельной админки, backend-сервера и сторонних панелей. Приложение запускается на компьютере, принимает входящие через Telegram Bot API, сохраняет полученную историю локально и позволяет отвечать пользователям от имени выбранного бота.
Основная идея: все боты, диалоги и ответы находятся в одном desktop-интерфейсе. Можно подключить несколько токенов BotFather, быстро переключаться между ботами, искать нужный чат и отвечать без Telegram-клиента администратора.
- Подключать до 15 Telegram-ботов по токенам BotFather.
- Получать входящие сообщения в фоне через
getUpdates. - Дочитывать накопившуюся очередь updates пачками, чтобы не терять сообщения при большом потоке.
- Сохранять локальную историю входящих и исходящих сообщений.
- Показывать текст, фото, видео, кружки, голосовые сообщения и стикеры.
- Кэшировать медиафайлы локально после первой загрузки.
- Отправлять текстовые сообщения от имени выбранного бота.
- Показывать список диалогов с аватарками, последним сообщением и непрочитанными.
- Искать диалоги по имени, username и Telegram ID.
- Открывать доступный чат по user ID, если пользователь уже писал боту.
- Хранить токены локально и шифровать их через Electron
safeStorage, когда это доступно. - Собираться в Windows portable и Windows installer.
| Слой | Технологии |
|---|---|
| Desktop runtime | Electron |
| UI | React, TypeScript |
| Сборка фронта | Vite |
| Иконки | lucide-react |
| Локальное состояние | electron-store |
| Безопасное хранение токенов | Electron safeStorage |
| Telegram API | Bot API: getMe, getUpdates, sendMessage, getFile, getUserProfilePhotos |
| Packaging | electron-builder |
| CI/CD | GitHub Actions |
- Скачай последний релиз: GitHub Releases.
- Выбери один из файлов:
| Файл | Когда использовать |
|---|---|
BotDesk-Portable-<version>-x64.exe |
Portable для 64-bit Windows |
BotDesk-Portable-<version>-ia32.exe |
Portable для 32-bit Windows |
BotDesk-Setup-<version>-x64.exe |
Установщик для 64-bit Windows |
BotDesk-Setup-<version>-ia32.exe |
Установщик для 32-bit Windows |
- Запусти BotDesk.
- Создай нового бота или возьми токен существующего в @BotFather.
- Нажми добавление бота и вставь токен.
- Открой карточку бота, дождись входящих сообщений и отвечай из диалога.
BotDesk работает через официальный Telegram Bot API, поэтому у него есть ограничения самой платформы:
- Бот не может первым написать пользователю. Пользователь должен сначала начать диалог с ботом.
- Bot API не отдаёт полную старую историю сообщений. Приложение сохраняет только то, что получило после подключения и синхронизации.
- Если у бота включён webhook в другом сервисе,
getUpdatesне сможет работать одновременно с ним. Для BotDesk webhook нужно отключить или делать отдельный мост доставки updates. - Некоторые анимированные
.tgs-стикеры Telegram являются Lottie-файлами. Они сохраняются в истории как стикеры, но для полноценной отрисовки нужен отдельный Lottie-renderer.
Все данные остаются локально на компьютере:
| Данные | Где хранятся |
|---|---|
| Состояние приложения | Electron userData, файл botdesk-state.json |
| Загруженные медиа | Electron userData/media |
| Токены ботов | В локальном store, с safeStorage-шифрованием при доступности |
BotDesk не отправляет токены и переписку на промежуточные серверы. Desktop-процесс напрямую обращается к Telegram Bot API.
Требования:
- Node.js 20+
- Windows 10/11
- npm
Установка зависимостей:
npm installЗапуск в dev-режиме:
npm run devПроверки:
npm run typecheck
npm run lint
npm run build:webПолная Windows-сборка:
npm run buildПосле сборки файлы появятся в release/:
BotDesk-Portable-<version>-x64.exeBotDesk-Portable-<version>-ia32.exeBotDesk-Setup-<version>-x64.exeBotDesk-Setup-<version>-ia32.exe
В репозитории настроены два workflow:
| Workflow | Что делает |
|---|---|
CI |
На push в main и на pull request запускает npm ci, typecheck, lint и web build |
Release |
Собирает Windows installer и portable, загружает Actions artifact и публикует GitHub Release |
Автопубликация работает так:
| Событие | Что публикуется |
|---|---|
Push в dev |
Pre-release dev-latest |
Push в main |
Release latest |
Push тега v* |
Версионный release, например v1.1.0 |
Ручной запуск Release |
Версионный release по введённой версии |
В каждом GitHub Release лежит четыре файла:
BotDesk-Portable-<version>-x64.exeBotDesk-Portable-<version>-ia32.exeBotDesk-Setup-<version>-x64.exeBotDesk-Setup-<version>-ia32.exe
То есть не нужно создавать отдельные релизы для portable, installer или архитектур. Это четыре артефакта одного релиза.
Для dev-сборки достаточно запушить изменения в dev:
git push origin devGitHub Actions сам обновит pre-release dev-latest.
Для latest-сборки достаточно запушить изменения в main:
git push origin mainGitHub Actions сам обновит release latest.
git tag v1.1.0
git push origin v1.1.0После push тега GitHub Actions сам:
- скачает репозиторий;
- установит зависимости через
npm ci; - запустит typecheck и lint;
- выполнит
npm run build; - создаст GitHub Release;
- прикрепит installer и portable.
Можно открыть Actions -> Release -> Run workflow, ввести версию без v, например 1.1.0, и запустить сборку. Workflow сам создаст релиз v1.1.0 и прикрепит оба .exe.
electron/ Electron main process и preload bridge
src/ React-интерфейс
assets/ Иконка и логотип приложения
media/banner.png Баннер для README
scripts/ Вспомогательные скрипты
.github/workflows/ CI/CD workflows
BotDesk распространяется под лицензией MIT.
