Added full support of Bot API 6.4 (#1088)

* Remove warnings about pytest asyncio mode

* Update Bot API to 6.4

* Bump version

* Added changelog

* Update translations
This commit is contained in:
Alex Root Junior 2022-12-30 22:44:25 +02:00 committed by GitHub
parent b93b75804c
commit 730485e43a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
239 changed files with 2522 additions and 892 deletions

View file

@ -36,4 +36,4 @@ __all__ = (
)
__version__ = "3.0.0b7"
__api_version__ = "6.3"
__api_version__ = "6.4"

View file

@ -33,6 +33,7 @@ from ..methods import (
BanChatSenderChat,
Close,
CloseForumTopic,
CloseGeneralForumTopic,
CopyMessage,
CreateChatInviteLink,
CreateForumTopic,
@ -48,6 +49,7 @@ from ..methods import (
DeleteWebhook,
EditChatInviteLink,
EditForumTopic,
EditGeneralForumTopic,
EditMessageCaption,
EditMessageLiveLocation,
EditMessageMedia,
@ -71,11 +73,13 @@ from ..methods import (
GetUpdates,
GetUserProfilePhotos,
GetWebhookInfo,
HideGeneralForumTopic,
LeaveChat,
LogOut,
PinChatMessage,
PromoteChatMember,
ReopenForumTopic,
ReopenGeneralForumTopic,
RestrictChatMember,
RevokeChatInviteLink,
SendAnimation,
@ -115,6 +119,7 @@ from ..methods import (
TelegramMethod,
UnbanChatMember,
UnbanChatSenderChat,
UnhideGeneralForumTopic,
UnpinAllChatMessages,
UnpinAllForumTopicMessages,
UnpinChatMessage,
@ -1103,8 +1108,8 @@ class Bot(ContextInstanceMixin["Bot"]):
self,
chat_id: Union[int, str],
message_thread_id: int,
name: str,
icon_custom_emoji_id: str,
name: Optional[str] = None,
icon_custom_emoji_id: Optional[str] = None,
request_timeout: Optional[int] = None,
) -> bool:
"""
@ -1112,8 +1117,8 @@ class Bot(ContextInstanceMixin["Bot"]):
:param chat_id: Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)
:param message_thread_id: Unique identifier for the target message thread of the forum topic
:param name: New topic name, 1-128 characters
:param icon_custom_emoji_id: New unique identifier of the custom emoji shown as the topic icon. Use :class:`aiogram.methods.get_forum_topic_icon_stickers.GetForumTopicIconStickers` to get all allowed custom emoji identifiers.
:param name: New topic name, 0-128 characters. If not specififed or empty, the current name of the topic will be kept
:param icon_custom_emoji_id: New unique identifier of the custom emoji shown as the topic icon. Use :class:`aiogram.methods.get_forum_topic_icon_stickers.GetForumTopicIconStickers` to get all allowed custom emoji identifiers. Pass an empty string to remove the icon. If not specified, the current icon will be kept
:param request_timeout: Request timeout
:return: Returns :code:`True` on success.
"""
@ -1412,7 +1417,7 @@ class Bot(ContextInstanceMixin["Bot"]):
ChatMemberBanned,
]:
"""
Use this method to get information about a member of a chat. Returns a :class:`aiogram.types.chat_member.ChatMember` object on success.
Use this method to get information about a member of a chat. The method is guaranteed to work only if the bot is an administrator in the chat. Returns a :class:`aiogram.types.chat_member.ChatMember` object on success.
:param chat_id: Unique identifier for the target chat or username of the target supergroup or channel (in the format :code:`@channelusername`)
:param user_id: Unique identifier of the target user
@ -1878,6 +1883,7 @@ class Bot(ContextInstanceMixin["Bot"]):
caption: Optional[str] = None,
parse_mode: Optional[str] = UNSET,
caption_entities: Optional[List[MessageEntity]] = None,
has_spoiler: Optional[bool] = None,
disable_notification: Optional[bool] = None,
protect_content: Optional[bool] = None,
reply_to_message_id: Optional[int] = None,
@ -1900,6 +1906,7 @@ class Bot(ContextInstanceMixin["Bot"]):
:param caption: Animation caption (may also be used when resending animation by *file_id*), 0-1024 characters after entities parsing
:param parse_mode: Mode for parsing entities in the animation caption. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
:param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode*
:param has_spoiler: Pass :code:`True` if the animation needs to be covered with a spoiler animation
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
:param protect_content: Protects the contents of the sent message from forwarding and saving
:param reply_to_message_id: If the message is a reply, ID of the original message
@ -1920,6 +1927,7 @@ class Bot(ContextInstanceMixin["Bot"]):
caption=caption,
parse_mode=parse_mode,
caption_entities=caption_entities,
has_spoiler=has_spoiler,
disable_notification=disable_notification,
protect_content=protect_content,
reply_to_message_id=reply_to_message_id,
@ -1995,6 +2003,7 @@ class Bot(ContextInstanceMixin["Bot"]):
self,
chat_id: Union[int, str],
action: str,
message_thread_id: Optional[int] = None,
request_timeout: Optional[int] = None,
) -> bool:
"""
@ -2006,6 +2015,7 @@ class Bot(ContextInstanceMixin["Bot"]):
:param chat_id: Unique identifier for the target chat or username of the target channel (in the format :code:`@channelusername`)
:param action: Type of action to broadcast. Choose one, depending on what the user is about to receive: *typing* for `text messages <https://core.telegram.org/bots/api#sendmessage>`_, *upload_photo* for `photos <https://core.telegram.org/bots/api#sendphoto>`_, *record_video* or *upload_video* for `videos <https://core.telegram.org/bots/api#sendvideo>`_, *record_voice* or *upload_voice* for `voice notes <https://core.telegram.org/bots/api#sendvoice>`_, *upload_document* for `general files <https://core.telegram.org/bots/api#senddocument>`_, *choose_sticker* for `stickers <https://core.telegram.org/bots/api#sendsticker>`_, *find_location* for `location data <https://core.telegram.org/bots/api#sendlocation>`_, *record_video_note* or *upload_video_note* for `video notes <https://core.telegram.org/bots/api#sendvideonote>`_.
:param message_thread_id: Unique identifier for the target message thread; supergroups only
:param request_timeout: Request timeout
:return: The user will see a 'sending photo' status for the bot.
"""
@ -2013,6 +2023,7 @@ class Bot(ContextInstanceMixin["Bot"]):
call = SendChatAction(
chat_id=chat_id,
action=action,
message_thread_id=message_thread_id,
)
return await self(call, request_timeout=request_timeout)
@ -2451,6 +2462,7 @@ class Bot(ContextInstanceMixin["Bot"]):
caption: Optional[str] = None,
parse_mode: Optional[str] = UNSET,
caption_entities: Optional[List[MessageEntity]] = None,
has_spoiler: Optional[bool] = None,
disable_notification: Optional[bool] = None,
protect_content: Optional[bool] = None,
reply_to_message_id: Optional[int] = None,
@ -2469,6 +2481,7 @@ class Bot(ContextInstanceMixin["Bot"]):
:param caption: Photo caption (may also be used when resending photos by *file_id*), 0-1024 characters after entities parsing
:param parse_mode: Mode for parsing entities in the photo caption. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
:param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode*
:param has_spoiler: Pass :code:`True` if the photo needs to be covered with a spoiler animation
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
:param protect_content: Protects the contents of the sent message from forwarding and saving
:param reply_to_message_id: If the message is a reply, ID of the original message
@ -2485,6 +2498,7 @@ class Bot(ContextInstanceMixin["Bot"]):
caption=caption,
parse_mode=parse_mode,
caption_entities=caption_entities,
has_spoiler=has_spoiler,
disable_notification=disable_notification,
protect_content=protect_content,
reply_to_message_id=reply_to_message_id,
@ -2682,6 +2696,7 @@ class Bot(ContextInstanceMixin["Bot"]):
caption: Optional[str] = None,
parse_mode: Optional[str] = UNSET,
caption_entities: Optional[List[MessageEntity]] = None,
has_spoiler: Optional[bool] = None,
supports_streaming: Optional[bool] = None,
disable_notification: Optional[bool] = None,
protect_content: Optional[bool] = None,
@ -2705,6 +2720,7 @@ class Bot(ContextInstanceMixin["Bot"]):
:param caption: Video caption (may also be used when resending videos by *file_id*), 0-1024 characters after entities parsing
:param parse_mode: Mode for parsing entities in the video caption. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
:param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode*
:param has_spoiler: Pass :code:`True` if the video needs to be covered with a spoiler animation
:param supports_streaming: Pass :code:`True` if the uploaded video is suitable for streaming
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
:param protect_content: Protects the contents of the sent message from forwarding and saving
@ -2726,6 +2742,7 @@ class Bot(ContextInstanceMixin["Bot"]):
caption=caption,
parse_mode=parse_mode,
caption_entities=caption_entities,
has_spoiler=has_spoiler,
supports_streaming=supports_streaming,
disable_notification=disable_notification,
protect_content=protect_content,
@ -3360,3 +3377,96 @@ class Bot(ContextInstanceMixin["Bot"]):
png_sticker=png_sticker,
)
return await self(call, request_timeout=request_timeout)
async def close_general_forum_topic(
self,
chat_id: Union[int, str],
request_timeout: Optional[int] = None,
) -> bool:
"""
Use this method to close an open 'General' topic in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have the *can_manage_topics* administrator rights. Returns :code:`True` on success.
:param chat_id: Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)
:param request_timeout: Request timeout
:return: Returns :code:`True` on success.
"""
call = CloseGeneralForumTopic(
chat_id=chat_id,
)
return await self(call, request_timeout=request_timeout)
async def edit_general_forum_topic(
self,
chat_id: Union[int, str],
name: str,
request_timeout: Optional[int] = None,
) -> bool:
"""
Use this method to edit the name of the 'General' topic in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have *can_manage_topics* administrator rights. Returns :code:`True` on success.
:param chat_id: Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)
:param name: New topic name, 1-128 characters
:param request_timeout: Request timeout
:return: Returns :code:`True` on success.
"""
call = EditGeneralForumTopic(
chat_id=chat_id,
name=name,
)
return await self(call, request_timeout=request_timeout)
async def hide_general_forum_topic(
self,
chat_id: Union[int, str],
request_timeout: Optional[int] = None,
) -> bool:
"""
Use this method to hide the 'General' topic in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have the *can_manage_topics* administrator rights. The topic will be automatically closed if it was open. Returns :code:`True` on success.
:param chat_id: Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)
:param request_timeout: Request timeout
:return: Returns :code:`True` on success.
"""
call = HideGeneralForumTopic(
chat_id=chat_id,
)
return await self(call, request_timeout=request_timeout)
async def reopen_general_forum_topic(
self,
chat_id: Union[int, str],
request_timeout: Optional[int] = None,
) -> bool:
"""
Use this method to reopen a closed 'General' topic in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have the *can_manage_topics* administrator rights. The topic will be automatically unhidden if it was hidden. Returns :code:`True` on success.
:param chat_id: Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)
:param request_timeout: Request timeout
:return: Returns :code:`True` on success.
"""
call = ReopenGeneralForumTopic(
chat_id=chat_id,
)
return await self(call, request_timeout=request_timeout)
async def unhide_general_forum_topic(
self,
chat_id: Union[int, str],
request_timeout: Optional[int] = None,
) -> bool:
"""
Use this method to unhide the 'General' topic in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have the *can_manage_topics* administrator rights. Returns :code:`True` on success.
:param chat_id: Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)
:param request_timeout: Request timeout
:return: Returns :code:`True` on success.
"""
call = UnhideGeneralForumTopic(
chat_id=chat_id,
)
return await self(call, request_timeout=request_timeout)

View file

@ -17,6 +17,7 @@ class ContentType(str, Enum):
VIDEO = "video"
VIDEO_NOTE = "video_note"
VOICE = "voice"
HAS_MEDIA_SPOILER = "has_media_spoiler"
CONTACT = "contact"
DICE = "dice"
GAME = "game"
@ -38,11 +39,15 @@ class ContentType(str, Enum):
INVOICE = "invoice"
SUCCESSFUL_PAYMENT = "successful_payment"
CONNECTED_WEBSITE = "connected_website"
WRITE_ACCESS_ALLOWED = "write_access_allowed"
PASSPORT_DATA = "passport_data"
PROXIMITY_ALERT_TRIGGERED = "proximity_alert_triggered"
FORUM_TOPIC_CREATED = "forum_topic_created"
FORUM_TOPIC_EDITED = "forum_topic_edited"
FORUM_TOPIC_CLOSED = "forum_topic_closed"
FORUM_TOPIC_REOPENED = "forum_topic_reopened"
GENERAL_FORUM_TOPIC_HIDDEN = "general_forum_topic_hidden"
GENERAL_FORUM_TOPIC_UNHIDDEN = "general_forum_topic_unhidden"
VIDEO_CHAT_SCHEDULED = "video_chat_scheduled"
VIDEO_CHAT_STARTED = "video_chat_started"
VIDEO_CHAT_ENDED = "video_chat_ended"

View file

@ -10,6 +10,7 @@ from .ban_chat_sender_chat import BanChatSenderChat
from .base import Request, Response, TelegramMethod
from .close import Close
from .close_forum_topic import CloseForumTopic
from .close_general_forum_topic import CloseGeneralForumTopic
from .copy_message import CopyMessage
from .create_chat_invite_link import CreateChatInviteLink
from .create_forum_topic import CreateForumTopic
@ -25,6 +26,7 @@ from .delete_sticker_from_set import DeleteStickerFromSet
from .delete_webhook import DeleteWebhook
from .edit_chat_invite_link import EditChatInviteLink
from .edit_forum_topic import EditForumTopic
from .edit_general_forum_topic import EditGeneralForumTopic
from .edit_message_caption import EditMessageCaption
from .edit_message_live_location import EditMessageLiveLocation
from .edit_message_media import EditMessageMedia
@ -48,11 +50,13 @@ from .get_sticker_set import GetStickerSet
from .get_updates import GetUpdates
from .get_user_profile_photos import GetUserProfilePhotos
from .get_webhook_info import GetWebhookInfo
from .hide_general_forum_topic import HideGeneralForumTopic
from .leave_chat import LeaveChat
from .log_out import LogOut
from .pin_chat_message import PinChatMessage
from .promote_chat_member import PromoteChatMember
from .reopen_forum_topic import ReopenForumTopic
from .reopen_general_forum_topic import ReopenGeneralForumTopic
from .restrict_chat_member import RestrictChatMember
from .revoke_chat_invite_link import RevokeChatInviteLink
from .send_animation import SendAnimation
@ -91,109 +95,115 @@ from .stop_message_live_location import StopMessageLiveLocation
from .stop_poll import StopPoll
from .unban_chat_member import UnbanChatMember
from .unban_chat_sender_chat import UnbanChatSenderChat
from .unhide_general_forum_topic import UnhideGeneralForumTopic
from .unpin_all_chat_messages import UnpinAllChatMessages
from .unpin_all_forum_topic_messages import UnpinAllForumTopicMessages
from .unpin_chat_message import UnpinChatMessage
from .upload_sticker_file import UploadStickerFile
__all__ = (
"TelegramMethod",
"Request",
"Response",
"GetUpdates",
"SetWebhook",
"DeleteWebhook",
"GetWebhookInfo",
"GetMe",
"LogOut",
"Close",
"SendMessage",
"ForwardMessage",
"CopyMessage",
"SendPhoto",
"SendAudio",
"SendDocument",
"SendVideo",
"SendAnimation",
"SendVoice",
"SendVideoNote",
"SendMediaGroup",
"SendLocation",
"EditMessageLiveLocation",
"StopMessageLiveLocation",
"SendVenue",
"SendContact",
"SendPoll",
"SendDice",
"SendChatAction",
"GetUserProfilePhotos",
"GetFile",
"BanChatMember",
"UnbanChatMember",
"RestrictChatMember",
"PromoteChatMember",
"SetChatAdministratorCustomTitle",
"BanChatSenderChat",
"UnbanChatSenderChat",
"SetChatPermissions",
"ExportChatInviteLink",
"CreateChatInviteLink",
"EditChatInviteLink",
"RevokeChatInviteLink",
"ApproveChatJoinRequest",
"DeclineChatJoinRequest",
"SetChatPhoto",
"DeleteChatPhoto",
"SetChatTitle",
"SetChatDescription",
"PinChatMessage",
"UnpinChatMessage",
"UnpinAllChatMessages",
"LeaveChat",
"GetChat",
"GetChatAdministrators",
"GetChatMemberCount",
"GetChatMember",
"SetChatStickerSet",
"DeleteChatStickerSet",
"GetForumTopicIconStickers",
"CreateForumTopic",
"EditForumTopic",
"CloseForumTopic",
"ReopenForumTopic",
"DeleteForumTopic",
"UnpinAllForumTopicMessages",
"AddStickerToSet",
"AnswerCallbackQuery",
"SetMyCommands",
"AnswerInlineQuery",
"AnswerPreCheckoutQuery",
"AnswerShippingQuery",
"AnswerWebAppQuery",
"ApproveChatJoinRequest",
"BanChatMember",
"BanChatSenderChat",
"Close",
"CloseForumTopic",
"CloseGeneralForumTopic",
"CopyMessage",
"CreateChatInviteLink",
"CreateForumTopic",
"CreateInvoiceLink",
"CreateNewStickerSet",
"DeclineChatJoinRequest",
"DeleteChatPhoto",
"DeleteChatStickerSet",
"DeleteForumTopic",
"DeleteMessage",
"DeleteMyCommands",
"GetMyCommands",
"SetChatMenuButton",
"GetChatMenuButton",
"SetMyDefaultAdministratorRights",
"GetMyDefaultAdministratorRights",
"EditMessageText",
"DeleteStickerFromSet",
"DeleteWebhook",
"EditChatInviteLink",
"EditForumTopic",
"EditGeneralForumTopic",
"EditMessageCaption",
"EditMessageLiveLocation",
"EditMessageMedia",
"EditMessageReplyMarkup",
"StopPoll",
"DeleteMessage",
"SendSticker",
"GetStickerSet",
"EditMessageText",
"ExportChatInviteLink",
"ForwardMessage",
"GetChat",
"GetChatAdministrators",
"GetChatMember",
"GetChatMemberCount",
"GetChatMenuButton",
"GetCustomEmojiStickers",
"UploadStickerFile",
"CreateNewStickerSet",
"AddStickerToSet",
"SetStickerPositionInSet",
"DeleteStickerFromSet",
"SetStickerSetThumb",
"AnswerInlineQuery",
"AnswerWebAppQuery",
"SendInvoice",
"CreateInvoiceLink",
"AnswerShippingQuery",
"AnswerPreCheckoutQuery",
"SetPassportDataErrors",
"SendGame",
"SetGameScore",
"GetFile",
"GetForumTopicIconStickers",
"GetGameHighScores",
"GetMe",
"GetMyCommands",
"GetMyDefaultAdministratorRights",
"GetStickerSet",
"GetUpdates",
"GetUserProfilePhotos",
"GetWebhookInfo",
"HideGeneralForumTopic",
"LeaveChat",
"LogOut",
"PinChatMessage",
"PromoteChatMember",
"ReopenForumTopic",
"ReopenGeneralForumTopic",
"Request",
"Response",
"RestrictChatMember",
"RevokeChatInviteLink",
"SendAnimation",
"SendAudio",
"SendChatAction",
"SendContact",
"SendDice",
"SendDocument",
"SendGame",
"SendInvoice",
"SendLocation",
"SendMediaGroup",
"SendMessage",
"SendPhoto",
"SendPoll",
"SendSticker",
"SendVenue",
"SendVideo",
"SendVideoNote",
"SendVoice",
"SetChatAdministratorCustomTitle",
"SetChatDescription",
"SetChatMenuButton",
"SetChatPermissions",
"SetChatPhoto",
"SetChatStickerSet",
"SetChatTitle",
"SetGameScore",
"SetMyCommands",
"SetMyDefaultAdministratorRights",
"SetPassportDataErrors",
"SetStickerPositionInSet",
"SetStickerSetThumb",
"SetWebhook",
"StopMessageLiveLocation",
"StopPoll",
"TelegramMethod",
"UnbanChatMember",
"UnbanChatSenderChat",
"UnhideGeneralForumTopic",
"UnpinAllChatMessages",
"UnpinAllForumTopicMessages",
"UnpinChatMessage",
"UploadStickerFile",
)

View file

@ -0,0 +1,26 @@
from __future__ import annotations
from typing import TYPE_CHECKING, Any, Dict, Union
from .base import Request, TelegramMethod
if TYPE_CHECKING:
from ..client.bot import Bot
class CloseGeneralForumTopic(TelegramMethod[bool]):
"""
Use this method to close an open 'General' topic in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have the *can_manage_topics* administrator rights. Returns :code:`True` on success.
Source: https://core.telegram.org/bots/api#closegeneralforumtopic
"""
__returning__ = bool
chat_id: Union[int, str]
"""Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)"""
def build_request(self, bot: Bot) -> Request:
data: Dict[str, Any] = self.dict()
return Request(method="closeGeneralForumTopic", data=data)

View file

@ -1,6 +1,6 @@
from __future__ import annotations
from typing import TYPE_CHECKING, Any, Dict, Union
from typing import TYPE_CHECKING, Any, Dict, Optional, Union
from .base import Request, TelegramMethod
@ -21,10 +21,10 @@ class EditForumTopic(TelegramMethod[bool]):
"""Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)"""
message_thread_id: int
"""Unique identifier for the target message thread of the forum topic"""
name: str
"""New topic name, 1-128 characters"""
icon_custom_emoji_id: str
"""New unique identifier of the custom emoji shown as the topic icon. Use :class:`aiogram.methods.get_forum_topic_icon_stickers.GetForumTopicIconStickers` to get all allowed custom emoji identifiers."""
name: Optional[str] = None
"""New topic name, 0-128 characters. If not specififed or empty, the current name of the topic will be kept"""
icon_custom_emoji_id: Optional[str] = None
"""New unique identifier of the custom emoji shown as the topic icon. Use :class:`aiogram.methods.get_forum_topic_icon_stickers.GetForumTopicIconStickers` to get all allowed custom emoji identifiers. Pass an empty string to remove the icon. If not specified, the current icon will be kept"""
def build_request(self, bot: Bot) -> Request:
data: Dict[str, Any] = self.dict()

View file

@ -0,0 +1,28 @@
from __future__ import annotations
from typing import TYPE_CHECKING, Any, Dict, Union
from .base import Request, TelegramMethod
if TYPE_CHECKING:
from ..client.bot import Bot
class EditGeneralForumTopic(TelegramMethod[bool]):
"""
Use this method to edit the name of the 'General' topic in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have *can_manage_topics* administrator rights. Returns :code:`True` on success.
Source: https://core.telegram.org/bots/api#editgeneralforumtopic
"""
__returning__ = bool
chat_id: Union[int, str]
"""Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)"""
name: str
"""New topic name, 1-128 characters"""
def build_request(self, bot: Bot) -> Request:
data: Dict[str, Any] = self.dict()
return Request(method="editGeneralForumTopic", data=data)

View file

@ -29,7 +29,7 @@ class GetChatMember(
]
):
"""
Use this method to get information about a member of a chat. Returns a :class:`aiogram.types.chat_member.ChatMember` object on success.
Use this method to get information about a member of a chat. The method is guaranteed to work only if the bot is an administrator in the chat. Returns a :class:`aiogram.types.chat_member.ChatMember` object on success.
Source: https://core.telegram.org/bots/api#getchatmember
"""

View file

@ -0,0 +1,26 @@
from __future__ import annotations
from typing import TYPE_CHECKING, Any, Dict, Union
from .base import Request, TelegramMethod
if TYPE_CHECKING:
from ..client.bot import Bot
class HideGeneralForumTopic(TelegramMethod[bool]):
"""
Use this method to hide the 'General' topic in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have the *can_manage_topics* administrator rights. The topic will be automatically closed if it was open. Returns :code:`True` on success.
Source: https://core.telegram.org/bots/api#hidegeneralforumtopic
"""
__returning__ = bool
chat_id: Union[int, str]
"""Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)"""
def build_request(self, bot: Bot) -> Request:
data: Dict[str, Any] = self.dict()
return Request(method="hideGeneralForumTopic", data=data)

View file

@ -0,0 +1,26 @@
from __future__ import annotations
from typing import TYPE_CHECKING, Any, Dict, Union
from .base import Request, TelegramMethod
if TYPE_CHECKING:
from ..client.bot import Bot
class ReopenGeneralForumTopic(TelegramMethod[bool]):
"""
Use this method to reopen a closed 'General' topic in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have the *can_manage_topics* administrator rights. The topic will be automatically unhidden if it was hidden. Returns :code:`True` on success.
Source: https://core.telegram.org/bots/api#reopengeneralforumtopic
"""
__returning__ = bool
chat_id: Union[int, str]
"""Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)"""
def build_request(self, bot: Bot) -> Request:
data: Dict[str, Any] = self.dict()
return Request(method="reopenGeneralForumTopic", data=data)

View file

@ -47,6 +47,8 @@ class SendAnimation(TelegramMethod[Message]):
"""Mode for parsing entities in the animation caption. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details."""
caption_entities: Optional[List[MessageEntity]] = None
"""A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode*"""
has_spoiler: Optional[bool] = None
"""Pass :code:`True` if the animation needs to be covered with a spoiler animation"""
disable_notification: Optional[bool] = None
"""Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound."""
protect_content: Optional[bool] = None

View file

@ -1,6 +1,6 @@
from __future__ import annotations
from typing import TYPE_CHECKING, Any, Dict, Union
from typing import TYPE_CHECKING, Any, Dict, Optional, Union
from .base import Request, TelegramMethod
@ -25,6 +25,8 @@ class SendChatAction(TelegramMethod[bool]):
"""Unique identifier for the target chat or username of the target channel (in the format :code:`@channelusername`)"""
action: str
"""Type of action to broadcast. Choose one, depending on what the user is about to receive: *typing* for `text messages <https://core.telegram.org/bots/api#sendmessage>`_, *upload_photo* for `photos <https://core.telegram.org/bots/api#sendphoto>`_, *record_video* or *upload_video* for `videos <https://core.telegram.org/bots/api#sendvideo>`_, *record_voice* or *upload_voice* for `voice notes <https://core.telegram.org/bots/api#sendvoice>`_, *upload_document* for `general files <https://core.telegram.org/bots/api#senddocument>`_, *choose_sticker* for `stickers <https://core.telegram.org/bots/api#sendsticker>`_, *find_location* for `location data <https://core.telegram.org/bots/api#sendlocation>`_, *record_video_note* or *upload_video_note* for `video notes <https://core.telegram.org/bots/api#sendvideonote>`_."""
message_thread_id: Optional[int] = None
"""Unique identifier for the target message thread; supergroups only"""
def build_request(self, bot: Bot) -> Request:
data: Dict[str, Any] = self.dict()

View file

@ -39,6 +39,8 @@ class SendPhoto(TelegramMethod[Message]):
"""Mode for parsing entities in the photo caption. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details."""
caption_entities: Optional[List[MessageEntity]] = None
"""A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode*"""
has_spoiler: Optional[bool] = None
"""Pass :code:`True` if the photo needs to be covered with a spoiler animation"""
disable_notification: Optional[bool] = None
"""Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound."""
protect_content: Optional[bool] = None

View file

@ -47,6 +47,8 @@ class SendVideo(TelegramMethod[Message]):
"""Mode for parsing entities in the video caption. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details."""
caption_entities: Optional[List[MessageEntity]] = None
"""A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode*"""
has_spoiler: Optional[bool] = None
"""Pass :code:`True` if the video needs to be covered with a spoiler animation"""
supports_streaming: Optional[bool] = None
"""Pass :code:`True` if the uploaded video is suitable for streaming"""
disable_notification: Optional[bool] = None

View file

@ -0,0 +1,26 @@
from __future__ import annotations
from typing import TYPE_CHECKING, Any, Dict, Union
from .base import Request, TelegramMethod
if TYPE_CHECKING:
from ..client.bot import Bot
class UnhideGeneralForumTopic(TelegramMethod[bool]):
"""
Use this method to unhide the 'General' topic in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have the *can_manage_topics* administrator rights. Returns :code:`True` on success.
Source: https://core.telegram.org/bots/api#unhidegeneralforumtopic
"""
__returning__ = bool
chat_id: Union[int, str]
"""Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)"""
def build_request(self, bot: Bot) -> Request:
data: Dict[str, Any] = self.dict()
return Request(method="unhideGeneralForumTopic", data=data)

View file

@ -42,9 +42,12 @@ from .force_reply import ForceReply
from .forum_topic import ForumTopic
from .forum_topic_closed import ForumTopicClosed
from .forum_topic_created import ForumTopicCreated
from .forum_topic_edited import ForumTopicEdited
from .forum_topic_reopened import ForumTopicReopened
from .game import Game
from .game_high_score import GameHighScore
from .general_forum_topic_hidden import GeneralForumTopicHidden
from .general_forum_topic_unhidden import GeneralForumTopicUnhidden
from .inline_keyboard_button import InlineKeyboardButton
from .inline_keyboard_markup import InlineKeyboardMarkup
from .inline_query import InlineQuery
@ -140,6 +143,7 @@ from .voice import Voice
from .web_app_data import WebAppData
from .web_app_info import WebAppInfo
from .webhook_info import WebhookInfo
from .write_access_allowed import WriteAccessAllowed
__all__ = (
"Animation",
@ -186,9 +190,12 @@ __all__ = (
"ForumTopic",
"ForumTopicClosed",
"ForumTopicCreated",
"ForumTopicEdited",
"ForumTopicReopened",
"Game",
"GameHighScore",
"GeneralForumTopicHidden",
"GeneralForumTopicUnhidden",
"InlineKeyboardButton",
"InlineKeyboardMarkup",
"InlineQuery",
@ -287,6 +294,7 @@ __all__ = (
"WebAppData",
"WebAppInfo",
"WebhookInfo",
"WriteAccessAllowed",
)
# Load typing forward refs for every TelegramObject

View file

@ -91,6 +91,10 @@ class Chat(TelegramObject):
"""*Optional*. For supergroups, the minimum allowed delay between consecutive messages sent by each unpriviledged user; in seconds. Returned only in :class:`aiogram.methods.get_chat.GetChat`."""
message_auto_delete_time: Optional[int] = None
"""*Optional*. The time after which all messages sent to the chat will be automatically deleted; in seconds. Returned only in :class:`aiogram.methods.get_chat.GetChat`."""
has_aggressive_anti_spam_enabled: Optional[bool] = None
"""*Optional*. :code:`True`, if aggressive anti-spam checks are enabled in the supergroup. The field is only available to chat administrators. Returned only in :class:`aiogram.methods.get_chat.GetChat`."""
has_hidden_members: Optional[bool] = None
"""*Optional*. :code:`True`, if non-administrators can only get the list of bots and administrators in the chat. Returned only in :class:`aiogram.methods.get_chat.GetChat`."""
has_protected_content: Optional[bool] = None
"""*Optional*. :code:`True`, if messages from the chat can't be forwarded to other chats. Returned only in :class:`aiogram.methods.get_chat.GetChat`."""
sticker_set_name: Optional[str] = None
@ -403,6 +407,7 @@ class Chat(TelegramObject):
def do(
self,
action: str,
message_thread_id: Optional[int] = None,
**kwargs: Any,
) -> SendChatAction:
"""
@ -420,6 +425,7 @@ class Chat(TelegramObject):
Source: https://core.telegram.org/bots/api#sendchataction
:param action: Type of action to broadcast. Choose one, depending on what the user is about to receive: *typing* for `text messages <https://core.telegram.org/bots/api#sendmessage>`_, *upload_photo* for `photos <https://core.telegram.org/bots/api#sendphoto>`_, *record_video* or *upload_video* for `videos <https://core.telegram.org/bots/api#sendvideo>`_, *record_voice* or *upload_voice* for `voice notes <https://core.telegram.org/bots/api#sendvoice>`_, *upload_document* for `general files <https://core.telegram.org/bots/api#senddocument>`_, *choose_sticker* for `stickers <https://core.telegram.org/bots/api#sendsticker>`_, *find_location* for `location data <https://core.telegram.org/bots/api#sendlocation>`_, *record_video_note* or *upload_video_note* for `video notes <https://core.telegram.org/bots/api#sendvideonote>`_.
:param message_thread_id: Unique identifier for the target message thread; supergroups only
:return: instance of method :class:`aiogram.methods.send_chat_action.SendChatAction`
"""
# DO NOT EDIT MANUALLY!!!
@ -430,6 +436,7 @@ class Chat(TelegramObject):
return SendChatAction(
chat_id=self.id,
action=action,
message_thread_id=message_thread_id,
**kwargs,
)
@ -499,7 +506,7 @@ class Chat(TelegramObject):
- :code:`chat_id`
Use this method to get information about a member of a chat. Returns a :class:`aiogram.types.chat_member.ChatMember` object on success.
Use this method to get information about a member of a chat. The method is guaranteed to work only if the bot is an administrator in the chat. Returns a :class:`aiogram.types.chat_member.ChatMember` object on success.
Source: https://core.telegram.org/bots/api#getchatmember

View file

@ -0,0 +1,16 @@
from typing import Optional
from aiogram.types import TelegramObject
class ForumTopicEdited(TelegramObject):
"""
This object represents a service message about an edited forum topic.
Source: https://core.telegram.org/bots/api#forumtopicedited
"""
name: Optional[str] = None
"""*Optional*. New name of the topic, if it was edited"""
icon_custom_emoji_id: Optional[str] = None
"""*Optional*. New identifier of the custom emoji shown as the topic icon, if it was edited; an empty string if the icon was removed"""

View file

@ -0,0 +1,9 @@
from aiogram.types import TelegramObject
class GeneralForumTopicHidden(TelegramObject):
"""
This object represents a service message about General forum topic hidden in the chat. Currently holds no information.
Source: https://core.telegram.org/bots/api#generalforumtopichidden
"""

View file

@ -0,0 +1,9 @@
from aiogram.types import TelegramObject
class GeneralForumTopicUnhidden(TelegramObject):
"""
This object represents a service message about General forum topic unhidden in the chat. Currently holds no information.
Source: https://core.telegram.org/bots/api#generalforumtopicunhidden
"""

View file

@ -38,3 +38,5 @@ class InputMediaAnimation(InputMedia):
"""*Optional*. Animation height"""
duration: Optional[int] = None
"""*Optional*. Animation duration in seconds"""
has_spoiler: Optional[bool] = None
"""*Optional*. Pass :code:`True` if the animation needs to be covered with a spoiler animation"""

