mirror of
https://github.com/python-telegram-bot/python-telegram-bot.git
synced 2024-11-21 22:56:38 +01:00
API 6.9 (#3898)
Co-authored-by: poolitzer <github@poolitzer.eu> Co-authored-by: Hinrich Mahler <22366557+Bibo-Joshi@users.noreply.github.com>
This commit is contained in:
parent
8d76087bed
commit
ae57d3b7c3
13 changed files with 184 additions and 24 deletions
|
@ -14,7 +14,7 @@
|
||||||
:target: https://pypi.org/project/python-telegram-bot/
|
:target: https://pypi.org/project/python-telegram-bot/
|
||||||
:alt: Supported Python versions
|
:alt: Supported Python versions
|
||||||
|
|
||||||
.. image:: https://img.shields.io/badge/Bot%20API-6.8-blue?logo=telegram
|
.. image:: https://img.shields.io/badge/Bot%20API-6.9-blue?logo=telegram
|
||||||
:target: https://core.telegram.org/bots/api-changelog
|
:target: https://core.telegram.org/bots/api-changelog
|
||||||
:alt: Supported Bot API versions
|
:alt: Supported Bot API versions
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ Installing both ``python-telegram-bot`` and ``python-telegram-bot-raw`` in conju
|
||||||
Telegram API support
|
Telegram API support
|
||||||
====================
|
====================
|
||||||
|
|
||||||
All types and methods of the Telegram Bot API **6.8** are supported.
|
All types and methods of the Telegram Bot API **6.9** are supported.
|
||||||
|
|
||||||
Installing
|
Installing
|
||||||
==========
|
==========
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
:target: https://pypi.org/project/python-telegram-bot-raw/
|
:target: https://pypi.org/project/python-telegram-bot-raw/
|
||||||
:alt: Supported Python versions
|
:alt: Supported Python versions
|
||||||
|
|
||||||
.. image:: https://img.shields.io/badge/Bot%20API-6.8-blue?logo=telegram
|
.. image:: https://img.shields.io/badge/Bot%20API-6.9-blue?logo=telegram
|
||||||
:target: https://core.telegram.org/bots/api-changelog
|
:target: https://core.telegram.org/bots/api-changelog
|
||||||
:alt: Supported Bot API versions
|
:alt: Supported Bot API versions
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ Installing both ``python-telegram-bot`` and ``python-telegram-bot-raw`` in conju
|
||||||
Telegram API support
|
Telegram API support
|
||||||
====================
|
====================
|
||||||
|
|
||||||
All types and methods of the Telegram Bot API **6.8** are supported.
|
All types and methods of the Telegram Bot API **6.9** are supported.
|
||||||
|
|
||||||
Installing
|
Installing
|
||||||
==========
|
==========
|
||||||
|
|
|
@ -4590,6 +4590,9 @@ class Bot(TelegramObject, AsyncContextManager["Bot"]):
|
||||||
can_manage_chat: Optional[bool] = None,
|
can_manage_chat: Optional[bool] = None,
|
||||||
can_manage_video_chats: Optional[bool] = None,
|
can_manage_video_chats: Optional[bool] = None,
|
||||||
can_manage_topics: Optional[bool] = None,
|
can_manage_topics: Optional[bool] = None,
|
||||||
|
can_post_stories: Optional[bool] = None,
|
||||||
|
can_edit_stories: Optional[bool] = None,
|
||||||
|
can_delete_stories: Optional[bool] = None,
|
||||||
*,
|
*,
|
||||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||||
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||||
|
@ -4645,6 +4648,18 @@ class Bot(TelegramObject, AsyncContextManager["Bot"]):
|
||||||
allowed to create, rename, close, and reopen forum topics; supergroups only.
|
allowed to create, rename, close, and reopen forum topics; supergroups only.
|
||||||
|
|
||||||
.. versionadded:: 20.0
|
.. versionadded:: 20.0
|
||||||
|
can_post_stories (:obj:`bool`, optional): Pass :obj:`True`, if the administrator can
|
||||||
|
post stories in the channel; channels only.
|
||||||
|
|
||||||
|
.. versionadded:: NEXT.VERSION
|
||||||
|
can_edit_stories (:obj:`bool`, optional): Pass :obj:`True`, if the administrator can
|
||||||
|
edit stories posted by other users; channels only.
|
||||||
|
|
||||||
|
.. versionadded:: NEXT.VERSION
|
||||||
|
can_delete_stories (:obj:`bool`, optional): Pass :obj:`True`, if the administrator can
|
||||||
|
delete stories posted by other users; channels only.
|
||||||
|
|
||||||
|
.. versionadded:: NEXT.VERSION
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
:obj:`bool`: On success, :obj:`True` is returned.
|
:obj:`bool`: On success, :obj:`True` is returned.
|
||||||
|
@ -4668,6 +4683,9 @@ class Bot(TelegramObject, AsyncContextManager["Bot"]):
|
||||||
"can_manage_chat": can_manage_chat,
|
"can_manage_chat": can_manage_chat,
|
||||||
"can_manage_video_chats": can_manage_video_chats,
|
"can_manage_video_chats": can_manage_video_chats,
|
||||||
"can_manage_topics": can_manage_topics,
|
"can_manage_topics": can_manage_topics,
|
||||||
|
"can_post_stories": can_post_stories,
|
||||||
|
"can_edit_stories": can_edit_stories,
|
||||||
|
"can_delete_stories": can_delete_stories,
|
||||||
}
|
}
|
||||||
|
|
||||||
return await self._post(
|
return await self._post(
|
||||||
|
|
|
@ -922,6 +922,9 @@ class Chat(TelegramObject):
|
||||||
can_manage_chat: Optional[bool] = None,
|
can_manage_chat: Optional[bool] = None,
|
||||||
can_manage_video_chats: Optional[bool] = None,
|
can_manage_video_chats: Optional[bool] = None,
|
||||||
can_manage_topics: Optional[bool] = None,
|
can_manage_topics: Optional[bool] = None,
|
||||||
|
can_post_stories: Optional[bool] = None,
|
||||||
|
can_edit_stories: Optional[bool] = None,
|
||||||
|
can_delete_stories: Optional[bool] = None,
|
||||||
*,
|
*,
|
||||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||||
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||||
|
@ -941,6 +944,9 @@ class Chat(TelegramObject):
|
||||||
The argument ``can_manage_voice_chats`` was renamed to
|
The argument ``can_manage_voice_chats`` was renamed to
|
||||||
:paramref:`~telegram.Bot.promote_chat_member.can_manage_video_chats` in accordance to
|
:paramref:`~telegram.Bot.promote_chat_member.can_manage_video_chats` in accordance to
|
||||||
Bot API 6.0.
|
Bot API 6.0.
|
||||||
|
.. versionchanged:: NEXT.VERSION
|
||||||
|
The arguments `can_post_stories`, `can_edit_stories` and `can_delete_stories` were
|
||||||
|
added.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
:obj:`bool`: On success, :obj:`True` is returned.
|
:obj:`bool`: On success, :obj:`True` is returned.
|
||||||
|
@ -966,6 +972,9 @@ class Chat(TelegramObject):
|
||||||
can_manage_chat=can_manage_chat,
|
can_manage_chat=can_manage_chat,
|
||||||
can_manage_video_chats=can_manage_video_chats,
|
can_manage_video_chats=can_manage_video_chats,
|
||||||
can_manage_topics=can_manage_topics,
|
can_manage_topics=can_manage_topics,
|
||||||
|
can_post_stories=can_post_stories,
|
||||||
|
can_edit_stories=can_edit_stories,
|
||||||
|
can_delete_stories=can_delete_stories,
|
||||||
)
|
)
|
||||||
|
|
||||||
async def restrict_member(
|
async def restrict_member(
|
||||||
|
|
|
@ -31,13 +31,18 @@ class ChatAdministratorRights(TelegramObject):
|
||||||
:attr:`can_delete_messages`, :attr:`can_manage_video_chats`, :attr:`can_restrict_members`,
|
: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_promote_members`, :attr:`can_change_info`, :attr:`can_invite_users`,
|
||||||
:attr:`can_post_messages`, :attr:`can_edit_messages`, :attr:`can_pin_messages`,
|
:attr:`can_post_messages`, :attr:`can_edit_messages`, :attr:`can_pin_messages`,
|
||||||
:attr:`can_manage_topics` are equal.
|
: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
|
.. versionchanged:: 20.0
|
||||||
:attr:`can_manage_topics` is considered as well when comparing objects of
|
:attr:`can_manage_topics` is considered as well when comparing objects of
|
||||||
this type in terms of equality.
|
this type in terms of equality.
|
||||||
|
|
||||||
.. versionadded:: 20.0
|
.. versionchanged:: NEXT.VERSION
|
||||||
|
: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.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
is_anonymous (:obj:`bool`): :obj:`True`, if the user's presence in the chat is hidden.
|
is_anonymous (:obj:`bool`): :obj:`True`, if the user's presence in the chat is hidden.
|
||||||
|
@ -65,6 +70,18 @@ class ChatAdministratorRights(TelegramObject):
|
||||||
messages of other users.
|
messages of other users.
|
||||||
can_pin_messages (:obj:`bool`, optional): :obj:`True`, if the user is allowed to pin
|
can_pin_messages (:obj:`bool`, optional): :obj:`True`, if the user is allowed to pin
|
||||||
messages; groups and supergroups only.
|
messages; groups and supergroups only.
|
||||||
|
can_post_stories (:obj:`bool`, optional): :obj:`True`, if the administrator can post
|
||||||
|
stories in the channel; channels only.
|
||||||
|
|
||||||
|
.. versionadded:: NEXT.VERSION
|
||||||
|
can_edit_stories (:obj:`bool`, optional): :obj:`True`, if the administrator can edit
|
||||||
|
stories posted by other users; channels only.
|
||||||
|
|
||||||
|
.. versionadded:: NEXT.VERSION
|
||||||
|
can_delete_stories (:obj:`bool`, optional): :obj:`True`, if the administrator can delete
|
||||||
|
stories posted by other users; channels only.
|
||||||
|
|
||||||
|
.. versionadded:: NEXT.VERSION
|
||||||
can_manage_topics (:obj:`bool`, optional): :obj:`True`, if the user is allowed
|
can_manage_topics (:obj:`bool`, optional): :obj:`True`, if the user is allowed
|
||||||
to create, rename, close, and reopen forum topics; supergroups only.
|
to create, rename, close, and reopen forum topics; supergroups only.
|
||||||
|
|
||||||
|
@ -96,6 +113,18 @@ class ChatAdministratorRights(TelegramObject):
|
||||||
messages of other users.
|
messages of other users.
|
||||||
can_pin_messages (:obj:`bool`): Optional. :obj:`True`, if the user is allowed to pin
|
can_pin_messages (:obj:`bool`): Optional. :obj:`True`, if the user is allowed to pin
|
||||||
messages; groups and supergroups only.
|
messages; groups and supergroups only.
|
||||||
|
can_post_stories (:obj:`bool`): Optional. :obj:`True`, if the administrator can post
|
||||||
|
stories in the channel; channels only.
|
||||||
|
|
||||||
|
.. versionadded:: NEXT.VERSION
|
||||||
|
can_edit_stories (:obj:`bool`): Optional. :obj:`True`, if the administrator can edit
|
||||||
|
stories posted by other users; channels only.
|
||||||
|
|
||||||
|
.. versionadded:: NEXT.VERSION
|
||||||
|
can_delete_stories (:obj:`bool`): Optional. :obj:`True`, if the administrator can delete
|
||||||
|
stories posted by other users; channels only.
|
||||||
|
|
||||||
|
.. versionadded:: NEXT.VERSION
|
||||||
can_manage_topics (:obj:`bool`): Optional. :obj:`True`, if the user is allowed
|
can_manage_topics (:obj:`bool`): Optional. :obj:`True`, if the user is allowed
|
||||||
to create, rename, close, and reopen forum topics; supergroups only.
|
to create, rename, close, and reopen forum topics; supergroups only.
|
||||||
|
|
||||||
|
@ -115,6 +144,9 @@ class ChatAdministratorRights(TelegramObject):
|
||||||
"can_edit_messages",
|
"can_edit_messages",
|
||||||
"can_pin_messages",
|
"can_pin_messages",
|
||||||
"can_manage_topics",
|
"can_manage_topics",
|
||||||
|
"can_post_stories",
|
||||||
|
"can_edit_stories",
|
||||||
|
"can_delete_stories",
|
||||||
)
|
)
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
|
@ -131,6 +163,9 @@ class ChatAdministratorRights(TelegramObject):
|
||||||
can_edit_messages: Optional[bool] = None,
|
can_edit_messages: Optional[bool] = None,
|
||||||
can_pin_messages: Optional[bool] = None,
|
can_pin_messages: Optional[bool] = None,
|
||||||
can_manage_topics: Optional[bool] = None,
|
can_manage_topics: Optional[bool] = None,
|
||||||
|
can_post_stories: Optional[bool] = None,
|
||||||
|
can_edit_stories: Optional[bool] = None,
|
||||||
|
can_delete_stories: Optional[bool] = None,
|
||||||
*,
|
*,
|
||||||
api_kwargs: Optional[JSONDict] = None,
|
api_kwargs: Optional[JSONDict] = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
|
@ -148,6 +183,9 @@ class ChatAdministratorRights(TelegramObject):
|
||||||
self.can_post_messages: Optional[bool] = can_post_messages
|
self.can_post_messages: Optional[bool] = can_post_messages
|
||||||
self.can_edit_messages: Optional[bool] = can_edit_messages
|
self.can_edit_messages: Optional[bool] = can_edit_messages
|
||||||
self.can_pin_messages: Optional[bool] = can_pin_messages
|
self.can_pin_messages: Optional[bool] = can_pin_messages
|
||||||
|
self.can_post_stories: Optional[bool] = can_post_stories
|
||||||
|
self.can_edit_stories: Optional[bool] = can_edit_stories
|
||||||
|
self.can_delete_stories: Optional[bool] = can_delete_stories
|
||||||
self.can_manage_topics: Optional[bool] = can_manage_topics
|
self.can_manage_topics: Optional[bool] = can_manage_topics
|
||||||
|
|
||||||
self._id_attrs = (
|
self._id_attrs = (
|
||||||
|
@ -163,6 +201,9 @@ class ChatAdministratorRights(TelegramObject):
|
||||||
self.can_edit_messages,
|
self.can_edit_messages,
|
||||||
self.can_pin_messages,
|
self.can_pin_messages,
|
||||||
self.can_manage_topics,
|
self.can_manage_topics,
|
||||||
|
self.can_post_stories,
|
||||||
|
self.can_edit_stories,
|
||||||
|
self.can_delete_stories,
|
||||||
)
|
)
|
||||||
|
|
||||||
self._freeze()
|
self._freeze()
|
||||||
|
@ -176,7 +217,7 @@ class ChatAdministratorRights(TelegramObject):
|
||||||
|
|
||||||
.. versionadded:: 20.0
|
.. versionadded:: 20.0
|
||||||
"""
|
"""
|
||||||
return cls(True, True, True, True, True, True, True, True, True, True, True, True)
|
return cls(*(True,) * len(cls.__slots__))
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def no_rights(cls) -> "ChatAdministratorRights":
|
def no_rights(cls) -> "ChatAdministratorRights":
|
||||||
|
@ -186,6 +227,4 @@ class ChatAdministratorRights(TelegramObject):
|
||||||
|
|
||||||
.. versionadded:: 20.0
|
.. versionadded:: 20.0
|
||||||
"""
|
"""
|
||||||
return cls(
|
return cls(*(False,) * len(cls.__slots__))
|
||||||
False, False, False, False, False, False, False, False, False, False, False, False
|
|
||||||
)
|
|
||||||
|
|
|
@ -224,6 +224,18 @@ class ChatMemberAdministrator(ChatMember):
|
||||||
messages; channels only.
|
messages; channels only.
|
||||||
can_pin_messages (:obj:`bool`, optional): :obj:`True`, if the user is allowed
|
can_pin_messages (:obj:`bool`, optional): :obj:`True`, if the user is allowed
|
||||||
to pin messages; groups and supergroups only.
|
to pin messages; groups and supergroups only.
|
||||||
|
can_post_stories (:obj:`bool`, optional): :obj:`True`, if the administrator can post
|
||||||
|
stories in the channel; channels only.
|
||||||
|
|
||||||
|
.. versionadded:: NEXT.VERSION
|
||||||
|
can_edit_stories (:obj:`bool`, optional): :obj:`True`, if the administrator can edit
|
||||||
|
stories posted by other users; channels only.
|
||||||
|
|
||||||
|
.. versionadded:: NEXT.VERSION
|
||||||
|
can_delete_stories (:obj:`bool`, optional): :obj:`True`, if the administrator can delete
|
||||||
|
stories posted by other users; channels only.
|
||||||
|
|
||||||
|
.. versionadded:: NEXT.VERSION
|
||||||
can_manage_topics (:obj:`bool`, optional): :obj:`True`, if the user is allowed
|
can_manage_topics (:obj:`bool`, optional): :obj:`True`, if the user is allowed
|
||||||
to create, rename, close, and reopen forum topics; supergroups only.
|
to create, rename, close, and reopen forum topics; supergroups only.
|
||||||
|
|
||||||
|
@ -265,6 +277,18 @@ class ChatMemberAdministrator(ChatMember):
|
||||||
messages; channels only.
|
messages; channels only.
|
||||||
can_pin_messages (:obj:`bool`): Optional. :obj:`True`, if the user is allowed
|
can_pin_messages (:obj:`bool`): Optional. :obj:`True`, if the user is allowed
|
||||||
to pin messages; groups and supergroups only.
|
to pin messages; groups and supergroups only.
|
||||||
|
can_post_stories (:obj:`bool`): Optional. :obj:`True`, if the administrator can post
|
||||||
|
stories in the channel; channels only.
|
||||||
|
|
||||||
|
.. versionadded:: NEXT.VERSION
|
||||||
|
can_edit_stories (:obj:`bool`): Optional. :obj:`True`, if the administrator can edit
|
||||||
|
stories posted by other users; channels only.
|
||||||
|
|
||||||
|
.. versionadded:: NEXT.VERSION
|
||||||
|
can_delete_stories (:obj:`bool`): Optional. :obj:`True`, if the administrator can delete
|
||||||
|
stories posted by other users; channels only.
|
||||||
|
|
||||||
|
.. versionadded:: NEXT.VERSION
|
||||||
can_manage_topics (:obj:`bool`): Optional. :obj:`True`, if the user is allowed
|
can_manage_topics (:obj:`bool`): Optional. :obj:`True`, if the user is allowed
|
||||||
to create, rename, close, and reopen forum topics; supergroups only
|
to create, rename, close, and reopen forum topics; supergroups only
|
||||||
|
|
||||||
|
@ -287,6 +311,9 @@ class ChatMemberAdministrator(ChatMember):
|
||||||
"can_pin_messages",
|
"can_pin_messages",
|
||||||
"can_manage_topics",
|
"can_manage_topics",
|
||||||
"custom_title",
|
"custom_title",
|
||||||
|
"can_post_stories",
|
||||||
|
"can_edit_stories",
|
||||||
|
"can_delete_stories",
|
||||||
)
|
)
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
|
@ -306,6 +333,9 @@ class ChatMemberAdministrator(ChatMember):
|
||||||
can_pin_messages: Optional[bool] = None,
|
can_pin_messages: Optional[bool] = None,
|
||||||
can_manage_topics: Optional[bool] = None,
|
can_manage_topics: Optional[bool] = None,
|
||||||
custom_title: Optional[str] = None,
|
custom_title: Optional[str] = None,
|
||||||
|
can_post_stories: Optional[bool] = None,
|
||||||
|
can_edit_stories: Optional[bool] = None,
|
||||||
|
can_delete_stories: Optional[bool] = None,
|
||||||
*,
|
*,
|
||||||
api_kwargs: Optional[JSONDict] = None,
|
api_kwargs: Optional[JSONDict] = None,
|
||||||
):
|
):
|
||||||
|
@ -325,6 +355,9 @@ class ChatMemberAdministrator(ChatMember):
|
||||||
self.can_pin_messages: Optional[bool] = can_pin_messages
|
self.can_pin_messages: Optional[bool] = can_pin_messages
|
||||||
self.can_manage_topics: Optional[bool] = can_manage_topics
|
self.can_manage_topics: Optional[bool] = can_manage_topics
|
||||||
self.custom_title: Optional[str] = custom_title
|
self.custom_title: Optional[str] = custom_title
|
||||||
|
self.can_post_stories: Optional[bool] = can_post_stories
|
||||||
|
self.can_edit_stories: Optional[bool] = can_edit_stories
|
||||||
|
self.can_delete_stories: Optional[bool] = can_delete_stories
|
||||||
|
|
||||||
|
|
||||||
class ChatMemberMember(ChatMember):
|
class ChatMemberMember(ChatMember):
|
||||||
|
|
|
@ -330,7 +330,10 @@ class Message(TelegramObject):
|
||||||
|
|
||||||
.. versionadded:: 20.0
|
.. versionadded:: 20.0
|
||||||
write_access_allowed (:class:`telegram.WriteAccessAllowed`, optional): Service message:
|
write_access_allowed (:class:`telegram.WriteAccessAllowed`, optional): Service message:
|
||||||
the user allowed the bot added to the attachment menu to write messages.
|
the user allowed the bot to write messages after adding it to the attachment or side
|
||||||
|
menu, launching a Web App from a link, or accepting an explicit request from a Web App
|
||||||
|
sent by the method
|
||||||
|
`requestWriteAccess <https://core.telegram.org/bots/webapps#initializing-mini-apps>`_.
|
||||||
|
|
||||||
.. versionadded:: 20.0
|
.. versionadded:: 20.0
|
||||||
has_media_spoiler (:obj:`bool`, optional): :obj:`True`, if the message media is covered
|
has_media_spoiler (:obj:`bool`, optional): :obj:`True`, if the message media is covered
|
||||||
|
|
|
@ -26,7 +26,9 @@ from telegram._utils.types import JSONDict
|
||||||
class WriteAccessAllowed(TelegramObject):
|
class WriteAccessAllowed(TelegramObject):
|
||||||
"""
|
"""
|
||||||
This object represents a service message about a user allowing a bot to write messages after
|
This object represents a service message about a user allowing a bot to write messages after
|
||||||
adding the bot to the attachment menu or launching a Web App from a link.
|
adding it to the attachment menu, launching a Web App from a link, or accepting an explicit
|
||||||
|
request from a Web App sent by the method
|
||||||
|
`requestWriteAccess <https://core.telegram.org/bots/webapps#initializing-mini-apps>`_.
|
||||||
|
|
||||||
Objects of this class are comparable in terms of equality. Two objects of this class are
|
Objects of this class are comparable in terms of equality. Two objects of this class are
|
||||||
considered equal, if their :attr:`web_app_name` is equal.
|
considered equal, if their :attr:`web_app_name` is equal.
|
||||||
|
@ -36,24 +38,50 @@ class WriteAccessAllowed(TelegramObject):
|
||||||
Added custom equality comparison for objects of this class.
|
Added custom equality comparison for objects of this class.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
web_app_name (:obj:`str`, optional): Name of the Web App which was launched from a link.
|
web_app_name (:obj:`str`, optional): Name of the Web App, if the access was granted when
|
||||||
|
the Web App was launched from a link.
|
||||||
|
|
||||||
.. versionadded:: 20.3
|
.. versionadded:: 20.3
|
||||||
|
from_request (:obj:`bool`, optional): :obj:`True`, if the access was granted after the user
|
||||||
|
accepted an explicit request from a Web App sent by the method
|
||||||
|
`requestWriteAccess <https://core.telegram.org/bots/webapps#initializing-mini-apps>`_.
|
||||||
|
|
||||||
|
.. versionadded:: NEXT.VERSION
|
||||||
|
from_attachment_menu (:obj:`bool`, optional): :obj:`True`, if the access was granted when
|
||||||
|
the bot was added to the attachment or side menu.
|
||||||
|
|
||||||
|
.. versionadded:: NEXT.VERSION
|
||||||
|
|
||||||
Attributes:
|
Attributes:
|
||||||
web_app_name (:obj:`str`): Optional. Name of the Web App which was launched from a link.
|
web_app_name (:obj:`str`): Optional. Name of the Web App, if the access was granted when
|
||||||
|
the Web App was launched from a link.
|
||||||
|
|
||||||
.. versionadded:: 20.3
|
.. versionadded:: 20.3
|
||||||
|
from_request (:obj:`bool`): Optional. :obj:`True`, if the access was granted after the user
|
||||||
|
accepted an explicit request from a Web App.
|
||||||
|
|
||||||
|
.. versionadded:: NEXT.VERSION
|
||||||
|
from_attachment_menu (:obj:`bool`): Optional. :obj:`True`, if the access was granted when
|
||||||
|
the bot was added to the attachment or side menu.
|
||||||
|
|
||||||
|
.. versionadded:: NEXT.VERSION
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__slots__ = ("web_app_name",)
|
__slots__ = ("web_app_name", "from_request", "from_attachment_menu")
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self, web_app_name: Optional[str] = None, *, api_kwargs: Optional[JSONDict] = None
|
self,
|
||||||
|
web_app_name: Optional[str] = None,
|
||||||
|
from_request: Optional[bool] = None,
|
||||||
|
from_attachment_menu: Optional[bool] = None,
|
||||||
|
*,
|
||||||
|
api_kwargs: Optional[JSONDict] = None,
|
||||||
):
|
):
|
||||||
super().__init__(api_kwargs=api_kwargs)
|
super().__init__(api_kwargs=api_kwargs)
|
||||||
self.web_app_name: Optional[str] = web_app_name
|
self.web_app_name: Optional[str] = web_app_name
|
||||||
|
self.from_request: Optional[bool] = from_request
|
||||||
|
self.from_attachment_menu: Optional[bool] = from_attachment_menu
|
||||||
|
|
||||||
self._id_attrs = (self.web_app_name,)
|
self._id_attrs = (self.web_app_name,)
|
||||||
|
|
||||||
|
|
|
@ -116,7 +116,7 @@ class _BotAPIVersion(NamedTuple):
|
||||||
#: :data:`telegram.__bot_api_version_info__`.
|
#: :data:`telegram.__bot_api_version_info__`.
|
||||||
#:
|
#:
|
||||||
#: .. versionadded:: 20.0
|
#: .. versionadded:: 20.0
|
||||||
BOT_API_VERSION_INFO: Final[_BotAPIVersion] = _BotAPIVersion(major=6, minor=8)
|
BOT_API_VERSION_INFO: Final[_BotAPIVersion] = _BotAPIVersion(major=6, minor=9)
|
||||||
#: :obj:`str`: Telegram Bot API
|
#: :obj:`str`: Telegram Bot API
|
||||||
#: version supported by this version of `python-telegram-bot`. Also available as
|
#: version supported by this version of `python-telegram-bot`. Also available as
|
||||||
#: :data:`telegram.__bot_api_version__`.
|
#: :data:`telegram.__bot_api_version__`.
|
||||||
|
|
|
@ -2057,6 +2057,9 @@ class ExtBot(Bot, Generic[RLARGS]):
|
||||||
can_manage_chat: Optional[bool] = None,
|
can_manage_chat: Optional[bool] = None,
|
||||||
can_manage_video_chats: Optional[bool] = None,
|
can_manage_video_chats: Optional[bool] = None,
|
||||||
can_manage_topics: Optional[bool] = None,
|
can_manage_topics: Optional[bool] = None,
|
||||||
|
can_post_stories: Optional[bool] = None,
|
||||||
|
can_edit_stories: Optional[bool] = None,
|
||||||
|
can_delete_stories: Optional[bool] = None,
|
||||||
*,
|
*,
|
||||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||||
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||||
|
@ -2080,6 +2083,9 @@ class ExtBot(Bot, Generic[RLARGS]):
|
||||||
can_manage_chat=can_manage_chat,
|
can_manage_chat=can_manage_chat,
|
||||||
can_manage_video_chats=can_manage_video_chats,
|
can_manage_video_chats=can_manage_video_chats,
|
||||||
can_manage_topics=can_manage_topics,
|
can_manage_topics=can_manage_topics,
|
||||||
|
can_post_stories=can_post_stories,
|
||||||
|
can_edit_stories=can_edit_stories,
|
||||||
|
can_delete_stories=can_delete_stories,
|
||||||
read_timeout=read_timeout,
|
read_timeout=read_timeout,
|
||||||
write_timeout=write_timeout,
|
write_timeout=write_timeout,
|
||||||
connect_timeout=connect_timeout,
|
connect_timeout=connect_timeout,
|
||||||
|
|
|
@ -2699,6 +2699,9 @@ class TestBotWithRequest:
|
||||||
can_manage_chat=True,
|
can_manage_chat=True,
|
||||||
can_manage_video_chats=True,
|
can_manage_video_chats=True,
|
||||||
can_manage_topics=True,
|
can_manage_topics=True,
|
||||||
|
can_post_stories=True,
|
||||||
|
can_edit_stories=True,
|
||||||
|
can_delete_stories=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Test that we pass the correct params to TG
|
# Test that we pass the correct params to TG
|
||||||
|
@ -2719,6 +2722,9 @@ class TestBotWithRequest:
|
||||||
and data.get("can_manage_chat") == 10
|
and data.get("can_manage_chat") == 10
|
||||||
and data.get("can_manage_video_chats") == 11
|
and data.get("can_manage_video_chats") == 11
|
||||||
and data.get("can_manage_topics") == 12
|
and data.get("can_manage_topics") == 12
|
||||||
|
and data.get("can_post_stories") == 13
|
||||||
|
and data.get("can_edit_stories") == 14
|
||||||
|
and data.get("can_delete_stories") == 15
|
||||||
)
|
)
|
||||||
|
|
||||||
monkeypatch.setattr(bot, "_post", make_assertion)
|
monkeypatch.setattr(bot, "_post", make_assertion)
|
||||||
|
@ -2737,6 +2743,9 @@ class TestBotWithRequest:
|
||||||
can_manage_chat=10,
|
can_manage_chat=10,
|
||||||
can_manage_video_chats=11,
|
can_manage_video_chats=11,
|
||||||
can_manage_topics=12,
|
can_manage_topics=12,
|
||||||
|
can_post_stories=13,
|
||||||
|
can_edit_stories=14,
|
||||||
|
can_delete_stories=15,
|
||||||
)
|
)
|
||||||
|
|
||||||
async def test_export_chat_invite_link(self, bot, channel_id):
|
async def test_export_chat_invite_link(self, bot, channel_id):
|
||||||
|
|
|
@ -37,6 +37,9 @@ def chat_admin_rights():
|
||||||
can_manage_video_chats=True,
|
can_manage_video_chats=True,
|
||||||
can_manage_topics=True,
|
can_manage_topics=True,
|
||||||
is_anonymous=True,
|
is_anonymous=True,
|
||||||
|
can_post_stories=True,
|
||||||
|
can_edit_stories=True,
|
||||||
|
can_delete_stories=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -61,6 +64,9 @@ class TestChatAdministratorRightsWithoutRequest:
|
||||||
"can_manage_video_chats": True,
|
"can_manage_video_chats": True,
|
||||||
"can_manage_topics": True,
|
"can_manage_topics": True,
|
||||||
"is_anonymous": True,
|
"is_anonymous": True,
|
||||||
|
"can_post_stories": True,
|
||||||
|
"can_edit_stories": True,
|
||||||
|
"can_delete_stories": True,
|
||||||
}
|
}
|
||||||
chat_administrator_rights_de = ChatAdministratorRights.de_json(json_dict, bot)
|
chat_administrator_rights_de = ChatAdministratorRights.de_json(json_dict, bot)
|
||||||
assert chat_administrator_rights_de.api_kwargs == {}
|
assert chat_administrator_rights_de.api_kwargs == {}
|
||||||
|
@ -84,13 +90,16 @@ class TestChatAdministratorRightsWithoutRequest:
|
||||||
assert admin_rights_dict["is_anonymous"] == car.is_anonymous
|
assert admin_rights_dict["is_anonymous"] == car.is_anonymous
|
||||||
assert admin_rights_dict["can_manage_video_chats"] == car.can_manage_video_chats
|
assert admin_rights_dict["can_manage_video_chats"] == car.can_manage_video_chats
|
||||||
assert admin_rights_dict["can_manage_topics"] == car.can_manage_topics
|
assert admin_rights_dict["can_manage_topics"] == car.can_manage_topics
|
||||||
|
assert admin_rights_dict["can_post_stories"] == car.can_post_stories
|
||||||
|
assert admin_rights_dict["can_edit_stories"] == car.can_edit_stories
|
||||||
|
assert admin_rights_dict["can_delete_stories"] == car.can_delete_stories
|
||||||
|
|
||||||
def test_equality(self):
|
def test_equality(self):
|
||||||
a = ChatAdministratorRights(True, False, False, False, False, False, False, False, False)
|
a = ChatAdministratorRights(True, *((False,) * 11))
|
||||||
b = ChatAdministratorRights(True, False, False, False, False, False, False, False, False)
|
b = ChatAdministratorRights(True, *((False,) * 11))
|
||||||
c = ChatAdministratorRights(False, False, False, False, False, False, False, False, False)
|
c = ChatAdministratorRights(*(False,) * 12)
|
||||||
d = ChatAdministratorRights(True, True, False, False, False, False, False, False, False)
|
d = ChatAdministratorRights(True, True, *((False,) * 10))
|
||||||
e = ChatAdministratorRights(True, True, False, False, False, False, False, False, False)
|
e = ChatAdministratorRights(True, True, *((False,) * 10))
|
||||||
|
|
||||||
assert a == b
|
assert a == b
|
||||||
assert hash(a) == hash(b)
|
assert hash(a) == hash(b)
|
||||||
|
@ -110,7 +119,7 @@ class TestChatAdministratorRightsWithoutRequest:
|
||||||
t = ChatAdministratorRights.all_rights()
|
t = ChatAdministratorRights.all_rights()
|
||||||
# if the dirs are the same, the attributes will all be there
|
# if the dirs are the same, the attributes will all be there
|
||||||
assert dir(f) == dir(t)
|
assert dir(f) == dir(t)
|
||||||
# now we just need to check that all attributes are True. _id_attrs returns all values,
|
# now we just need to check that all attributes are True. __slots__ returns all values,
|
||||||
# if a new one is added without defaulting to True, this will fail
|
# if a new one is added without defaulting to True, this will fail
|
||||||
for key in t.__slots__:
|
for key in t.__slots__:
|
||||||
assert t[key] is True
|
assert t[key] is True
|
||||||
|
@ -122,7 +131,7 @@ class TestChatAdministratorRightsWithoutRequest:
|
||||||
t = ChatAdministratorRights.no_rights()
|
t = ChatAdministratorRights.no_rights()
|
||||||
# if the dirs are the same, the attributes will all be there
|
# if the dirs are the same, the attributes will all be there
|
||||||
assert dir(f) == dir(t)
|
assert dir(f) == dir(t)
|
||||||
# now we just need to check that all attributes are True. _id_attrs returns all values,
|
# now we just need to check that all attributes are True. __slots__ returns all values,
|
||||||
# if a new one is added without defaulting to True, this will fail
|
# if a new one is added without defaulting to True, this will fail
|
||||||
for key in t.__slots__:
|
for key in t.__slots__:
|
||||||
assert t[key] is False
|
assert t[key] is False
|
||||||
|
|
|
@ -68,6 +68,9 @@ class CMDefaults:
|
||||||
can_send_videos: bool = True
|
can_send_videos: bool = True
|
||||||
can_send_video_notes: bool = True
|
can_send_video_notes: bool = True
|
||||||
can_send_voice_notes: bool = True
|
can_send_voice_notes: bool = True
|
||||||
|
can_post_stories: bool = True
|
||||||
|
can_edit_stories: bool = True
|
||||||
|
can_delete_stories: bool = True
|
||||||
|
|
||||||
|
|
||||||
def chat_member_owner():
|
def chat_member_owner():
|
||||||
|
@ -91,6 +94,9 @@ def chat_member_administrator():
|
||||||
CMDefaults.can_pin_messages,
|
CMDefaults.can_pin_messages,
|
||||||
CMDefaults.can_manage_topics,
|
CMDefaults.can_manage_topics,
|
||||||
CMDefaults.custom_title,
|
CMDefaults.custom_title,
|
||||||
|
CMDefaults.can_post_stories,
|
||||||
|
CMDefaults.can_edit_stories,
|
||||||
|
CMDefaults.can_delete_stories,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue