Skip to content

About

Telegram-агент для конструктора ботов: OpenRouter и MCP

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

Bot Builder Agent

Telegram-бот, который собирает и правит ботов в конструкторе через удалённый MCP. Модель берётся из OpenRouter. Доступ берётся из блока, который выдаёт вкладка «Агент».

Как устроены инструменты конструктора: обзор MCP. Что стоит за этими вызовами: справочник API.

Что это

Бот принимает задачу текстом и вызывает инструменты конструктора. Список инструментов приходит с сервера (tools/list), в код агента он не зашит.

Через чат можно:

  • собрать и поправить сценарий в живой базе, холст обновится сам
  • смотреть проекты, подключать токен BotFather, смотреть статус и логи
  • менять срок хранения сообщений: 0, 7, 30, 60, 90, 180, 365

Поля нод модель не выдумывает: перед новой нодой она смотрит схему. Команды бота только латиницей (/start, /buy). Тексты сообщений можно писать по-русски.

Когда использовать

Из этого чата В панели конструктора
Простой бот по описанию Сложный граф и много медиа
Правка сценария словами Точная раскладка нод на холсте
Статус, логи, старт и стоп Массовая работа с карточками

Быстрый старт

Нужны Go 1.26, токен этого бота от BotFather, ключ OpenRouter и уже запущенный конструктор.

  1. Скопируйте окружение и заполните его.
cp .env.example .env
  1. BOT_BUILDER_URL нужен только если в чат пришлют голый токен mcp_…. По умолчанию это https://telegram-bot-builder-e3u-production.up.railway.app. Путь /mcp допишется сам.
  2. Запустите:
go run ./cmd/bot-builder-agent
  1. В конструкторе откройте вкладку «Агент», создайте токен и пришлите боту весь блок mcpServers. В нём адрес и заголовок Authorization: Bearer mcp_….
  2. Откройте «Задача» и опишите бота.

Проверка без сети и без Telegram: go test ./....

Окружение

Переменная Зачем
TELEGRAM_BOT_TOKEN Токен этого бота
OPENROUTER_API_KEY Ключ OpenRouter
AI_MODEL Модель с вызовом инструментов
BOT_BUILDER_URL Адрес, если в чат прислали только mcp_…. Пусто: публичный хост Railway
TELEGRAM_ALLOWED_IDS Telegram id через запятую. Пусто: бот открыт всем, у кого есть свой токен
AGENT_MAX_ROUNDS Сколько кругов с инструментами, по умолчанию 16
AGENT_MAX_RESULT_CHARS Обрезка ответа инструмента, по умолчанию 12000
AGENT_HISTORY_MESSAGES Сколько сообщений помнить, по умолчанию 40
DATABASE_URL SQLite, по умолчанию sqlite://data/agent.db

Блок mcpServers в .env не кладётся. Токен и адрес из него хранятся в SQLite отдельно для каждого чата. Файл базы создаётся с правами 0600.

Меню

Кнопки внизу и команды делают одно и то же.

Кнопка Команда Что делает
Задача обычный текст Текст уходит модели
Проекты /projects Список, создание, архив, карточка
Боты /bots Токены активного проекта
Аккаунт /token Сохранить блок mcpServers или токен mcp_…
Аккаунт /status Хост конструктора, маска токена, активный проект
Аккаунт /reset Очистить диалог, токен остаётся
Аккаунт /logout Забыть токен и активный проект
Отмена /cancel Выйти из ввода

/start и /help показывают это же меню.

На карточке бота: статус, старт, стоп, перезапуск, логи, удаление и срок хранения сообщений.

Пока идёт ответ, в статусе видно только имя инструмента и кнопку «Остановить». Второй текст в этот момент не принимается.

Удаление проекта, удаление токена бота, стоп и массовый запуск модель не выполняет сразу. Чат спрашивает «Да» или «Нет». Молчание две минуты считается отказом.

Как бот ходит в конструктор

Запрос идёт на url из блока mcpServers. Заголовок: Authorization: Bearer mcp_…, как в выданном конфиге.

Тело: JSON-RPC initialize, затем tools/list и tools/call. Ответ бывает JSON или SSE. После первого initialize дальше уходит заголовок MCP-Protocol-Version.

Список инструментов кэшируется (по умолчанию 300 секунд). Ошибка 401 значит, что токен не подошёл: его нужно прислать заново.

load_project и save_project на удалённом /mcp сервер не отдаёт. Сценарий пишется инструментами db_* и update_project_db.

Ограничения

  • Адрес и токен у каждого чата свои: они берутся из выданного блока. Голый mcp_… идёт на BOT_BUILDER_URL.
  • Одновременно в чате идёт одна задача.
  • В лог пишется имя инструмента и id пользователя. Аргументы и сырой mcp_… в лог не попадают.
  • В исходящие сообщения Telegram токены вырезаются. В истории для модели текст пользователя сохраняется как есть, иначе токен BotFather не дойдёт до db_add_bot_token.

Дальше

  • Обзор MCP: зачем инструменты и с чего начать в конструкторе
  • Справочник API: REST под тем же хостом и тем же Bearer-токеном

About

Telegram-агент для конструктора ботов: OpenRouter и MCP

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages