Initial commit for copykar

This commit is contained in:
Antigravity Bot
2026-08-30 15:51:39 +03:30
parent a5342b0850
commit e7db5125a2
3 changed files with 10 additions and 8 deletions
+1
View File
@@ -1,5 +1,6 @@
import json
import asyncpg
from typing import Optional, List, Dict, Any, Tuple
from datetime import datetime, timezone
from db.models import (
SourceChannel, SourceWebsite, TargetChannel, Post, Setting,
+4 -3
View File
@@ -10,7 +10,7 @@ services:
POSTGRES_DB: ${POSTGRES_DB:-copykar}
LD_PRELOAD: /usr/local/lib/libfakestat.so
ports:
- "5432:5432"
- "127.0.0.1:5432:5432"
volumes:
- ./monitoring/postgres/libfakestat_musl.so:/usr/local/lib/libfakestat.so:ro
- ./data/postgres:/var/lib/postgresql/data
@@ -27,7 +27,7 @@ services:
entrypoint: ["redis-server"]
command: ["--protected-mode", "no", "--dir", "/data", "--save", "60", "1"]
ports:
- "6379:6379"
- "127.0.0.1:6379:6379"
volumes:
- ./data/redis:/data
healthcheck:
@@ -49,12 +49,13 @@ services:
redis:
condition: service_healthy
ports:
- "8008:8008"
- "127.0.0.1:8008:8008"
env_file:
- .env
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- ./:/app
- ./data/app:/app/data
- ./data/sessions:/app/sessions
- /home:/host_os/home:ro
+5 -5
View File
@@ -1705,35 +1705,35 @@ class AdminBotService:
await event.reply(welcome_text, parse_mode="html", buttons=menu)
# --- 5 Primary Category Hubs: Copy, AI, Bots, System, Monitor ---
@self.client.on(events.NewMessage(pattern=r"(?i)^(/copy|📋 مدیریت محتوا \(copy\)|📋 copy \(محتوا\)|📋 مدیریت محتوا|📋 copy|copy)$"))
@self.client.on(events.NewMessage(pattern=r"(?i)^(/copy|📋.*|.*copy.*|.*محتوا.*)$"))
async def cmd_copy_hub(event: events.NewMessage.Event):
if not self.is_admin(event.sender_id):
return
text, buttons = await self._render_copy_hub()
await event.reply(text, parse_mode="html", buttons=buttons)
@self.client.on(events.NewMessage(pattern=r"(?i)^(/ai|🧠 هوش مصنوعی \(ai\)|🧠 ai \(هوش مصنوعی\)|🧠 هوش مصنوعی|🧠 ai|ai)$"))
@self.client.on(events.NewMessage(pattern=r"(?i)^(/ai|🧠.*|.*ai.*|.*هوش مصنوعی.*)$"))
async def cmd_ai_hub(event: events.NewMessage.Event):
if not self.is_admin(event.sender_id):
return
text, buttons = await self._render_ai_menu()
await event.reply(text, parse_mode="html", buttons=buttons)
@self.client.on(events.NewMessage(pattern=r"(?i)^(/bots|🤖 کانال‌ها و وب \(bots\)|🤖 bots \(کانال‌ها و ربات‌ها\)|🤖 کانال‌ها و وب|🤖 bots|bots)$"))
@self.client.on(events.NewMessage(pattern=r"(?i)^(/bots|🤖.*|.*bots.*|.*کانال‌ها و وب.*|.*ربات.*)$"))
async def cmd_bots_hub(event: events.NewMessage.Event):
if not self.is_admin(event.sender_id):
return
text, buttons = await self._render_bots_hub()
await event.reply(text, parse_mode="html", buttons=buttons)
@self.client.on(events.NewMessage(pattern=r"(?i)^(/system|⚙️ مدیریت سیستم \(system\)|⚙️ system \(سیستم\)|⚙️ مدیریت سیستم|⚙️ system|system)$"))
@self.client.on(events.NewMessage(pattern=r"(?i)^(/system|⚙️.*|.*system.*|.*سیستم.*)$"))
async def cmd_system_hub(event: events.NewMessage.Event):
if not self.is_admin(event.sender_id):
return
text, buttons = await self._render_system_hub()
await event.reply(text, parse_mode="html", buttons=buttons)
@self.client.on(events.NewMessage(pattern=r"(?i)^(/monitor|📊 مانیتورینگ \(monitor\)|📊 monitor \(مانیتورینگ\)|📊 مانیتورینگ|📊 monitor|monitor)$"))
@self.client.on(events.NewMessage(pattern=r"(?i)^(/monitor|📊.*|.*monitor.*|.*مانیتورینگ.*)$"))
async def cmd_monitor_hub(event: events.NewMessage.Event):
if not self.is_admin(event.sender_id):
return