From 2a2d578175efff1aed7ce486f6e9c87a6b55b3d7 Mon Sep 17 00:00:00 2001 From: Gabben Date: Tue, 31 Dec 2019 22:46:08 +0500 Subject: [PATCH 1/4] Add new type fields from Bot API 4.5 --- aiogram/types/animation.py | 1 + aiogram/types/audio.py | 1 + aiogram/types/chat.py | 1 + aiogram/types/chat_member.py | 1 + aiogram/types/chat_photo.py | 2 ++ aiogram/types/document.py | 1 + aiogram/types/file.py | 1 + aiogram/types/passport_file.py | 2 +- aiogram/types/photo_size.py | 1 + aiogram/types/sticker.py | 1 + aiogram/types/video.py | 1 + aiogram/types/video_note.py | 1 + aiogram/types/voice.py | 1 + 13 files changed, 14 insertions(+), 1 deletion(-) diff --git a/aiogram/types/animation.py b/aiogram/types/animation.py index fd470b38..78f5235a 100644 --- a/aiogram/types/animation.py +++ b/aiogram/types/animation.py @@ -14,6 +14,7 @@ class Animation(base.TelegramObject, mixins.Downloadable): """ file_id: base.String = fields.Field() + file_unique_id: base.String = fields.Field() thumb: PhotoSize = fields.Field(base=PhotoSize) file_name: base.String = fields.Field() mime_type: base.String = fields.Field() diff --git a/aiogram/types/audio.py b/aiogram/types/audio.py index 9423d02c..6859668f 100644 --- a/aiogram/types/audio.py +++ b/aiogram/types/audio.py @@ -11,6 +11,7 @@ class Audio(base.TelegramObject, mixins.Downloadable): https://core.telegram.org/bots/api#audio """ file_id: base.String = fields.Field() + file_unique_id: base.String = fields.Field() duration: base.Integer = fields.Field() performer: base.String = fields.Field() title: base.String = fields.Field() diff --git a/aiogram/types/chat.py b/aiogram/types/chat.py index d56ee0fa..07ea7987 100644 --- a/aiogram/types/chat.py +++ b/aiogram/types/chat.py @@ -30,6 +30,7 @@ class Chat(base.TelegramObject): invite_link: base.String = fields.Field() pinned_message: 'Message' = fields.Field(base='Message') permissions: ChatPermissions = fields.Field(base=ChatPermissions) + slow_mode_delay: base.Integer = fields.Field() sticker_set_name: base.String = fields.Field() can_set_sticker_set: base.Boolean = fields.Field() diff --git a/aiogram/types/chat_member.py b/aiogram/types/chat_member.py index 7e05a33f..347b2750 100644 --- a/aiogram/types/chat_member.py +++ b/aiogram/types/chat_member.py @@ -16,6 +16,7 @@ class ChatMember(base.TelegramObject): """ user: User = fields.Field(base=User) status: base.String = fields.Field() + custom_title: base.String = fields.Field() until_date: datetime.datetime = fields.DateTimeField() can_be_edited: base.Boolean = fields.Field() can_change_info: base.Boolean = fields.Field() diff --git a/aiogram/types/chat_photo.py b/aiogram/types/chat_photo.py index 08775d93..d0282a58 100644 --- a/aiogram/types/chat_photo.py +++ b/aiogram/types/chat_photo.py @@ -12,7 +12,9 @@ class ChatPhoto(base.TelegramObject): https://core.telegram.org/bots/api#chatphoto """ small_file_id: base.String = fields.Field() + small_file_unique_id: base.String = fields.Field() big_file_id: base.String = fields.Field() + big_file_unique_id: base.String = fields.Field() async def download_small(self, destination=None, timeout=30, chunk_size=65536, seek=True, make_dirs=True): """ diff --git a/aiogram/types/document.py b/aiogram/types/document.py index 32d943d8..e15b745d 100644 --- a/aiogram/types/document.py +++ b/aiogram/types/document.py @@ -11,6 +11,7 @@ class Document(base.TelegramObject, mixins.Downloadable): https://core.telegram.org/bots/api#document """ file_id: base.String = fields.Field() + file_unique_id: base.String = fields.Field() thumb: PhotoSize = fields.Field(base=PhotoSize) file_name: base.String = fields.Field() mime_type: base.String = fields.Field() diff --git a/aiogram/types/file.py b/aiogram/types/file.py index f3269f29..ae813ac6 100644 --- a/aiogram/types/file.py +++ b/aiogram/types/file.py @@ -17,5 +17,6 @@ class File(base.TelegramObject, mixins.Downloadable): https://core.telegram.org/bots/api#file """ file_id: base.String = fields.Field() + file_unique_id: base.String = fields.Field() file_size: base.Integer = fields.Field() file_path: base.String = fields.Field() diff --git a/aiogram/types/passport_file.py b/aiogram/types/passport_file.py index f00e80c7..de59e66b 100644 --- a/aiogram/types/passport_file.py +++ b/aiogram/types/passport_file.py @@ -9,7 +9,7 @@ class PassportFile(base.TelegramObject): https://core.telegram.org/bots/api#passportfile """ - file_id: base.String = fields.Field() + file_unique_id: base.String = fields.Field() file_size: base.Integer = fields.Field() file_date: base.Integer = fields.Field() diff --git a/aiogram/types/photo_size.py b/aiogram/types/photo_size.py index c7ba59b6..cca95304 100644 --- a/aiogram/types/photo_size.py +++ b/aiogram/types/photo_size.py @@ -10,6 +10,7 @@ class PhotoSize(base.TelegramObject, mixins.Downloadable): https://core.telegram.org/bots/api#photosize """ file_id: base.String = fields.Field() + file_unique_id: base.String = fields.Field() width: base.Integer = fields.Field() height: base.Integer = fields.Field() file_size: base.Integer = fields.Field() diff --git a/aiogram/types/sticker.py b/aiogram/types/sticker.py index 8da1e9eb..3319d6d7 100644 --- a/aiogram/types/sticker.py +++ b/aiogram/types/sticker.py @@ -12,6 +12,7 @@ class Sticker(base.TelegramObject, mixins.Downloadable): https://core.telegram.org/bots/api#sticker """ file_id: base.String = fields.Field() + file_unique_id: base.String = fields.Field() width: base.Integer = fields.Field() height: base.Integer = fields.Field() is_animated: base.Boolean = fields.Field() diff --git a/aiogram/types/video.py b/aiogram/types/video.py index bf5187cd..97dbb90f 100644 --- a/aiogram/types/video.py +++ b/aiogram/types/video.py @@ -11,6 +11,7 @@ class Video(base.TelegramObject, mixins.Downloadable): https://core.telegram.org/bots/api#video """ file_id: base.String = fields.Field() + file_unique_id: base.String = fields.Field() width: base.Integer = fields.Field() height: base.Integer = fields.Field() duration: base.Integer = fields.Field() diff --git a/aiogram/types/video_note.py b/aiogram/types/video_note.py index 9665b6bc..8702faae 100644 --- a/aiogram/types/video_note.py +++ b/aiogram/types/video_note.py @@ -11,6 +11,7 @@ class VideoNote(base.TelegramObject, mixins.Downloadable): https://core.telegram.org/bots/api#videonote """ file_id: base.String = fields.Field() + file_unique_id: base.String = fields.Field() length: base.Integer = fields.Field() duration: base.Integer = fields.Field() thumb: PhotoSize = fields.Field(base=PhotoSize) diff --git a/aiogram/types/voice.py b/aiogram/types/voice.py index 621f2247..fd88e402 100644 --- a/aiogram/types/voice.py +++ b/aiogram/types/voice.py @@ -10,6 +10,7 @@ class Voice(base.TelegramObject, mixins.Downloadable): https://core.telegram.org/bots/api#voice """ file_id: base.String = fields.Field() + file_unique_id: base.String = fields.Field() duration: base.Integer = fields.Field() mime_type: base.String = fields.Field() file_size: base.Integer = fields.Field() From 5ea0aa095d0c7a5961ae321d9c86d7374c490751 Mon Sep 17 00:00:00 2001 From: Gabben Date: Tue, 31 Dec 2019 23:00:37 +0500 Subject: [PATCH 2/4] New method from Bot API 4.5 - setChatAdministratorCustomTitle --- aiogram/bot/api.py | 1 + aiogram/bot/bot.py | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/aiogram/bot/api.py b/aiogram/bot/api.py index 9589c3e5..0c2d572f 100644 --- a/aiogram/bot/api.py +++ b/aiogram/bot/api.py @@ -188,6 +188,7 @@ class Methods(Helper): UNBAN_CHAT_MEMBER = Item() # unbanChatMember RESTRICT_CHAT_MEMBER = Item() # restrictChatMember PROMOTE_CHAT_MEMBER = Item() # promoteChatMember + SET_CHAT_ADMINISTRATOR_CUSTOM_TITLE = Item() # setChatAdministratorCustomTitle SET_CHAT_PERMISSIONS = Item() # setChatPermissions EXPORT_CHAT_INVITE_LINK = Item() # exportChatInviteLink SET_CHAT_PHOTO = Item() # setChatPhoto diff --git a/aiogram/bot/bot.py b/aiogram/bot/bot.py index 5e8f05d9..54f5afe2 100644 --- a/aiogram/bot/bot.py +++ b/aiogram/bot/bot.py @@ -1118,6 +1118,22 @@ class Bot(BaseBot, DataMixin, ContextInstanceMixin): result = await self.request(api.Methods.PROMOTE_CHAT_MEMBER, payload) return result + + async def set_chat_administrator_custom_title(self, chat_id: typing.Union[base.Integer, base.String], user_id: base.Integer, custom_title: base.String) -> base.Boolean: + """ + Use this method to set a custom title for an administrator in a supergroup promoted by the bot. + + Returns True on success. + + :param chat_id: Unique identifier for the target chat or username of the target supergroup + :param user_id: Unique identifier of the target user + :param custom_title: New custom title for the administrator; 0-16 characters, emoji are not allowed + :return: True on success. + """ + payload = generate_payload(**locals()) + + result = await self.request(api.Methods.SET_CHAT_ADMINISTRATOR_CUSTOM_TITLE, payload) + return result async def set_chat_permissions(self, chat_id: typing.Union[base.Integer, base.String], permissions: types.ChatPermissions) -> base.Boolean: From 98d3f789d2c7d00ae359d522f724d177014a3911 Mon Sep 17 00:00:00 2001 From: Gabben Date: Wed, 1 Jan 2020 00:09:22 +0500 Subject: [PATCH 3/4] Add chat shortcast --- aiogram/bot/bot.py | 2 ++ aiogram/types/chat.py | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/aiogram/bot/bot.py b/aiogram/bot/bot.py index 54f5afe2..6f3d8eb8 100644 --- a/aiogram/bot/bot.py +++ b/aiogram/bot/bot.py @@ -1125,6 +1125,8 @@ class Bot(BaseBot, DataMixin, ContextInstanceMixin): Returns True on success. + Source: https://core.telegram.org/bots/api#setchatadministratorcustomtitle + :param chat_id: Unique identifier for the target chat or username of the target supergroup :param user_id: Unique identifier of the target user :param custom_title: New custom title for the administrator; 0-16 characters, emoji are not allowed diff --git a/aiogram/types/chat.py b/aiogram/types/chat.py index 07ea7987..b12331b0 100644 --- a/aiogram/types/chat.py +++ b/aiogram/types/chat.py @@ -297,6 +297,21 @@ class Chat(base.TelegramObject): can_pin_messages=can_pin_messages, can_promote_members=can_promote_members) + async def set_administrator_custom_title(self, user_id: base.Integer, custom_title: base.String) -> base.Boolean: + """ + Use this method to set a custom title for an administrator in a supergroup promoted by the bot. + + Returns True on success. + + Source: https://core.telegram.org/bots/api#setchatadministratorcustomtitle + + :param chat_id: Unique identifier for the target chat or username of the target supergroup + :param user_id: Unique identifier of the target user + :param custom_title: New custom title for the administrator; 0-16 characters, emoji are not allowed + :return: True on success. + """ + return await self.bot.set_chat_administrator_custom_title(chat_id=self.id, user_id=user_id, custom_title=custom_title) + async def pin_message(self, message_id: int, disable_notification: bool = False): """ Use this method to pin a message in a supergroup. From efc45ed96c0f440eb262da3da35aa00174e43ea0 Mon Sep 17 00:00:00 2001 From: Gabben Date: Wed, 1 Jan 2020 00:12:26 +0500 Subject: [PATCH 4/4] Update chat.py --- aiogram/types/chat.py | 1 - 1 file changed, 1 deletion(-) diff --git a/aiogram/types/chat.py b/aiogram/types/chat.py index b12331b0..bd475f59 100644 --- a/aiogram/types/chat.py +++ b/aiogram/types/chat.py @@ -305,7 +305,6 @@ class Chat(base.TelegramObject): Source: https://core.telegram.org/bots/api#setchatadministratorcustomtitle - :param chat_id: Unique identifier for the target chat or username of the target supergroup :param user_id: Unique identifier of the target user :param custom_title: New custom title for the administrator; 0-16 characters, emoji are not allowed :return: True on success.