mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
Refactor type unions with ResultChatMemberUnion and ResultMenuButtonUnion
Replaced verbose type definitions of chat member and menu button unions with `ResultChatMemberUnion` and `ResultMenuButtonUnion` for improved readability and maintainability. Updated relevant methods, modules, and documentation to use the new type aliases consistently.
This commit is contained in:
parent
f7c0e3d614
commit
28941439cf
11 changed files with 55 additions and 108 deletions
|
|
@ -169,12 +169,6 @@ from ..types import (
|
|||
ChatFullInfo,
|
||||
ChatIdUnion,
|
||||
ChatInviteLink,
|
||||
ChatMemberAdministrator,
|
||||
ChatMemberBanned,
|
||||
ChatMemberLeft,
|
||||
ChatMemberMember,
|
||||
ChatMemberOwner,
|
||||
ChatMemberRestricted,
|
||||
ChatPermissions,
|
||||
DateTimeUnion,
|
||||
Downloadable,
|
||||
|
|
@ -195,10 +189,7 @@ from ..types import (
|
|||
LinkPreviewOptions,
|
||||
MaskPosition,
|
||||
MediaUnion,
|
||||
MenuButtonCommands,
|
||||
MenuButtonDefault,
|
||||
MenuButtonUnion,
|
||||
MenuButtonWebApp,
|
||||
Message,
|
||||
MessageEntity,
|
||||
MessageId,
|
||||
|
|
@ -208,6 +199,8 @@ from ..types import (
|
|||
ReactionTypeUnion,
|
||||
ReplyMarkupUnion,
|
||||
ReplyParameters,
|
||||
ResultChatMemberUnion,
|
||||
ResultMenuButtonUnion,
|
||||
SentWebAppMessage,
|
||||
ShippingOption,
|
||||
StarTransactions,
|
||||
|
|
@ -1574,16 +1567,7 @@ class Bot:
|
|||
self,
|
||||
chat_id: ChatIdUnion,
|
||||
request_timeout: Optional[int] = None,
|
||||
) -> list[
|
||||
Union[
|
||||
ChatMemberOwner,
|
||||
ChatMemberAdministrator,
|
||||
ChatMemberMember,
|
||||
ChatMemberRestricted,
|
||||
ChatMemberLeft,
|
||||
ChatMemberBanned,
|
||||
]
|
||||
]:
|
||||
) -> list[ResultChatMemberUnion]:
|
||||
"""
|
||||
Use this method to get a list of administrators in a chat, which aren't bots. Returns an Array of :class:`aiogram.types.chat_member.ChatMember` objects.
|
||||
|
||||
|
|
@ -1604,14 +1588,7 @@ class Bot:
|
|||
chat_id: ChatIdUnion,
|
||||
user_id: int,
|
||||
request_timeout: Optional[int] = None,
|
||||
) -> Union[
|
||||
ChatMemberOwner,
|
||||
ChatMemberAdministrator,
|
||||
ChatMemberMember,
|
||||
ChatMemberRestricted,
|
||||
ChatMemberLeft,
|
||||
ChatMemberBanned,
|
||||
]:
|
||||
) -> ResultChatMemberUnion:
|
||||
"""
|
||||
Use this method to get information about a member of a chat. The method is only guaranteed to work for other users if the bot is an administrator in the chat. Returns a :class:`aiogram.types.chat_member.ChatMember` object on success.
|
||||
|
||||
|
|
@ -1653,7 +1630,7 @@ class Bot:
|
|||
self,
|
||||
chat_id: Optional[int] = None,
|
||||
request_timeout: Optional[int] = None,
|
||||
) -> Union[MenuButtonDefault, MenuButtonWebApp, MenuButtonCommands]:
|
||||
) -> ResultMenuButtonUnion:
|
||||
"""
|
||||
Use this method to get the current value of the bot's menu button in a private chat, or the default menu button. Returns :class:`aiogram.types.menu_button.MenuButton` on success.
|
||||
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ class TelegramMethod(BotContextController, BaseModel, Generic[TelegramType], ABC
|
|||
return {k: v for k, v in values.items() if not isinstance(v, UNSET_TYPE)}
|
||||
|
||||
if TYPE_CHECKING:
|
||||
__returning__: ClassVar[type]
|
||||
__returning__: ClassVar[Any]
|
||||
__api_method__: ClassVar[str]
|
||||
else:
|
||||
|
||||
|
|
|
|||
|
|
@ -1,49 +1,19 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING, Any, Union
|
||||
from typing import TYPE_CHECKING, Any
|
||||
|
||||
from ..types import (
|
||||
ChatIdUnion,
|
||||
ChatMemberAdministrator,
|
||||
ChatMemberBanned,
|
||||
ChatMemberLeft,
|
||||
ChatMemberMember,
|
||||
ChatMemberOwner,
|
||||
ChatMemberRestricted,
|
||||
)
|
||||
from ..types import ChatIdUnion, ResultChatMemberUnion
|
||||
from .base import TelegramMethod
|
||||
|
||||
|
||||
class GetChatAdministrators(
|
||||
TelegramMethod[
|
||||
list[
|
||||
Union[
|
||||
ChatMemberOwner,
|
||||
ChatMemberAdministrator,
|
||||
ChatMemberMember,
|
||||
ChatMemberRestricted,
|
||||
ChatMemberLeft,
|
||||
ChatMemberBanned,
|
||||
]
|
||||
]
|
||||
]
|
||||
):
|
||||
class GetChatAdministrators(TelegramMethod[list[ResultChatMemberUnion]]):
|
||||
"""
|
||||
Use this method to get a list of administrators in a chat, which aren't bots. Returns an Array of :class:`aiogram.types.chat_member.ChatMember` objects.
|
||||
|
||||
Source: https://core.telegram.org/bots/api#getchatadministrators
|
||||
"""
|
||||
|
||||
__returning__ = list[
|
||||
Union[
|
||||
ChatMemberOwner,
|
||||
ChatMemberAdministrator,
|
||||
ChatMemberMember,
|
||||
ChatMemberRestricted,
|
||||
ChatMemberLeft,
|
||||
ChatMemberBanned,
|
||||
]
|
||||
]
|
||||
__returning__ = list[ResultChatMemberUnion]
|
||||
__api_method__ = "getChatAdministrators"
|
||||
|
||||
chat_id: ChatIdUnion
|
||||
|
|
|
|||
|
|
@ -1,45 +1,19 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING, Any, Union
|
||||
from typing import TYPE_CHECKING, Any
|
||||
|
||||
from ..types import (
|
||||
ChatIdUnion,
|
||||
ChatMemberAdministrator,
|
||||
ChatMemberBanned,
|
||||
ChatMemberLeft,
|
||||
ChatMemberMember,
|
||||
ChatMemberOwner,
|
||||
ChatMemberRestricted,
|
||||
)
|
||||
from ..types import ChatIdUnion, ResultChatMemberUnion
|
||||
from .base import TelegramMethod
|
||||
|
||||
|
||||
class GetChatMember(
|
||||
TelegramMethod[
|
||||
Union[
|
||||
ChatMemberOwner,
|
||||
ChatMemberAdministrator,
|
||||
ChatMemberMember,
|
||||
ChatMemberRestricted,
|
||||
ChatMemberLeft,
|
||||
ChatMemberBanned,
|
||||
]
|
||||
]
|
||||
):
|
||||
class GetChatMember(TelegramMethod[ResultChatMemberUnion]):
|
||||
"""
|
||||
Use this method to get information about a member of a chat. The method is only guaranteed to work for other users if the bot is an administrator in the chat. Returns a :class:`aiogram.types.chat_member.ChatMember` object on success.
|
||||
|
||||
Source: https://core.telegram.org/bots/api#getchatmember
|
||||
"""
|
||||
|
||||
__returning__ = Union[
|
||||
ChatMemberOwner,
|
||||
ChatMemberAdministrator,
|
||||
ChatMemberMember,
|
||||
ChatMemberRestricted,
|
||||
ChatMemberLeft,
|
||||
ChatMemberBanned,
|
||||
]
|
||||
__returning__ = ResultChatMemberUnion
|
||||
__api_method__ = "getChatMember"
|
||||
|
||||
chat_id: ChatIdUnion
|
||||
|
|
|
|||
|
|
@ -1,21 +1,19 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING, Any, Optional, Union
|
||||
from typing import TYPE_CHECKING, Any, Optional
|
||||
|
||||
from ..types import MenuButtonCommands, MenuButtonDefault, MenuButtonWebApp
|
||||
from ..types import ResultMenuButtonUnion
|
||||
from .base import TelegramMethod
|
||||
|
||||
|
||||
class GetChatMenuButton(
|
||||
TelegramMethod[Union[MenuButtonDefault, MenuButtonWebApp, MenuButtonCommands]]
|
||||
):
|
||||
class GetChatMenuButton(TelegramMethod[ResultMenuButtonUnion]):
|
||||
"""
|
||||
Use this method to get the current value of the bot's menu button in a private chat, or the default menu button. Returns :class:`aiogram.types.menu_button.MenuButton` on success.
|
||||
|
||||
Source: https://core.telegram.org/bots/api#getchatmenubutton
|
||||
"""
|
||||
|
||||
__returning__ = Union[MenuButtonDefault, MenuButtonWebApp, MenuButtonCommands]
|
||||
__returning__ = ResultMenuButtonUnion
|
||||
__api_method__ = "getChatMenuButton"
|
||||
|
||||
chat_id: Optional[int] = None
|
||||
|
|
|
|||
|
|
@ -220,6 +220,8 @@ from .reply_keyboard_remove import ReplyKeyboardRemove
|
|||
from .reply_markup_union import ReplyMarkupUnion
|
||||
from .reply_parameters import ReplyParameters
|
||||
from .response_parameters import ResponseParameters
|
||||
from .result_chat_member_union import ResultChatMemberUnion
|
||||
from .result_menu_button_union import ResultMenuButtonUnion
|
||||
from .revenue_withdrawal_state import RevenueWithdrawalState
|
||||
from .revenue_withdrawal_state_failed import RevenueWithdrawalStateFailed
|
||||
from .revenue_withdrawal_state_pending import RevenueWithdrawalStatePending
|
||||
|
|
@ -485,6 +487,8 @@ __all__ = (
|
|||
"ReplyMarkupUnion",
|
||||
"ReplyParameters",
|
||||
"ResponseParameters",
|
||||
"ResultChatMemberUnion",
|
||||
"ResultMenuButtonUnion",
|
||||
"RevenueWithdrawalState",
|
||||
"RevenueWithdrawalStateFailed",
|
||||
"RevenueWithdrawalStatePending",
|
||||
|
|
|
|||
17
aiogram/types/result_chat_member_union.py
Normal file
17
aiogram/types/result_chat_member_union.py
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
from typing import Union
|
||||
|
||||
from .chat_member_administrator import ChatMemberAdministrator
|
||||
from .chat_member_banned import ChatMemberBanned
|
||||
from .chat_member_left import ChatMemberLeft
|
||||
from .chat_member_member import ChatMemberMember
|
||||
from .chat_member_owner import ChatMemberOwner
|
||||
from .chat_member_restricted import ChatMemberRestricted
|
||||
|
||||
ResultChatMemberUnion = Union[
|
||||
ChatMemberOwner,
|
||||
ChatMemberAdministrator,
|
||||
ChatMemberMember,
|
||||
ChatMemberRestricted,
|
||||
ChatMemberLeft,
|
||||
ChatMemberBanned,
|
||||
]
|
||||
7
aiogram/types/result_menu_button_union.py
Normal file
7
aiogram/types/result_menu_button_union.py
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
from typing import Union
|
||||
|
||||
from .menu_button_commands import MenuButtonCommands
|
||||
from .menu_button_default import MenuButtonDefault
|
||||
from .menu_button_web_app import MenuButtonWebApp
|
||||
|
||||
ResultMenuButtonUnion = Union[MenuButtonDefault, MenuButtonWebApp, MenuButtonCommands]
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
getChatAdministrators
|
||||
#####################
|
||||
|
||||
Returns: :obj:`list[Union[ChatMemberOwner, ChatMemberAdministrator, ChatMemberMember, ChatMemberRestricted, ChatMemberLeft, ChatMemberBanned]]`
|
||||
Returns: :obj:`list[ResultChatMemberUnion]`
|
||||
|
||||
.. automodule:: aiogram.methods.get_chat_administrators
|
||||
:members:
|
||||
|
|
@ -19,7 +19,7 @@ As bot method
|
|||
|
||||
.. code-block::
|
||||
|
||||
result: list[Union[ChatMemberOwner, ChatMemberAdministrator, ChatMemberMember, ChatMemberRestricted, ChatMemberLeft, ChatMemberBanned]] = await bot.get_chat_administrators(...)
|
||||
result: list[ResultChatMemberUnion] = await bot.get_chat_administrators(...)
|
||||
|
||||
|
||||
Method as object
|
||||
|
|
@ -35,7 +35,7 @@ With specific bot
|
|||
|
||||
.. code-block:: python
|
||||
|
||||
result: list[Union[ChatMemberOwner, ChatMemberAdministrator, ChatMemberMember, ChatMemberRestricted, ChatMemberLeft, ChatMemberBanned]] = await bot(GetChatAdministrators(...))
|
||||
result: list[ResultChatMemberUnion] = await bot(GetChatAdministrators(...))
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
getChatMember
|
||||
#############
|
||||
|
||||
Returns: :obj:`Union[ChatMemberOwner, ChatMemberAdministrator, ChatMemberMember, ChatMemberRestricted, ChatMemberLeft, ChatMemberBanned]`
|
||||
Returns: :obj:`ResultChatMemberUnion`
|
||||
|
||||
.. automodule:: aiogram.methods.get_chat_member
|
||||
:members:
|
||||
|
|
@ -19,7 +19,7 @@ As bot method
|
|||
|
||||
.. code-block::
|
||||
|
||||
result: Union[ChatMemberOwner, ChatMemberAdministrator, ChatMemberMember, ChatMemberRestricted, ChatMemberLeft, ChatMemberBanned] = await bot.get_chat_member(...)
|
||||
result: ResultChatMemberUnion = await bot.get_chat_member(...)
|
||||
|
||||
|
||||
Method as object
|
||||
|
|
@ -35,7 +35,7 @@ With specific bot
|
|||
|
||||
.. code-block:: python
|
||||
|
||||
result: Union[ChatMemberOwner, ChatMemberAdministrator, ChatMemberMember, ChatMemberRestricted, ChatMemberLeft, ChatMemberBanned] = await bot(GetChatMember(...))
|
||||
result: ResultChatMemberUnion = await bot(GetChatMember(...))
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
getChatMenuButton
|
||||
#################
|
||||
|
||||
Returns: :obj:`Union[MenuButtonDefault, MenuButtonWebApp, MenuButtonCommands]`
|
||||
Returns: :obj:`ResultMenuButtonUnion`
|
||||
|
||||
.. automodule:: aiogram.methods.get_chat_menu_button
|
||||
:members:
|
||||
|
|
@ -19,7 +19,7 @@ As bot method
|
|||
|
||||
.. code-block::
|
||||
|
||||
result: Union[MenuButtonDefault, MenuButtonWebApp, MenuButtonCommands] = await bot.get_chat_menu_button(...)
|
||||
result: ResultMenuButtonUnion = await bot.get_chat_menu_button(...)
|
||||
|
||||
|
||||
Method as object
|
||||
|
|
@ -35,4 +35,4 @@ With specific bot
|
|||
|
||||
.. code-block:: python
|
||||
|
||||
result: Union[MenuButtonDefault, MenuButtonWebApp, MenuButtonCommands] = await bot(GetChatMenuButton(...))
|
||||
result: ResultMenuButtonUnion = await bot(GetChatMenuButton(...))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue