Skip to content

Commit 37cdb52

Browse files
committed
2 parents d856939 + da57174 commit 37cdb52

File tree

5 files changed

+93
-28
lines changed

5 files changed

+93
-28
lines changed

telebot/__init__.py

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4559,7 +4559,29 @@ def set_sticker_set_thumbnail(
45594559
"""
45604560
return apihelper.set_sticker_set_thumb(self.token, name, user_id, thumb)
45614561

4562-
set_sticker_set_thumb = set_sticker_set_thumbnail
4562+
def set_sticker_set_thumb(
4563+
self, name: str, user_id: int, thumb: Union[Any, str]=None):
4564+
"""
4565+
Use this method to set the thumbnail of a sticker set.
4566+
Animated thumbnails can be set for animated sticker sets only. Returns True on success.
4567+
4568+
Telegram documentation: https://core.telegram.org/bots/api#setstickersetthumb
4569+
4570+
:param name: Sticker set name
4571+
:type name: :obj:`str`
4572+
4573+
:param user_id: User identifier
4574+
:type user_id: :obj:`int`
4575+
4576+
:param thumb:
4577+
:type thumb: :obj:`filelike object`
4578+
4579+
:return: On success, True is returned.
4580+
:rtype: :obj:`bool`
4581+
"""
4582+
# deprecated
4583+
logger.warning('set_sticker_set_thumb is deprecated. Use set_sticker_set_thumbnail instead.')
4584+
return apihelper.set_sticker_set_thumb(self.token, name, user_id, thumb)
45634585

45644586
def get_sticker_set(self, name: str) -> types.StickerSet:
45654587
"""
@@ -4817,7 +4839,7 @@ def create_new_sticker_set(
48174839

48184840

48194841
def add_sticker_to_set(
4820-
self, user_id: int, name: str, emojis: List[str]=None,
4842+
self, user_id: int, name: str, emojis: Union[List[str], str],
48214843
png_sticker: Optional[Union[Any, str]]=None,
48224844
tgs_sticker: Optional[Union[Any, str]]=None,
48234845
webm_sticker: Optional[Union[Any, str]]=None,
@@ -4833,7 +4855,7 @@ def add_sticker_to_set(
48334855
Telegram documentation: https://core.telegram.org/bots/api#addstickertoset
48344856
48354857
.. note::
4836-
**_sticker parameters are deprecated, use stickers instead
4858+
**_sticker, mask_position, emojis parameters are deprecated, use stickers instead
48374859
48384860
:param user_id: User identifier of created sticker set owner
48394861
:type user_id: :obj:`int`
@@ -4859,15 +4881,26 @@ def add_sticker_to_set(
48594881
:type mask_position: :class:`telebot.types.MaskPosition`
48604882
48614883
:param sticker: A JSON-serialized list of 1-50 initial stickers to be added to the sticker set
4862-
:type sticker: :class:`telebot.types.InputSticker`
4884+
:type sticker: :obj:`list` of :class:`telebot.types.InputSticker`
48634885
48644886
:return: On success, True is returned.
48654887
:rtype: :obj:`bool`
48664888
"""
4889+
4890+
# split emojis if string
4891+
if isinstance(emojis, str):
4892+
emojis = list(emojis)
48674893
# Replaced the parameters png_sticker, tgs_sticker, webm_sticker, emojis and mask_position
48684894
if sticker is None:
4869-
sticker = png_sticker or tgs_sticker or webm_sticker
4870-
sticker = types.InputSticker(sticker, emojis, mask_position)
4895+
old_sticker = png_sticker or tgs_sticker or webm_sticker
4896+
if old_sticker is not None:
4897+
logger.warning(
4898+
'The parameters "png_sticker", "tgs_sticker", "webm_sticker", "emojis" and "mask_position" are deprecated, '
4899+
'use "sticker" instead'
4900+
)
4901+
if not old_sticker:
4902+
raise ValueError('You must pass at least one sticker.')
4903+
sticker = types.InputSticker(old_sticker, emojis, mask_position)
48714904

48724905
return apihelper.add_sticker_to_set(
48734906
self.token, user_id, name, sticker)

telebot/apihelper.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1174,9 +1174,9 @@ def get_my_description(token, language_code=None):
11741174
def set_my_short_description(token, short_description=None, language_code=None):
11751175
method_url = r'setMyShortDescription'
11761176
payload = {}
1177-
if short_description:
1177+
if short_description is not None:
11781178
payload['short_description'] = short_description
1179-
if language_code:
1179+
if language_code is not None:
11801180
payload['language_code'] = language_code
11811181
return _make_request(token, method_url, params=payload, method='post')
11821182

@@ -1646,7 +1646,7 @@ def upload_sticker_file(token, user_id, sticker, sticker_format):
16461646
def set_custom_emoji_sticker_set_thumbnail(token, name, custom_emoji_id=None):
16471647
method_url = 'setCustomEmojiStickerSetThumbnail'
16481648
payload = {'name': name}
1649-
if custom_emoji_id:
1649+
if custom_emoji_id is not None:
16501650
payload['custom_emoji_id'] = custom_emoji_id
16511651
return _make_request(token, method_url, params=payload, method='post')
16521652

@@ -1667,15 +1667,13 @@ def set_sticker_emoji_list(token, sticker, emoji_list):
16671667
return _make_request(token, method_url, params=payload, method='post')
16681668

16691669
def create_new_sticker_set(
1670-
token, user_id, name, title, stickers, sticker_format=None, sticker_type=None, needs_repainting=None):
1670+
token, user_id, name, title, stickers, sticker_format, sticker_type=None, needs_repainting=None):
16711671
method_url = 'createNewStickerSet'
1672-
payload = {'user_id': user_id, 'name': name, 'title': title}
1672+
payload = {'user_id': user_id, 'name': name, 'title': title, 'sticker_format': sticker_format}
16731673
if sticker_type:
16741674
payload['sticker_type'] = sticker_type
16751675
if needs_repainting:
16761676
payload['needs_repainting'] = needs_repainting
1677-
if sticker_format:
1678-
payload['sticker_format'] = sticker_format
16791677

16801678
files = {}
16811679
lst = []

telebot/async_telebot.py

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5423,7 +5423,29 @@ async def set_sticker_set_thumbnail(
54235423
"""
54245424
return await asyncio_helper.set_sticker_set_thumb(self.token, name, user_id, thumb)
54255425

5426-
set_sticker_set_thumb = set_sticker_set_thumbnail
5426+
async def set_sticker_set_thumb(
5427+
self, name: str, user_id: int, thumb: Union[Any, str]=None):
5428+
"""
5429+
Use this method to set the thumbnail of a sticker set.
5430+
Animated thumbnails can be set for animated sticker sets only. Returns True on success.
5431+
5432+
Telegram documentation: https://core.telegram.org/bots/api#setstickersetthumb
5433+
5434+
:param name: Sticker set name
5435+
:type name: :obj:`str`
5436+
5437+
:param user_id: User identifier
5438+
:type user_id: :obj:`int`
5439+
5440+
:param thumb:
5441+
:type thumb: :obj:`filelike object`
5442+
5443+
:return: On success, True is returned.
5444+
:rtype: :obj:`bool`
5445+
"""
5446+
# deprecated
5447+
logger.warning('set_sticker_set_thumb is deprecated, use set_sticker_set_thumbnail instead')
5448+
return await asyncio_helper.set_sticker_set_thumb(self.token, name, user_id, thumb)
54275449

54285450
async def get_sticker_set(self, name: str) -> types.StickerSet:
54295451
"""
@@ -5681,7 +5703,7 @@ async def create_new_sticker_set(
56815703

56825704

56835705
async def add_sticker_to_set(
5684-
self, user_id: int, name: str, emojis: List[str]=None,
5706+
self, user_id: int, name: str, emojis: Union[List[str], str]=None,
56855707
png_sticker: Optional[Union[Any, str]]=None,
56865708
tgs_sticker: Optional[Union[Any, str]]=None,
56875709
webm_sticker: Optional[Union[Any, str]]=None,
@@ -5694,6 +5716,9 @@ async def add_sticker_to_set(
56945716
Static sticker sets can have up to 120 stickers.
56955717
Returns True on success.
56965718
5719+
.. note::
5720+
**_sticker, mask_position, emojis parameters are deprecated, use stickers instead
5721+
56975722
Telegram documentation: https://core.telegram.org/bots/api#addstickertoset
56985723
56995724
:param user_id: User identifier of created sticker set owner
@@ -5720,17 +5745,25 @@ async def add_sticker_to_set(
57205745
:type mask_position: :class:`telebot.types.MaskPosition`
57215746
57225747
:param sticker: A JSON-serialized list of 1-50 initial stickers to be added to the sticker set
5723-
:type sticker: :class:`telebot.types.InputSticker`
5748+
:type sticker: :obj:`list` of :class:`telebot.types.InputSticker`
57245749
57255750
:return: On success, True is returned.
57265751
:rtype: :obj:`bool`
57275752
"""
5753+
# split emojis if string
5754+
if isinstance(emojis, str):
5755+
emojis = list(emojis)
57285756
# Replaced the parameters png_sticker, tgs_sticker, webm_sticker, emojis and mask_position
57295757
if sticker is None:
5730-
sticker = png_sticker or tgs_sticker or webm_sticker
5731-
if sticker is None:
5732-
raise ValueError('You must pass at least one sticker')
5733-
sticker = types.InputSticker(sticker, emojis, mask_position)
5758+
old_sticker = png_sticker or tgs_sticker or webm_sticker
5759+
if old_sticker is not None:
5760+
logger.warning(
5761+
'Parameters "png_sticker", "tgs_sticker", "webm_sticker", "emojis" and "mask_position" are deprecated, '
5762+
'use "sticker" instead'
5763+
)
5764+
if not old_sticker:
5765+
raise ValueError('You must pass at least one sticker.')
5766+
sticker = types.InputSticker(old_sticker, emojis, mask_position)
57345767

57355768
return await asyncio_helper.add_sticker_to_set(
57365769
self.token, user_id, name, sticker)

telebot/asyncio_helper.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1143,7 +1143,7 @@ async def set_chat_title(token, chat_id, title):
11431143
async def set_my_description(token, description=None, language_code=None):
11441144
method_url = r'setMyDescription'
11451145
payload = {}
1146-
if description:
1146+
if description is not None:
11471147
payload['description'] = description
11481148
if language_code is not None:
11491149
payload['language_code'] = language_code
@@ -1159,9 +1159,9 @@ async def get_my_description(token, language_code=None):
11591159
async def set_my_short_description(token, short_description=None, language_code=None):
11601160
method_url = r'setMyShortDescription'
11611161
payload = {}
1162-
if short_description:
1162+
if short_description is not None:
11631163
payload['short_description'] = short_description
1164-
if language_code:
1164+
if language_code is not None:
11651165
payload['language_code'] = language_code
11661166
return await _process_request(token, method_url, params=payload, method='post')
11671167

@@ -1642,7 +1642,7 @@ async def delete_sticker_set(token, name):
16421642
async def set_custom_emoji_sticker_set_thumbnail(token, name, custom_emoji_id=None):
16431643
method_url = 'setCustomEmojiStickerSetThumbnail'
16441644
payload = {'name': name}
1645-
if custom_emoji_id:
1645+
if custom_emoji_id is not None:
16461646
payload['custom_emoji_id'] = custom_emoji_id
16471647
return await _process_request(token, method_url, params=payload, method='post')
16481648

@@ -1653,15 +1653,13 @@ async def set_sticker_set_title(token, name, title):
16531653
return await _process_request(token, method_url, params=payload, method='post')
16541654

16551655
async def create_new_sticker_set(
1656-
token, user_id, name, title, stickers, sticker_format=None, sticker_type=None, needs_repainting=None):
1656+
token, user_id, name, title, stickers, sticker_format, sticker_type=None, needs_repainting=None):
16571657
method_url = 'createNewStickerSet'
1658-
payload = {'user_id': user_id, 'name': name, 'title': title}
1658+
payload = {'user_id': user_id, 'name': name, 'title': title, 'sticker_format': sticker_format}
16591659
if sticker_type:
16601660
payload['sticker_type'] = sticker_type
16611661
if needs_repainting:
16621662
payload['needs_repainting'] = needs_repainting
1663-
if sticker_format:
1664-
payload['sticker_format'] = sticker_format
16651663

16661664
files = {}
16671665
lst = []

telebot/types.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7436,7 +7436,10 @@ def __init__(self, sticker: Union[str, InputFile], emoji_list: List[str], mask_p
74367436
self._sticker_name = ''
74377437
self._sticker_dic = self.sticker
74387438
else:
7439+
# work like in inputmedia: convert_input_media
74397440
self._sticker_name = service_utils.generate_random_token()
7441+
# uses attach://_sticker_name for sticker param. then,
7442+
# actual file is sent using files param of the request
74407443
self._sticker_dic = 'attach://{0}'.format(self._sticker_name)
74417444

74427445
def to_dict(self) -> dict:

0 commit comments

Comments
 (0)