1
0
mirror of https://github.com/eternnoir/pyTelegramBotAPI.git synced 2023-08-10 21:12:57 +03:00

Merge pull request #1948 from coder2020official/botapi6.6

Changes from review of bot api 6.6
This commit is contained in:
_run 2023-03-19 18:25:37 +04:00 committed by GitHub
commit da57174635
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 93 additions and 28 deletions

View File

@ -4559,7 +4559,29 @@ class TeleBot:
""" """
return apihelper.set_sticker_set_thumb(self.token, name, user_id, thumb) return apihelper.set_sticker_set_thumb(self.token, name, user_id, thumb)
set_sticker_set_thumb = set_sticker_set_thumbnail def set_sticker_set_thumb(
self, name: str, user_id: int, thumb: Union[Any, str]=None):
"""
Use this method to set the thumbnail of a sticker set.
Animated thumbnails can be set for animated sticker sets only. Returns True on success.
Telegram documentation: https://core.telegram.org/bots/api#setstickersetthumb
:param name: Sticker set name
:type name: :obj:`str`
:param user_id: User identifier
:type user_id: :obj:`int`
:param thumb:
:type thumb: :obj:`filelike object`
:return: On success, True is returned.
:rtype: :obj:`bool`
"""
# deprecated
logger.warning('set_sticker_set_thumb is deprecated. Use set_sticker_set_thumbnail instead.')
return apihelper.set_sticker_set_thumb(self.token, name, user_id, thumb)
def get_sticker_set(self, name: str) -> types.StickerSet: def get_sticker_set(self, name: str) -> types.StickerSet:
""" """
@ -4817,7 +4839,7 @@ class TeleBot:
def add_sticker_to_set( def add_sticker_to_set(
self, user_id: int, name: str, emojis: List[str]=None, self, user_id: int, name: str, emojis: Union[List[str], str],
png_sticker: Optional[Union[Any, str]]=None, png_sticker: Optional[Union[Any, str]]=None,
tgs_sticker: Optional[Union[Any, str]]=None, tgs_sticker: Optional[Union[Any, str]]=None,
webm_sticker: Optional[Union[Any, str]]=None, webm_sticker: Optional[Union[Any, str]]=None,
@ -4833,7 +4855,7 @@ class TeleBot:
Telegram documentation: https://core.telegram.org/bots/api#addstickertoset Telegram documentation: https://core.telegram.org/bots/api#addstickertoset
.. note:: .. note::
**_sticker parameters are deprecated, use stickers instead **_sticker, mask_position, emojis parameters are deprecated, use stickers instead
:param user_id: User identifier of created sticker set owner :param user_id: User identifier of created sticker set owner
:type user_id: :obj:`int` :type user_id: :obj:`int`
@ -4859,15 +4881,26 @@ class TeleBot:
:type mask_position: :class:`telebot.types.MaskPosition` :type mask_position: :class:`telebot.types.MaskPosition`
:param sticker: A JSON-serialized list of 1-50 initial stickers to be added to the sticker set :param sticker: A JSON-serialized list of 1-50 initial stickers to be added to the sticker set
:type sticker: :class:`telebot.types.InputSticker` :type sticker: :obj:`list` of :class:`telebot.types.InputSticker`
:return: On success, True is returned. :return: On success, True is returned.
:rtype: :obj:`bool` :rtype: :obj:`bool`
""" """
# split emojis if string
if isinstance(emojis, str):
emojis = list(emojis)
# Replaced the parameters png_sticker, tgs_sticker, webm_sticker, emojis and mask_position # Replaced the parameters png_sticker, tgs_sticker, webm_sticker, emojis and mask_position
if sticker is None: if sticker is None:
sticker = png_sticker or tgs_sticker or webm_sticker old_sticker = png_sticker or tgs_sticker or webm_sticker
sticker = types.InputSticker(sticker, emojis, mask_position) if old_sticker is not None:
logger.warning(
'The parameters "png_sticker", "tgs_sticker", "webm_sticker", "emojis" and "mask_position" are deprecated, '
'use "sticker" instead'
)
if not old_sticker:
raise ValueError('You must pass at least one sticker.')
sticker = types.InputSticker(old_sticker, emojis, mask_position)
return apihelper.add_sticker_to_set( return apihelper.add_sticker_to_set(
self.token, user_id, name, sticker) self.token, user_id, name, sticker)

View File

@ -1174,9 +1174,9 @@ def get_my_description(token, language_code=None):
def set_my_short_description(token, short_description=None, language_code=None): def set_my_short_description(token, short_description=None, language_code=None):
method_url = r'setMyShortDescription' method_url = r'setMyShortDescription'
payload = {} payload = {}
if short_description: if short_description is not None:
payload['short_description'] = short_description payload['short_description'] = short_description
if language_code: if language_code is not None:
payload['language_code'] = language_code payload['language_code'] = language_code
return _make_request(token, method_url, params=payload, method='post') return _make_request(token, method_url, params=payload, method='post')
@ -1646,7 +1646,7 @@ def upload_sticker_file(token, user_id, sticker, sticker_format):
def set_custom_emoji_sticker_set_thumbnail(token, name, custom_emoji_id=None): def set_custom_emoji_sticker_set_thumbnail(token, name, custom_emoji_id=None):
method_url = 'setCustomEmojiStickerSetThumbnail' method_url = 'setCustomEmojiStickerSetThumbnail'
payload = {'name': name} payload = {'name': name}
if custom_emoji_id: if custom_emoji_id is not None:
payload['custom_emoji_id'] = custom_emoji_id payload['custom_emoji_id'] = custom_emoji_id
return _make_request(token, method_url, params=payload, method='post') return _make_request(token, method_url, params=payload, method='post')
@ -1667,15 +1667,13 @@ def set_sticker_emoji_list(token, sticker, emoji_list):
return _make_request(token, method_url, params=payload, method='post') return _make_request(token, method_url, params=payload, method='post')
def create_new_sticker_set( def create_new_sticker_set(
token, user_id, name, title, stickers, sticker_format=None, sticker_type=None, needs_repainting=None): token, user_id, name, title, stickers, sticker_format, sticker_type=None, needs_repainting=None):
method_url = 'createNewStickerSet' method_url = 'createNewStickerSet'
payload = {'user_id': user_id, 'name': name, 'title': title} payload = {'user_id': user_id, 'name': name, 'title': title, 'sticker_format': sticker_format}
if sticker_type: if sticker_type:
payload['sticker_type'] = sticker_type payload['sticker_type'] = sticker_type
if needs_repainting: if needs_repainting:
payload['needs_repainting'] = needs_repainting payload['needs_repainting'] = needs_repainting
if sticker_format:
payload['sticker_format'] = sticker_format
files = {} files = {}
lst = [] lst = []

View File

@ -5423,7 +5423,29 @@ class AsyncTeleBot:
""" """
return await asyncio_helper.set_sticker_set_thumb(self.token, name, user_id, thumb) return await asyncio_helper.set_sticker_set_thumb(self.token, name, user_id, thumb)
set_sticker_set_thumb = set_sticker_set_thumbnail async def set_sticker_set_thumb(
self, name: str, user_id: int, thumb: Union[Any, str]=None):
"""
Use this method to set the thumbnail of a sticker set.
Animated thumbnails can be set for animated sticker sets only. Returns True on success.
Telegram documentation: https://core.telegram.org/bots/api#setstickersetthumb
:param name: Sticker set name
:type name: :obj:`str`
:param user_id: User identifier
:type user_id: :obj:`int`
:param thumb:
:type thumb: :obj:`filelike object`
:return: On success, True is returned.
:rtype: :obj:`bool`
"""
# deprecated
logger.warning('set_sticker_set_thumb is deprecated, use set_sticker_set_thumbnail instead')
return await asyncio_helper.set_sticker_set_thumb(self.token, name, user_id, thumb)
async def get_sticker_set(self, name: str) -> types.StickerSet: async def get_sticker_set(self, name: str) -> types.StickerSet:
""" """
@ -5681,7 +5703,7 @@ class AsyncTeleBot:
async def add_sticker_to_set( async def add_sticker_to_set(
self, user_id: int, name: str, emojis: List[str]=None, self, user_id: int, name: str, emojis: Union[List[str], str]=None,
png_sticker: Optional[Union[Any, str]]=None, png_sticker: Optional[Union[Any, str]]=None,
tgs_sticker: Optional[Union[Any, str]]=None, tgs_sticker: Optional[Union[Any, str]]=None,
webm_sticker: Optional[Union[Any, str]]=None, webm_sticker: Optional[Union[Any, str]]=None,
@ -5694,6 +5716,9 @@ class AsyncTeleBot:
Static sticker sets can have up to 120 stickers. Static sticker sets can have up to 120 stickers.
Returns True on success. Returns True on success.
.. note::
**_sticker, mask_position, emojis parameters are deprecated, use stickers instead
Telegram documentation: https://core.telegram.org/bots/api#addstickertoset Telegram documentation: https://core.telegram.org/bots/api#addstickertoset
:param user_id: User identifier of created sticker set owner :param user_id: User identifier of created sticker set owner
@ -5720,17 +5745,25 @@ class AsyncTeleBot:
:type mask_position: :class:`telebot.types.MaskPosition` :type mask_position: :class:`telebot.types.MaskPosition`
:param sticker: A JSON-serialized list of 1-50 initial stickers to be added to the sticker set :param sticker: A JSON-serialized list of 1-50 initial stickers to be added to the sticker set
:type sticker: :class:`telebot.types.InputSticker` :type sticker: :obj:`list` of :class:`telebot.types.InputSticker`
:return: On success, True is returned. :return: On success, True is returned.
:rtype: :obj:`bool` :rtype: :obj:`bool`
""" """
# split emojis if string
if isinstance(emojis, str):
emojis = list(emojis)
# Replaced the parameters png_sticker, tgs_sticker, webm_sticker, emojis and mask_position # Replaced the parameters png_sticker, tgs_sticker, webm_sticker, emojis and mask_position
if sticker is None: if sticker is None:
sticker = png_sticker or tgs_sticker or webm_sticker old_sticker = png_sticker or tgs_sticker or webm_sticker
if sticker is None: if old_sticker is not None:
raise ValueError('You must pass at least one sticker') logger.warning(
sticker = types.InputSticker(sticker, emojis, mask_position) 'Parameters "png_sticker", "tgs_sticker", "webm_sticker", "emojis" and "mask_position" are deprecated, '
'use "sticker" instead'
)
if not old_sticker:
raise ValueError('You must pass at least one sticker.')
sticker = types.InputSticker(old_sticker, emojis, mask_position)
return await asyncio_helper.add_sticker_to_set( return await asyncio_helper.add_sticker_to_set(
self.token, user_id, name, sticker) self.token, user_id, name, sticker)

View File

@ -1143,7 +1143,7 @@ async def set_chat_title(token, chat_id, title):
async def set_my_description(token, description=None, language_code=None): async def set_my_description(token, description=None, language_code=None):
method_url = r'setMyDescription' method_url = r'setMyDescription'
payload = {} payload = {}
if description: if description is not None:
payload['description'] = description payload['description'] = description
if language_code is not None: if language_code is not None:
payload['language_code'] = language_code payload['language_code'] = language_code
@ -1159,9 +1159,9 @@ async def get_my_description(token, language_code=None):
async def set_my_short_description(token, short_description=None, language_code=None): async def set_my_short_description(token, short_description=None, language_code=None):
method_url = r'setMyShortDescription' method_url = r'setMyShortDescription'
payload = {} payload = {}
if short_description: if short_description is not None:
payload['short_description'] = short_description payload['short_description'] = short_description
if language_code: if language_code is not None:
payload['language_code'] = language_code payload['language_code'] = language_code
return await _process_request(token, method_url, params=payload, method='post') return await _process_request(token, method_url, params=payload, method='post')
@ -1642,7 +1642,7 @@ async def delete_sticker_set(token, name):
async def set_custom_emoji_sticker_set_thumbnail(token, name, custom_emoji_id=None): async def set_custom_emoji_sticker_set_thumbnail(token, name, custom_emoji_id=None):
method_url = 'setCustomEmojiStickerSetThumbnail' method_url = 'setCustomEmojiStickerSetThumbnail'
payload = {'name': name} payload = {'name': name}
if custom_emoji_id: if custom_emoji_id is not None:
payload['custom_emoji_id'] = custom_emoji_id payload['custom_emoji_id'] = custom_emoji_id
return await _process_request(token, method_url, params=payload, method='post') return await _process_request(token, method_url, params=payload, method='post')
@ -1653,15 +1653,13 @@ async def set_sticker_set_title(token, name, title):
return await _process_request(token, method_url, params=payload, method='post') return await _process_request(token, method_url, params=payload, method='post')
async def create_new_sticker_set( async def create_new_sticker_set(
token, user_id, name, title, stickers, sticker_format=None, sticker_type=None, needs_repainting=None): token, user_id, name, title, stickers, sticker_format, sticker_type=None, needs_repainting=None):
method_url = 'createNewStickerSet' method_url = 'createNewStickerSet'
payload = {'user_id': user_id, 'name': name, 'title': title} payload = {'user_id': user_id, 'name': name, 'title': title, 'sticker_format': sticker_format}
if sticker_type: if sticker_type:
payload['sticker_type'] = sticker_type payload['sticker_type'] = sticker_type
if needs_repainting: if needs_repainting:
payload['needs_repainting'] = needs_repainting payload['needs_repainting'] = needs_repainting
if sticker_format:
payload['sticker_format'] = sticker_format
files = {} files = {}
lst = [] lst = []

View File

@ -7436,7 +7436,10 @@ class InputSticker(Dictionaryable, JsonSerializable):
self._sticker_name = '' self._sticker_name = ''
self._sticker_dic = self.sticker self._sticker_dic = self.sticker
else: else:
# work like in inputmedia: convert_input_media
self._sticker_name = service_utils.generate_random_token() self._sticker_name = service_utils.generate_random_token()
# uses attach://_sticker_name for sticker param. then,
# actual file is sent using files param of the request
self._sticker_dic = 'attach://{0}'.format(self._sticker_name) self._sticker_dic = 'attach://{0}'.format(self._sticker_name)
def to_dict(self) -> dict: def to_dict(self) -> dict: