mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
refactor: ChatMember split
This commit is contained in:
parent
3e177648e2
commit
fb8bf8ea61
1 changed files with 113 additions and 44 deletions
|
|
@ -1,53 +1,10 @@
|
|||
import datetime
|
||||
|
||||
from . import base
|
||||
from . import fields
|
||||
from . import base, fields
|
||||
from .user import User
|
||||
from ..utils import helper
|
||||
|
||||
|
||||
class ChatMember(base.TelegramObject):
|
||||
"""
|
||||
This object contains information about one member of a chat.
|
||||
|
||||
https://core.telegram.org/bots/api#chatmember
|
||||
"""
|
||||
user: User = fields.Field(base=User)
|
||||
status: base.String = fields.Field()
|
||||
custom_title: base.String = fields.Field()
|
||||
is_anonymous: base.Boolean = fields.Field()
|
||||
can_be_edited: base.Boolean = fields.Field()
|
||||
can_manage_chat: base.Boolean = fields.Field()
|
||||
can_post_messages: base.Boolean = fields.Field()
|
||||
can_edit_messages: base.Boolean = fields.Field()
|
||||
can_delete_messages: base.Boolean = fields.Field()
|
||||
can_manage_voice_chats: base.Boolean = fields.Field()
|
||||
can_restrict_members: base.Boolean = fields.Field()
|
||||
can_promote_members: base.Boolean = fields.Field()
|
||||
can_change_info: base.Boolean = fields.Field()
|
||||
can_invite_users: base.Boolean = fields.Field()
|
||||
can_pin_messages: base.Boolean = fields.Field()
|
||||
is_member: base.Boolean = fields.Field()
|
||||
can_send_messages: base.Boolean = fields.Field()
|
||||
can_send_media_messages: base.Boolean = fields.Field()
|
||||
can_send_polls: base.Boolean = fields.Field()
|
||||
can_send_other_messages: base.Boolean = fields.Field()
|
||||
can_add_web_page_previews: base.Boolean = fields.Field()
|
||||
until_date: datetime.datetime = fields.DateTimeField()
|
||||
|
||||
def is_chat_creator(self) -> bool:
|
||||
return ChatMemberStatus.is_chat_creator(self.status)
|
||||
|
||||
def is_chat_admin(self) -> bool:
|
||||
return ChatMemberStatus.is_chat_admin(self.status)
|
||||
|
||||
def is_chat_member(self) -> bool:
|
||||
return ChatMemberStatus.is_chat_member(self.status)
|
||||
|
||||
def __int__(self) -> int:
|
||||
return self.user.id
|
||||
|
||||
|
||||
class ChatMemberStatus(helper.Helper):
|
||||
"""
|
||||
Chat member status
|
||||
|
|
@ -55,11 +12,13 @@ class ChatMemberStatus(helper.Helper):
|
|||
mode = helper.HelperMode.lowercase
|
||||
|
||||
CREATOR = helper.Item() # creator
|
||||
OWNER = helper.Item() # owner
|
||||
ADMINISTRATOR = helper.Item() # administrator
|
||||
MEMBER = helper.Item() # member
|
||||
RESTRICTED = helper.Item() # restricted
|
||||
LEFT = helper.Item() # left
|
||||
KICKED = helper.Item() # kicked
|
||||
BANNED = helper.Item() # banned
|
||||
|
||||
@classmethod
|
||||
def is_chat_creator(cls, role: str) -> bool:
|
||||
|
|
@ -72,3 +31,113 @@ class ChatMemberStatus(helper.Helper):
|
|||
@classmethod
|
||||
def is_chat_member(cls, role: str) -> bool:
|
||||
return role in (cls.MEMBER, cls.ADMINISTRATOR, cls.CREATOR, cls.RESTRICTED)
|
||||
|
||||
|
||||
class ChatMember(base.TelegramObject):
|
||||
"""
|
||||
This object contains information about one member of a chat.
|
||||
Currently, the following 6 types of chat members are supported:
|
||||
ChatMemberOwner
|
||||
ChatMemberAdministrator
|
||||
ChatMemberMember
|
||||
ChatMemberRestricted
|
||||
ChatMemberLeft
|
||||
ChatMemberBanned
|
||||
|
||||
https://core.telegram.org/bots/api#chatmember
|
||||
"""
|
||||
status: base.String = fields.Field()
|
||||
user: User = fields.Field(base=User)
|
||||
|
||||
def __int__(self) -> int:
|
||||
return self.user.id
|
||||
|
||||
|
||||
class ChatMemberOwner(ChatMember):
|
||||
"""
|
||||
Represents a chat member that owns the chat and has all
|
||||
administrator privileges.
|
||||
https://core.telegram.org/bots/api#chatmemberowner
|
||||
"""
|
||||
status: base.String = fields.Field(default=ChatMemberStatus.OWNER)
|
||||
user: User = fields.Field(base=User)
|
||||
custom_title: base.String = fields.Field()
|
||||
is_anonymous: base.Boolean = fields.Field()
|
||||
|
||||
|
||||
class ChatMemberAdministrator(ChatMember):
|
||||
"""
|
||||
Represents a chat member that has some additional privileges.
|
||||
|
||||
https://core.telegram.org/bots/api#chatmemberadministrator
|
||||
"""
|
||||
status: base.String = fields.Field(default=ChatMemberStatus.ADMINISTRATOR)
|
||||
user: User = fields.Field(base=User)
|
||||
can_be_edited: base.Boolean = fields.Field()
|
||||
custom_title: base.String = fields.Field()
|
||||
is_anonymous: base.Boolean = fields.Field()
|
||||
can_manage_chat: base.Boolean = fields.Field()
|
||||
can_post_messages: base.Boolean = fields.Field()
|
||||
can_edit_messages: base.Boolean = fields.Field()
|
||||
can_delete_messages: base.Boolean = fields.Field()
|
||||
can_manage_voice_chats: base.Boolean = fields.Field()
|
||||
can_restrict_members: base.Boolean = fields.Field()
|
||||
can_promote_members: base.Boolean = fields.Field()
|
||||
can_change_info: base.Boolean = fields.Field()
|
||||
can_invite_users: base.Boolean = fields.Field()
|
||||
can_pin_messages: base.Boolean = fields.Field()
|
||||
|
||||
|
||||
class ChatMemberMember(ChatMember):
|
||||
"""
|
||||
Represents a chat member that has no additional privileges or
|
||||
restrictions.
|
||||
|
||||
https://core.telegram.org/bots/api#chatmembermember
|
||||
"""
|
||||
status: base.String = fields.Field(default=ChatMemberStatus.MEMBER)
|
||||
user: User = fields.Field(base=User)
|
||||
|
||||
|
||||
class ChatMemberRestricted(ChatMember):
|
||||
"""
|
||||
Represents a chat member that is under certain restrictions in the
|
||||
chat. Supergroups only.
|
||||
|
||||
https://core.telegram.org/bots/api#chatmemberrestricted
|
||||
"""
|
||||
status: base.String = fields.Field(default=ChatMemberStatus.RESTRICTED)
|
||||
user: User = fields.Field(base=User)
|
||||
is_member: base.Boolean = fields.Field()
|
||||
can_change_info: base.Boolean = fields.Field()
|
||||
can_invite_users: base.Boolean = fields.Field()
|
||||
can_pin_messages: base.Boolean = fields.Field()
|
||||
can_send_messages: base.Boolean = fields.Field()
|
||||
can_send_media_messages: base.Boolean = fields.Field()
|
||||
can_send_polls: base.Boolean = fields.Field()
|
||||
can_send_other_messages: base.Boolean = fields.Field()
|
||||
can_add_web_page_previews: base.Boolean = fields.Field()
|
||||
until_date: datetime.datetime = fields.DateTimeField()
|
||||
|
||||
|
||||
class ChatMemberLeft(ChatMember):
|
||||
"""
|
||||
Represents a chat member that isn't currently a member of the chat,
|
||||
but may join it themselves.
|
||||
|
||||
https://core.telegram.org/bots/api#chatmemberleft
|
||||
"""
|
||||
status: base.String = fields.Field(default=ChatMemberStatus.LEFT)
|
||||
user: User = fields.Field(base=User)
|
||||
|
||||
|
||||
class ChatMemberBanned(ChatMember):
|
||||
"""
|
||||
Represents a chat member that was banned in the chat and can't
|
||||
return to the chat or view chat messages.
|
||||
|
||||
https://core.telegram.org/bots/api#chatmemberbanned
|
||||
"""
|
||||
status: base.String = fields.Field(default=ChatMemberStatus.BANNED)
|
||||
user: User = fields.Field(base=User)
|
||||
until_date: datetime.datetime = fields.DateTimeField()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue