aiogram/aiogram/utils/chat_member.py
Oleg A 46e033e6da
Add chat member tools (#1527)
* feat: add ChatMemberAdapter

* chore: apply formatter

* docs: added changelog

* docs: rm redundant import

* feat: add pre-defined groups
2024-07-06 20:34:07 +03:00

37 lines
912 B
Python

from typing import Tuple, Type, Union
from pydantic import Field, TypeAdapter
from typing_extensions import Annotated
from aiogram.types import (
ChatMember,
ChatMemberAdministrator,
ChatMemberBanned,
ChatMemberLeft,
ChatMemberMember,
ChatMemberOwner,
ChatMemberRestricted,
)
ChatMemberUnion = Union[
ChatMemberOwner,
ChatMemberAdministrator,
ChatMemberMember,
ChatMemberRestricted,
ChatMemberLeft,
ChatMemberBanned,
]
ChatMemberCollection = Tuple[Type[ChatMember], ...]
ChatMemberAdapter = TypeAdapter(
Annotated[
ChatMemberUnion,
Field(discriminator="status"),
]
)
ADMINS: ChatMemberCollection = (ChatMemberOwner, ChatMemberAdministrator)
USERS: ChatMemberCollection = (ChatMemberMember, ChatMemberRestricted)
MEMBERS: ChatMemberCollection = ADMINS + USERS
NOT_MEMBERS: ChatMemberCollection = (ChatMemberLeft, ChatMemberBanned)