From 5d6e4859153b921b0ddaa197dd32dfcc7003bb22 Mon Sep 17 00:00:00 2001 From: Harshil <37377066+harshil21@users.noreply.github.com> Date: Tue, 1 Feb 2022 17:36:36 +0530 Subject: [PATCH 1/3] sticker updates --- telegram/bot.py | 70 +++++++---- telegram/files/sticker.py | 40 ++++++- tests/data/telegram_video_sticker.webm | Bin 0 -> 128386 bytes tests/test_bot.py | 4 +- tests/test_helpers.py | 2 +- tests/test_message.py | 2 +- tests/test_photo.py | 2 +- tests/test_sticker.py | 157 +++++++++++++++++++++---- 8 files changed, 217 insertions(+), 60 deletions(-) create mode 100644 tests/data/telegram_video_sticker.webm diff --git a/telegram/bot.py b/telegram/bot.py index ab843f14e54..86b13fe50d3 100644 --- a/telegram/bot.py +++ b/telegram/bot.py @@ -996,7 +996,7 @@ def send_sticker( protect_content: bool = None, ) -> Message: """ - Use this method to send static .WEBP or animated .TGS stickers. + Use this method to send static ``.WEBP``, animated ``.TGS``, or video ``.WEBM`` stickers. Note: The sticker argument can be either a file_id, an URL or a file from disk @@ -4753,7 +4753,7 @@ def upload_sticker_file( api_kwargs: JSONDict = None, ) -> File: """ - Use this method to upload a .png file with a sticker for later use in + Use this method to upload a ``.PNG`` file with a sticker for later use in :meth:`create_new_sticker_set` and :meth:`add_sticker_to_set` methods (can be used multiple times). @@ -4764,9 +4764,8 @@ def upload_sticker_file( Args: user_id (:obj:`int`): User identifier of sticker file owner. png_sticker (:obj:`str` | `filelike object` | :obj:`bytes` | :class:`pathlib.Path`): - Png image with the sticker, - must be up to 512 kilobytes in size, dimensions must not exceed 512px, - and either width or height must be exactly 512px. + **PNG** image with the sticker, must be up to 512 kilobytes in size, + dimensions must not exceed 512px, and either width or height must be exactly 512px. .. versionchanged:: 13.2 Accept :obj:`bytes` as input. @@ -4802,11 +4801,13 @@ def create_new_sticker_set( timeout: DVInput[float] = DEFAULT_20, tgs_sticker: FileInput = None, api_kwargs: JSONDict = None, + webm_sticker: FileInput = None, ) -> bool: """ Use this method to create new sticker set owned by a user. The bot will be able to edit the created sticker set. - You must use exactly one of the fields ``png_sticker`` or ``tgs_sticker``. + You must use exactly one of the fields ``png_sticker``, ``tgs_sticker``, or + ``webm_sticker``. Warning: As of API 4.7 ``png_sticker`` is an optional argument and therefore the order of the @@ -4826,7 +4827,7 @@ def create_new_sticker_set( 1-64 characters. title (:obj:`str`): Sticker set title, 1-64 characters. png_sticker (:obj:`str` | `filelike object` | :obj:`bytes` | :class:`pathlib.Path`, \ - optional): Png image with the sticker, + optional): **PNG** image with the sticker, must be up to 512 kilobytes in size, dimensions must not exceed 512px, and either width or height must be exactly 512px. Pass a file_id as a String to send a file that already exists on the Telegram servers, pass an HTTP URL as a @@ -4836,13 +4837,19 @@ def create_new_sticker_set( .. versionchanged:: 13.2 Accept :obj:`bytes` as input. tgs_sticker (:obj:`str` | `filelike object` | :obj:`bytes` | :class:`pathlib.Path`, \ - optional): TGS animation with the sticker, - uploaded using multipart/form-data. See - https://core.telegram.org/animated_stickers#technical-requirements for technical + optional): **TGS** animation with the sticker, uploaded using multipart/form-data. + See https://core.telegram.org/stickers#animated-sticker-requirements for technical requirements. .. versionchanged:: 13.2 Accept :obj:`bytes` as input. + webm_sticker (:obj:`str` | `filelike object` | :obj:`bytes` | :class:`pathlib.Path`, \ + optional): **WEBM** video with the sticker, uploaded using multipart/form-data. + See https://core.telegram.org/stickers#video-sticker-requirements for + technical requirements. + + .. versionadded:: 13.11 + emojis (:obj:`str`): One or more emoji corresponding to the sticker. contains_masks (:obj:`bool`, optional): Pass :obj:`True`, if a set of mask stickers should be created. @@ -4867,6 +4874,8 @@ def create_new_sticker_set( data['png_sticker'] = parse_file_input(png_sticker) if tgs_sticker is not None: data['tgs_sticker'] = parse_file_input(tgs_sticker) + if webm_sticker is not None: + data['webm_sticker'] = parse_file_input(webm_sticker) if contains_masks is not None: data['contains_masks'] = contains_masks if mask_position is not None: @@ -4889,12 +4898,14 @@ def add_sticker_to_set( timeout: DVInput[float] = DEFAULT_20, tgs_sticker: FileInput = None, api_kwargs: JSONDict = None, + webm_sticker: FileInput = None, ) -> bool: """ Use this method to add a new sticker to a set created by the bot. - You must use exactly one of the fields ``png_sticker`` or ``tgs_sticker``. Animated - stickers can be added to animated sticker sets and only to them. Animated sticker sets can - have up to 50 stickers. Static sticker sets can have up to 120 stickers. + You **must** use exactly one of the fields ``png_sticker``, ``tgs_sticker`` or + ``webm_sticker``. Animated stickers can be added to animated sticker sets and only to them. + Animated sticker sets can have up to 50 stickers. Static sticker sets can have up to 120 + stickers. Warning: As of API 4.7 ``png_sticker`` is an optional argument and therefore the order of the @@ -4910,7 +4921,7 @@ def add_sticker_to_set( name (:obj:`str`): Sticker set name. png_sticker (:obj:`str` | `filelike object` | :obj:`bytes` | :class:`pathlib.Path`, \ - optional): PNG image with the sticker, + optional): **PNG** image with the sticker, must be up to 512 kilobytes in size, dimensions must not exceed 512px, and either width or height must be exactly 512px. Pass a file_id as a String to send a file that already exists on the Telegram servers, pass an HTTP URL as a @@ -4920,13 +4931,18 @@ def add_sticker_to_set( .. versionchanged:: 13.2 Accept :obj:`bytes` as input. tgs_sticker (:obj:`str` | `filelike object` | :obj:`bytes` | :class:`pathlib.Path`, \ - optional): TGS animation with the sticker, - uploaded using multipart/form-data. See - https://core.telegram.org/animated_stickers#technical-requirements for technical + optional): **TGS** animation with the sticker, uploaded using multipart/form-data. + See https://core.telegram.org/stickers#animated-sticker-requirements for technical requirements. .. versionchanged:: 13.2 Accept :obj:`bytes` as input. + webm_sticker (:obj:`str` | `filelike object` | :obj:`bytes` | :class:`pathlib.Path`, \ + optional): **WEBM** video with the sticker, uploaded using multipart/form-data. + See https://core.telegram.org/stickers#video-sticker-requirements for + technical requirements. + + .. versionadded:: 13.11 emojis (:obj:`str`): One or more emoji corresponding to the sticker. mask_position (:class:`telegram.MaskPosition`, optional): Position where the mask should be placed on faces. @@ -4949,6 +4965,8 @@ def add_sticker_to_set( data['png_sticker'] = parse_file_input(png_sticker) if tgs_sticker is not None: data['tgs_sticker'] = parse_file_input(tgs_sticker) + if webm_sticker is not None: + data['webm_sticker'] = parse_file_input(webm_sticker) if mask_position is not None: # We need to_json() instead of to_dict() here, because we're sending a media # message here, which isn't json dumped by utils.request @@ -5032,7 +5050,8 @@ def set_sticker_set_thumb( api_kwargs: JSONDict = None, ) -> bool: """Use this method to set the thumbnail of a sticker set. Animated thumbnails can be set - for animated sticker sets only. + for animated sticker sets only. Video thumbnails can be set only for video sticker sets + only. Note: The thumb can be either a file_id, an URL or a file from disk ``open(filename, 'rb')`` @@ -5041,14 +5060,17 @@ def set_sticker_set_thumb( name (:obj:`str`): Sticker set name user_id (:obj:`int`): User identifier of created sticker set owner. thumb (:obj:`str` | `filelike object` | :obj:`bytes` | :class:`pathlib.Path`, \ - optional): A PNG image with the thumbnail, must - be up to 128 kilobytes in size and have width and height exactly 100px, or a TGS - animation with the thumbnail up to 32 kilobytes in size; see - https://core.telegram.org/animated_stickers#technical-requirements for animated - sticker technical requirements. Pass a file_id as a String to send a file that + optional): A **PNG** image with the thumbnail, must + be up to 128 kilobytes in size and have width and height exactly 100px, or a + **TGS** animation with the thumbnail up to 32 kilobytes in size; see + https://core.telegram.org/stickers#animated-sticker-requirements for animated + sticker technical requirements, or a **WEBM** video with the thumbnail up to 32 + kilobytes in size; see + https://core.telegram.org/stickers#video-sticker-requirements for video sticker + technical requirements. Pass a file_id as a String to send a file that already exists on the Telegram servers, pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. - Animated sticker set thumbnail can't be uploaded via HTTP URL. + Animated sticker set thumbnails can't be uploaded via HTTP URL. .. versionchanged:: 13.2 Accept :obj:`bytes` as input. diff --git a/telegram/files/sticker.py b/telegram/files/sticker.py index 5cce2af2e11..e3f22a99754 100644 --- a/telegram/files/sticker.py +++ b/telegram/files/sticker.py @@ -34,6 +34,11 @@ class Sticker(TelegramObject): Objects of this class are comparable in terms of equality. Two objects of this class are considered equal, if their :attr:`file_unique_id` is equal. + Note: + As of v13.11 ``is_video`` is a required argument and therefore the order of the + arguments had to be changed. Use keyword arguments to make sure that the arguments are + passed correctly. + Args: file_id (:obj:`str`): Identifier for this file, which can be used to download or reuse the file. @@ -43,6 +48,9 @@ class Sticker(TelegramObject): width (:obj:`int`): Sticker width. height (:obj:`int`): Sticker height. is_animated (:obj:`bool`): :obj:`True`, if the sticker is animated. + is_video (:obj:`bool`): :obj:`True`, if the sticker is a video sticker. + + .. versionadded:: 13.11 thumb (:class:`telegram.PhotoSize`, optional): Sticker thumbnail in the .WEBP or .JPG format. emoji (:obj:`str`, optional): Emoji associated with the sticker @@ -62,6 +70,9 @@ class Sticker(TelegramObject): width (:obj:`int`): Sticker width. height (:obj:`int`): Sticker height. is_animated (:obj:`bool`): :obj:`True`, if the sticker is animated. + is_video (:obj:`bool`): :obj:`True`, if the sticker is a video sticker. + + .. versionadded:: 13.11 thumb (:class:`telegram.PhotoSize`): Optional. Sticker thumbnail in the .webp or .jpg format. emoji (:obj:`str`): Optional. Emoji associated with the sticker. @@ -78,6 +89,7 @@ class Sticker(TelegramObject): 'width', 'file_id', 'is_animated', + 'is_video', 'file_size', 'thumb', 'set_name', @@ -95,6 +107,7 @@ def __init__( width: int, height: int, is_animated: bool, + is_video: bool, thumb: PhotoSize = None, emoji: str = None, file_size: int = None, @@ -109,6 +122,7 @@ def __init__( self.width = int(width) self.height = int(height) self.is_animated = is_animated + self.is_video = is_video # Optionals self.thumb = thumb self.emoji = emoji @@ -155,28 +169,40 @@ class StickerSet(TelegramObject): Objects of this class are comparable in terms of equality. Two objects of this class are considered equal, if their :attr:`name` is equal. - Attributes: + Note: + As of v13.11 ``is_video`` is a required argument and therefore the order of the + arguments had to be changed. Use keyword arguments to make sure that the arguments are + passed correctly. + + Args: name (:obj:`str`): Sticker set name. title (:obj:`str`): Sticker set title. is_animated (:obj:`bool`): :obj:`True`, if the sticker set contains animated stickers. + is_video (:obj:`bool`): :obj:`True`, if the sticker set contains video stickers. + + .. versionadded:: 13.11 contains_masks (:obj:`bool`): :obj:`True`, if the sticker set contains masks. stickers (List[:class:`telegram.Sticker`]): List of all set stickers. - thumb (:class:`telegram.PhotoSize`): Optional. Sticker set thumbnail in the .WEBP or .TGS - format. + thumb (:class:`telegram.PhotoSize`, optional): Sticker set thumbnail in the ``.WEBP``, + ``.TGS``, or ``.WEBM`` format. - Args: + Attributes: name (:obj:`str`): Sticker set name. title (:obj:`str`): Sticker set title. is_animated (:obj:`bool`): :obj:`True`, if the sticker set contains animated stickers. + is_video (:obj:`bool`): :obj:`True`, if the sticker set contains video stickers. + + .. versionadded:: 13.11 contains_masks (:obj:`bool`): :obj:`True`, if the sticker set contains masks. stickers (List[:class:`telegram.Sticker`]): List of all set stickers. - thumb (:class:`telegram.PhotoSize`, optional): Sticker set thumbnail in the .WEBP or .TGS - format. + thumb (:class:`telegram.PhotoSize`): Optional. Sticker set thumbnail in the ``.WEBP``, + ``.TGS`` or ``.WEBM`` format. """ __slots__ = ( 'is_animated', + 'is_video', 'contains_masks', 'thumb', 'title', @@ -192,12 +218,14 @@ def __init__( is_animated: bool, contains_masks: bool, stickers: List[Sticker], + is_video: bool, thumb: PhotoSize = None, **_kwargs: Any, ): self.name = name self.title = title self.is_animated = is_animated + self.is_video = is_video self.contains_masks = contains_masks self.stickers = stickers # Optionals diff --git a/tests/data/telegram_video_sticker.webm b/tests/data/telegram_video_sticker.webm new file mode 100644 index 0000000000000000000000000000000000000000..3110856aee7705ed4b4a7dd3ca0bc11c8d436f5d GIT binary patch literal 128386 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

K-t%`M7<#(rmcsjUx1i?|%>1*1wwrLqk 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 literal 0 HcmV?d00001 diff --git a/tests/test_bot.py b/tests/test_bot.py index d25442eedb4..ceb371b45dd 100644 --- a/tests/test_bot.py +++ b/tests/test_bot.py @@ -1429,11 +1429,11 @@ def test_get_chat_member(self, bot, channel_id, chat_id): assert chat_member.user.first_name == 'PTB' assert chat_member.user.last_name == 'Test user' - @pytest.mark.skip(reason="Not implemented yet.") + @pytest.mark.skip(reason="Not implemented since we need a supergroup with many members") def test_set_chat_sticker_set(self): pass - @pytest.mark.skip(reason="Not implemented yet.") + @pytest.mark.skip(reason="Not implemented since we need a supergroup with many members") def test_delete_chat_sticker_set(self): pass diff --git a/tests/test_helpers.py b/tests/test_helpers.py index 75985e78a44..dea4862ed22 100644 --- a/tests/test_helpers.py +++ b/tests/test_helpers.py @@ -272,7 +272,7 @@ def build_test_message(**kwargs): test_message.text = None test_message = build_test_message( - sticker=Sticker('sticker_id', 'unique_id', 50, 50, False) + sticker=Sticker('sticker_id', 'unique_id', 50, 50, False, False) ) assert helpers.effective_message_type(test_message) == 'sticker' test_message.sticker = None diff --git a/tests/test_message.py b/tests/test_message.py index 6c0169712e6..69db2a8e6dd 100644 --- a/tests/test_message.py +++ b/tests/test_message.py @@ -105,7 +105,7 @@ def message(bot): ) }, {'photo': [PhotoSize('photo_id', 'unique_id', 50, 50)], 'caption': 'photo_file'}, - {'sticker': Sticker('sticker_id', 'unique_id', 50, 50, True)}, + {'sticker': Sticker('sticker_id', 'unique_id', 50, 50, True, False)}, {'video': Video('video_id', 'unique_id', 12, 12, 12), 'caption': 'video_file'}, {'voice': Voice('voice_id', 'unique_id', 5)}, {'video_note': VideoNote('video_note_id', 'unique_id', 20, 12)}, diff --git a/tests/test_photo.py b/tests/test_photo.py index 27cdd19f9a0..bc908ccf571 100644 --- a/tests/test_photo.py +++ b/tests/test_photo.py @@ -473,7 +473,7 @@ def test_equality(self, photo): b = PhotoSize('', photo.file_unique_id, self.width, self.height) c = PhotoSize(photo.file_id, photo.file_unique_id, 0, 0) d = PhotoSize('', '', self.width, self.height) - e = Sticker(photo.file_id, photo.file_unique_id, self.width, self.height, False) + e = Sticker(photo.file_id, photo.file_unique_id, self.width, self.height, False, False) assert a == b assert hash(a) == hash(b) diff --git a/tests/test_sticker.py b/tests/test_sticker.py index 6fe348870cd..0c20a04a008 100644 --- a/tests/test_sticker.py +++ b/tests/test_sticker.py @@ -30,9 +30,8 @@ @pytest.fixture(scope='function') def sticker_file(): - f = open('tests/data/telegram.webp', 'rb') - yield f - f.close() + with open('tests/data/telegram.webp', 'rb') as f: + yield f @pytest.fixture(scope='class') @@ -43,9 +42,8 @@ def sticker(bot, chat_id): @pytest.fixture(scope='function') def animated_sticker_file(): - f = open('tests/data/telegram_animated_sticker.tgs', 'rb') - yield f - f.close() + with open('tests/data/telegram_animated_sticker.tgs', 'rb') as f: + yield f @pytest.fixture(scope='class') @@ -54,6 +52,18 @@ def animated_sticker(bot, chat_id): return bot.send_sticker(chat_id, sticker=f, timeout=50).sticker +@pytest.fixture(scope='function') +def video_sticker_file(): + with open('tests/data/telegram_video_sticker.webm', 'rb') as f: + yield f + + +@pytest.fixture(scope='class') +def video_sticker(bot, chat_id): + with open('tests/data/telegram_video_sticker.webm', 'rb') as f: + return bot.send_sticker(chat_id, sticker=f, timeout=50).sticker + + class TestSticker: # sticker_file_url = 'https://python-telegram-bot.org/static/testfiles/telegram.webp' # Serving sticker from gh since our server sends wrong content_type @@ -66,6 +76,7 @@ class TestSticker: width = 510 height = 512 is_animated = False + is_video = False file_size = 39518 thumb_width = 319 thumb_height = 320 @@ -99,6 +110,7 @@ def test_expected_values(self, sticker): assert sticker.width == self.width assert sticker.height == self.height assert sticker.is_animated == self.is_animated + assert sticker.is_video == self.is_video assert sticker.file_size == self.file_size assert sticker.thumb.width == self.thumb_width assert sticker.thumb.height == self.thumb_height @@ -118,6 +130,7 @@ def test_send_all_args(self, bot, chat_id, sticker_file, sticker): assert message.sticker.width == sticker.width assert message.sticker.height == sticker.height assert message.sticker.is_animated == sticker.is_animated + assert message.sticker.is_video == sticker.is_video assert message.sticker.file_size == sticker.file_size assert isinstance(message.sticker.thumb, PhotoSize) @@ -169,6 +182,7 @@ def test_send_from_url(self, bot, chat_id): assert message.sticker.width == sticker.width assert message.sticker.height == sticker.height assert message.sticker.is_animated == sticker.is_animated + assert message.sticker.is_video == sticker.is_video assert message.sticker.file_size == sticker.file_size assert isinstance(message.sticker.thumb, PhotoSize) @@ -187,6 +201,7 @@ def test_de_json(self, bot, sticker): 'width': self.width, 'height': self.height, 'is_animated': self.is_animated, + 'is_video': self.is_video, 'thumb': sticker.thumb.to_dict(), 'emoji': self.emoji, 'file_size': self.file_size, @@ -198,6 +213,7 @@ def test_de_json(self, bot, sticker): assert json_sticker.width == self.width assert json_sticker.height == self.height assert json_sticker.is_animated == self.is_animated + assert json_sticker.is_video == self.is_video assert json_sticker.emoji == self.emoji assert json_sticker.file_size == self.file_size assert json_sticker.thumb == sticker.thumb @@ -268,6 +284,7 @@ def test_to_dict(self, sticker): assert sticker_dict['width'] == sticker.width assert sticker_dict['height'] == sticker.height assert sticker_dict['is_animated'] == sticker.is_animated + assert sticker_dict['is_video'] == sticker.is_video assert sticker_dict['file_size'] == sticker.file_size assert sticker_dict['thumb'] == sticker.thumb.to_dict() @@ -287,11 +304,18 @@ def test_error_without_required_args(self, bot, chat_id): def test_equality(self, sticker): a = Sticker( - sticker.file_id, sticker.file_unique_id, self.width, self.height, self.is_animated + sticker.file_id, + sticker.file_unique_id, + self.width, + self.height, + self.is_animated, + self.is_video, + ) + b = Sticker( + '', sticker.file_unique_id, self.width, self.height, self.is_animated, self.is_video ) - b = Sticker('', sticker.file_unique_id, self.width, self.height, self.is_animated) - c = Sticker(sticker.file_id, sticker.file_unique_id, 0, 0, False) - d = Sticker('', '', self.width, self.height, self.is_animated) + c = Sticker(sticker.file_id, sticker.file_unique_id, 0, 0, False, True) + d = Sticker('', '', self.width, self.height, self.is_animated, self.is_video) e = PhotoSize( sticker.file_id, sticker.file_unique_id, self.width, self.height, self.is_animated ) @@ -338,18 +362,32 @@ def animated_sticker_set(bot): return ss +@pytest.fixture(scope='function') +def video_sticker_set(bot): + ss = bot.get_sticker_set(f'video_test_by_{bot.username}') + if len(ss.stickers) > 100: + try: + for i in range(1, 50): + bot.delete_sticker_from_set(ss.stickers[-i].file_id) + except BadRequest as e: + if e.message == 'Stickerset_not_modified': + return ss + raise Exception('stickerset is growing too large.') + return ss + + @pytest.fixture(scope='function') def sticker_set_thumb_file(): - f = open('tests/data/sticker_set_thumb.png', 'rb') - yield f - f.close() + with open('tests/data/sticker_set_thumb.png', 'rb') as f: + yield f class TestStickerSet: title = 'Test stickers' is_animated = True + is_video = True contains_masks = False - stickers = [Sticker('file_id', 'file_un_id', 512, 512, True)] + stickers = [Sticker('file_id', 'file_un_id', 512, 512, True, True)] name = 'NOTAREALNAME' def test_de_json(self, bot, sticker): @@ -358,6 +396,7 @@ def test_de_json(self, bot, sticker): 'name': name, 'title': self.title, 'is_animated': self.is_animated, + 'is_video': self.is_video, 'contains_masks': self.contains_masks, 'stickers': [x.to_dict() for x in self.stickers], 'thumb': sticker.thumb.to_dict(), @@ -367,14 +406,38 @@ def test_de_json(self, bot, sticker): assert sticker_set.name == name assert sticker_set.title == self.title assert sticker_set.is_animated == self.is_animated + assert sticker_set.is_video == self.is_video assert sticker_set.contains_masks == self.contains_masks assert sticker_set.stickers == self.stickers assert sticker_set.thumb == sticker.thumb + def test_create_sticker_set(self, bot, chat_id, video_sticker_file): + """Creates the sticker set (if needed) which is required for tests""" + test_by = f"test_by_{bot.username}" + for sticker_set in [test_by, f'animated_{test_by}', f'video_{test_by}']: + try: + bot.get_sticker_set(sticker_set) + except BadRequest as e: + if not e.message == "Stickerset_invalid": + raise e + + # We already have static and animated sticker sets, this is just for creating + # a video sticker set + if sticker_set.startswith("video"): + c = bot.create_new_sticker_set( + chat_id, + name=sticker_set, + title="Video Test", + webm_sticker=video_sticker_file, + emojis='🤔', + ) + assert c + @flaky(3, 1) def test_bot_methods_1_png(self, bot, chat_id, sticker_file): with open('tests/data/telegram_sticker.png', 'rb') as f: - file = bot.upload_sticker_file(95205500, f) + # chat_id was hardcoded as 95205500 but it stopped working for some reason + file = bot.upload_sticker_file(chat_id, f) assert file assert bot.add_sticker_to_set( chat_id, f'test_by_{bot.username}', png_sticker=file.file_id, emojis='😄' @@ -397,6 +460,13 @@ def test_bot_methods_1_tgs(self, bot, chat_id): emojis='😄', ) + @flaky(3, 1) + def test_bot_methods_1_webm(self, bot, chat_id): + with open('tests/data/telegram_video_sticker.webm', 'rb') as f: + assert bot.add_sticker_to_set( + chat_id, f'video_test_by_{bot.username}', webm_sticker=f, emojis='🤔' + ) + def test_sticker_set_to_dict(self, sticker_set): sticker_set_dict = sticker_set.to_dict() @@ -404,6 +474,7 @@ def test_sticker_set_to_dict(self, sticker_set): assert sticker_set_dict['name'] == sticker_set.name assert sticker_set_dict['title'] == sticker_set.title assert sticker_set_dict['is_animated'] == sticker_set.is_animated + assert sticker_set_dict['is_video'] == sticker_set.is_video assert sticker_set_dict['contains_masks'] == sticker_set.contains_masks assert sticker_set_dict['stickers'][0] == sticker_set.stickers[0].to_dict() @@ -417,6 +488,11 @@ def test_bot_methods_2_tgs(self, bot, animated_sticker_set): file_id = animated_sticker_set.stickers[0].file_id assert bot.set_sticker_position_in_set(file_id, 1) + @flaky(3, 1) + def test_bot_methods_2_webm(self, bot, video_sticker_set): + file_id = video_sticker_set.stickers[0].file_id + assert bot.set_sticker_position_in_set(file_id, 1) + @flaky(10, 1) def test_bot_methods_3_png(self, bot, chat_id, sticker_set_thumb_file): sleep(1) @@ -427,12 +503,11 @@ def test_bot_methods_3_png(self, bot, chat_id, sticker_set_thumb_file): @flaky(10, 1) def test_bot_methods_3_tgs(self, bot, chat_id, animated_sticker_file, animated_sticker_set): sleep(1) - assert bot.set_sticker_set_thumb( - f'animated_test_by_{bot.username}', chat_id, animated_sticker_file - ) + animated_test = f'animated_test_by_{bot.username}' + assert bot.set_sticker_set_thumb(animated_test, chat_id, animated_sticker_file) file_id = animated_sticker_set.stickers[-1].file_id # also test with file input and mask - assert bot.set_sticker_set_thumb(f'animated_test_by_{bot.username}', chat_id, file_id) + assert bot.set_sticker_set_thumb(animated_test, chat_id, file_id) @flaky(10, 1) def test_bot_methods_4_png(self, bot, sticker_set): @@ -446,6 +521,12 @@ def test_bot_methods_4_tgs(self, bot, animated_sticker_set): file_id = animated_sticker_set.stickers[-1].file_id assert bot.delete_sticker_from_set(file_id) + @flaky(10, 1) + def test_bot_methods_4_webm(self, bot, video_sticker_set): + sleep(1) + file_id = video_sticker_set.stickers[-1].file_id + assert bot.delete_sticker_from_set(file_id) + def test_upload_sticker_file_local_files(self, monkeypatch, bot, chat_id): # For just test that the correct paths are passed as we have no local bot API set up test_flag = False @@ -469,11 +550,21 @@ def test_create_new_sticker_set_local_files(self, monkeypatch, bot, chat_id): def make_assertion(_, data, *args, **kwargs): nonlocal test_flag - test_flag = data.get('png_sticker') == expected and data.get('tgs_sticker') == expected + test_flag = ( + data.get('png_sticker') == expected + and data.get('tgs_sticker') == expected + and data.get('webm_sticker') == expected + ) monkeypatch.setattr(bot, '_post', make_assertion) bot.create_new_sticker_set( - chat_id, 'name', 'title', 'emoji', png_sticker=file, tgs_sticker=file + chat_id, + 'name', + 'title', + 'emoji', + png_sticker=file, + tgs_sticker=file, + webm_sticker=file, ) assert test_flag monkeypatch.delattr(bot, '_post') @@ -520,10 +611,26 @@ def make_assertion(*_, **kwargs): assert sticker.get_file() def test_equality(self): - a = StickerSet(self.name, self.title, self.is_animated, self.contains_masks, self.stickers) - b = StickerSet(self.name, self.title, self.is_animated, self.contains_masks, self.stickers) - c = StickerSet(self.name, None, None, None, None) - d = StickerSet('blah', self.title, self.is_animated, self.contains_masks, self.stickers) + a = StickerSet( + self.name, + self.title, + self.is_animated, + self.contains_masks, + self.stickers, + self.is_video, + ) + b = StickerSet( + self.name, + self.title, + self.is_animated, + self.contains_masks, + self.stickers, + self.is_video, + ) + c = StickerSet(self.name, None, None, None, None, None) + d = StickerSet( + 'blah', self.title, self.is_animated, self.contains_masks, self.stickers, self.is_video + ) e = Audio(self.name, '', 0, None, None) assert a == b From 82b88506ffbf52d71aadc3322fa4e6a44e491a09 Mon Sep 17 00:00:00 2001 From: Harshil <37377066+harshil21@users.noreply.github.com> Date: Tue, 1 Feb 2022 17:41:06 +0530 Subject: [PATCH 2/3] update bot api version number --- README.rst | 4 ++-- README_RAW.rst | 4 ++-- telegram/constants.py | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.rst b/README.rst index 96901d5f513..9839d10c170 100644 --- a/README.rst +++ b/README.rst @@ -20,7 +20,7 @@ We have a vibrant community of developers helping each other in our `Telegram gr :target: https://pypi.org/project/python-telegram-bot/ :alt: Supported Python versions -.. image:: https://img.shields.io/badge/Bot%20API-5.6-blue?logo=telegram +.. image:: https://img.shields.io/badge/Bot%20API-5.7-blue?logo=telegram :target: https://core.telegram.org/bots/api-changelog :alt: Supported Bot API versions @@ -111,7 +111,7 @@ Installing both ``python-telegram-bot`` and ``python-telegram-bot-raw`` in conju Telegram API support ==================== -All types and methods of the Telegram Bot API **5.6** are supported. +All types and methods of the Telegram Bot API **5.7** are supported. ========== Installing diff --git a/README_RAW.rst b/README_RAW.rst index 40cd416e861..d7b2fa37e7a 100644 --- a/README_RAW.rst +++ b/README_RAW.rst @@ -20,7 +20,7 @@ We have a vibrant community of developers helping each other in our `Telegram gr :target: https://pypi.org/project/python-telegram-bot-raw/ :alt: Supported Python versions -.. image:: https://img.shields.io/badge/Bot%20API-5.6-blue?logo=telegram +.. image:: https://img.shields.io/badge/Bot%20API-5.7-blue?logo=telegram :target: https://core.telegram.org/bots/api-changelog :alt: Supported Bot API versions @@ -105,7 +105,7 @@ Installing both ``python-telegram-bot`` and ``python-telegram-bot-raw`` in conju Telegram API support ==================== -All types and methods of the Telegram Bot API **5.6** are supported. +All types and methods of the Telegram Bot API **5.7** are supported. ========== Installing diff --git a/telegram/constants.py b/telegram/constants.py index a7628cdef58..b7600a72df0 100644 --- a/telegram/constants.py +++ b/telegram/constants.py @@ -21,7 +21,7 @@ `Telegram Bots API `_. Attributes: - BOT_API_VERSION (:obj:`str`): `5.6`. Telegram Bot API version supported by this + BOT_API_VERSION (:obj:`str`): `5.7`. Telegram Bot API version supported by this version of `python-telegram-bot`. Also available as ``telegram.bot_api_version``. .. versionadded:: 13.4 @@ -247,7 +247,7 @@ """ from typing import List -BOT_API_VERSION: str = '5.6' +BOT_API_VERSION: str = '5.7' MAX_MESSAGE_LENGTH: int = 4096 MAX_CAPTION_LENGTH: int = 1024 ANONYMOUS_ADMIN_ID: int = 1087968824 From 9ab2625a637b0fb9b2e39c2253574aefcb275fde Mon Sep 17 00:00:00 2001 From: Harshil <37377066+harshil21@users.noreply.github.com> Date: Wed, 2 Feb 2022 01:04:35 +0530 Subject: [PATCH 3/3] Address review --- telegram/bot.py | 4 +-- tests/test_sticker.py | 57 +++++++++++++++++++++++++++++++++---------- 2 files changed, 46 insertions(+), 15 deletions(-) diff --git a/telegram/bot.py b/telegram/bot.py index 86b13fe50d3..cc983d561fa 100644 --- a/telegram/bot.py +++ b/telegram/bot.py @@ -4843,7 +4843,7 @@ def create_new_sticker_set( .. versionchanged:: 13.2 Accept :obj:`bytes` as input. - webm_sticker (:obj:`str` | `filelike object` | :obj:`bytes` | :class:`pathlib.Path`, \ + webm_sticker (:obj:`str` | :term:`file object` | :obj:`bytes` | :class:`pathlib.Path`,\ optional): **WEBM** video with the sticker, uploaded using multipart/form-data. See https://core.telegram.org/stickers#video-sticker-requirements for technical requirements. @@ -4937,7 +4937,7 @@ def add_sticker_to_set( .. versionchanged:: 13.2 Accept :obj:`bytes` as input. - webm_sticker (:obj:`str` | `filelike object` | :obj:`bytes` | :class:`pathlib.Path`, \ + webm_sticker (:obj:`str` | :term:`file object` | :obj:`bytes` | :class:`pathlib.Path`,\ optional): **WEBM** video with the sticker, uploaded using multipart/form-data. See https://core.telegram.org/stickers#video-sticker-requirements for technical requirements. diff --git a/tests/test_sticker.py b/tests/test_sticker.py index 0c20a04a008..d45cc83f843 100644 --- a/tests/test_sticker.py +++ b/tests/test_sticker.py @@ -30,8 +30,9 @@ @pytest.fixture(scope='function') def sticker_file(): - with open('tests/data/telegram.webp', 'rb') as f: - yield f + f = open('tests/data/telegram.webp', 'rb') + yield f + f.close() @pytest.fixture(scope='class') @@ -42,8 +43,9 @@ def sticker(bot, chat_id): @pytest.fixture(scope='function') def animated_sticker_file(): - with open('tests/data/telegram_animated_sticker.tgs', 'rb') as f: - yield f + f = open('tests/data/telegram_animated_sticker.tgs', 'rb') + yield f + f.close() @pytest.fixture(scope='class') @@ -378,8 +380,9 @@ def video_sticker_set(bot): @pytest.fixture(scope='function') def sticker_set_thumb_file(): - with open('tests/data/sticker_set_thumb.png', 'rb') as f: - yield f + f = open('tests/data/sticker_set_thumb.png', 'rb') + yield f + f.close() class TestStickerSet: @@ -411,8 +414,12 @@ def test_de_json(self, bot, sticker): assert sticker_set.stickers == self.stickers assert sticker_set.thumb == sticker.thumb - def test_create_sticker_set(self, bot, chat_id, video_sticker_file): - """Creates the sticker set (if needed) which is required for tests""" + def test_create_sticker_set( + self, bot, chat_id, sticker_file, animated_sticker_file, video_sticker_file + ): + """Creates the sticker set (if needed) which is required for tests. Make sure that this + test comes before the tests that actually use the sticker sets! + """ test_by = f"test_by_{bot.username}" for sticker_set in [test_by, f'animated_{test_by}', f'video_{test_by}']: try: @@ -421,17 +428,33 @@ def test_create_sticker_set(self, bot, chat_id, video_sticker_file): if not e.message == "Stickerset_invalid": raise e - # We already have static and animated sticker sets, this is just for creating - # a video sticker set - if sticker_set.startswith("video"): - c = bot.create_new_sticker_set( + if sticker_set.startswith(test_by): + s = bot.create_new_sticker_set( + chat_id, + name=sticker_set, + title="Sticker Test", + png_sticker=sticker_file, + emojis='😄', + ) + assert s + elif sticker_set.startswith("animated"): + a = bot.create_new_sticker_set( + chat_id, + name=sticker_set, + title="Animated Test", + tgs_sticker=animated_sticker_file, + emojis='😄', + ) + assert a + elif sticker_set.startswith("video"): + v = bot.create_new_sticker_set( chat_id, name=sticker_set, title="Video Test", webm_sticker=video_sticker_file, emojis='🤔', ) - assert c + assert v @flaky(3, 1) def test_bot_methods_1_png(self, bot, chat_id, sticker_file): @@ -509,6 +532,14 @@ def test_bot_methods_3_tgs(self, bot, chat_id, animated_sticker_file, animated_s # also test with file input and mask assert bot.set_sticker_set_thumb(animated_test, chat_id, file_id) + # TODO: Try the below by creating a custom .webm and not by downloading another pack's thumb + @pytest.mark.skip( + "Skipped for now since Telegram throws a 'File is too big' error " + "regardless of the .webm file size." + ) + def test_bot_methods_3_webm(self, bot, chat_id, video_sticker_file, video_sticker_set): + pass + @flaky(10, 1) def test_bot_methods_4_png(self, bot, sticker_set): sleep(1)