View file

@ -30,3 +30,5 @@ class InputMediaPhoto(InputMedia):
"""*Optional*. Mode for parsing entities in the photo caption. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details."""
caption_entities: Optional[List[MessageEntity]] = None
"""*Optional*. List of special entities that appear in the caption, which can be specified instead of *parse_mode*"""
has_spoiler: Optional[bool] = None
"""*Optional*. Pass :code:`True` if the photo needs to be covered with a spoiler animation"""

View file

@ -40,3 +40,5 @@ class InputMediaVideo(InputMedia):
"""*Optional*. Video duration in seconds"""
supports_streaming: Optional[bool] = None
"""*Optional*. Pass :code:`True` if the uploaded video is suitable for streaming"""
has_spoiler: Optional[bool] = None
"""*Optional*. Pass :code:`True` if the video needs to be covered with a spoiler animation"""

View file

@ -50,8 +50,11 @@ if TYPE_CHECKING:
from .force_reply import ForceReply
from .forum_topic_closed import ForumTopicClosed
from .forum_topic_created import ForumTopicCreated
from .forum_topic_edited import ForumTopicEdited
from .forum_topic_reopened import ForumTopicReopened
from .game import Game
from .general_forum_topic_hidden import GeneralForumTopicHidden
from .general_forum_topic_unhidden import GeneralForumTopicUnhidden
from .inline_keyboard_markup import InlineKeyboardMarkup
from .input_file import InputFile
from .input_media import InputMedia
@ -82,6 +85,7 @@ if TYPE_CHECKING:
from .video_note import VideoNote
from .voice import Voice
from .web_app_data import WebAppData
from .write_access_allowed import WriteAccessAllowed
class Message(TelegramObject):
@ -155,6 +159,8 @@ class Message(TelegramObject):
"""*Optional*. Caption for the animation, audio, document, photo, video or voice"""
caption_entities: Optional[List[MessageEntity]] = None
"""*Optional*. For messages with a caption, special entities like usernames, URLs, bot commands, etc. that appear in the caption"""
has_media_spoiler: Optional[bool] = None
"""*Optional*. :code:`True`, if the message media is covered by a spoiler animation"""
contact: Optional[Contact] = None
"""*Optional*. Message is a shared contact, information about the contact"""
dice: Optional[Dice] = None
@ -197,16 +203,24 @@ class Message(TelegramObject):
"""*Optional*. Message is a service message about a successful payment, information about the payment. `More about payments » <https://core.telegram.org/bots/api#payments>`_"""
connected_website: Optional[str] = None
"""*Optional*. The domain name of the website on which the user has logged in. `More about Telegram Login » <https://core.telegram.org/widgets/login>`_"""
write_access_allowed: Optional[WriteAccessAllowed] = None
"""*Optional*. Service message: the user allowed the bot added to the attachment menu to write messages"""
passport_data: Optional[PassportData] = None
"""*Optional*. Telegram Passport data"""
proximity_alert_triggered: Optional[ProximityAlertTriggered] = None
"""*Optional*. Service message. A user in the chat triggered another user's proximity alert while sharing Live Location."""
forum_topic_created: Optional[ForumTopicCreated] = None
"""*Optional*. Service message: forum topic created"""
forum_topic_edited: Optional[ForumTopicEdited] = None
"""*Optional*. Service message: forum topic edited"""
forum_topic_closed: Optional[ForumTopicClosed] = None
"""*Optional*. Service message: forum topic closed"""
forum_topic_reopened: Optional[ForumTopicReopened] = None
"""*Optional*. Service message: forum topic reopened"""
general_forum_topic_hidden: Optional[GeneralForumTopicHidden] = None
"""*Optional*. Service message: the 'General' forum topic hidden"""
general_forum_topic_unhidden: Optional[GeneralForumTopicUnhidden] = None
"""*Optional*. Service message: the 'General' forum topic unhidden"""
video_chat_scheduled: Optional[VideoChatScheduled] = None
"""*Optional*. Service message: video chat scheduled"""
video_chat_started: Optional[VideoChatStarted] = None
@ -328,6 +342,7 @@ class Message(TelegramObject):
caption: Optional[str] = None,
parse_mode: Optional[str] = UNSET,
caption_entities: Optional[List[MessageEntity]] = None,
has_spoiler: Optional[bool] = None,
disable_notification: Optional[bool] = None,
protect_content: Optional[bool] = None,
allow_sending_without_reply: Optional[bool] = None,
@ -356,6 +371,7 @@ class Message(TelegramObject):
:param caption: Animation caption (may also be used when resending animation by *file_id*), 0-1024 characters after entities parsing
:param parse_mode: Mode for parsing entities in the animation caption. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
:param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode*
:param has_spoiler: Pass :code:`True` if the animation needs to be covered with a spoiler animation
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
:param protect_content: Protects the contents of the sent message from forwarding and saving
:param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found
@ -379,6 +395,7 @@ class Message(TelegramObject):
caption=caption,
parse_mode=parse_mode,
caption_entities=caption_entities,
has_spoiler=has_spoiler,
disable_notification=disable_notification,
protect_content=protect_content,
allow_sending_without_reply=allow_sending_without_reply,
@ -396,6 +413,7 @@ class Message(TelegramObject):
caption: Optional[str] = None,
parse_mode: Optional[str] = UNSET,
caption_entities: Optional[List[MessageEntity]] = None,
has_spoiler: Optional[bool] = None,
disable_notification: Optional[bool] = None,
protect_content: Optional[bool] = None,
reply_to_message_id: Optional[int] = None,
@ -424,6 +442,7 @@ class Message(TelegramObject):
:param caption: Animation caption (may also be used when resending animation by *file_id*), 0-1024 characters after entities parsing
:param parse_mode: Mode for parsing entities in the animation caption. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
:param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode*
:param has_spoiler: Pass :code:`True` if the animation needs to be covered with a spoiler animation
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
:param protect_content: Protects the contents of the sent message from forwarding and saving
:param reply_to_message_id: If the message is a reply, ID of the original message
@ -447,6 +466,7 @@ class Message(TelegramObject):
caption=caption,
parse_mode=parse_mode,
caption_entities=caption_entities,
has_spoiler=has_spoiler,
disable_notification=disable_notification,
protect_content=protect_content,
reply_to_message_id=reply_to_message_id,
@ -1463,6 +1483,7 @@ class Message(TelegramObject):
caption: Optional[str] = None,
parse_mode: Optional[str] = UNSET,
caption_entities: Optional[List[MessageEntity]] = None,
has_spoiler: Optional[bool] = None,
disable_notification: Optional[bool] = None,
protect_content: Optional[bool] = None,
allow_sending_without_reply: Optional[bool] = None,
@ -1487,6 +1508,7 @@ class Message(TelegramObject):
:param caption: Photo caption (may also be used when resending photos by *file_id*), 0-1024 characters after entities parsing
:param parse_mode: Mode for parsing entities in the photo caption. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
:param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode*
:param has_spoiler: Pass :code:`True` if the photo needs to be covered with a spoiler animation
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
:param protect_content: Protects the contents of the sent message from forwarding and saving
:param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found
@ -1506,6 +1528,7 @@ class Message(TelegramObject):
caption=caption,
parse_mode=parse_mode,
caption_entities=caption_entities,
has_spoiler=has_spoiler,
disable_notification=disable_notification,
protect_content=protect_content,
allow_sending_without_reply=allow_sending_without_reply,
@ -1519,6 +1542,7 @@ class Message(TelegramObject):
caption: Optional[str] = None,
parse_mode: Optional[str] = UNSET,
caption_entities: Optional[List[MessageEntity]] = None,
has_spoiler: Optional[bool] = None,
disable_notification: Optional[bool] = None,
protect_content: Optional[bool] = None,
reply_to_message_id: Optional[int] = None,
@ -1543,6 +1567,7 @@ class Message(TelegramObject):
:param caption: Photo caption (may also be used when resending photos by *file_id*), 0-1024 characters after entities parsing
:param parse_mode: Mode for parsing entities in the photo caption. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
:param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode*
:param has_spoiler: Pass :code:`True` if the photo needs to be covered with a spoiler animation
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
:param protect_content: Protects the contents of the sent message from forwarding and saving
:param reply_to_message_id: If the message is a reply, ID of the original message
@ -1562,6 +1587,7 @@ class Message(TelegramObject):
caption=caption,
parse_mode=parse_mode,
caption_entities=caption_entities,
has_spoiler=has_spoiler,
disable_notification=disable_notification,
protect_content=protect_content,
reply_to_message_id=reply_to_message_id,
@ -2068,6 +2094,7 @@ class Message(TelegramObject):
caption: Optional[str] = None,
parse_mode: Optional[str] = UNSET,
caption_entities: Optional[List[MessageEntity]] = None,
has_spoiler: Optional[bool] = None,
supports_streaming: Optional[bool] = None,
disable_notification: Optional[bool] = None,
protect_content: Optional[bool] = None,
@ -2097,6 +2124,7 @@ class Message(TelegramObject):
:param caption: Video caption (may also be used when resending videos by *file_id*), 0-1024 characters after entities parsing
:param parse_mode: Mode for parsing entities in the video caption. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
:param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode*
:param has_spoiler: Pass :code:`True` if the video needs to be covered with a spoiler animation
:param supports_streaming: Pass :code:`True` if the uploaded video is suitable for streaming
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
:param protect_content: Protects the contents of the sent message from forwarding and saving
@ -2121,6 +2149,7 @@ class Message(TelegramObject):
caption=caption,
parse_mode=parse_mode,
caption_entities=caption_entities,
has_spoiler=has_spoiler,
supports_streaming=supports_streaming,
disable_notification=disable_notification,
protect_content=protect_content,
@ -2139,6 +2168,7 @@ class Message(TelegramObject):
caption: Optional[str] = None,
parse_mode: Optional[str] = UNSET,
caption_entities: Optional[List[MessageEntity]] = None,
has_spoiler: Optional[bool] = None,
supports_streaming: Optional[bool] = None,
disable_notification: Optional[bool] = None,
protect_content: Optional[bool] = None,
@ -2168,6 +2198,7 @@ class Message(TelegramObject):
:param caption: Video caption (may also be used when resending videos by *file_id*), 0-1024 characters after entities parsing
:param parse_mode: Mode for parsing entities in the video caption. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
:param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode*
:param has_spoiler: Pass :code:`True` if the video needs to be covered with a spoiler animation
:param supports_streaming: Pass :code:`True` if the uploaded video is suitable for streaming
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
:param protect_content: Protects the contents of the sent message from forwarding and saving
@ -2192,6 +2223,7 @@ class Message(TelegramObject):
caption=caption,
parse_mode=parse_mode,
caption_entities=caption_entities,
has_spoiler=has_spoiler,
supports_streaming=supports_streaming,
disable_notification=disable_notification,
protect_content=protect_content,

View file

@ -17,6 +17,8 @@ class ReplyKeyboardMarkup(MutableTelegramObject):
keyboard: List[List[KeyboardButton]]
"""Array of button rows, each represented by an Array of :class:`aiogram.types.keyboard_button.KeyboardButton` objects"""
is_persistent: Optional[bool] = None
"""*Optional*. Requests clients to always show the keyboard when the regular keyboard is hidden. Defaults to *false*, in which case the custom keyboard can be hidden and opened with a keyboard icon."""
resize_keyboard: Optional[bool] = None
"""*Optional*. Requests clients to resize the keyboard vertically for optimal fit (e.g., make the keyboard smaller if there are just two rows of buttons). Defaults to *false*, in which case the custom keyboard is always of the same height as the app's standard keyboard."""
one_time_keyboard: Optional[bool] = None

View file

@ -0,0 +1,9 @@
from aiogram.types import TelegramObject
class WriteAccessAllowed(TelegramObject):
"""
This object represents a service message about a user allowing a bot added to the attachment menu to write messages. Currently holds no information.
Source: https://core.telegram.org/bots/api#writeaccessallowed
"""