feat: add complete multi-agent AI system with Telegram bot

Initial implementation of MultiAgentsAI featuring:
- Dynamic agent configuration via environment variables
- SQLite database and JSON daily context storage
- OpenRouter API integration for multiple AI models
- Telegram bot with commands for control, history, and interaction
- Autonomous conversation loop with pause/resume and agent silencing
- Model testing and statistics commands
This commit is contained in:
2026-10-17 19:25:05 -03:00
commit 67e8df36ce
15 changed files with 2021 additions and 0 deletions
Executable
+64
View File
@@ -0,0 +1,64 @@
# Gerado por IA
import sqlite3
from datetime import datetime
from config import settings
def get_connection() -> sqlite3.Connection:
conn = sqlite3.connect(settings.DB_PATH)
conn.execute("PRAGMA journal_mode=WAL")
conn.row_factory = sqlite3.Row
return conn
def init_db() -> None:
conn = get_connection()
conn.execute("""
CREATE TABLE IF NOT EXISTS conversations (
id INTEGER PRIMARY KEY AUTOINCREMENT,
date TEXT NOT NULL,
agent_name TEXT NOT NULL,
message TEXT NOT NULL,
created_at TEXT NOT NULL
)
""")
conn.execute("""
CREATE INDEX IF NOT EXISTS idx_conversations_date ON conversations(date)
""")
conn.commit()
conn.close()
def save_message(agent_name: str, message: str) -> None:
conn = get_connection()
today = datetime.utcnow().strftime("%Y-%m-%d")
now = datetime.utcnow().isoformat()
conn.execute(
"INSERT INTO conversations (date, agent_name, message, created_at) VALUES (?, ?, ?, ?)",
(today, agent_name, message, now),
)
conn.commit()
conn.close()
def get_today_messages(limit: int | None = None) -> list[dict]:
conn = get_connection()
today = datetime.utcnow().strftime("%Y-%m-%d")
max_rows = limit or settings.MAX_CONTEXT_MESSAGES
rows = conn.execute(
"SELECT agent_name, message, created_at FROM conversations WHERE date = ? ORDER BY id ASC",
(today,),
).fetchall()
conn.close()
return [{"agent_name": r["agent_name"], "message": r["message"], "created_at": r["created_at"]} for r in rows]
def get_recent_messages(agent_name: str, limit: int = 10) -> list[dict]:
conn = get_connection()
today = datetime.utcnow().strftime("%Y-%m-%d")
rows = conn.execute(
"SELECT agent_name, message, created_at FROM conversations WHERE date = ? AND agent_name = ? ORDER BY id DESC LIMIT ?",
(today, agent_name, limit),
).fetchall()
conn.close()
return [{"agent_name": r["agent_name"], "message": r["message"], "created_at": r["created_at"]} for r in reversed(rows)]