new: better typings for get_chat_administrators

This commit is contained in:
uburuntu 2021-07-30 01:07:44 +03:00
parent 6d3340b490
commit 49be45fd3a
No known key found for this signature in database
GPG key ID: 59E643252F903BE1
3 changed files with 12 additions and 7 deletions

View file

@ -2129,7 +2129,8 @@ class Bot(BaseBot, DataMixin, ContextInstanceMixin):
return types.Chat(**result)
async def get_chat_administrators(self, chat_id: typing.Union[base.Integer, base.String]
) -> typing.List[types.ChatMember]:
) -> typing.List[typing.Union[types.ChatMemberOwner, types.ChatMemberAdministrator]]:
"""
Use this method to get a list of administrators in a chat.

View file

@ -7,7 +7,7 @@ import typing
from . import base, fields
from .chat_invite_link import ChatInviteLink
from .chat_location import ChatLocation
from .chat_member import ChatMember
from .chat_member import ChatMember, ChatMemberAdministrator, ChatMemberOwner
from .chat_permissions import ChatPermissions
from .chat_photo import ChatPhoto
from .input_file import InputFile
@ -470,7 +470,7 @@ class Chat(base.TelegramObject):
"""
return await self.bot.leave_chat(self.id)
async def get_administrators(self) -> typing.List[ChatMember]:
async def get_administrators(self) -> typing.List[typing.Union[ChatMemberOwner, ChatMemberAdministrator]]:
"""
Use this method to get a list of administrators in a chat.
@ -480,7 +480,7 @@ class Chat(base.TelegramObject):
chat administrators except other bots.
If the chat is a group or a supergroup and no administrators were appointed,
only the creator will be returned.
:rtype: :obj:`typing.List[types.ChatMember]`
:rtype: :obj:`typing.List[typing.Union[types.ChatMemberOwner, types.ChatMemberAdministrator]]`
"""
return await self.bot.get_chat_administrators(self.id)

View file

@ -69,7 +69,9 @@ class ChatMember(base.TelegramObject):
return self.user.id
@classmethod
def resolve(cls, **kwargs) -> "ChatMember":
def resolve(cls, **kwargs) -> typing.Union["ChatMemberOwner", "ChatMemberAdministrator",
"ChatMemberMember", "ChatMemberRestricted",
"ChatMemberLeft", "ChatMemberBanned"]:
status = kwargs.get("status")
mapping = {
ChatMemberStatus.OWNER: ChatMemberOwner,
@ -89,8 +91,10 @@ class ChatMember(base.TelegramObject):
def to_object(cls,
data: typing.Dict[str, typing.Any],
conf: typing.Dict[str, typing.Any] = None
) -> "ChatMember":
return cls.resolve(**data)
) -> typing.Union["ChatMemberOwner", "ChatMemberAdministrator",
"ChatMemberMember", "ChatMemberRestricted",
"ChatMemberLeft", "ChatMemberBanned"]:
return cls.resolve(conf=conf, **data)
def is_chat_creator(self) -> bool:
return ChatMemberStatus.is_chat_creator(self.status)