mirror of
https://github.com/eternnoir/pyTelegramBotAPI.git
synced 2023-08-10 21:12:57 +03:00
Check and update for full compatibility to Bot API up to 5.0
This commit is contained in:
parent
911e356930
commit
d6501ddc0e
10
README.md
10
README.md
@ -591,7 +591,7 @@ You can use proxy for request. `apihelper.proxy` object will use by call `reques
|
|||||||
```python
|
```python
|
||||||
from telebot import apihelper
|
from telebot import apihelper
|
||||||
|
|
||||||
apihelper.proxy = {'http':'http://10.10.1.10:3128'}
|
apihelper.proxy = {'http':'http://127.0.0.1:3128'}
|
||||||
```
|
```
|
||||||
|
|
||||||
If you want to use socket5 proxy you need install dependency `pip install requests[socks]` and make sure, that you have the latest version of `gunicorn`, `PySocks`, `pyTelegramBotAPI`, `requests` and `urllib3`.
|
If you want to use socket5 proxy you need install dependency `pip install requests[socks]` and make sure, that you have the latest version of `gunicorn`, `PySocks`, `pyTelegramBotAPI`, `requests` and `urllib3`.
|
||||||
@ -605,8 +605,14 @@ apihelper.proxy = {'https':'socks5://userproxy:password@proxy_address:port'}
|
|||||||
|
|
||||||
_Checking is in progress..._
|
_Checking is in progress..._
|
||||||
|
|
||||||
✅ [Bot API 4.5](https://core.telegram.org/bots/api-changelog#december-31-2019) _- To be checked..._
|
✅ [Bot API 5.1](https://core.telegram.org/bots/api#march-9-2021) _- To be checked..._
|
||||||
|
|
||||||
|
* ✔ [Bot API 5.0](https://core.telegram.org/bots/api-changelog#november-4-2020)
|
||||||
|
* ✔ [Bot API 4.9](https://core.telegram.org/bots/api-changelog#june-4-2020)
|
||||||
|
* ✔ [Bot API 4.8](https://core.telegram.org/bots/api-changelog#april-24-2020)
|
||||||
|
* ✔ [Bot API 4.7](https://core.telegram.org/bots/api-changelog#march-30-2020)
|
||||||
|
* ✔ [Bot API 4.6](https://core.telegram.org/bots/api-changelog#january-23-2020)
|
||||||
|
* ➕ [Bot API 4.5](https://core.telegram.org/bots/api-changelog#december-31-2019) - No nested MessageEntities and Markdown2 support.
|
||||||
* ✔ [Bot API 4.4](https://core.telegram.org/bots/api-changelog#july-29-2019)
|
* ✔ [Bot API 4.4](https://core.telegram.org/bots/api-changelog#july-29-2019)
|
||||||
* ✔ [Bot API 4.3](https://core.telegram.org/bots/api-changelog#may-31-2019)
|
* ✔ [Bot API 4.3](https://core.telegram.org/bots/api-changelog#may-31-2019)
|
||||||
* ✔ [Bot API 4.2](https://core.telegram.org/bots/api-changelog#april-14-2019)
|
* ✔ [Bot API 4.2](https://core.telegram.org/bots/api-changelog#april-14-2019)
|
||||||
|
@ -145,7 +145,7 @@ class TeleBot:
|
|||||||
def __init__(
|
def __init__(
|
||||||
self, token, parse_mode=None, threaded=True, skip_pending=False, num_threads=2,
|
self, token, parse_mode=None, threaded=True, skip_pending=False, num_threads=2,
|
||||||
next_step_backend=None, reply_backend=None, exception_handler=None, last_update_id=0,
|
next_step_backend=None, reply_backend=None, exception_handler=None, last_update_id=0,
|
||||||
suppress_middleware_excepions=False # <- Typo in exceptions
|
suppress_middleware_excepions=False
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
:param token: bot API token
|
:param token: bot API token
|
||||||
@ -590,8 +590,9 @@ class TeleBot:
|
|||||||
if logger_level and logger_level >= logging.INFO:
|
if logger_level and logger_level >= logging.INFO:
|
||||||
logger.error("Break infinity polling")
|
logger.error("Break infinity polling")
|
||||||
|
|
||||||
def polling(self, none_stop: bool=False, interval: int=0, timeout: int=20,
|
def polling(self, non_stop: bool=False, interval: int=0, timeout: int=20,
|
||||||
long_polling_timeout: int=20, allowed_updates: Optional[List[str]]=None):
|
long_polling_timeout: int=20, allowed_updates: Optional[List[str]]=None,
|
||||||
|
none_stop: Optional[bool]=None):
|
||||||
"""
|
"""
|
||||||
This function creates a new Thread that calls an internal __retrieve_updates function.
|
This function creates a new Thread that calls an internal __retrieve_updates function.
|
||||||
This allows the bot to retrieve Updates automagically and notify listeners and message handlers accordingly.
|
This allows the bot to retrieve Updates automagically and notify listeners and message handlers accordingly.
|
||||||
@ -600,7 +601,7 @@ class TeleBot:
|
|||||||
|
|
||||||
Always get updates.
|
Always get updates.
|
||||||
:param interval: Delay between two update retrivals
|
:param interval: Delay between two update retrivals
|
||||||
:param none_stop: Do not stop polling when an ApiException occurs.
|
:param non_stop: Do not stop polling when an ApiException occurs.
|
||||||
:param timeout: Request connection timeout
|
:param timeout: Request connection timeout
|
||||||
:param long_polling_timeout: Timeout in seconds for long polling (see API docs)
|
:param long_polling_timeout: Timeout in seconds for long polling (see API docs)
|
||||||
:param allowed_updates: A list of the update types you want your bot to receive.
|
:param allowed_updates: A list of the update types you want your bot to receive.
|
||||||
@ -611,12 +612,16 @@ class TeleBot:
|
|||||||
|
|
||||||
Please note that this parameter doesn't affect updates created before the call to the get_updates,
|
Please note that this parameter doesn't affect updates created before the call to the get_updates,
|
||||||
so unwanted updates may be received for a short period of time.
|
so unwanted updates may be received for a short period of time.
|
||||||
|
:param none_stop: Deprecated, use non_stop. Old typo f***up compatibility
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
|
if none_stop is not None:
|
||||||
|
non_stop = none_stop
|
||||||
|
|
||||||
if self.threaded:
|
if self.threaded:
|
||||||
self.__threaded_polling(none_stop, interval, timeout, long_polling_timeout, allowed_updates)
|
self.__threaded_polling(non_stop, interval, timeout, long_polling_timeout, allowed_updates)
|
||||||
else:
|
else:
|
||||||
self.__non_threaded_polling(none_stop, interval, timeout, long_polling_timeout, allowed_updates)
|
self.__non_threaded_polling(non_stop, interval, timeout, long_polling_timeout, allowed_updates)
|
||||||
|
|
||||||
def __threaded_polling(self, non_stop=False, interval=0, timeout = None, long_polling_timeout = None, allowed_updates=None):
|
def __threaded_polling(self, non_stop=False, interval=0, timeout = None, long_polling_timeout = None, allowed_updates=None):
|
||||||
logger.info('Started polling.')
|
logger.info('Started polling.')
|
||||||
@ -1118,30 +1123,34 @@ class TeleBot:
|
|||||||
thumb: Optional[Union[Any, str]]=None,
|
thumb: Optional[Union[Any, str]]=None,
|
||||||
caption_entities: Optional[List[types.MessageEntity]]=None,
|
caption_entities: Optional[List[types.MessageEntity]]=None,
|
||||||
allow_sending_without_reply: Optional[bool]=None,
|
allow_sending_without_reply: Optional[bool]=None,
|
||||||
visible_file_name: Optional[str]=None) -> types.Message:
|
visible_file_name: Optional[str]=None,
|
||||||
|
disable_content_type_detection: Optional[bool]=None) -> types.Message:
|
||||||
"""
|
"""
|
||||||
Use this method to send general files.
|
Use this method to send general files.
|
||||||
:param chat_id:
|
:param chat_id: Unique identifier for the target chat or username of the target channel (in the format @channelusername)
|
||||||
:param data:
|
:param data: (document) File to send. Pass a file_id as String to send a file that exists on the Telegram servers (recommended), 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
|
||||||
:param reply_to_message_id:
|
:param reply_to_message_id: If the message is a reply, ID of the original message
|
||||||
:param caption:
|
:param caption: Document caption (may also be used when resending documents by file_id), 0-1024 characters after entities parsing
|
||||||
:param reply_markup:
|
:param reply_markup:
|
||||||
:param parse_mode:
|
:param parse_mode: Mode for parsing entities in the document caption
|
||||||
:param disable_notification:
|
:param disable_notification: Sends the message silently. Users will receive a notification with no sound.
|
||||||
:param timeout:
|
:param timeout:
|
||||||
:param thumb: InputFile or String : Thumbnail of the file sent
|
:param thumb: InputFile or String : Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass “attach://<file_attach_name>” if the thumbnail was uploaded using multipart/form-data under <file_attach_name>
|
||||||
:param caption_entities:
|
:param caption_entities:
|
||||||
:param allow_sending_without_reply:
|
:param allow_sending_without_reply:
|
||||||
:param visible_file_name: allows to define file name that will be visible in the Telegram instead of original file name
|
:param visible_file_name: allows to define file name that will be visible in the Telegram instead of original file name
|
||||||
|
:param disable_content_type_detection: Disables automatic server-side content type detection for files uploaded using multipart/form-data
|
||||||
:return: API reply.
|
:return: API reply.
|
||||||
"""
|
"""
|
||||||
parse_mode = self.parse_mode if (parse_mode is None) else parse_mode
|
parse_mode = self.parse_mode if (parse_mode is None) else parse_mode
|
||||||
|
|
||||||
return types.Message.de_json(
|
return types.Message.de_json(
|
||||||
apihelper.send_data(
|
apihelper.send_data(
|
||||||
self.token, chat_id, data, 'document', reply_to_message_id, reply_markup,
|
self.token, chat_id, data, 'document',
|
||||||
parse_mode, disable_notification, timeout, caption, thumb, caption_entities,
|
reply_to_message_id = reply_to_message_id, reply_markup = reply_markup, parse_mode = parse_mode,
|
||||||
allow_sending_without_reply, visible_file_name))
|
disable_notification = disable_notification, timeout = timeout, caption = caption, thumb = thumb,
|
||||||
|
caption_entities = caption_entities, allow_sending_without_reply = allow_sending_without_reply,
|
||||||
|
disable_content_type_detection = disable_content_type_detection, visible_file_name = visible_file_name))
|
||||||
|
|
||||||
def send_sticker(
|
def send_sticker(
|
||||||
self, chat_id: Union[int, str], data: Union[Any, str],
|
self, chat_id: Union[int, str], data: Union[Any, str],
|
||||||
@ -1163,7 +1172,7 @@ class TeleBot:
|
|||||||
"""
|
"""
|
||||||
return types.Message.de_json(
|
return types.Message.de_json(
|
||||||
apihelper.send_data(
|
apihelper.send_data(
|
||||||
self.token, chat_id=chat_id, data=data, data_type='sticker',
|
self.token, chat_id, data, 'sticker',
|
||||||
reply_to_message_id=reply_to_message_id, reply_markup=reply_markup,
|
reply_to_message_id=reply_to_message_id, reply_markup=reply_markup,
|
||||||
disable_notification=disable_notification, timeout=timeout,
|
disable_notification=disable_notification, timeout=timeout,
|
||||||
allow_sending_without_reply=allow_sending_without_reply))
|
allow_sending_without_reply=allow_sending_without_reply))
|
||||||
@ -1831,7 +1840,8 @@ class TeleBot:
|
|||||||
message_id: Optional[int]=None,
|
message_id: Optional[int]=None,
|
||||||
inline_message_id: Optional[str]=None,
|
inline_message_id: Optional[str]=None,
|
||||||
parse_mode: Optional[str]=None,
|
parse_mode: Optional[str]=None,
|
||||||
disable_web_page_preview: Optional[bool]=None,
|
entities: Optional[List[types.MessageEntity]]=None,
|
||||||
|
disable_web_page_preview: Optional[bool]=None,
|
||||||
reply_markup: Optional[REPLY_MARKUP_TYPES]=None) -> Union[types.Message, bool]:
|
reply_markup: Optional[REPLY_MARKUP_TYPES]=None) -> Union[types.Message, bool]:
|
||||||
"""
|
"""
|
||||||
Use this method to edit text and game messages.
|
Use this method to edit text and game messages.
|
||||||
@ -1840,6 +1850,7 @@ class TeleBot:
|
|||||||
:param message_id:
|
:param message_id:
|
||||||
:param inline_message_id:
|
:param inline_message_id:
|
||||||
:param parse_mode:
|
:param parse_mode:
|
||||||
|
:param entities:
|
||||||
:param disable_web_page_preview:
|
:param disable_web_page_preview:
|
||||||
:param reply_markup:
|
:param reply_markup:
|
||||||
:return:
|
:return:
|
||||||
@ -1847,7 +1858,7 @@ class TeleBot:
|
|||||||
parse_mode = self.parse_mode if (parse_mode is None) else parse_mode
|
parse_mode = self.parse_mode if (parse_mode is None) else parse_mode
|
||||||
|
|
||||||
result = apihelper.edit_message_text(self.token, text, chat_id, message_id, inline_message_id, parse_mode,
|
result = apihelper.edit_message_text(self.token, text, chat_id, message_id, inline_message_id, parse_mode,
|
||||||
disable_web_page_preview, reply_markup)
|
entities, disable_web_page_preview, reply_markup)
|
||||||
if type(result) == bool: # if edit inline message return is bool not Message.
|
if type(result) == bool: # if edit inline message return is bool not Message.
|
||||||
return result
|
return result
|
||||||
return types.Message.de_json(result)
|
return types.Message.de_json(result)
|
||||||
@ -2126,6 +2137,7 @@ class TeleBot:
|
|||||||
:param message_id:
|
:param message_id:
|
||||||
:param inline_message_id:
|
:param inline_message_id:
|
||||||
:param parse_mode:
|
:param parse_mode:
|
||||||
|
:param caption_entities:
|
||||||
:param reply_markup:
|
:param reply_markup:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
|
@ -1104,7 +1104,7 @@ def unpin_all_chat_messages(token, chat_id):
|
|||||||
# Updating messages
|
# Updating messages
|
||||||
|
|
||||||
def edit_message_text(token, text, chat_id=None, message_id=None, inline_message_id=None, parse_mode=None,
|
def edit_message_text(token, text, chat_id=None, message_id=None, inline_message_id=None, parse_mode=None,
|
||||||
disable_web_page_preview=None, reply_markup=None):
|
entities = None, disable_web_page_preview=None, reply_markup=None):
|
||||||
method_url = r'editMessageText'
|
method_url = r'editMessageText'
|
||||||
payload = {'text': text}
|
payload = {'text': text}
|
||||||
if chat_id:
|
if chat_id:
|
||||||
@ -1115,6 +1115,8 @@ def edit_message_text(token, text, chat_id=None, message_id=None, inline_message
|
|||||||
payload['inline_message_id'] = inline_message_id
|
payload['inline_message_id'] = inline_message_id
|
||||||
if parse_mode:
|
if parse_mode:
|
||||||
payload['parse_mode'] = parse_mode
|
payload['parse_mode'] = parse_mode
|
||||||
|
if entities:
|
||||||
|
payload['entities'] = json.dumps(types.MessageEntity.to_list_of_dicts(entities))
|
||||||
if disable_web_page_preview is not None:
|
if disable_web_page_preview is not None:
|
||||||
payload['disable_web_page_preview'] = disable_web_page_preview
|
payload['disable_web_page_preview'] = disable_web_page_preview
|
||||||
if reply_markup:
|
if reply_markup:
|
||||||
|
567
telebot/types.py
567
telebot/types.py
@ -74,7 +74,7 @@ class JsonDeserializable(object):
|
|||||||
:return: Dictionary parsed from json or original dict
|
:return: Dictionary parsed from json or original dict
|
||||||
"""
|
"""
|
||||||
if util.is_dict(json_type):
|
if util.is_dict(json_type):
|
||||||
return json_type.copy()
|
return json_type.copy() if dict_copy else json_type
|
||||||
elif util.is_string(json_type):
|
elif util.is_string(json_type):
|
||||||
return json.loads(json_type)
|
return json.loads(json_type)
|
||||||
else:
|
else:
|
||||||
@ -302,6 +302,8 @@ class Message(JsonDeserializable):
|
|||||||
chat = Chat.de_json(obj['chat'])
|
chat = Chat.de_json(obj['chat'])
|
||||||
content_type = None
|
content_type = None
|
||||||
opts = {}
|
opts = {}
|
||||||
|
if 'sender_chat' in obj:
|
||||||
|
opts['sender_chat'] = Chat.de_json(obj['sender_chat'])
|
||||||
if 'forward_from' in obj:
|
if 'forward_from' in obj:
|
||||||
opts['forward_from'] = User.de_json(obj['forward_from'])
|
opts['forward_from'] = User.de_json(obj['forward_from'])
|
||||||
if 'forward_from_chat' in obj:
|
if 'forward_from_chat' in obj:
|
||||||
@ -478,6 +480,7 @@ class Message(JsonDeserializable):
|
|||||||
self.from_user: User = from_user
|
self.from_user: User = from_user
|
||||||
self.date: int = date
|
self.date: int = date
|
||||||
self.chat: Chat = chat
|
self.chat: Chat = chat
|
||||||
|
self.sender_chat: Optional[Chat] = None
|
||||||
self.forward_from: Optional[User] = None
|
self.forward_from: Optional[User] = None
|
||||||
self.forward_from_chat: Optional[Chat] = None
|
self.forward_from_chat: Optional[Chat] = None
|
||||||
self.forward_from_message_id: Optional[int] = None
|
self.forward_from_message_id: Optional[int] = None
|
||||||
@ -969,9 +972,17 @@ class ReplyKeyboardMarkup(JsonSerializable):
|
|||||||
return json.dumps(json_dict)
|
return json.dumps(json_dict)
|
||||||
|
|
||||||
|
|
||||||
|
class KeyboardButtonPollType(Dictionaryable):
|
||||||
|
def __init__(self, type=''):
|
||||||
|
self.type: str = type
|
||||||
|
|
||||||
|
def to_dict(self):
|
||||||
|
return {'type': self.type}
|
||||||
|
|
||||||
|
|
||||||
class KeyboardButton(Dictionaryable, JsonSerializable):
|
class KeyboardButton(Dictionaryable, JsonSerializable):
|
||||||
def __init__(self, text: str, request_contact: Optional[bool]=None,
|
def __init__(self, text: str, request_contact: Optional[bool]=None,
|
||||||
request_location: Optional[bool]=None, request_poll: Optional[bool]=None):
|
request_location: Optional[bool]=None, request_poll: Optional[KeyboardButtonPollType]=None):
|
||||||
self.text: str = text
|
self.text: str = text
|
||||||
self.request_contact: bool = request_contact
|
self.request_contact: bool = request_contact
|
||||||
self.request_location: bool = request_location
|
self.request_location: bool = request_location
|
||||||
@ -991,14 +1002,6 @@ class KeyboardButton(Dictionaryable, JsonSerializable):
|
|||||||
return json_dict
|
return json_dict
|
||||||
|
|
||||||
|
|
||||||
class KeyboardButtonPollType(Dictionaryable):
|
|
||||||
def __init__(self, type=''):
|
|
||||||
self.type: str = type
|
|
||||||
|
|
||||||
def to_dict(self):
|
|
||||||
return {'type': self.type}
|
|
||||||
|
|
||||||
|
|
||||||
class InlineKeyboardMarkup(Dictionaryable, JsonSerializable, JsonDeserializable):
|
class InlineKeyboardMarkup(Dictionaryable, JsonSerializable, JsonDeserializable):
|
||||||
max_row_keys = 8
|
max_row_keys = 8
|
||||||
|
|
||||||
@ -1007,7 +1010,7 @@ class InlineKeyboardMarkup(Dictionaryable, JsonSerializable, JsonDeserializable)
|
|||||||
if json_string is None: return None
|
if json_string is None: return None
|
||||||
obj = cls.check_json(json_string, dict_copy=False)
|
obj = cls.check_json(json_string, dict_copy=False)
|
||||||
keyboard = [[InlineKeyboardButton.de_json(button) for button in row] for row in obj['inline_keyboard']]
|
keyboard = [[InlineKeyboardButton.de_json(button) for button in row] for row in obj['inline_keyboard']]
|
||||||
return cls(keyboard)
|
return cls(keyboard = keyboard)
|
||||||
|
|
||||||
def __init__(self, keyboard=None, row_width=3):
|
def __init__(self, keyboard=None, row_width=3):
|
||||||
"""
|
"""
|
||||||
@ -1598,9 +1601,45 @@ class ChosenInlineResult(JsonDeserializable):
|
|||||||
self.query: str = query
|
self.query: str = query
|
||||||
|
|
||||||
|
|
||||||
class InlineQueryResultArticle(JsonSerializable):
|
class InlineQueryResultBase(ABC, Dictionaryable, JsonSerializable):
|
||||||
def __init__(self, id, title, input_message_content, reply_markup=None, url=None,
|
# noinspection PyShadowingBuiltins
|
||||||
hide_url=None, description=None, thumb_url=None, thumb_width=None, thumb_height=None):
|
def __init__(self, type, id, title = None, caption = None, input_message_content = None,
|
||||||
|
reply_markup = None, caption_entities = None, parse_mode = None):
|
||||||
|
self.type = type
|
||||||
|
self.id = id
|
||||||
|
self.title = title
|
||||||
|
self.caption = caption
|
||||||
|
self.input_message_content = input_message_content
|
||||||
|
self.reply_markup = reply_markup
|
||||||
|
self.caption_entities = caption_entities
|
||||||
|
self.parse_mode = parse_mode
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
return json.dumps(self.to_dict())
|
||||||
|
|
||||||
|
def to_dict(self):
|
||||||
|
json_dict = {
|
||||||
|
'type': self.type,
|
||||||
|
'id': self.id
|
||||||
|
}
|
||||||
|
if self.title:
|
||||||
|
json_dict['title'] = self.title
|
||||||
|
if self.caption:
|
||||||
|
json_dict['caption'] = self.caption
|
||||||
|
if self.input_message_content:
|
||||||
|
json_dict['input_message_content'] = self.input_message_content.to_dict()
|
||||||
|
if self.reply_markup:
|
||||||
|
json_dict['reply_markup'] = self.reply_markup.to_dict()
|
||||||
|
if self.caption_entities:
|
||||||
|
json_dict['caption_entities'] = MessageEntity.to_list_of_dicts(self.caption_entities)
|
||||||
|
if self.parse_mode:
|
||||||
|
json_dict['parse_mode'] = self.parse_mode
|
||||||
|
return json_dict
|
||||||
|
|
||||||
|
|
||||||
|
class InlineQueryResultArticle(InlineQueryResultBase):
|
||||||
|
def __init__(self, id, title, input_message_content, reply_markup=None,
|
||||||
|
url=None, hide_url=None, description=None, thumb_url=None, thumb_width=None, thumb_height=None):
|
||||||
"""
|
"""
|
||||||
Represents a link to an article or web page.
|
Represents a link to an article or web page.
|
||||||
:param id: Unique identifier for this result, 1-64 Bytes.
|
:param id: Unique identifier for this result, 1-64 Bytes.
|
||||||
@ -1615,11 +1654,7 @@ class InlineQueryResultArticle(JsonSerializable):
|
|||||||
:param thumb_height: Thumbnail height
|
:param thumb_height: Thumbnail height
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
self.type = 'article'
|
super().__init__('article', id, title = title, input_message_content = input_message_content, reply_markup = reply_markup)
|
||||||
self.id = id
|
|
||||||
self.title = title
|
|
||||||
self.input_message_content = input_message_content
|
|
||||||
self.reply_markup = reply_markup
|
|
||||||
self.url = url
|
self.url = url
|
||||||
self.hide_url = hide_url
|
self.hide_url = hide_url
|
||||||
self.description = description
|
self.description = description
|
||||||
@ -1627,14 +1662,8 @@ class InlineQueryResultArticle(JsonSerializable):
|
|||||||
self.thumb_width = thumb_width
|
self.thumb_width = thumb_width
|
||||||
self.thumb_height = thumb_height
|
self.thumb_height = thumb_height
|
||||||
|
|
||||||
def to_json(self):
|
def to_dict(self):
|
||||||
json_dict = {
|
json_dict = super().to_dict()
|
||||||
'type': self.type,
|
|
||||||
'id': self.id,
|
|
||||||
'title': self.title,
|
|
||||||
'input_message_content': self.input_message_content.to_dict()}
|
|
||||||
if self.reply_markup:
|
|
||||||
json_dict['reply_markup'] = self.reply_markup.to_dict()
|
|
||||||
if self.url:
|
if self.url:
|
||||||
json_dict['url'] = self.url
|
json_dict['url'] = self.url
|
||||||
if self.hide_url:
|
if self.hide_url:
|
||||||
@ -1647,12 +1676,12 @@ class InlineQueryResultArticle(JsonSerializable):
|
|||||||
json_dict['thumb_width'] = self.thumb_width
|
json_dict['thumb_width'] = self.thumb_width
|
||||||
if self.thumb_height:
|
if self.thumb_height:
|
||||||
json_dict['thumb_height'] = self.thumb_height
|
json_dict['thumb_height'] = self.thumb_height
|
||||||
return json.dumps(json_dict)
|
return json_dict
|
||||||
|
|
||||||
|
|
||||||
class InlineQueryResultPhoto(JsonSerializable):
|
class InlineQueryResultPhoto(InlineQueryResultBase):
|
||||||
def __init__(self, id, photo_url, thumb_url, photo_width=None, photo_height=None, title=None,
|
def __init__(self, id, photo_url, thumb_url, photo_width=None, photo_height=None, title=None,
|
||||||
description=None, caption=None, parse_mode=None, reply_markup=None, input_message_content=None):
|
description=None, caption=None, caption_entities=None, parse_mode=None, reply_markup=None, input_message_content=None):
|
||||||
"""
|
"""
|
||||||
Represents a link to a photo.
|
Represents a link to a photo.
|
||||||
:param id: Unique identifier for this result, 1-64 bytes
|
:param id: Unique identifier for this result, 1-64 bytes
|
||||||
@ -1669,43 +1698,32 @@ class InlineQueryResultPhoto(JsonSerializable):
|
|||||||
:param input_message_content: InputMessageContent : Content of the message to be sent instead of the photo
|
:param input_message_content: InputMessageContent : Content of the message to be sent instead of the photo
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
self.type = 'photo'
|
super().__init__('photo', id, title = title, caption = caption,
|
||||||
self.id = id
|
input_message_content = input_message_content, reply_markup = reply_markup,
|
||||||
|
parse_mode = parse_mode, caption_entities = caption_entities)
|
||||||
self.photo_url = photo_url
|
self.photo_url = photo_url
|
||||||
|
self.thumb_url = thumb_url
|
||||||
self.photo_width = photo_width
|
self.photo_width = photo_width
|
||||||
self.photo_height = photo_height
|
self.photo_height = photo_height
|
||||||
self.thumb_url = thumb_url
|
|
||||||
self.title = title
|
|
||||||
self.description = description
|
self.description = description
|
||||||
self.caption = caption
|
|
||||||
self.parse_mode = parse_mode
|
|
||||||
self.reply_markup = reply_markup
|
|
||||||
self.input_message_content = input_message_content
|
|
||||||
|
|
||||||
def to_json(self):
|
def to_dict(self):
|
||||||
json_dict = {'type': self.type, 'id': self.id, 'photo_url': self.photo_url, 'thumb_url': self.thumb_url}
|
json_dict = super().to_dict()
|
||||||
|
json_dict['photo_url'] = self.photo_url
|
||||||
|
json_dict['thumb_url'] = self.thumb_url
|
||||||
if self.photo_width:
|
if self.photo_width:
|
||||||
json_dict['photo_width'] = self.photo_width
|
json_dict['photo_width'] = self.photo_width
|
||||||
if self.photo_height:
|
if self.photo_height:
|
||||||
json_dict['photo_height'] = self.photo_height
|
json_dict['photo_height'] = self.photo_height
|
||||||
if self.title:
|
|
||||||
json_dict['title'] = self.title
|
|
||||||
if self.description:
|
if self.description:
|
||||||
json_dict['description'] = self.description
|
json_dict['description'] = self.description
|
||||||
if self.caption:
|
return json_dict
|
||||||
json_dict['caption'] = self.caption
|
|
||||||
if self.parse_mode:
|
|
||||||
json_dict['parse_mode'] = self.parse_mode
|
|
||||||
if self.reply_markup:
|
|
||||||
json_dict['reply_markup'] = self.reply_markup.to_dict()
|
|
||||||
if self.input_message_content:
|
|
||||||
json_dict['input_message_content'] = self.input_message_content.to_dict()
|
|
||||||
return json.dumps(json_dict)
|
|
||||||
|
|
||||||
|
|
||||||
class InlineQueryResultGif(JsonSerializable):
|
class InlineQueryResultGif(InlineQueryResultBase):
|
||||||
def __init__(self, id, gif_url, thumb_url, gif_width=None, gif_height=None, title=None, caption=None,
|
def __init__(self, id, gif_url, thumb_url, gif_width=None, gif_height=None,
|
||||||
reply_markup=None, input_message_content=None, gif_duration=None):
|
title=None, caption=None, caption_entities=None,
|
||||||
|
reply_markup=None, input_message_content=None, gif_duration=None, parse_mode=None):
|
||||||
"""
|
"""
|
||||||
Represents a link to an animated GIF file.
|
Represents a link to an animated GIF file.
|
||||||
:param id: Unique identifier for this result, 1-64 bytes.
|
:param id: Unique identifier for this result, 1-64 bytes.
|
||||||
@ -1719,39 +1737,31 @@ class InlineQueryResultGif(JsonSerializable):
|
|||||||
:param input_message_content: InputMessageContent : Content of the message to be sent instead of the photo
|
:param input_message_content: InputMessageContent : Content of the message to be sent instead of the photo
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
self.type = 'gif'
|
super().__init__('gif', id, title = title, caption = caption,
|
||||||
self.id = id
|
input_message_content = input_message_content, reply_markup = reply_markup,
|
||||||
|
parse_mode = parse_mode, caption_entities = caption_entities)
|
||||||
self.gif_url = gif_url
|
self.gif_url = gif_url
|
||||||
self.gif_width = gif_width
|
self.gif_width = gif_width
|
||||||
self.gif_height = gif_height
|
self.gif_height = gif_height
|
||||||
self.thumb_url = thumb_url
|
self.thumb_url = thumb_url
|
||||||
self.title = title
|
|
||||||
self.caption = caption
|
|
||||||
self.reply_markup = reply_markup
|
|
||||||
self.input_message_content = input_message_content
|
|
||||||
self.gif_duration = gif_duration
|
self.gif_duration = gif_duration
|
||||||
|
|
||||||
def to_json(self):
|
def to_dict(self):
|
||||||
json_dict = {'type': self.type, 'id': self.id, 'gif_url': self.gif_url, 'thumb_url': self.thumb_url}
|
json_dict = super().to_dict()
|
||||||
if self.gif_height:
|
json_dict['gif_url'] = self.gif_url
|
||||||
json_dict['gif_height'] = self.gif_height
|
|
||||||
if self.gif_width:
|
if self.gif_width:
|
||||||
json_dict['gif_width'] = self.gif_width
|
json_dict['gif_width'] = self.gif_width
|
||||||
if self.title:
|
if self.gif_height:
|
||||||
json_dict['title'] = self.title
|
json_dict['gif_height'] = self.gif_height
|
||||||
if self.caption:
|
json_dict['thumb_url'] = self.thumb_url
|
||||||
json_dict['caption'] = self.caption
|
|
||||||
if self.reply_markup:
|
|
||||||
json_dict['reply_markup'] = self.reply_markup.to_dict()
|
|
||||||
if self.input_message_content:
|
|
||||||
json_dict['input_message_content'] = self.input_message_content.to_dict()
|
|
||||||
if self.gif_duration:
|
if self.gif_duration:
|
||||||
json_dict['gif_duration'] = self.gif_duration
|
json_dict['gif_duration'] = self.gif_duration
|
||||||
return json.dumps(json_dict)
|
return json_dict
|
||||||
|
|
||||||
|
|
||||||
class InlineQueryResultMpeg4Gif(JsonSerializable):
|
class InlineQueryResultMpeg4Gif(InlineQueryResultBase):
|
||||||
def __init__(self, id, mpeg4_url, thumb_url, mpeg4_width=None, mpeg4_height=None, title=None, caption=None,
|
def __init__(self, id, mpeg4_url, thumb_url, mpeg4_width=None, mpeg4_height=None,
|
||||||
|
title=None, caption=None, caption_entities=None,
|
||||||
parse_mode=None, reply_markup=None, input_message_content=None, mpeg4_duration=None):
|
parse_mode=None, reply_markup=None, input_message_content=None, mpeg4_duration=None):
|
||||||
"""
|
"""
|
||||||
Represents a link to a video animation (H.264/MPEG-4 AVC video without sound).
|
Represents a link to a video animation (H.264/MPEG-4 AVC video without sound).
|
||||||
@ -1768,43 +1778,32 @@ class InlineQueryResultMpeg4Gif(JsonSerializable):
|
|||||||
:param input_message_content: InputMessageContent : Content of the message to be sent instead of the photo
|
:param input_message_content: InputMessageContent : Content of the message to be sent instead of the photo
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
self.type = 'mpeg4_gif'
|
super().__init__('mpeg4_gif', id, title = title, caption = caption,
|
||||||
self.id = id
|
input_message_content = input_message_content, reply_markup = reply_markup,
|
||||||
|
parse_mode = parse_mode, caption_entities = caption_entities)
|
||||||
self.mpeg4_url = mpeg4_url
|
self.mpeg4_url = mpeg4_url
|
||||||
self.mpeg4_width = mpeg4_width
|
self.mpeg4_width = mpeg4_width
|
||||||
self.mpeg4_height = mpeg4_height
|
self.mpeg4_height = mpeg4_height
|
||||||
self.thumb_url = thumb_url
|
self.thumb_url = thumb_url
|
||||||
self.title = title
|
|
||||||
self.caption = caption
|
|
||||||
self.parse_mode = parse_mode
|
|
||||||
self.reply_markup = reply_markup
|
|
||||||
self.input_message_content = input_message_content
|
|
||||||
self.mpeg4_duration = mpeg4_duration
|
self.mpeg4_duration = mpeg4_duration
|
||||||
|
|
||||||
def to_json(self):
|
def to_dict(self):
|
||||||
json_dict = {'type': self.type, 'id': self.id, 'mpeg4_url': self.mpeg4_url, 'thumb_url': self.thumb_url}
|
json_dict = super().to_dict()
|
||||||
|
json_dict['mpeg4_url'] = self.mpeg4_url
|
||||||
if self.mpeg4_width:
|
if self.mpeg4_width:
|
||||||
json_dict['mpeg4_width'] = self.mpeg4_width
|
json_dict['mpeg4_width'] = self.mpeg4_width
|
||||||
if self.mpeg4_height:
|
if self.mpeg4_height:
|
||||||
json_dict['mpeg4_height'] = self.mpeg4_height
|
json_dict['mpeg4_height'] = self.mpeg4_height
|
||||||
if self.title:
|
json_dict['thumb_url'] = self.thumb_url
|
||||||
json_dict['title'] = self.title
|
|
||||||
if self.caption:
|
|
||||||
json_dict['caption'] = self.caption
|
|
||||||
if self.parse_mode:
|
|
||||||
json_dict['parse_mode'] = self.parse_mode
|
|
||||||
if self.reply_markup:
|
|
||||||
json_dict['reply_markup'] = self.reply_markup.to_dict()
|
|
||||||
if self.input_message_content:
|
|
||||||
json_dict['input_message_content'] = self.input_message_content.to_dict()
|
|
||||||
if self.mpeg4_duration:
|
if self.mpeg4_duration:
|
||||||
json_dict['mpeg4_duration '] = self.mpeg4_duration
|
json_dict['mpeg4_duration '] = self.mpeg4_duration
|
||||||
return json.dumps(json_dict)
|
return json_dict
|
||||||
|
|
||||||
|
|
||||||
class InlineQueryResultVideo(JsonSerializable):
|
class InlineQueryResultVideo(InlineQueryResultBase):
|
||||||
def __init__(self, id, video_url, mime_type, thumb_url, title,
|
def __init__(self, id, video_url, mime_type, thumb_url,
|
||||||
caption=None, parse_mode=None, video_width=None, video_height=None, video_duration=None,
|
title, caption=None, caption_entities=None, parse_mode=None,
|
||||||
|
video_width=None, video_height=None, video_duration=None,
|
||||||
description=None, reply_markup=None, input_message_content=None):
|
description=None, reply_markup=None, input_message_content=None):
|
||||||
"""
|
"""
|
||||||
Represents link to a page containing an embedded video player or a video file.
|
Represents link to a page containing an embedded video player or a video file.
|
||||||
@ -1821,129 +1820,87 @@ class InlineQueryResultVideo(JsonSerializable):
|
|||||||
:param description: Short description of the result
|
:param description: Short description of the result
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
self.type = 'video'
|
super().__init__('video', id, title = title, caption = caption,
|
||||||
self.id = id
|
input_message_content = input_message_content, reply_markup = reply_markup,
|
||||||
|
parse_mode = parse_mode, caption_entities = caption_entities)
|
||||||
self.video_url = video_url
|
self.video_url = video_url
|
||||||
self.mime_type = mime_type
|
self.mime_type = mime_type
|
||||||
|
self.thumb_url = thumb_url
|
||||||
self.video_width = video_width
|
self.video_width = video_width
|
||||||
self.video_height = video_height
|
self.video_height = video_height
|
||||||
self.video_duration = video_duration
|
self.video_duration = video_duration
|
||||||
self.thumb_url = thumb_url
|
|
||||||
self.title = title
|
|
||||||
self.caption = caption
|
|
||||||
self.parse_mode = parse_mode
|
|
||||||
self.description = description
|
self.description = description
|
||||||
self.input_message_content = input_message_content
|
|
||||||
self.reply_markup = reply_markup
|
|
||||||
|
|
||||||
def to_json(self):
|
def to_dict(self):
|
||||||
json_dict = {'type': self.type, 'id': self.id, 'video_url': self.video_url, 'mime_type': self.mime_type,
|
json_dict = super().to_dict()
|
||||||
'thumb_url': self.thumb_url, 'title': self.title}
|
json_dict['video_url'] = self.video_url
|
||||||
if self.video_width:
|
json_dict['mime_type'] = self.mime_type
|
||||||
json_dict['video_width'] = self.video_width
|
json_dict['thumb_url'] = self.thumb_url
|
||||||
if self.video_height:
|
if self.video_height:
|
||||||
json_dict['video_height'] = self.video_height
|
json_dict['video_height'] = self.video_height
|
||||||
if self.video_duration:
|
if self.video_duration:
|
||||||
json_dict['video_duration'] = self.video_duration
|
json_dict['video_duration'] = self.video_duration
|
||||||
if self.description:
|
if self.description:
|
||||||
json_dict['description'] = self.description
|
json_dict['description'] = self.description
|
||||||
if self.caption:
|
return json_dict
|
||||||
json_dict['caption'] = self.caption
|
|
||||||
if self.parse_mode:
|
|
||||||
json_dict['parse_mode'] = self.parse_mode
|
|
||||||
if self.reply_markup:
|
|
||||||
json_dict['reply_markup'] = self.reply_markup.to_dict()
|
|
||||||
if self.input_message_content:
|
|
||||||
json_dict['input_message_content'] = self.input_message_content.to_dict()
|
|
||||||
return json.dumps(json_dict)
|
|
||||||
|
|
||||||
|
|
||||||
class InlineQueryResultAudio(JsonSerializable):
|
class InlineQueryResultAudio(InlineQueryResultBase):
|
||||||
def __init__(self, id, audio_url, title, caption=None, parse_mode=None, performer=None, audio_duration=None,
|
def __init__(self, id, audio_url, title,
|
||||||
reply_markup=None, input_message_content=None):
|
caption=None, caption_entities=None, parse_mode=None, performer=None,
|
||||||
self.type = 'audio'
|
audio_duration=None, reply_markup=None, input_message_content=None):
|
||||||
self.id = id
|
super().__init__('audio', id, title = title, caption = caption,
|
||||||
|
input_message_content = input_message_content, reply_markup = reply_markup,
|
||||||
|
parse_mode = parse_mode, caption_entities = caption_entities)
|
||||||
self.audio_url = audio_url
|
self.audio_url = audio_url
|
||||||
self.title = title
|
|
||||||
self.caption = caption
|
|
||||||
self.parse_mode = parse_mode
|
|
||||||
self.performer = performer
|
self.performer = performer
|
||||||
self.audio_duration = audio_duration
|
self.audio_duration = audio_duration
|
||||||
self.reply_markup = reply_markup
|
|
||||||
self.input_message_content = input_message_content
|
|
||||||
|
|
||||||
def to_json(self):
|
def to_dict(self):
|
||||||
json_dict = {'type': self.type, 'id': self.id, 'audio_url': self.audio_url, 'title': self.title}
|
json_dict = super().to_dict()
|
||||||
if self.caption:
|
json_dict['audio_url'] = self.audio_url
|
||||||
json_dict['caption'] = self.caption
|
|
||||||
if self.parse_mode:
|
|
||||||
json_dict['parse_mode'] = self.parse_mode
|
|
||||||
if self.performer:
|
if self.performer:
|
||||||
json_dict['performer'] = self.performer
|
json_dict['performer'] = self.performer
|
||||||
if self.audio_duration:
|
if self.audio_duration:
|
||||||
json_dict['audio_duration'] = self.audio_duration
|
json_dict['audio_duration'] = self.audio_duration
|
||||||
if self.reply_markup:
|
return json_dict
|
||||||
json_dict['reply_markup'] = self.reply_markup.to_dict()
|
|
||||||
if self.input_message_content:
|
|
||||||
json_dict['input_message_content'] = self.input_message_content.to_dict()
|
|
||||||
return json.dumps(json_dict)
|
|
||||||
|
|
||||||
|
|
||||||
class InlineQueryResultVoice(JsonSerializable):
|
class InlineQueryResultVoice(InlineQueryResultBase):
|
||||||
def __init__(self, id, voice_url, title, caption=None, parse_mode=None, performer=None, voice_duration=None,
|
def __init__(self, id, voice_url, title, caption=None, caption_entities=None,
|
||||||
reply_markup=None, input_message_content=None):
|
parse_mode=None, voice_duration=None, reply_markup=None, input_message_content=None):
|
||||||
self.type = 'voice'
|
super().__init__('voice', id, title = title, caption = caption,
|
||||||
self.id = id
|
input_message_content = input_message_content, reply_markup = reply_markup,
|
||||||
|
parse_mode = parse_mode, caption_entities = caption_entities)
|
||||||
self.voice_url = voice_url
|
self.voice_url = voice_url
|
||||||
self.title = title
|
|
||||||
self.caption = caption
|
|
||||||
self.parse_mode = parse_mode
|
|
||||||
self.performer = performer
|
|
||||||
self.voice_duration = voice_duration
|
self.voice_duration = voice_duration
|
||||||
self.reply_markup = reply_markup
|
|
||||||
self.input_message_content = input_message_content
|
|
||||||
|
|
||||||
def to_json(self):
|
def to_dict(self):
|
||||||
json_dict = {'type': self.type, 'id': self.id, 'voice_url': self.voice_url, 'title': self.title}
|
json_dict = super().to_dict()
|
||||||
if self.caption:
|
json_dict['voice_url'] = self.voice_url
|
||||||
json_dict['caption'] = self.caption
|
|
||||||
if self.parse_mode:
|
|
||||||
json_dict['parse_mode'] = self.parse_mode
|
|
||||||
if self.performer:
|
|
||||||
json_dict['performer'] = self.performer
|
|
||||||
if self.voice_duration:
|
if self.voice_duration:
|
||||||
json_dict['voice_duration'] = self.voice_duration
|
json_dict['voice_duration'] = self.voice_duration
|
||||||
if self.reply_markup:
|
return json_dict
|
||||||
json_dict['reply_markup'] = self.reply_markup.to_dict()
|
|
||||||
if self.input_message_content:
|
|
||||||
json_dict['input_message_content'] = self.input_message_content.to_dict()
|
|
||||||
return json.dumps(json_dict)
|
|
||||||
|
|
||||||
|
|
||||||
class InlineQueryResultDocument(JsonSerializable):
|
class InlineQueryResultDocument(InlineQueryResultBase):
|
||||||
def __init__(self, id, title, document_url, mime_type, caption=None, parse_mode=None, description=None,
|
def __init__(self, id, title, document_url, mime_type, caption=None, caption_entities=None,
|
||||||
reply_markup=None, input_message_content=None, thumb_url=None, thumb_width=None, thumb_height=None):
|
parse_mode=None, description=None, reply_markup=None, input_message_content=None,
|
||||||
self.type = 'document'
|
thumb_url=None, thumb_width=None, thumb_height=None):
|
||||||
self.id = id
|
super().__init__('document', id, title = title, caption = caption,
|
||||||
self.title = title
|
input_message_content = input_message_content, reply_markup = reply_markup,
|
||||||
|
parse_mode = parse_mode, caption_entities = caption_entities)
|
||||||
self.document_url = document_url
|
self.document_url = document_url
|
||||||
self.mime_type = mime_type
|
self.mime_type = mime_type
|
||||||
self.caption = caption
|
|
||||||
self.parse_mode = parse_mode
|
|
||||||
self.description = description
|
self.description = description
|
||||||
self.reply_markup = reply_markup
|
|
||||||
self.input_message_content = input_message_content
|
|
||||||
self.thumb_url = thumb_url
|
self.thumb_url = thumb_url
|
||||||
self.thumb_width = thumb_width
|
self.thumb_width = thumb_width
|
||||||
self.thumb_height = thumb_height
|
self.thumb_height = thumb_height
|
||||||
|
|
||||||
def to_json(self):
|
def to_dict(self):
|
||||||
json_dict = {'type': self.type, 'id': self.id, 'title': self.title, 'document_url': self.document_url,
|
json_dict = super().to_dict()
|
||||||
'mime_type': self.mime_type}
|
json_dict['document_url'] = self.document_url
|
||||||
if self.caption:
|
json_dict['mime_type'] = self.mime_type
|
||||||
json_dict['caption'] = self.caption
|
|
||||||
if self.parse_mode:
|
|
||||||
json_dict['parse_mode'] = self.parse_mode
|
|
||||||
if self.description:
|
if self.description:
|
||||||
json_dict['description'] = self.description
|
json_dict['description'] = self.description
|
||||||
if self.thumb_url:
|
if self.thumb_url:
|
||||||
@ -1952,129 +1909,127 @@ class InlineQueryResultDocument(JsonSerializable):
|
|||||||
json_dict['thumb_width'] = self.thumb_width
|
json_dict['thumb_width'] = self.thumb_width
|
||||||
if self.thumb_height:
|
if self.thumb_height:
|
||||||
json_dict['thumb_height'] = self.thumb_height
|
json_dict['thumb_height'] = self.thumb_height
|
||||||
if self.reply_markup:
|
return json_dict
|
||||||
json_dict['reply_markup'] = self.reply_markup.to_dict()
|
|
||||||
if self.input_message_content:
|
|
||||||
json_dict['input_message_content'] = self.input_message_content.to_dict()
|
|
||||||
return json.dumps(json_dict)
|
|
||||||
|
|
||||||
|
|
||||||
class InlineQueryResultLocation(JsonSerializable):
|
class InlineQueryResultLocation(InlineQueryResultBase):
|
||||||
def __init__(self, id, title, latitude, longitude, horizontal_accuracy, live_period=None, reply_markup=None,
|
def __init__(self, id, title, latitude, longitude, horizontal_accuracy, live_period=None, reply_markup=None,
|
||||||
input_message_content=None, thumb_url=None, thumb_width=None, thumb_height=None):
|
input_message_content=None, thumb_url=None, thumb_width=None, thumb_height=None, heading=None, proximity_alert_radius = None):
|
||||||
self.type = 'location'
|
super().__init__('location', id, title = title,
|
||||||
self.id = id
|
input_message_content = input_message_content, reply_markup = reply_markup)
|
||||||
self.title = title
|
|
||||||
self.latitude = latitude
|
self.latitude = latitude
|
||||||
self.longitude = longitude
|
self.longitude = longitude
|
||||||
self.horizontal_accuracy = horizontal_accuracy
|
self.horizontal_accuracy = horizontal_accuracy
|
||||||
self.live_period = live_period
|
self.live_period = live_period
|
||||||
self.reply_markup = reply_markup
|
self.heading: int = heading
|
||||||
self.input_message_content = input_message_content
|
self.proximity_alert_radius: int = proximity_alert_radius
|
||||||
self.thumb_url = thumb_url
|
self.thumb_url = thumb_url
|
||||||
self.thumb_width = thumb_width
|
self.thumb_width = thumb_width
|
||||||
self.thumb_height = thumb_height
|
self.thumb_height = thumb_height
|
||||||
|
|
||||||
def to_json(self):
|
def to_dict(self):
|
||||||
json_dict = {'type': self.type, 'id': self.id, 'latitude': self.latitude, 'longitude': self.longitude,
|
json_dict = super().to_dict()
|
||||||
'title': self.title}
|
json_dict['latitude'] = self.latitude
|
||||||
|
json_dict['longitude'] = self.longitude
|
||||||
if self.horizontal_accuracy:
|
if self.horizontal_accuracy:
|
||||||
json_dict['horizontal_accuracy'] = self.horizontal_accuracy
|
json_dict['horizontal_accuracy'] = self.horizontal_accuracy
|
||||||
if self.live_period:
|
if self.live_period:
|
||||||
json_dict['live_period'] = self.live_period
|
json_dict['live_period'] = self.live_period
|
||||||
|
if self.heading:
|
||||||
|
json_dict['heading'] = self.heading
|
||||||
|
if self.proximity_alert_radius:
|
||||||
|
json_dict['proximity_alert_radius'] = self.proximity_alert_radius
|
||||||
if self.thumb_url:
|
if self.thumb_url:
|
||||||
json_dict['thumb_url'] = self.thumb_url
|
json_dict['thumb_url'] = self.thumb_url
|
||||||
if self.thumb_width:
|
if self.thumb_width:
|
||||||
json_dict['thumb_width'] = self.thumb_width
|
json_dict['thumb_width'] = self.thumb_width
|
||||||
if self.thumb_height:
|
if self.thumb_height:
|
||||||
json_dict['thumb_height'] = self.thumb_height
|
json_dict['thumb_height'] = self.thumb_height
|
||||||
if self.reply_markup:
|
return json_dict
|
||||||
json_dict['reply_markup'] = self.reply_markup.to_dict()
|
|
||||||
if self.input_message_content:
|
|
||||||
json_dict['input_message_content'] = self.input_message_content.to_dict()
|
|
||||||
return json.dumps(json_dict)
|
|
||||||
|
|
||||||
|
|
||||||
class InlineQueryResultVenue(JsonSerializable):
|
class InlineQueryResultVenue(InlineQueryResultBase):
|
||||||
def __init__(self, id, title, latitude, longitude, address, foursquare_id=None, foursquare_type=None,
|
def __init__(self, id, title, latitude, longitude, address, foursquare_id=None, foursquare_type=None,
|
||||||
reply_markup=None, input_message_content=None, thumb_url=None,
|
reply_markup=None, input_message_content=None, thumb_url=None,
|
||||||
thumb_width=None, thumb_height=None, google_place_id=None, google_place_type=None):
|
thumb_width=None, thumb_height=None, google_place_id=None, google_place_type=None):
|
||||||
self.type = 'venue'
|
super().__init__('venue', id, title = title,
|
||||||
self.id = id
|
input_message_content = input_message_content, reply_markup = reply_markup)
|
||||||
self.title = title
|
|
||||||
self.latitude = latitude
|
self.latitude = latitude
|
||||||
self.longitude = longitude
|
self.longitude = longitude
|
||||||
self.address = address
|
self.address = address
|
||||||
self.foursquare_id = foursquare_id
|
self.foursquare_id = foursquare_id
|
||||||
self.foursquare_type = foursquare_type
|
self.foursquare_type = foursquare_type
|
||||||
self.reply_markup = reply_markup
|
self.google_place_id = google_place_id
|
||||||
self.input_message_content = input_message_content
|
self.google_place_type = google_place_type
|
||||||
self.thumb_url = thumb_url
|
self.thumb_url = thumb_url
|
||||||
self.thumb_width = thumb_width
|
self.thumb_width = thumb_width
|
||||||
self.thumb_height = thumb_height
|
self.thumb_height = thumb_height
|
||||||
self.google_place_id = google_place_id
|
|
||||||
self.google_place_type = google_place_type
|
|
||||||
|
|
||||||
def to_json(self):
|
def to_dict(self):
|
||||||
json_dict = {'type': self.type, 'id': self.id, 'title': self.title, 'latitude': self.latitude,
|
json_dict = super().to_dict()
|
||||||
'longitude': self.longitude, 'address': self.address}
|
json_dict['latitude'] = self.latitude
|
||||||
|
json_dict['longitude'] = self.longitude
|
||||||
|
json_dict['address'] = self.address
|
||||||
if self.foursquare_id:
|
if self.foursquare_id:
|
||||||
json_dict['foursquare_id'] = self.foursquare_id
|
json_dict['foursquare_id'] = self.foursquare_id
|
||||||
if self.foursquare_type:
|
if self.foursquare_type:
|
||||||
json_dict['foursquare_type'] = self.foursquare_type
|
json_dict['foursquare_type'] = self.foursquare_type
|
||||||
if self.thumb_url:
|
|
||||||
json_dict['thumb_url'] = self.thumb_url
|
|
||||||
if self.thumb_width:
|
|
||||||
json_dict['thumb_width'] = self.thumb_width
|
|
||||||
if self.thumb_height:
|
|
||||||
json_dict['thumb_height'] = self.thumb_height
|
|
||||||
if self.reply_markup:
|
|
||||||
json_dict['reply_markup'] = self.reply_markup.to_dict()
|
|
||||||
if self.input_message_content:
|
|
||||||
json_dict['input_message_content'] = self.input_message_content.to_dict()
|
|
||||||
if self.google_place_id:
|
if self.google_place_id:
|
||||||
json_dict['google_place_id'] = self.google_place_id
|
json_dict['google_place_id'] = self.google_place_id
|
||||||
if self.google_place_type:
|
if self.google_place_type:
|
||||||
json_dict['google_place_type'] = self.google_place_type
|
json_dict['google_place_type'] = self.google_place_type
|
||||||
return json.dumps(json_dict)
|
|
||||||
|
|
||||||
|
|
||||||
class InlineQueryResultContact(JsonSerializable):
|
|
||||||
def __init__(self, id, phone_number, first_name, last_name=None, vcard=None,
|
|
||||||
reply_markup=None, input_message_content=None,
|
|
||||||
thumb_url=None, thumb_width=None, thumb_height=None):
|
|
||||||
self.type = 'contact'
|
|
||||||
self.id = id
|
|
||||||
self.phone_number = phone_number
|
|
||||||
self.first_name = first_name
|
|
||||||
self.last_name = last_name
|
|
||||||
self.vcard = vcard
|
|
||||||
self.reply_markup = reply_markup
|
|
||||||
self.input_message_content = input_message_content
|
|
||||||
self.thumb_url = thumb_url
|
|
||||||
self.thumb_width = thumb_width
|
|
||||||
self.thumb_height = thumb_height
|
|
||||||
|
|
||||||
def to_json(self):
|
|
||||||
json_dict = {'type': self.type, 'id': self.id, 'phone_number': self.phone_number, 'first_name': self.first_name}
|
|
||||||
if self.last_name:
|
|
||||||
json_dict['last_name'] = self.last_name
|
|
||||||
if self.vcard:
|
|
||||||
json_dict['vcard'] = self.vcard
|
|
||||||
if self.reply_markup:
|
|
||||||
json_dict['reply_markup'] = self.reply_markup.to_dict()
|
|
||||||
if self.input_message_content:
|
|
||||||
json_dict['input_message_content'] = self.input_message_content.to_dict()
|
|
||||||
if self.thumb_url:
|
if self.thumb_url:
|
||||||
json_dict['thumb_url'] = self.thumb_url
|
json_dict['thumb_url'] = self.thumb_url
|
||||||
if self.thumb_width:
|
if self.thumb_width:
|
||||||
json_dict['thumb_width'] = self.thumb_width
|
json_dict['thumb_width'] = self.thumb_width
|
||||||
if self.thumb_height:
|
if self.thumb_height:
|
||||||
json_dict['thumb_height'] = self.thumb_height
|
json_dict['thumb_height'] = self.thumb_height
|
||||||
return json.dumps(json_dict)
|
return json_dict
|
||||||
|
|
||||||
|
|
||||||
class BaseInlineQueryResultCached(JsonSerializable):
|
class InlineQueryResultContact(InlineQueryResultBase):
|
||||||
|
def __init__(self, id, phone_number, first_name, last_name=None, vcard=None,
|
||||||
|
reply_markup=None, input_message_content=None,
|
||||||
|
thumb_url=None, thumb_width=None, thumb_height=None):
|
||||||
|
super().__init__('contact', id,
|
||||||
|
input_message_content = input_message_content, reply_markup = reply_markup)
|
||||||
|
self.phone_number = phone_number
|
||||||
|
self.first_name = first_name
|
||||||
|
self.last_name = last_name
|
||||||
|
self.vcard = vcard
|
||||||
|
self.thumb_url = thumb_url
|
||||||
|
self.thumb_width = thumb_width
|
||||||
|
self.thumb_height = thumb_height
|
||||||
|
|
||||||
|
def to_dict(self):
|
||||||
|
json_dict = super().to_dict()
|
||||||
|
json_dict['phone_number'] = self.phone_number
|
||||||
|
json_dict['first_name'] = self.first_name
|
||||||
|
if self.last_name:
|
||||||
|
json_dict['last_name'] = self.last_name
|
||||||
|
if self.vcard:
|
||||||
|
json_dict['vcard'] = self.vcard
|
||||||
|
if self.thumb_url:
|
||||||
|
json_dict['thumb_url'] = self.thumb_url
|
||||||
|
if self.thumb_width:
|
||||||
|
json_dict['thumb_width'] = self.thumb_width
|
||||||
|
if self.thumb_height:
|
||||||
|
json_dict['thumb_height'] = self.thumb_height
|
||||||
|
return json_dict
|
||||||
|
|
||||||
|
|
||||||
|
class InlineQueryResultGame(InlineQueryResultBase):
|
||||||
|
def __init__(self, id, game_short_name, reply_markup=None):
|
||||||
|
super().__init__('game', id, reply_markup = reply_markup)
|
||||||
|
self.game_short_name = game_short_name
|
||||||
|
|
||||||
|
def to_dict(self):
|
||||||
|
json_dict = super().to_dict()
|
||||||
|
json_dict['game_short_name'] = self.game_short_name
|
||||||
|
return json_dict
|
||||||
|
|
||||||
|
|
||||||
|
class InlineQueryResultCachedBase(ABC, JsonSerializable):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.type = None
|
self.type = None
|
||||||
self.id = None
|
self.id = None
|
||||||
@ -2084,6 +2039,7 @@ class BaseInlineQueryResultCached(JsonSerializable):
|
|||||||
self.reply_markup = None
|
self.reply_markup = None
|
||||||
self.input_message_content = None
|
self.input_message_content = None
|
||||||
self.parse_mode = None
|
self.parse_mode = None
|
||||||
|
self.caption_entities = None
|
||||||
self.payload_dic = {}
|
self.payload_dic = {}
|
||||||
|
|
||||||
def to_json(self):
|
def to_json(self):
|
||||||
@ -2102,60 +2058,68 @@ class BaseInlineQueryResultCached(JsonSerializable):
|
|||||||
json_dict['input_message_content'] = self.input_message_content.to_dict()
|
json_dict['input_message_content'] = self.input_message_content.to_dict()
|
||||||
if self.parse_mode:
|
if self.parse_mode:
|
||||||
json_dict['parse_mode'] = self.parse_mode
|
json_dict['parse_mode'] = self.parse_mode
|
||||||
|
if self.caption_entities:
|
||||||
|
json_dict['caption_entities'] = MessageEntity.to_list_of_dicts(self.caption_entities)
|
||||||
return json.dumps(json_dict)
|
return json.dumps(json_dict)
|
||||||
|
|
||||||
|
|
||||||
class InlineQueryResultCachedPhoto(BaseInlineQueryResultCached):
|
class InlineQueryResultCachedPhoto(InlineQueryResultCachedBase):
|
||||||
def __init__(self, id, photo_file_id, title=None, description=None, caption=None, parse_mode=None,
|
def __init__(self, id, photo_file_id, title=None, description=None,
|
||||||
|
caption=None, caption_entities = None, parse_mode=None,
|
||||||
reply_markup=None, input_message_content=None):
|
reply_markup=None, input_message_content=None):
|
||||||
BaseInlineQueryResultCached.__init__(self)
|
InlineQueryResultCachedBase.__init__(self)
|
||||||
self.type = 'photo'
|
self.type = 'photo'
|
||||||
self.id = id
|
self.id = id
|
||||||
self.photo_file_id = photo_file_id
|
self.photo_file_id = photo_file_id
|
||||||
self.title = title
|
self.title = title
|
||||||
self.description = description
|
self.description = description
|
||||||
self.caption = caption
|
self.caption = caption
|
||||||
|
self.caption_entities = caption_entities
|
||||||
self.reply_markup = reply_markup
|
self.reply_markup = reply_markup
|
||||||
self.input_message_content = input_message_content
|
self.input_message_content = input_message_content
|
||||||
self.parse_mode = parse_mode
|
self.parse_mode = parse_mode
|
||||||
self.payload_dic['photo_file_id'] = photo_file_id
|
self.payload_dic['photo_file_id'] = photo_file_id
|
||||||
|
|
||||||
|
|
||||||
class InlineQueryResultCachedGif(BaseInlineQueryResultCached):
|
class InlineQueryResultCachedGif(InlineQueryResultCachedBase):
|
||||||
def __init__(self, id, gif_file_id, title=None, description=None, caption=None, parse_mode=None, reply_markup=None,
|
def __init__(self, id, gif_file_id, title=None, description=None,
|
||||||
input_message_content=None):
|
caption=None, caption_entities = None, parse_mode=None,
|
||||||
BaseInlineQueryResultCached.__init__(self)
|
reply_markup=None, input_message_content=None):
|
||||||
|
InlineQueryResultCachedBase.__init__(self)
|
||||||
self.type = 'gif'
|
self.type = 'gif'
|
||||||
self.id = id
|
self.id = id
|
||||||
self.gif_file_id = gif_file_id
|
self.gif_file_id = gif_file_id
|
||||||
self.title = title
|
self.title = title
|
||||||
self.description = description
|
self.description = description
|
||||||
self.caption = caption
|
self.caption = caption
|
||||||
|
self.caption_entities = caption_entities
|
||||||
self.reply_markup = reply_markup
|
self.reply_markup = reply_markup
|
||||||
self.input_message_content = input_message_content
|
self.input_message_content = input_message_content
|
||||||
self.parse_mode = parse_mode
|
self.parse_mode = parse_mode
|
||||||
self.payload_dic['gif_file_id'] = gif_file_id
|
self.payload_dic['gif_file_id'] = gif_file_id
|
||||||
|
|
||||||
|
|
||||||
class InlineQueryResultCachedMpeg4Gif(BaseInlineQueryResultCached):
|
class InlineQueryResultCachedMpeg4Gif(InlineQueryResultCachedBase):
|
||||||
def __init__(self, id, mpeg4_file_id, title=None, description=None, caption=None, parse_mode=None,
|
def __init__(self, id, mpeg4_file_id, title=None, description=None,
|
||||||
|
caption=None, caption_entities = None, parse_mode=None,
|
||||||
reply_markup=None, input_message_content=None):
|
reply_markup=None, input_message_content=None):
|
||||||
BaseInlineQueryResultCached.__init__(self)
|
InlineQueryResultCachedBase.__init__(self)
|
||||||
self.type = 'mpeg4_gif'
|
self.type = 'mpeg4_gif'
|
||||||
self.id = id
|
self.id = id
|
||||||
self.mpeg4_file_id = mpeg4_file_id
|
self.mpeg4_file_id = mpeg4_file_id
|
||||||
self.title = title
|
self.title = title
|
||||||
self.description = description
|
self.description = description
|
||||||
self.caption = caption
|
self.caption = caption
|
||||||
|
self.caption_entities = caption_entities
|
||||||
self.reply_markup = reply_markup
|
self.reply_markup = reply_markup
|
||||||
self.input_message_content = input_message_content
|
self.input_message_content = input_message_content
|
||||||
self.parse_mode = parse_mode
|
self.parse_mode = parse_mode
|
||||||
self.payload_dic['mpeg4_file_id'] = mpeg4_file_id
|
self.payload_dic['mpeg4_file_id'] = mpeg4_file_id
|
||||||
|
|
||||||
|
|
||||||
class InlineQueryResultCachedSticker(BaseInlineQueryResultCached):
|
class InlineQueryResultCachedSticker(InlineQueryResultCachedBase):
|
||||||
def __init__(self, id, sticker_file_id, reply_markup=None, input_message_content=None):
|
def __init__(self, id, sticker_file_id, reply_markup=None, input_message_content=None):
|
||||||
BaseInlineQueryResultCached.__init__(self)
|
InlineQueryResultCachedBase.__init__(self)
|
||||||
self.type = 'sticker'
|
self.type = 'sticker'
|
||||||
self.id = id
|
self.id = id
|
||||||
self.sticker_file_id = sticker_file_id
|
self.sticker_file_id = sticker_file_id
|
||||||
@ -2164,60 +2128,68 @@ class InlineQueryResultCachedSticker(BaseInlineQueryResultCached):
|
|||||||
self.payload_dic['sticker_file_id'] = sticker_file_id
|
self.payload_dic['sticker_file_id'] = sticker_file_id
|
||||||
|
|
||||||
|
|
||||||
class InlineQueryResultCachedDocument(BaseInlineQueryResultCached):
|
class InlineQueryResultCachedDocument(InlineQueryResultCachedBase):
|
||||||
def __init__(self, id, document_file_id, title, description=None, caption=None, parse_mode=None, reply_markup=None,
|
def __init__(self, id, document_file_id, title, description=None,
|
||||||
input_message_content=None):
|
caption=None, caption_entities = None, parse_mode=None,
|
||||||
BaseInlineQueryResultCached.__init__(self)
|
reply_markup=None, input_message_content=None):
|
||||||
|
InlineQueryResultCachedBase.__init__(self)
|
||||||
self.type = 'document'
|
self.type = 'document'
|
||||||
self.id = id
|
self.id = id
|
||||||
self.document_file_id = document_file_id
|
self.document_file_id = document_file_id
|
||||||
self.title = title
|
self.title = title
|
||||||
self.description = description
|
self.description = description
|
||||||
self.caption = caption
|
self.caption = caption
|
||||||
|
self.caption_entities = caption_entities
|
||||||
self.reply_markup = reply_markup
|
self.reply_markup = reply_markup
|
||||||
self.input_message_content = input_message_content
|
self.input_message_content = input_message_content
|
||||||
self.parse_mode = parse_mode
|
self.parse_mode = parse_mode
|
||||||
self.payload_dic['document_file_id'] = document_file_id
|
self.payload_dic['document_file_id'] = document_file_id
|
||||||
|
|
||||||
|
|
||||||
class InlineQueryResultCachedVideo(BaseInlineQueryResultCached):
|
class InlineQueryResultCachedVideo(InlineQueryResultCachedBase):
|
||||||
def __init__(self, id, video_file_id, title, description=None, caption=None, parse_mode=None, reply_markup=None,
|
def __init__(self, id, video_file_id, title, description=None,
|
||||||
|
caption=None, caption_entities = None, parse_mode=None,
|
||||||
|
reply_markup=None,
|
||||||
input_message_content=None):
|
input_message_content=None):
|
||||||
BaseInlineQueryResultCached.__init__(self)
|
InlineQueryResultCachedBase.__init__(self)
|
||||||
self.type = 'video'
|
self.type = 'video'
|
||||||
self.id = id
|
self.id = id
|
||||||
self.video_file_id = video_file_id
|
self.video_file_id = video_file_id
|
||||||
self.title = title
|
self.title = title
|
||||||
self.description = description
|
self.description = description
|
||||||
self.caption = caption
|
self.caption = caption
|
||||||
|
self.caption_entities = caption_entities
|
||||||
self.reply_markup = reply_markup
|
self.reply_markup = reply_markup
|
||||||
self.input_message_content = input_message_content
|
self.input_message_content = input_message_content
|
||||||
self.parse_mode = parse_mode
|
self.parse_mode = parse_mode
|
||||||
self.payload_dic['video_file_id'] = video_file_id
|
self.payload_dic['video_file_id'] = video_file_id
|
||||||
|
|
||||||
|
|
||||||
class InlineQueryResultCachedVoice(BaseInlineQueryResultCached):
|
class InlineQueryResultCachedVoice(InlineQueryResultCachedBase):
|
||||||
def __init__(self, id, voice_file_id, title, caption=None, parse_mode=None, reply_markup=None,
|
def __init__(self, id, voice_file_id, title, caption=None, caption_entities = None,
|
||||||
input_message_content=None):
|
parse_mode=None, reply_markup=None, input_message_content=None):
|
||||||
BaseInlineQueryResultCached.__init__(self)
|
InlineQueryResultCachedBase.__init__(self)
|
||||||
self.type = 'voice'
|
self.type = 'voice'
|
||||||
self.id = id
|
self.id = id
|
||||||
self.voice_file_id = voice_file_id
|
self.voice_file_id = voice_file_id
|
||||||
self.title = title
|
self.title = title
|
||||||
self.caption = caption
|
self.caption = caption
|
||||||
|
self.caption_entities = caption_entities
|
||||||
self.reply_markup = reply_markup
|
self.reply_markup = reply_markup
|
||||||
self.input_message_content = input_message_content
|
self.input_message_content = input_message_content
|
||||||
self.parse_mode = parse_mode
|
self.parse_mode = parse_mode
|
||||||
self.payload_dic['voice_file_id'] = voice_file_id
|
self.payload_dic['voice_file_id'] = voice_file_id
|
||||||
|
|
||||||
|
|
||||||
class InlineQueryResultCachedAudio(BaseInlineQueryResultCached):
|
class InlineQueryResultCachedAudio(InlineQueryResultCachedBase):
|
||||||
def __init__(self, id, audio_file_id, caption=None, parse_mode=None, reply_markup=None, input_message_content=None):
|
def __init__(self, id, audio_file_id, caption=None, caption_entities = None,
|
||||||
BaseInlineQueryResultCached.__init__(self)
|
parse_mode=None, reply_markup=None, input_message_content=None):
|
||||||
|
InlineQueryResultCachedBase.__init__(self)
|
||||||
self.type = 'audio'
|
self.type = 'audio'
|
||||||
self.id = id
|
self.id = id
|
||||||
self.audio_file_id = audio_file_id
|
self.audio_file_id = audio_file_id
|
||||||
self.caption = caption
|
self.caption = caption
|
||||||
|
self.caption_entities = caption_entities
|
||||||
self.reply_markup = reply_markup
|
self.reply_markup = reply_markup
|
||||||
self.input_message_content = input_message_content
|
self.input_message_content = input_message_content
|
||||||
self.parse_mode = parse_mode
|
self.parse_mode = parse_mode
|
||||||
@ -2226,20 +2198,6 @@ class InlineQueryResultCachedAudio(BaseInlineQueryResultCached):
|
|||||||
|
|
||||||
# Games
|
# Games
|
||||||
|
|
||||||
class InlineQueryResultGame(JsonSerializable):
|
|
||||||
def __init__(self, id, game_short_name, reply_markup=None):
|
|
||||||
self.type = 'game'
|
|
||||||
self.id = id
|
|
||||||
self.game_short_name = game_short_name
|
|
||||||
self.reply_markup = reply_markup
|
|
||||||
|
|
||||||
def to_json(self):
|
|
||||||
json_dic = {'type': self.type, 'id': self.id, 'game_short_name': self.game_short_name}
|
|
||||||
if self.reply_markup:
|
|
||||||
json_dic['reply_markup'] = self.reply_markup.to_dict()
|
|
||||||
return json.dumps(json_dic)
|
|
||||||
|
|
||||||
|
|
||||||
class Game(JsonDeserializable):
|
class Game(JsonDeserializable):
|
||||||
@classmethod
|
@classmethod
|
||||||
def de_json(cls, json_string):
|
def de_json(cls, json_string):
|
||||||
@ -2553,7 +2511,7 @@ class InputMedia(Dictionaryable, JsonSerializable):
|
|||||||
if self.parse_mode:
|
if self.parse_mode:
|
||||||
json_dict['parse_mode'] = self.parse_mode
|
json_dict['parse_mode'] = self.parse_mode
|
||||||
if self.caption_entities:
|
if self.caption_entities:
|
||||||
json_dict['caption_entities'] = [MessageEntity.to_dict(entity) for entity in self.caption_entities]
|
json_dict['caption_entities'] = MessageEntity.to_list_of_dicts(self.caption_entities)
|
||||||
return json_dict
|
return json_dict
|
||||||
|
|
||||||
def convert_input_media(self):
|
def convert_input_media(self):
|
||||||
@ -2817,9 +2775,9 @@ class VoiceChatScheduled(JsonDeserializable):
|
|||||||
def de_json(cls, json_string):
|
def de_json(cls, json_string):
|
||||||
if json_string is None: return None
|
if json_string is None: return None
|
||||||
obj = cls.check_json(json_string, dict_copy=False)
|
obj = cls.check_json(json_string, dict_copy=False)
|
||||||
return cls(obj['start_date'])
|
return cls(**obj)
|
||||||
|
|
||||||
def __init__(self, start_date):
|
def __init__(self, start_date, **kwargs):
|
||||||
self.start_date: int = start_date
|
self.start_date: int = start_date
|
||||||
|
|
||||||
|
|
||||||
@ -2828,9 +2786,9 @@ class VoiceChatEnded(JsonDeserializable):
|
|||||||
def de_json(cls, json_string):
|
def de_json(cls, json_string):
|
||||||
if json_string is None: return None
|
if json_string is None: return None
|
||||||
obj = cls.check_json(json_string, dict_copy=False)
|
obj = cls.check_json(json_string, dict_copy=False)
|
||||||
return cls(obj['duration'])
|
return cls(**obj)
|
||||||
|
|
||||||
def __init__(self, duration):
|
def __init__(self, duration, **kwargs):
|
||||||
self.duration: int = duration
|
self.duration: int = duration
|
||||||
|
|
||||||
|
|
||||||
@ -2839,12 +2797,11 @@ class VoiceChatParticipantsInvited(JsonDeserializable):
|
|||||||
def de_json(cls, json_string):
|
def de_json(cls, json_string):
|
||||||
if json_string is None: return None
|
if json_string is None: return None
|
||||||
obj = cls.check_json(json_string)
|
obj = cls.check_json(json_string)
|
||||||
users = None
|
|
||||||
if 'users' in obj:
|
if 'users' in obj:
|
||||||
users = [User.de_json(u) for u in obj['users']]
|
obj['users'] = [User.de_json(u) for u in obj['users']]
|
||||||
return cls(users)
|
return cls(**obj)
|
||||||
|
|
||||||
def __init__(self, users=None):
|
def __init__(self, users=None, **kwargs):
|
||||||
self.users: List[User] = users
|
self.users: List[User] = users
|
||||||
|
|
||||||
|
|
||||||
@ -2853,7 +2810,7 @@ class MessageAutoDeleteTimerChanged(JsonDeserializable):
|
|||||||
def de_json(cls, json_string):
|
def de_json(cls, json_string):
|
||||||
if json_string is None: return None
|
if json_string is None: return None
|
||||||
obj = cls.check_json(json_string, dict_copy=False)
|
obj = cls.check_json(json_string, dict_copy=False)
|
||||||
return cls(obj['message_auto_delete_time'])
|
return cls(**obj)
|
||||||
|
|
||||||
def __init__(self, message_auto_delete_time):
|
def __init__(self, message_auto_delete_time, **kwargs):
|
||||||
self.message_auto_delete_time = message_auto_delete_time
|
self.message_auto_delete_time = message_auto_delete_time
|
||||||
|
Loading…
Reference in New Issue
Block a user