8.8 KiB
🔧 КРИТИЧНЕ ВИПРАВЛЕННЯ: Telegram Bots Routing
❌ ПРОБЛЕМА
Обидва боти (DAARWIZZ і Helion) відповідають неправильно:
- Helion відповідає як Qwen (не використовує свій system_prompt)
- DAARWIZZ може відповідати в чат Helion (неправильний routing)
🎯 ЗАВДАННЯ
1️⃣ ПЕРЕВІРИТИ КОНФІГУРАЦІЮ НА СЕРВЕРІ
Сервер: 144.76.224.179 (root)
Репозиторій на сервері: /opt/microdao-daarion
Підключись до сервера і виконай:
cd /opt/microdao-daarion
# Перевірка 1: Токени в .env
echo "=== ТОКЕНИ ===="
grep "TELEGRAM_BOT_TOKEN" .env
# Має бути:
# DAARWIZZ_TELEGRAM_BOT_TOKEN=8323412397:AAFxaru-hHRl08A3T6TC02uHLvO5wAB0m3M
# HELION_TELEGRAM_BOT_TOKEN=8112062582:AAGI7tPFo4gvZ6bfbkFu9miq5GdAH2_LvcM
# (можна видалити TELEGRAM_BOT_TOKEN якщо є)
# Перевірка 2: Структура payload в Helion webhook
echo -e "\n=== HELION PAYLOAD СТРУКТУРА ==="
sed -n '466,473p' gateway-bot/http_api.py
# Має бути:
# "payload": {
# "context": {
# "agent_name": HELION_NAME,
# "system_prompt": HELION_SYSTEM_PROMPT,
# "memory": memory_context,
# }
# },
# Перевірка 3: Токени в контейнері gateway
echo -e "\n=== ТОКЕНИ В GATEWAY КОНТЕЙНЕРІ ==="
docker exec dagi-gateway printenv | grep "TELEGRAM_BOT_TOKEN"
# Перевірка 4: Webhooks в Telegram
echo -e "\n=== WEBHOOK URLs ==="
curl -s "https://api.telegram.org/bot8323412397:AAFxaru-hHRl08A3T6TC02uHLvO5wAB0m3M/getWebhookInfo" | python3 -c "import sys, json; print('DAARWIZZ:', json.load(sys.stdin)['result'].get('url', 'NOT SET'))"
curl -s "https://api.telegram.org/bot8112062582:AAGI7tPFo4gvZ6bfbkFu9miq5GdAH2_LvcM/getWebhookInfo" | python3 -c "import sys, json; print('Helion:', json.load(sys.stdin)['result'].get('url', 'NOT SET'))"
2️⃣ ВИПРАВЛЕННЯ
A. Якщо токени неправильні в .env:
cd /opt/microdao-daarion
# Виправити токени
cat > .env.tokens << 'EOF'
DAARWIZZ_TELEGRAM_BOT_TOKEN=8323412397:AAFxaru-hHRl08A3T6TC02uHLvO5wAB0m3M
HELION_TELEGRAM_BOT_TOKEN=8112062582:AAGI7tPFo4gvZ6bfbkFu9miq5GdAH2_LvcM
EOF
# Додати в .env (видаливши старі TELEGRAM_BOT_TOKEN рядки спочатку)
sed -i '/TELEGRAM_BOT_TOKEN/d' .env
cat .env.tokens >> .env
rm .env.tokens
B. Виправити Helion payload структуру:
Файл: gateway-bot/http_api.py
Рядки: 466-473
Замінити:
"payload": {"context": {
"agent_name": HELION_NAME,
"system_prompt": HELION_SYSTEM_PROMPT,
"memory": memory_context,
},
},
На:
"payload": {
"context": {
"agent_name": HELION_NAME,
"system_prompt": HELION_SYSTEM_PROMPT,
"memory": memory_context,
}
},
Суть: "context" має бути всередині "payload" з правильним indent, а не "payload": {"context": в одному рядку.
C. Додати DAARWIZZ_TELEGRAM_BOT_TOKEN в docker-compose.yml:
Файл: docker-compose.yml
Секція: gateway → environment
Знайди секцію gateway environment і переконайся що є:
environment:
- ROUTER_URL=http://router:9102
- TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN:-}
- DISCORD_BOT_TOKEN=${DISCORD_BOT_TOKEN:-}
- DAARWIZZ_TELEGRAM_BOT_TOKEN=${DAARWIZZ_TELEGRAM_BOT_TOKEN:-} # ← МАЄ БУТИ
- DAARWIZZ_NAME=${DAARWIZZ_NAME:-DAARWIZZ}
- DAARWIZZ_PROMPT_PATH=/app/gateway-bot/daarwizz_prompt.txt
- HELION_TELEGRAM_BOT_TOKEN=${HELION_TELEGRAM_BOT_TOKEN:-}
- HELION_NAME=${HELION_NAME:-Helion}
- HELION_PROMPT_PATH=/app/gateway-bot/helion_prompt.txt
- MEMORY_SERVICE_URL=http://memory-service:8000
D. Перевірити webhooks registration:
# Отримати поточний Cloudflare tunnel URL
TUNNEL_URL=$(ps aux | grep cloudflared | grep -v grep | grep -oP 'http://[^ ]+' | head -1)
echo "Tunnel: $TUNNEL_URL"
# Якщо тунелю немає - створити новий
if [ -z "$TUNNEL_URL" ]; then
# Зупинити старі
pkill cloudflared
# Створити новий
nohup cloudflared tunnel --url http://localhost:9300 > /var/log/cloudflared.log 2>&1 &
sleep 3
# Отримати URL з логу
TUNNEL_URL=$(grep -oP 'https://[a-z0-9-]+\.trycloudflare\.com' /var/log/cloudflared.log | head -1)
fi
echo "Using tunnel: $TUNNEL_URL"
# Зареєструвати webhooks
curl -X POST "https://api.telegram.org/bot8323412397:AAFxaru-hHRl08A3T6TC02uHLvO5wAB0m3M/setWebhook" \
-d "url=${TUNNEL_URL}/telegram/webhook"
curl -X POST "https://api.telegram.org/bot8112062582:AAGI7tPFo4gvZ6bfbkFu9miq5GdAH2_LvcM/setWebhook" \
-d "url=${TUNNEL_URL}/helion/telegram/webhook"
3️⃣ ПЕРЕЗАПУСК СЕРВІСІВ
cd /opt/microdao-daarion
# Перезапустити gateway з новими змінними
docker compose up -d gateway
# Перезапустити router (якщо змінювали llm_provider)
docker compose restart router
# Почекати 5 секунд
sleep 5
# Перевірити що все працює
docker compose ps
docker compose logs --tail=10 gateway
docker compose logs --tail=10 router
4️⃣ ТЕСТУВАННЯ
Після виправлень:
Тест 1: DAARWIZZ бот
Надішли боту @DAARWIZZBot:
Хто ти?
Очікувана відповідь: Має згадувати DAARWIZZ, DAARION.city, microDAO
Тест 2: Helion бот
Надішли боту (username потрібно дізнатись через getMe):
Хто ти і що таке EcoMiner?
Очікувана відповідь: Має згадувати Helion, Energy Union, EcoMiner
Якщо НЕ працює - дивись логи:
# Gateway логи (останні 30 рядків)
docker compose logs --tail=30 gateway | grep -E "helion|daarwizz|Sending to Router"
# Router логи (останні 30 рядків)
docker compose logs --tail=30 router | grep -E "agent=|payload|context|DEBUG"
🔍 ДІАГНОСТИКА ПРОБЛЕМ
Якщо Helion відповідає як Qwen:
- Перевір структуру payload в
gateway-bot/http_api.py(рядок 466) - Перевір що HELION_SYSTEM_PROMPT завантажується:
docker compose logs gateway | grep -i "helion.*prompt\|prompt.*loaded" - Додай debug в router:
# В providers/llm_provider.py після рядка 161 docker exec dagi-router cat /app/providers/llm_provider.py | grep -A5 "_get_system_prompt"
Якщо боти відповідають в неправильний чат:
-
Перевір що
send_telegram_messageотримує правильний токен:grep "send_telegram_message.*TELEGRAM_BOT_TOKEN" gateway-bot/http_api.pyМає бути:
- Рядок 198:
os.getenv("DAARWIZZ_TELEGRAM_BOT_TOKEN") - Рядок 262:
os.getenv("DAARWIZZ_TELEGRAM_BOT_TOKEN") - Рядок 498:
os.getenv("HELION_TELEGRAM_BOT_TOKEN")
- Рядок 198:
-
Перевір webhooks:
curl -s "https://api.telegram.org/bot8323412397:AAFxaru-hHRl08A3T6TC02uHLvO5wAB0m3M/getWebhookInfo"URL має бути
/telegram/webhookдля DAARWIZZ
✅ КРИТЕРІЇ УСПІХУ
- ✅ DAARWIZZ бот відповідає про DAARION/microDAO
- ✅ Helion бот відповідає про Energy Union/EcoMiner (НЕ як Qwen)
- ✅ Кожен бот відповідає у свій чат (не плутає)
- ✅ Webhooks зареєстровані правильно
- ✅ Токени передаються в gateway контейнер
📝 ВАЖЛИВО
- НЕ змінюй файли prompt (
helion_prompt.txt,daarwizz_prompt.txt) - вони правильні - НЕ створюй нові webhook endpoints - вони є
- Фокус на: токени, payload структура, docker-compose environment
- Після змін: обов'язково перезапусти gateway і протестуй
Після виконання - повідом про результат тестів!