Построение моста между двумя Telegram-ботами в одном групповом чате: семантика доставки по HTTP

Соединить двух независимых Telegram-ботов в одном групповом чате сложнее, чем кажется. Разработчик на r/openclaw рассказывает о своем опыте создания промежуточного слоя, поскольку Telegram не гарантирует доставку сообщений от одного бота другому в группе — хотя люди видят оба сообщения.
Основная проблема
Telegram не передает обновления Боту B, когда Бот A отправляет сообщение в группу. Поэтому команда построила небольшой мост, обходящий ограничения Telegram:
- Бот B → Бот A: Бот B отправляет сообщение через HTTP-точку (шлюз) для связи с Ботом A.
- Бот A → Бот B: Бот A предоставляет выбранные исходящие сообщения через контролируемую ленту, которую опрашивает Бот B.
- Сообщения содержат метаданные:
source,direction,chat ID,nonceи флагsafe_to_bridge. - Подтверждения: Бот B может подтвердить получение конкретного сообщения, гарантируя, что хотя бы один переход сработал.
- Общая лента содержит только контекст группы, безопасный для моста — никаких личных сообщений или постороннего трафика.
- Локальный опросчик Бота B отсеивает старые, отладочные, протокольные и служебные сообщения, дедуплицирует события и пропускает только свежие реплики диалога.
Уроки первой версии
Первая реализация была слишком нестрогой: сырой контекст Telegram просачивался в общую ленту, вызывая недоумение: «Откуда другой бот это знает?» Исправление заключалось в переходе от сырых общих логов к явным событиям, безопасным для моста.
Текущее состояние работает в контролируемых тестах:
- Бот B → Бот A через ретранслятор
- Бот A → Бот B через ленту
- Подтверждения проходят через путь ретранслятора
- Безопасное автоматическое зеркалирование для сообщений, явно адресованных одному боту
Желаемый поток
Целевой цикл общения:
- Человек или Бот A пишет сообщение, адресованное Боту B.
- Мост безопасно зеркалирует его.
- Бот B видит его один раз, отвечает один раз.
- Ответ зеркалируется обратно, если это безопасно и уместно.
- Без дубликатов, устаревших сообщений, утечек личных сообщений, отладочного эха или бесконечных циклов бота.
Направление архитектуры
Автор предлагает рассматривать мост как небольшую шину событий, а не как хак для чата:
- Строгие идентификаторы сообщений и nonce
- Подтверждения, дедупликация, контрольные точки
- Ограниченные ленты с жестким разделением между личным и общегрупповым контекстом
Самое сложное — семантика доставки: свежесть, дедупликация, подтверждения и решение, когда бот должен автоматически отвечать, чтобы не вызвать бесконечных циклов.
📖 Читать полный источник: r/openclaw
👀 Смотрите также

Как на самом деле работает память OpenCLAW: Исправление «забывчивости» агента
Агенты OpenCLAW не имеют постоянной памяти между диалогами — они восстанавливают контекст из файлов SOUL.md, USER.md и MEMORY.md в каждом сеансе. Распространённые проблемы с «забыванием» возникают из-за раздутых сессий, неструктурированных файлов памяти и путаницы между историей чата и постоянным хранилищем.

Настройка и тестирование vLLM на сервере с 10x NVIDIA V100 и 320 ГБ видеопамяти
Юрист, создающий локальный сервер ИИ для юридической работы, делится результатами тестирования vLLM на 10x Tesla V100 SXM2 32GB GPU, подробно описывая, что работает (FP16 без квантования, bitsandbytes 4-бит) и что не работает (GPTQ, AWQ, FlashAttention2) на архитектуре Volta.

Разработчик iOS делится лучшими практиками написания кода для Claude после выпуска нескольких приложений
iOS-разработчик с опытом в кибербезопасности описывает конкретные практики эффективного использования Claude Code, включая разделение сред, настройку наблюдаемости и предотвращение накопления технического долга.

Разработчик делится 25 проверенными промтами для Claude, оптимизированными для рабочих процессов SaaS-разработки.
Разработчик поделился 25 конкретными промптами, которые он использует ежедневно для разработки SaaS-продуктов, охватывая бэкенд-архитектуру, проектирование API, тексты для фронтенда, документацию продукта и задачи выхода на рынок. Эти промпты предназначены для экономии времени на повторяющихся задачах, таких как ревью кода, генерация документации и тестирование граничных случаев.