feat: log presence, read receipts, group leaves, links, profiles, stories
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
from dataclasses import dataclass
|
||||
|
||||
from pyrogram import Client, raw
|
||||
from pyrogram.types import User
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class ProfileFields:
|
||||
first_name: str | None = None
|
||||
last_name: str | None = None
|
||||
username: str | None = None
|
||||
phone: str | None = None
|
||||
photo_unique_id: str | None = None
|
||||
is_deleted_account: bool = False
|
||||
|
||||
|
||||
def active_username(usernames: list[raw.types.Username]) -> str | None:
|
||||
for username in usernames:
|
||||
if getattr(username, "active", False):
|
||||
return username.username
|
||||
return usernames[0].username if usernames else None
|
||||
|
||||
|
||||
def snapshot_from_user(
|
||||
client: Client, raw_user: raw.types.User
|
||||
) -> tuple[ProfileFields, str | None, str | None]:
|
||||
user = User._parse(client, raw_user) # noqa: SLF001
|
||||
photo = user.photo if user else None
|
||||
photo_unique_id = photo.big_photo_unique_id if photo else None
|
||||
photo_file_id = photo.big_file_id if photo else None
|
||||
fields = ProfileFields(
|
||||
first_name=user.first_name if user else None,
|
||||
last_name=user.last_name if user else None,
|
||||
username=user.username if user else None,
|
||||
phone=user.phone_number if user else None,
|
||||
photo_unique_id=photo_unique_id,
|
||||
is_deleted_account=bool(getattr(raw_user, "deleted", False)),
|
||||
)
|
||||
return fields, photo_file_id, photo_unique_id
|
||||
Reference in New Issue
Block a user