|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"""This module contains the class which represents a Telegram ChatAdministratorRights.""" |
|
from typing import Optional |
|
|
|
from telegram._telegramobject import TelegramObject |
|
from telegram._utils.types import JSONDict |
|
|
|
|
|
class ChatAdministratorRights(TelegramObject): |
|
"""Represents the rights of an administrator in a chat. |
|
|
|
Objects of this class are comparable in terms of equality. Two objects of this class are |
|
considered equal, if their :attr:`is_anonymous`, :attr:`can_manage_chat`, |
|
:attr:`can_delete_messages`, :attr:`can_manage_video_chats`, :attr:`can_restrict_members`, |
|
:attr:`can_promote_members`, :attr:`can_change_info`, :attr:`can_invite_users`, |
|
:attr:`can_post_messages`, :attr:`can_edit_messages`, :attr:`can_pin_messages`, |
|
:attr:`can_manage_topics`, :attr:`can_post_stories`, :attr:`can_delete_stories`, and |
|
:attr:`can_edit_stories` are equal. |
|
|
|
.. versionadded:: 20.0 |
|
|
|
.. versionchanged:: 20.0 |
|
:attr:`can_manage_topics` is considered as well when comparing objects of |
|
this type in terms of equality. |
|
|
|
.. versionchanged:: 20.6 |
|
:attr:`can_post_stories`, :attr:`can_edit_stories`, and :attr:`can_delete_stories` are |
|
considered as well when comparing objects of this type in terms of equality. |
|
|
|
.. versionchanged:: 21.1 |
|
As of this version, :attr:`can_post_stories`, :attr:`can_edit_stories`, |
|
and :attr:`can_delete_stories` is now required. Thus, the order of arguments had to be |
|
changed. |
|
|
|
Args: |
|
is_anonymous (:obj:`bool`): :obj:`True`, if the user's presence in the chat is hidden. |
|
can_manage_chat (:obj:`bool`): :obj:`True`, if the administrator can access the chat event |
|
log, get boost list, see hidden supergroup and channel members, report spam messages |
|
and ignore slow mode. Implied by any other administrator privilege. |
|
can_delete_messages (:obj:`bool`): :obj:`True`, if the administrator can delete messages of |
|
other users. |
|
can_manage_video_chats (:obj:`bool`): :obj:`True`, if the administrator can manage video |
|
chats. |
|
can_restrict_members (:obj:`bool`): :obj:`True`, if the administrator can restrict, ban or |
|
unban chat members, or access supergroup statistics. |
|
can_promote_members (:obj:`bool`): :obj:`True`, if the administrator can add new |
|
administrators with a subset of their own privileges or demote administrators |
|
that they have promoted, directly or indirectly (promoted by administrators that |
|
were appointed by the user). |
|
can_change_info (:obj:`bool`): :obj:`True`, if the user is allowed to change the chat title |
|
, photo and other settings. |
|
can_invite_users (:obj:`bool`): :obj:`True`, if the user is allowed to invite new users to |
|
the chat. |
|
can_post_messages (:obj:`bool`, optional): :obj:`True`, if the administrator can post |
|
messages in the channel, or access channel statistics; for channels only. |
|
can_edit_messages (:obj:`bool`, optional): :obj:`True`, if the administrator can edit |
|
messages of other users and can pin messages; for channels only. |
|
can_pin_messages (:obj:`bool`, optional): :obj:`True`, if the user is allowed to pin |
|
messages; for groups and supergroups only. |
|
can_post_stories (:obj:`bool`): :obj:`True`, if the administrator can post |
|
stories to the chat. |
|
|
|
.. versionadded:: 20.6 |
|
.. versionchanged:: 21.0 |
|
|non_optional_story_argument| |
|
can_edit_stories (:obj:`bool`): :obj:`True`, if the administrator can edit stories posted |
|
by other users, post stories to the chat page, pin chat stories, and access the chat's |
|
story archive |
|
|
|
.. versionadded:: 20.6 |
|
.. versionchanged:: 21.0 |
|
|non_optional_story_argument| |
|
can_delete_stories (:obj:`bool`): :obj:`True`, if the administrator can delete |
|
stories posted by other users. |
|
|
|
.. versionadded:: 20.6 |
|
.. versionchanged:: 21.0 |
|
|non_optional_story_argument| |
|
can_manage_topics (:obj:`bool`, optional): :obj:`True`, if the user is allowed |
|
to create, rename, close, and reopen forum topics; for supergroups only. |
|
|
|
.. versionadded:: 20.0 |
|
|
|
Attributes: |
|
is_anonymous (:obj:`bool`): :obj:`True`, if the user's presence in the chat is hidden. |
|
can_manage_chat (:obj:`bool`): :obj:`True`, if the administrator can access the chat event |
|
log, get boost list, see hidden supergroup and channel members, report spam messages |
|
and ignore slow mode. Implied by any other administrator privilege. |
|
can_delete_messages (:obj:`bool`): :obj:`True`, if the administrator can delete messages of |
|
other users. |
|
can_manage_video_chats (:obj:`bool`): :obj:`True`, if the administrator can manage video |
|
chats. |
|
can_restrict_members (:obj:`bool`): :obj:`True`, if the administrator can restrict, ban or |
|
unban chat members, or access supergroup statistics. |
|
can_promote_members (:obj:`bool`): :obj:`True`, if the administrator can add new |
|
administrators with a subset of their own privileges or demote administrators that he |
|
has promoted, directly or indirectly (promoted by administrators that were appointed by |
|
the user.) |
|
can_change_info (:obj:`bool`): :obj:`True`, if the user is allowed to change the chat title |
|
,photo and other settings. |
|
can_invite_users (:obj:`bool`): :obj:`True`, if the user is allowed to invite new users to |
|
the chat. |
|
can_post_messages (:obj:`bool`): Optional. :obj:`True`, if the administrator can post |
|
messages in the channel, or access channel statistics; for channels only. |
|
can_edit_messages (:obj:`bool`): Optional. :obj:`True`, if the administrator can edit |
|
messages of other users and can pin messages; for channels only. |
|
can_pin_messages (:obj:`bool`): Optional. :obj:`True`, if the user is allowed to pin |
|
messages; for groups and supergroups only. |
|
can_post_stories (:obj:`bool`): :obj:`True`, if the administrator can post |
|
stories to the chat. |
|
|
|
.. versionadded:: 20.6 |
|
.. versionchanged:: 21.0 |
|
|non_optional_story_argument| |
|
can_edit_stories (:obj:`bool`): :obj:`True`, if the administrator can edit stories posted |
|
by other users, post stories to the chat page, pin chat stories, and access the chat's |
|
story archive |
|
|
|
.. versionadded:: 20.6 |
|
.. versionchanged:: 21.0 |
|
|non_optional_story_argument| |
|
can_delete_stories (:obj:`bool`): :obj:`True`, if the administrator can delete |
|
stories posted by other users. |
|
|
|
.. versionadded:: 20.6 |
|
.. versionchanged:: 21.0 |
|
|non_optional_story_argument| |
|
can_manage_topics (:obj:`bool`): Optional. :obj:`True`, if the user is allowed |
|
to create, rename, close, and reopen forum topics; for supergroups only. |
|
|
|
.. versionadded:: 20.0 |
|
""" |
|
|
|
__slots__ = ( |
|
"can_change_info", |
|
"can_delete_messages", |
|
"can_delete_stories", |
|
"can_edit_messages", |
|
"can_edit_stories", |
|
"can_invite_users", |
|
"can_manage_chat", |
|
"can_manage_topics", |
|
"can_manage_video_chats", |
|
"can_pin_messages", |
|
"can_post_messages", |
|
"can_post_stories", |
|
"can_promote_members", |
|
"can_restrict_members", |
|
"is_anonymous", |
|
) |
|
|
|
def __init__( |
|
self, |
|
is_anonymous: bool, |
|
can_manage_chat: bool, |
|
can_delete_messages: bool, |
|
can_manage_video_chats: bool, |
|
can_restrict_members: bool, |
|
can_promote_members: bool, |
|
can_change_info: bool, |
|
can_invite_users: bool, |
|
can_post_stories: bool, |
|
can_edit_stories: bool, |
|
can_delete_stories: bool, |
|
can_post_messages: Optional[bool] = None, |
|
can_edit_messages: Optional[bool] = None, |
|
can_pin_messages: Optional[bool] = None, |
|
can_manage_topics: Optional[bool] = None, |
|
*, |
|
api_kwargs: Optional[JSONDict] = None, |
|
) -> None: |
|
super().__init__(api_kwargs=api_kwargs) |
|
|
|
self.is_anonymous: bool = is_anonymous |
|
self.can_manage_chat: bool = can_manage_chat |
|
self.can_delete_messages: bool = can_delete_messages |
|
self.can_manage_video_chats: bool = can_manage_video_chats |
|
self.can_restrict_members: bool = can_restrict_members |
|
self.can_promote_members: bool = can_promote_members |
|
self.can_change_info: bool = can_change_info |
|
self.can_invite_users: bool = can_invite_users |
|
self.can_post_stories: bool = can_post_stories |
|
self.can_edit_stories: bool = can_edit_stories |
|
self.can_delete_stories: bool = can_delete_stories |
|
|
|
self.can_post_messages: Optional[bool] = can_post_messages |
|
self.can_edit_messages: Optional[bool] = can_edit_messages |
|
self.can_pin_messages: Optional[bool] = can_pin_messages |
|
self.can_manage_topics: Optional[bool] = can_manage_topics |
|
|
|
self._id_attrs = ( |
|
self.is_anonymous, |
|
self.can_manage_chat, |
|
self.can_delete_messages, |
|
self.can_manage_video_chats, |
|
self.can_restrict_members, |
|
self.can_promote_members, |
|
self.can_change_info, |
|
self.can_invite_users, |
|
self.can_post_messages, |
|
self.can_edit_messages, |
|
self.can_pin_messages, |
|
self.can_manage_topics, |
|
self.can_post_stories, |
|
self.can_edit_stories, |
|
self.can_delete_stories, |
|
) |
|
|
|
self._freeze() |
|
|
|
@classmethod |
|
def all_rights(cls) -> "ChatAdministratorRights": |
|
""" |
|
This method returns the :class:`ChatAdministratorRights` object with all attributes set to |
|
:obj:`True`. This is e.g. useful when changing the bot's default administrator rights with |
|
:meth:`telegram.Bot.set_my_default_administrator_rights`. |
|
|
|
.. versionadded:: 20.0 |
|
""" |
|
return cls(*(True,) * len(cls.__slots__)) |
|
|
|
@classmethod |
|
def no_rights(cls) -> "ChatAdministratorRights": |
|
""" |
|
This method returns the :class:`ChatAdministratorRights` object with all attributes set to |
|
:obj:`False`. |
|
|
|
.. versionadded:: 20.0 |
|
""" |
|
return cls(*(False,) * len(cls.__slots__)) |
|
|