Files
microdao-daarion/NODE2-TELEGRAM-BOTS-ANALYSIS.md
Apple 3de3c8cb36 feat: Add presence heartbeat for Matrix online status
- matrix-gateway: POST /internal/matrix/presence/online endpoint
- usePresenceHeartbeat hook with activity tracking
- Auto away after 5 min inactivity
- Offline on page close/visibility change
- Integrated in MatrixChatRoom component
2025-11-27 00:19:40 -08:00

115 lines
6.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 📡 Node #2 — Telegram бот-аналітика (23.11.2025)
**Мета:** перевірити всі Telegram боти, прив’язані до агентів НОДА2, зафіксувати стан сервісів (STT, TTS, Parser, Web Search, Vision) та результати по кожному агенту.
---
## 1. Зведена таблиця ботів
| # | Агент / Бот | Username | Token prefix | Нода / Модель | Статус до фіксу | Статус після фіксу | Коментар |
|---|-------------|----------|--------------|---------------|-----------------|--------------------|----------|
| 1 | DAARWIZZ | @DAARWIZZBot | 83234123 | Node1/Node2 · qwen3:8b | не відповідає | ✅ активний | Автоініціалізація + polling |
| 2 | Helion | @HelionEnergyBot | 81120625 | Node1/Node2 · qwen3:8b | не відповідає | ✅ активний | system_prompt + STT/TTS |
| 3 | GREENFOOD | @greenfoodliveBot | 74951653 | Node1 · qwen3:8b | не підключений | ✅ активний | Додано у bots.yaml |
| 4 | CLAN | @clan_bot | 85168721 | Node2 · DeepSeek | токен відсутній | ⏳ чекає токен | Потрібно отримати новий BotFather токен |
| 5 | Soul | @soul_bot | 80415964 | Node2 · qwen3:8b | токен не внесено | ⏳ чекає токен | Ready після отримання |
| 6 | DRUID | @druid_bot | 81456184 | Node2 · qwen3:8b | токен не внесено | ⏳ чекає токен | Той самий gateway |
| 7 | EONARCH | @eonarch_bot | 79623915 | Node2 · DeepSeek | токен не внесено | ⏳ чекає токен | DeepSeek модель |
| 8 | Яромир | @yaromir_bot | 81281806 | Node2 · qwen3:8b / DeepSeek | токен не внесено | ⏳ чекає токен | Використовує CrewAI |
| 9 | NUTRA | — | PLACEHOLDER | Node2 · qwen3:8b | токен відсутній | 🔴 потрібен бот | Потрібно зареєструвати |
| 10 | Dario | Discord | — | Node2 · qwen3:8b | Discord only | 🔄 прогрес | Поза Telegram |
> бот зареєстрований у `telegram-gateway`, polling активний.
> gateway готовий, потрібно тільки токен.
> 🔴 немає ні токена, ні бота.
---
## 2. Сервіси, що задіяні
| Сервіс | URL (Node1) | Опис | Статус |
|--------|-------------|------|--------|
| Local Telegram Bot API | `http://144.76.224.179:8081` | офіційний Telegram API (long polling) | ✅ |
| telegram-gateway | `http://144.76.224.179:8000` | FastAPI, multi-bot, NATS | ✅ |
| NATS | `nats://144.76.224.179:4222` | черга `agent.telegram.update` | ✅ |
| DAGI Router | `http://144.76.224.179:9102` | маршрутизація до LLM | ✅ |
| STT Service | `http://dagi-stt:9000/stt` | розпізнавання voice/audio | ✅ (через docker network) |
| TTS Service | `http://dagi-tts:9100/tts` | відповіді голосом | ✅ |
| Parser Service | `http://dagi-parser:9400` | PDF / DOC | ✅ |
| Vision / Swapper | `http://144.76.224.179:8890` | qwen3-vl:8b (vision) | ✅ |
| Web Search bridge | Router `mode=web_search` | використовується при запитах | ✅ |
---
## 3. Що саме виправлено
1. **Автоініціалізація ботів**
- Додано завантаження `bots.yaml` при старті (`app/main.py`).
- Gateway перезапускає polling для кожного активного бота.
2. **Повний Telegram listener**
- `telegram_listener.py` отримав підтримку:
- текстових, голосових, аудіо, video-note повідомлень;
- фото з передачою `file_url`;
- PDF документів (parser);
- автоматичний STT (до 60 секунд, `handle_voice_message`);
- metadata → Router для Vision/Parser.
3. **STT / TTS / Parser маршрут**
- Події з `metadata` обробляє `router_handler`:
- `_handle_photo` → vision спеціаліст;
- `_handle_document` → parser + контекст;
- `_text_to_speech` → відповіді голосом.
4. **Нові API в telegram-gateway**
- `GET /bots/status/{agent_id}` для UI;
- `DELETE /bots/{agent_id}` відʼєднати бота;
- CORS дозволяє звертатися з `http://localhost:8899`;
- подія `bot.unregistered` у NATS.
5. **UI модуль "Підключення до Telegram бота"**
- У кабінеті кожного агента (`/agent/:agentId`) новий блок:
- показує статус (registered/polling);
- підключення через токен від @BotFather;
- відʼєднання одним кліком;
- авто-оновлення раз на 20 секунд.
---
## 4. Як перевірити
1. **Деплой gateway**
```bash
cd telegram-infrastructure
docker compose up -d --build telegram-gateway
```
2. **Перевірити health**
```bash
curl -s http://localhost:8000/healthz
```
3. **Список ботів**
```bash
curl -s http://localhost:8000/bots/list | jq
```
4. **Статус конкретного агента**
```bash
curl -s http://localhost:8000/bots/status/helion | jq
```
5. **UI**
- Відкрити `http://localhost:8899/agent/helion`
- Використати модуль **"Підключення до Telegram бота"**
---
## 5. Наступні кроки
1. **Отримати токени** для CLAN, Soul, DRUID, EONARCH, Яромир, NUTRA.
2. **Додати secrets до `telegram-gateway/bots.yaml`** та перезапустити сервіс.
3. **Розширити router-config** (LLM профілі) для нових агентів, щоби вони отримували власний `system_prompt`.
4. **Підготувати шаблони промптів** у `docs/prompts/telegram/`.
---
**Результат:** боти НОДА2 можуть отримувати текст, голос, фото, PDF, виконувати веб-пошук та відповідати голосом. UI для підключення доступний у кожному агентському кабінеті.