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
|
import datetime
|
||||||
|
|
||||||
from . import base
|
from . import base, fields
|
||||||
from . import fields
|
|
||||||
from .user import User
|
from .user import User
|
||||||
from ..utils import helper
|
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):
|
class ChatMemberStatus(helper.Helper):
|
||||||
"""
|
"""
|
||||||
Chat member status
|
Chat member status
|
||||||
|
|
@ -55,11 +12,13 @@ class ChatMemberStatus(helper.Helper):
|
||||||
mode = helper.HelperMode.lowercase
|
mode = helper.HelperMode.lowercase
|
||||||
|
|
||||||
CREATOR = helper.Item() # creator
|
CREATOR = helper.Item() # creator
|
||||||
|
OWNER = helper.Item() # owner
|
||||||
ADMINISTRATOR = helper.Item() # administrator
|
ADMINISTRATOR = helper.Item() # administrator
|
||||||
MEMBER = helper.Item() # member
|
MEMBER = helper.Item() # member
|
||||||
RESTRICTED = helper.Item() # restricted
|
RESTRICTED = helper.Item() # restricted
|
||||||
LEFT = helper.Item() # left
|
LEFT = helper.Item() # left
|
||||||
KICKED = helper.Item() # kicked
|
KICKED = helper.Item() # kicked
|
||||||
|
BANNED = helper.Item() # banned
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def is_chat_creator(cls, role: str) -> bool:
|
def is_chat_creator(cls, role: str) -> bool:
|
||||||
|
|
@ -72,3 +31,113 @@ class ChatMemberStatus(helper.Helper):
|
||||||
@classmethod
|
@classmethod
|
||||||
def is_chat_member(cls, role: str) -> bool:
|
def is_chat_member(cls, role: str) -> bool:
|
||||||
return role in (cls.MEMBER, cls.ADMINISTRATOR, cls.CREATOR, cls.RESTRICTED)
|
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