Initial commit for copykar
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
import json
|
import json
|
||||||
import asyncpg
|
import asyncpg
|
||||||
|
from typing import Optional, List, Dict, Any, Tuple
|
||||||
from datetime import datetime, timezone
|
from datetime import datetime, timezone
|
||||||
from db.models import (
|
from db.models import (
|
||||||
SourceChannel, SourceWebsite, TargetChannel, Post, Setting,
|
SourceChannel, SourceWebsite, TargetChannel, Post, Setting,
|
||||||
|
|||||||
+4
-3
@@ -10,7 +10,7 @@ services:
|
|||||||
POSTGRES_DB: ${POSTGRES_DB:-copykar}
|
POSTGRES_DB: ${POSTGRES_DB:-copykar}
|
||||||
LD_PRELOAD: /usr/local/lib/libfakestat.so
|
LD_PRELOAD: /usr/local/lib/libfakestat.so
|
||||||
ports:
|
ports:
|
||||||
- "5432:5432"
|
- "127.0.0.1:5432:5432"
|
||||||
volumes:
|
volumes:
|
||||||
- ./monitoring/postgres/libfakestat_musl.so:/usr/local/lib/libfakestat.so:ro
|
- ./monitoring/postgres/libfakestat_musl.so:/usr/local/lib/libfakestat.so:ro
|
||||||
- ./data/postgres:/var/lib/postgresql/data
|
- ./data/postgres:/var/lib/postgresql/data
|
||||||
@@ -27,7 +27,7 @@ services:
|
|||||||
entrypoint: ["redis-server"]
|
entrypoint: ["redis-server"]
|
||||||
command: ["--protected-mode", "no", "--dir", "/data", "--save", "60", "1"]
|
command: ["--protected-mode", "no", "--dir", "/data", "--save", "60", "1"]
|
||||||
ports:
|
ports:
|
||||||
- "6379:6379"
|
- "127.0.0.1:6379:6379"
|
||||||
volumes:
|
volumes:
|
||||||
- ./data/redis:/data
|
- ./data/redis:/data
|
||||||
healthcheck:
|
healthcheck:
|
||||||
@@ -49,12 +49,13 @@ services:
|
|||||||
redis:
|
redis:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
ports:
|
ports:
|
||||||
- "8008:8008"
|
- "127.0.0.1:8008:8008"
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
extra_hosts:
|
extra_hosts:
|
||||||
- "host.docker.internal:host-gateway"
|
- "host.docker.internal:host-gateway"
|
||||||
volumes:
|
volumes:
|
||||||
|
- ./:/app
|
||||||
- ./data/app:/app/data
|
- ./data/app:/app/data
|
||||||
- ./data/sessions:/app/sessions
|
- ./data/sessions:/app/sessions
|
||||||
- /home:/host_os/home:ro
|
- /home:/host_os/home:ro
|
||||||
|
|||||||
@@ -1705,35 +1705,35 @@ class AdminBotService:
|
|||||||
await event.reply(welcome_text, parse_mode="html", buttons=menu)
|
await event.reply(welcome_text, parse_mode="html", buttons=menu)
|
||||||
|
|
||||||
# --- 5 Primary Category Hubs: Copy, AI, Bots, System, Monitor ---
|
# --- 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):
|
async def cmd_copy_hub(event: events.NewMessage.Event):
|
||||||
if not self.is_admin(event.sender_id):
|
if not self.is_admin(event.sender_id):
|
||||||
return
|
return
|
||||||
text, buttons = await self._render_copy_hub()
|
text, buttons = await self._render_copy_hub()
|
||||||
await event.reply(text, parse_mode="html", buttons=buttons)
|
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):
|
async def cmd_ai_hub(event: events.NewMessage.Event):
|
||||||
if not self.is_admin(event.sender_id):
|
if not self.is_admin(event.sender_id):
|
||||||
return
|
return
|
||||||
text, buttons = await self._render_ai_menu()
|
text, buttons = await self._render_ai_menu()
|
||||||
await event.reply(text, parse_mode="html", buttons=buttons)
|
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):
|
async def cmd_bots_hub(event: events.NewMessage.Event):
|
||||||
if not self.is_admin(event.sender_id):
|
if not self.is_admin(event.sender_id):
|
||||||
return
|
return
|
||||||
text, buttons = await self._render_bots_hub()
|
text, buttons = await self._render_bots_hub()
|
||||||
await event.reply(text, parse_mode="html", buttons=buttons)
|
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):
|
async def cmd_system_hub(event: events.NewMessage.Event):
|
||||||
if not self.is_admin(event.sender_id):
|
if not self.is_admin(event.sender_id):
|
||||||
return
|
return
|
||||||
text, buttons = await self._render_system_hub()
|
text, buttons = await self._render_system_hub()
|
||||||
await event.reply(text, parse_mode="html", buttons=buttons)
|
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):
|
async def cmd_monitor_hub(event: events.NewMessage.Event):
|
||||||
if not self.is_admin(event.sender_id):
|
if not self.is_admin(event.sender_id):
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user