## Agents Added - Alateya: R&D, biotech, innovations - Clan (Spirit): Community spirit agent - Eonarch: Consciousness evolution agent ## Changes - docker-compose.node1.yml: Added tokens for all 3 new agents - gateway-bot/http_api.py: Added configs and webhook endpoints - gateway-bot/clan_prompt.txt: New prompt file - gateway-bot/eonarch_prompt.txt: New prompt file ## Fixes - Fixed ROUTER_URL from :9102 to :8000 (internal container port) - All 9 Telegram agents now working ## Documentation - Created PROJECT-MASTER-INDEX.md - single entry point - Added various status documents and scripts Tokens configured: - Helion, NUTRA, Agromatrix (existing) - Alateya, Clan, Eonarch (new) - Druid, GreenFood, DAARWIZZ (configured)
99 lines
3.7 KiB
Python
99 lines
3.7 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
Отримати chat_id для адмін-сповіщень
|
||
Запустити бота і надіслати йому /start від адміна
|
||
"""
|
||
import os
|
||
import sys
|
||
import asyncio
|
||
import httpx
|
||
|
||
BOT_TOKEN = os.getenv("ADMIN_TELEGRAM_BOT_TOKEN", "8589292566:AAEmPvS6nY9e-Y-TZm04CAHWlaFnWVxajE4")
|
||
|
||
async def get_updates():
|
||
"""Отримати останні updates від бота"""
|
||
url = f"https://api.telegram.org/bot{BOT_TOKEN}/getUpdates"
|
||
|
||
async with httpx.AsyncClient() as client:
|
||
response = await client.get(url)
|
||
response.raise_for_status()
|
||
data = response.json()
|
||
|
||
if not data.get("ok"):
|
||
print(f"❌ Помилка: {data}")
|
||
return
|
||
|
||
updates = data.get("result", [])
|
||
|
||
if not updates:
|
||
print("⚠️ Немає повідомлень.")
|
||
print("\n📱 Щоб отримати chat_id:")
|
||
print("1. Знайдіть бота Sofia в Telegram")
|
||
print("2. Надішліть йому /start")
|
||
print("3. Запустіть цей скрипт знову")
|
||
return
|
||
|
||
print(f"\n✅ Знайдено {len(updates)} повідомлень:\n")
|
||
|
||
for update in updates[-5:]: # Показати останні 5
|
||
message = update.get("message", {})
|
||
from_user = message.get("from", {})
|
||
chat = message.get("chat", {})
|
||
text = message.get("text", "")
|
||
|
||
chat_id = chat.get("id")
|
||
username = from_user.get("username", "")
|
||
first_name = from_user.get("first_name", "")
|
||
|
||
print(f"Chat ID: {chat_id}")
|
||
print(f"From: {first_name} (@{username})")
|
||
print(f"Message: {text}")
|
||
print("-" * 50)
|
||
|
||
# Показати останній chat_id
|
||
last_update = updates[-1]
|
||
last_chat_id = last_update.get("message", {}).get("chat", {}).get("id")
|
||
|
||
print(f"\n✅ Використовуйте цей chat_id: {last_chat_id}")
|
||
print(f"\n📝 Команда для оновлення .env:")
|
||
print(f"sed -i 's/ADMIN_CHAT_ID=.*/ADMIN_CHAT_ID={last_chat_id}/' /opt/microdao-daarion/.env")
|
||
|
||
async def send_test_message(chat_id: int):
|
||
"""Відправити тестове повідомлення"""
|
||
url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
|
||
|
||
message = (
|
||
"🤖 *Sofia Monitoring Bot Active*\n\n"
|
||
"✅ Система моніторингу підключена!\n"
|
||
"Ви будете отримувати алерти при критичних проблемах:\n\n"
|
||
"• Порожні Qdrant колекції\n"
|
||
"• Втрата даних (>10%)\n"
|
||
"• Проблеми з бекапами\n"
|
||
"• Критичні помилки сервісів\n\n"
|
||
"_Моніторинг запускається кожні 6 годин_"
|
||
)
|
||
|
||
payload = {
|
||
"chat_id": chat_id,
|
||
"text": message,
|
||
"parse_mode": "Markdown"
|
||
}
|
||
|
||
async with httpx.AsyncClient() as client:
|
||
response = await client.post(url, json=payload)
|
||
response.raise_for_status()
|
||
print("✅ Тестове повідомлення надіслано!")
|
||
|
||
async def main():
|
||
"""Головна функція"""
|
||
if len(sys.argv) > 1:
|
||
# Якщо передано chat_id, відправити тест
|
||
chat_id = int(sys.argv[1])
|
||
await send_test_message(chat_id)
|
||
else:
|
||
# Отримати chat_id
|
||
await get_updates()
|
||
|
||
if __name__ == "__main__":
|
||
asyncio.run(main())
|