perf(*): bound list queries, batch fetches, harden media downloads
This commit is contained in:
1 parent
9c12628304
commit
1fa4f18a9b
35 files changed
+473
-138
No files matched your search
@@ -65,16 +65,28 @@ async def _enrich_members(client: Client, ctx: CaptureContext, chat_id: int) ->
|
||||
return
|
||||
|
||||
|
||||
async def _fetch_users(client: Client, ids: list[int]) -> list[User]:
|
||||
try:
|
||||
users = await client.get_users(ids)
|
||||
except BadRequest:
|
||||
users = []
|
||||
for sender_id in ids:
|
||||
try:
|
||||
users.append(await client.get_users(sender_id))
|
||||
except BadRequest:
|
||||
continue
|
||||
if isinstance(users, User):
|
||||
return [users]
|
||||
return [user for user in users if isinstance(user, User)]
|
||||
|
||||
|
||||
async def _enrich_senders(client: Client, ctx: CaptureContext, chat_id: int) -> None:
|
||||
rows = await ctx.pool.fetch(_MISSING_SENDERS, ctx.account_id, chat_id)
|
||||
ids = [row["sender_id"] for row in rows]
|
||||
for sender_id in ids:
|
||||
try:
|
||||
user = await client.get_users(sender_id)
|
||||
except BadRequest:
|
||||
continue
|
||||
if isinstance(user, User):
|
||||
await _save_user(ctx, user)
|
||||
if not ids:
|
||||
return
|
||||
for user in await _fetch_users(client, ids):
|
||||
await _save_user(ctx, user)
|
||||
|
||||
|
||||
@register("enrich_chat")
|
||||
|
||||
Reference in new issue
Block a user