mirror of
https://github.com/eternnoir/pyTelegramBotAPI.git
synced 2023-08-10 21:12:57 +03:00
Compare commits
7 Commits
723075d2da
...
9fa79aabc0
Author | SHA1 | Date | |
---|---|---|---|
|
9fa79aabc0 | ||
|
62fad9ca3a | ||
|
388f055643 | ||
|
71be20636a | ||
|
3b38d1b46e | ||
|
1e0c2ea633 | ||
|
4e7652be7a |
@ -9,7 +9,7 @@
|
|||||||
<p align="center">A simple, but extensible Python implementation for the <a href="https://core.telegram.org/bots/api">Telegram Bot API</a>.</p>
|
<p align="center">A simple, but extensible Python implementation for the <a href="https://core.telegram.org/bots/api">Telegram Bot API</a>.</p>
|
||||||
<p align="center">Supports both sync and async ways.</p>
|
<p align="center">Supports both sync and async ways.</p>
|
||||||
|
|
||||||
## <p align="center">Supporting Bot API version: <a href="https://core.telegram.org/bots/api#december-30-2021">5.6</a>!
|
## <p align="center">Supporting Bot API version: <a href="https://core.telegram.org/bots/api#january-31-2022">5.7</a>!
|
||||||
|
|
||||||
## Contents
|
## Contents
|
||||||
|
|
||||||
@ -691,6 +691,7 @@ Result will be:
|
|||||||
|
|
||||||
## API conformance
|
## API conformance
|
||||||
|
|
||||||
|
* ✔ [Bot API 5.7](https://core.telegram.org/bots/api#january-31-2022)
|
||||||
* ✔ [Bot API 5.6](https://core.telegram.org/bots/api#december-30-2021)
|
* ✔ [Bot API 5.6](https://core.telegram.org/bots/api#december-30-2021)
|
||||||
* ✔ [Bot API 5.5](https://core.telegram.org/bots/api#december-7-2021)
|
* ✔ [Bot API 5.5](https://core.telegram.org/bots/api#december-7-2021)
|
||||||
* ✔ [Bot API 5.4](https://core.telegram.org/bots/api#november-5-2021)
|
* ✔ [Bot API 5.4](https://core.telegram.org/bots/api#november-5-2021)
|
||||||
|
@ -2409,8 +2409,9 @@ class TeleBot:
|
|||||||
def create_new_sticker_set(
|
def create_new_sticker_set(
|
||||||
self, user_id: int, name: str, title: str,
|
self, user_id: int, name: str, title: str,
|
||||||
emojis: str,
|
emojis: str,
|
||||||
png_sticker: Union[Any, str],
|
png_sticker: Union[Any, str]=None,
|
||||||
tgs_sticker: Union[Any, str],
|
tgs_sticker: Union[Any, str]=None,
|
||||||
|
webm_sticker: Union[Any, str]=None,
|
||||||
contains_masks: Optional[bool]=None,
|
contains_masks: Optional[bool]=None,
|
||||||
mask_position: Optional[types.MaskPosition]=None) -> bool:
|
mask_position: Optional[types.MaskPosition]=None) -> bool:
|
||||||
"""
|
"""
|
||||||
@ -2423,18 +2424,20 @@ class TeleBot:
|
|||||||
:param emojis:
|
:param emojis:
|
||||||
:param png_sticker:
|
:param png_sticker:
|
||||||
:param tgs_sticker:
|
:param tgs_sticker:
|
||||||
|
:param webm_sticker:
|
||||||
:param contains_masks:
|
:param contains_masks:
|
||||||
:param mask_position:
|
:param mask_position:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
return apihelper.create_new_sticker_set(
|
return apihelper.create_new_sticker_set(
|
||||||
self.token, user_id, name, title, emojis, png_sticker, tgs_sticker,
|
self.token, user_id, name, title, emojis, png_sticker, tgs_sticker,
|
||||||
contains_masks, mask_position)
|
contains_masks, mask_position, webm_sticker)
|
||||||
|
|
||||||
def add_sticker_to_set(
|
def add_sticker_to_set(
|
||||||
self, user_id: int, name: str, emojis: str,
|
self, user_id: int, name: str, emojis: 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,
|
||||||
mask_position: Optional[types.MaskPosition]=None) -> bool:
|
mask_position: Optional[types.MaskPosition]=None) -> bool:
|
||||||
"""
|
"""
|
||||||
Use this method to add a new sticker to a set created by the bot.
|
Use this method to add a new sticker to a set created by the bot.
|
||||||
@ -2445,11 +2448,12 @@ class TeleBot:
|
|||||||
:param emojis:
|
:param emojis:
|
||||||
:param png_sticker: Required if `tgs_sticker` is None
|
:param png_sticker: Required if `tgs_sticker` is None
|
||||||
:param tgs_sticker: Required if `png_sticker` is None
|
:param tgs_sticker: Required if `png_sticker` is None
|
||||||
|
:webm_sticker:
|
||||||
:param mask_position:
|
:param mask_position:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
return apihelper.add_sticker_to_set(
|
return apihelper.add_sticker_to_set(
|
||||||
self.token, user_id, name, emojis, png_sticker, tgs_sticker, mask_position)
|
self.token, user_id, name, emojis, png_sticker, tgs_sticker, mask_position, webm_sticker)
|
||||||
|
|
||||||
def set_sticker_position_in_set(self, sticker: str, position: int) -> bool:
|
def set_sticker_position_in_set(self, sticker: str, position: int) -> bool:
|
||||||
"""
|
"""
|
||||||
|
@ -1533,11 +1533,17 @@ def upload_sticker_file(token, user_id, png_sticker):
|
|||||||
|
|
||||||
def create_new_sticker_set(
|
def create_new_sticker_set(
|
||||||
token, user_id, name, title, emojis, png_sticker, tgs_sticker,
|
token, user_id, name, title, emojis, png_sticker, tgs_sticker,
|
||||||
contains_masks=None, mask_position=None):
|
contains_masks=None, mask_position=None, webm_sticker=None):
|
||||||
method_url = 'createNewStickerSet'
|
method_url = 'createNewStickerSet'
|
||||||
payload = {'user_id': user_id, 'name': name, 'title': title, 'emojis': emojis}
|
payload = {'user_id': user_id, 'name': name, 'title': title, 'emojis': emojis}
|
||||||
stype = 'png_sticker' if png_sticker else 'tgs_sticker'
|
stype = None
|
||||||
sticker = png_sticker or tgs_sticker
|
if png_sticker:
|
||||||
|
stype = 'png_sticker'
|
||||||
|
elif webm_sticker:
|
||||||
|
stype = 'webm_sticker'
|
||||||
|
else:
|
||||||
|
stype = 'tgs_sticker'
|
||||||
|
sticker = png_sticker or tgs_sticker or webm_sticker
|
||||||
files = None
|
files = None
|
||||||
if not util.is_string(sticker):
|
if not util.is_string(sticker):
|
||||||
files = {stype: sticker}
|
files = {stype: sticker}
|
||||||
@ -1547,14 +1553,22 @@ def create_new_sticker_set(
|
|||||||
payload['contains_masks'] = contains_masks
|
payload['contains_masks'] = contains_masks
|
||||||
if mask_position:
|
if mask_position:
|
||||||
payload['mask_position'] = mask_position.to_json()
|
payload['mask_position'] = mask_position.to_json()
|
||||||
|
if webm_sticker:
|
||||||
|
payload['webm_sticker'] = webm_sticker
|
||||||
return _make_request(token, method_url, params=payload, files=files, method='post')
|
return _make_request(token, method_url, params=payload, files=files, method='post')
|
||||||
|
|
||||||
|
|
||||||
def add_sticker_to_set(token, user_id, name, emojis, png_sticker, tgs_sticker, mask_position):
|
def add_sticker_to_set(token, user_id, name, emojis, png_sticker, tgs_sticker, mask_position, webm_sticker):
|
||||||
method_url = 'addStickerToSet'
|
method_url = 'addStickerToSet'
|
||||||
payload = {'user_id': user_id, 'name': name, 'emojis': emojis}
|
payload = {'user_id': user_id, 'name': name, 'emojis': emojis}
|
||||||
stype = 'png_sticker' if png_sticker else 'tgs_sticker'
|
stype = None
|
||||||
sticker = png_sticker or tgs_sticker
|
if png_sticker:
|
||||||
|
stype = 'png_sticker'
|
||||||
|
elif webm_sticker:
|
||||||
|
stype = 'webm_sticker'
|
||||||
|
else:
|
||||||
|
stype = 'tgs_sticker'
|
||||||
|
sticker = png_sticker or tgs_sticker or webm_sticker
|
||||||
files = None
|
files = None
|
||||||
if not util.is_string(sticker):
|
if not util.is_string(sticker):
|
||||||
files = {stype: sticker}
|
files = {stype: sticker}
|
||||||
|
@ -2996,8 +2996,9 @@ class AsyncTeleBot:
|
|||||||
async def create_new_sticker_set(
|
async def create_new_sticker_set(
|
||||||
self, user_id: int, name: str, title: str,
|
self, user_id: int, name: str, title: str,
|
||||||
emojis: str,
|
emojis: str,
|
||||||
png_sticker: Union[Any, str],
|
png_sticker: Union[Any, str]=None,
|
||||||
tgs_sticker: Union[Any, str],
|
tgs_sticker: Union[Any, str]=None,
|
||||||
|
webm_sticker: Union[Any, str]=None,
|
||||||
contains_masks: Optional[bool]=None,
|
contains_masks: Optional[bool]=None,
|
||||||
mask_position: Optional[types.MaskPosition]=None) -> bool:
|
mask_position: Optional[types.MaskPosition]=None) -> bool:
|
||||||
"""
|
"""
|
||||||
@ -3010,19 +3011,21 @@ class AsyncTeleBot:
|
|||||||
:param emojis:
|
:param emojis:
|
||||||
:param png_sticker:
|
:param png_sticker:
|
||||||
:param tgs_sticker:
|
:param tgs_sticker:
|
||||||
|
:webm_sticker:
|
||||||
:param contains_masks:
|
:param contains_masks:
|
||||||
:param mask_position:
|
:param mask_position:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
return await asyncio_helper.create_new_sticker_set(
|
return await asyncio_helper.create_new_sticker_set(
|
||||||
self.token, user_id, name, title, emojis, png_sticker, tgs_sticker,
|
self.token, user_id, name, title, emojis, png_sticker, tgs_sticker,
|
||||||
contains_masks, mask_position)
|
contains_masks, mask_position, webm_sticker)
|
||||||
|
|
||||||
|
|
||||||
async def add_sticker_to_set(
|
async def add_sticker_to_set(
|
||||||
self, user_id: int, name: str, emojis: str,
|
self, user_id: int, name: str, emojis: 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,
|
||||||
mask_position: Optional[types.MaskPosition]=None) -> bool:
|
mask_position: Optional[types.MaskPosition]=None) -> bool:
|
||||||
"""
|
"""
|
||||||
Use this method to add a new sticker to a set created by the bot.
|
Use this method to add a new sticker to a set created by the bot.
|
||||||
@ -3033,11 +3036,12 @@ class AsyncTeleBot:
|
|||||||
:param emojis:
|
:param emojis:
|
||||||
:param png_sticker: Required if `tgs_sticker` is None
|
:param png_sticker: Required if `tgs_sticker` is None
|
||||||
:param tgs_sticker: Required if `png_sticker` is None
|
:param tgs_sticker: Required if `png_sticker` is None
|
||||||
|
:webm_sticker:
|
||||||
:param mask_position:
|
:param mask_position:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
return await asyncio_helper.add_sticker_to_set(
|
return await asyncio_helper.add_sticker_to_set(
|
||||||
self.token, user_id, name, emojis, png_sticker, tgs_sticker, mask_position)
|
self.token, user_id, name, emojis, png_sticker, tgs_sticker, mask_position, webm_sticker)
|
||||||
|
|
||||||
|
|
||||||
async def set_sticker_position_in_set(self, sticker: str, position: int) -> bool:
|
async def set_sticker_position_in_set(self, sticker: str, position: int) -> bool:
|
||||||
|
@ -1497,11 +1497,17 @@ async def upload_sticker_file(token, user_id, png_sticker):
|
|||||||
|
|
||||||
async def create_new_sticker_set(
|
async def create_new_sticker_set(
|
||||||
token, user_id, name, title, emojis, png_sticker, tgs_sticker,
|
token, user_id, name, title, emojis, png_sticker, tgs_sticker,
|
||||||
contains_masks=None, mask_position=None):
|
contains_masks=None, mask_position=None, webm_sticker=None):
|
||||||
method_url = 'createNewStickerSet'
|
method_url = 'createNewStickerSet'
|
||||||
payload = {'user_id': user_id, 'name': name, 'title': title, 'emojis': emojis}
|
payload = {'user_id': user_id, 'name': name, 'title': title, 'emojis': emojis}
|
||||||
stype = 'png_sticker' if png_sticker else 'tgs_sticker'
|
stype = None
|
||||||
sticker = png_sticker or tgs_sticker
|
if png_sticker:
|
||||||
|
stype = 'png_sticker'
|
||||||
|
elif webm_sticker:
|
||||||
|
stype = 'webm_sticker'
|
||||||
|
else:
|
||||||
|
stype = 'tgs_sticker'
|
||||||
|
sticker = png_sticker or tgs_sticker or webm_sticker
|
||||||
files = None
|
files = None
|
||||||
if not util.is_string(sticker):
|
if not util.is_string(sticker):
|
||||||
files = {stype: sticker}
|
files = {stype: sticker}
|
||||||
@ -1511,21 +1517,33 @@ async def create_new_sticker_set(
|
|||||||
payload['contains_masks'] = contains_masks
|
payload['contains_masks'] = contains_masks
|
||||||
if mask_position:
|
if mask_position:
|
||||||
payload['mask_position'] = mask_position.to_json()
|
payload['mask_position'] = mask_position.to_json()
|
||||||
|
if webm_sticker:
|
||||||
|
payload['webm_sticker'] = webm_sticker
|
||||||
return await _process_request(token, method_url, params=payload, files=files, method='post')
|
return await _process_request(token, method_url, params=payload, files=files, method='post')
|
||||||
|
|
||||||
|
|
||||||
async def add_sticker_to_set(token, user_id, name, emojis, png_sticker, tgs_sticker, mask_position):
|
async def add_sticker_to_set(token, user_id, name, emojis, png_sticker, tgs_sticker, mask_position, webm_sticker):
|
||||||
method_url = 'addStickerToSet'
|
method_url = 'addStickerToSet'
|
||||||
payload = {'user_id': user_id, 'name': name, 'emojis': emojis}
|
payload = {'user_id': user_id, 'name': name, 'emojis': emojis}
|
||||||
stype = 'png_sticker' if png_sticker else 'tgs_sticker'
|
stype = None
|
||||||
sticker = png_sticker or tgs_sticker
|
if png_sticker:
|
||||||
|
stype = 'png_sticker'
|
||||||
|
elif webm_sticker:
|
||||||
|
stype = 'webm_sticker'
|
||||||
|
else:
|
||||||
|
stype = 'tgs_sticker'
|
||||||
files = None
|
files = None
|
||||||
|
sticker = png_sticker or tgs_sticker or webm_sticker
|
||||||
|
|
||||||
if not util.is_string(sticker):
|
if not util.is_string(sticker):
|
||||||
files = {stype: sticker}
|
files = {stype: sticker}
|
||||||
else:
|
else:
|
||||||
payload[stype] = sticker
|
payload[stype] = sticker
|
||||||
if mask_position:
|
if mask_position:
|
||||||
payload['mask_position'] = mask_position.to_json()
|
payload['mask_position'] = mask_position.to_json()
|
||||||
|
|
||||||
|
if webm_sticker:
|
||||||
|
payload['webm_sticker'] = webm_sticker
|
||||||
return await _process_request(token, method_url, params=payload, files=files, method='post')
|
return await _process_request(token, method_url, params=payload, files=files, method='post')
|
||||||
|
|
||||||
|
|
||||||
|
@ -2484,10 +2484,11 @@ class StickerSet(JsonDeserializable):
|
|||||||
obj['thumb'] = None
|
obj['thumb'] = None
|
||||||
return cls(**obj)
|
return cls(**obj)
|
||||||
|
|
||||||
def __init__(self, name, title, is_animated, contains_masks, stickers, thumb=None, **kwargs):
|
def __init__(self, name, title, is_animated, is_video, contains_masks, stickers, thumb=None, **kwargs):
|
||||||
self.name: str = name
|
self.name: str = name
|
||||||
self.title: str = title
|
self.title: str = title
|
||||||
self.is_animated: bool = is_animated
|
self.is_animated: bool = is_animated
|
||||||
|
self.is_video: bool = is_video
|
||||||
self.contains_masks: bool = contains_masks
|
self.contains_masks: bool = contains_masks
|
||||||
self.stickers: List[Sticker] = stickers
|
self.stickers: List[Sticker] = stickers
|
||||||
self.thumb: PhotoSize = thumb
|
self.thumb: PhotoSize = thumb
|
||||||
@ -2507,12 +2508,13 @@ class Sticker(JsonDeserializable):
|
|||||||
return cls(**obj)
|
return cls(**obj)
|
||||||
|
|
||||||
def __init__(self, file_id, file_unique_id, width, height, is_animated,
|
def __init__(self, file_id, file_unique_id, width, height, is_animated,
|
||||||
thumb=None, emoji=None, set_name=None, mask_position=None, file_size=None, **kwargs):
|
is_video, thumb=None, emoji=None, set_name=None, mask_position=None, file_size=None, **kwargs):
|
||||||
self.file_id: str = file_id
|
self.file_id: str = file_id
|
||||||
self.file_unique_id: str = file_unique_id
|
self.file_unique_id: str = file_unique_id
|
||||||
self.width: int = width
|
self.width: int = width
|
||||||
self.height: int = height
|
self.height: int = height
|
||||||
self.is_animated: bool = is_animated
|
self.is_animated: bool = is_animated
|
||||||
|
self.is_video: bool = is_video
|
||||||
self.thumb: PhotoSize = thumb
|
self.thumb: PhotoSize = thumb
|
||||||
self.emoji: str = emoji
|
self.emoji: str = emoji
|
||||||
self.set_name: str = set_name
|
self.set_name: str = set_name
|
||||||
|
@ -80,7 +80,7 @@ def test_json_Message_Audio():
|
|||||||
|
|
||||||
|
|
||||||
def test_json_Message_Sticker():
|
def test_json_Message_Sticker():
|
||||||
json_string = r'{"message_id": 21552, "from": {"id": 590740002, "is_bot": false, "first_name": "⚜️ Ƥυrуα ⚜️", "username": "Purya", "language_code": "en"}, "chat": {"id": -1001309982000, "title": "123", "type": "supergroup"}, "date": 1594068909, "sticker": {"width": 368, "height": 368, "emoji": "🤖", "set_name": "ipuryapack", "is_animated": false, "thumb": {"file_id": "AAMCBAADHQJOFL7mAAJUMF8Dj62hpmDhpRAYvkc8CtIqipolAAJ8AAPA-8cF9yxjgjkLS97A0D4iXQARtQAHbQADHy4AAhoE", "file_unique_id": "AQADwNA-Il0AAx8uAAI", "file_size": 7776, "width": 60, "height": 60}, "file_id": "CAACAgQAAx0CThS-5gACVDBfA4-toaZg4aUQGL5HWerSKoqaJQACArADwPvHBfcsY4I5C3feGgQ", "file_unique_id": "AgADfAADsPvHWQ", "file_size": 14602}}'
|
json_string = r'{"message_id": 21552, "from": {"id": 590740002, "is_bot": false, "first_name": "⚜️ Ƥυrуα ⚜️", "username": "Purya", "language_code": "en"}, "chat": {"id": -1001309982000, "title": "123", "type": "supergroup"}, "date": 1594068909, "sticker": {"width": 368, "height": 368, "emoji": "🤖", "set_name": "ipuryapack", "is_animated": false, "is_video": true, "thumb": {"file_id": "AAMCBAADHQJOFL7mAAJUMF8Dj62hpmDhpRAYvkc8CtIqipolAAJ8AAPA-8cF9yxjgjkLS97A0D4iXQARtQAHbQADHy4AAhoE", "file_unique_id": "AQADwNA-Il0AAx8uAAI", "file_size": 7776, "width": 60, "height": 60}, "file_id": "CAACAgQAAx0CThS-5gACVDBfA4-toaZg4aUQGL5HWerSKoqaJQACArADwPvHBfcsY4I5C3feGgQ", "file_unique_id": "AgADfAADsPvHWQ", "file_size": 14602}}'
|
||||||
msg = types.Message.de_json(json_string)
|
msg = types.Message.de_json(json_string)
|
||||||
assert msg.sticker.height == 368
|
assert msg.sticker.height == 368
|
||||||
assert msg.sticker.thumb.height == 60
|
assert msg.sticker.thumb.height == 60
|
||||||
@ -88,7 +88,7 @@ def test_json_Message_Sticker():
|
|||||||
|
|
||||||
|
|
||||||
def test_json_Message_Sticker_without_thumb():
|
def test_json_Message_Sticker_without_thumb():
|
||||||
json_string = r'{"message_id": 21552, "from": {"id": 590740002, "is_bot": false, "first_name": "⚜️ Ƥυrуα ⚜️", "username": "Purya", "language_code": "en"}, "chat": {"id": -1001309982000, "title": "123", "type": "supergroup"}, "date": 1594068909, "sticker": {"width": 368, "height": 368, "emoji": "🤖", "set_name": "ipuryapack", "is_animated": false, "file_id": "CAACAgQAAx0CThS-5gACVDBfA4-toaZg4aUQGL5HWerSKoqaJQACArADwPvHBfcsY4I5C3feGgQ", "file_unique_id": "AgADfAADsPvHWQ", "file_size": 14602}}'
|
json_string = r'{"message_id": 21552, "from": {"id": 590740002, "is_bot": false, "first_name": "⚜️ Ƥυrуα ⚜️", "username": "Purya", "language_code": "en"}, "chat": {"id": -1001309982000, "title": "123", "type": "supergroup"}, "date": 1594068909, "sticker": {"width": 368, "height": 368, "emoji": "🤖", "set_name": "ipuryapack", "is_animated": false, "is_video": true, "file_id": "CAACAgQAAx0CThS-5gACVDBfA4-toaZg4aUQGL5HWerSKoqaJQACArADwPvHBfcsY4I5C3feGgQ", "file_unique_id": "AgADfAADsPvHWQ", "file_size": 14602}}'
|
||||||
msg = types.Message.de_json(json_string)
|
msg = types.Message.de_json(json_string)
|
||||||
assert msg.sticker.height == 368
|
assert msg.sticker.height == 368
|
||||||
assert msg.sticker.thumb is None
|
assert msg.sticker.thumb is None
|
||||||
|
Loading…
Reference in New Issue
Block a user