Files
microdao-daarion/CURSOR-FIX-BOTS-COMPLETE.md

8.8 KiB
Raw Blame History

🔧 КРИТИЧНЕ ВИПРАВЛЕННЯ: 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
Секція: gatewayenvironment

Знайди секцію 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:

  1. Перевір структуру payload в gateway-bot/http_api.py (рядок 466)
  2. Перевір що HELION_SYSTEM_PROMPT завантажується:
    docker compose logs gateway | grep -i "helion.*prompt\|prompt.*loaded"
    
  3. Додай debug в router:
    # В providers/llm_provider.py після рядка 161
    docker exec dagi-router cat /app/providers/llm_provider.py | grep -A5 "_get_system_prompt"
    

Якщо боти відповідають в неправильний чат:

  1. Перевір що 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")
  2. Перевір 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 і протестуй

Після виконання - повідом про результат тестів!