feat: add realtime capturing
This commit is contained in:
1 parent
920a0235e2
commit
3c1a12750c
29 files changed
+967
-47
No files matched your search
@@ -0,0 +1,47 @@
|
||||
import asyncpg
|
||||
from pyrogram import Client
|
||||
|
||||
from userbot.modules.contacts import ContactCache
|
||||
from userbot.modules.folders import FolderCache
|
||||
from utils.policy.models import CaptureToggles, ChatMeta, PolicySet
|
||||
from utils.policy.repository import load_policy_set
|
||||
from utils.policy.resolver import resolve
|
||||
from utils.storage import ContentAddressedStorage
|
||||
|
||||
|
||||
class CaptureContext:
|
||||
def __init__(
|
||||
self,
|
||||
account_id: int,
|
||||
pool: asyncpg.Pool,
|
||||
storage: ContentAddressedStorage,
|
||||
folders: FolderCache,
|
||||
contacts: ContactCache,
|
||||
) -> None:
|
||||
self.account_id = account_id
|
||||
self.pool = pool
|
||||
self.storage = storage
|
||||
self.folders = folders
|
||||
self.contacts = contacts
|
||||
self.policies = PolicySet()
|
||||
|
||||
async def reload_policies(self) -> None:
|
||||
self.policies = await load_policy_set(self.pool, self.account_id)
|
||||
|
||||
def resolve(self, chat: ChatMeta) -> CaptureToggles:
|
||||
return resolve(chat, self.folders.folders, self.policies)
|
||||
|
||||
|
||||
async def build_capture_context(
|
||||
client: Client,
|
||||
pool: asyncpg.Pool,
|
||||
storage: ContentAddressedStorage,
|
||||
account_id: int,
|
||||
) -> CaptureContext:
|
||||
folders = FolderCache(client, pool, account_id)
|
||||
await folders.refresh()
|
||||
contacts = ContactCache(client)
|
||||
await contacts.refresh()
|
||||
ctx = CaptureContext(account_id, pool, storage, folders, contacts)
|
||||
await ctx.reload_policies()
|
||||
return ctx
|
||||
Reference in new issue
Block a user