Add support for manual text entities.
This commit is contained in:
parent
72db61a416
commit
384f4eba71
@ -16,7 +16,7 @@
|
|||||||
# You should have received a copy of the GNU Lesser General Public License
|
# You should have received a copy of the GNU Lesser General Public License
|
||||||
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from typing import Union
|
from typing import Union, List
|
||||||
|
|
||||||
from pyrogram import types
|
from pyrogram import types
|
||||||
from pyrogram.scaffold import Scaffold
|
from pyrogram.scaffold import Scaffold
|
||||||
@ -29,6 +29,7 @@ class EditMessageCaption(Scaffold):
|
|||||||
message_id: int,
|
message_id: int,
|
||||||
caption: str,
|
caption: str,
|
||||||
parse_mode: Union[str, None] = object,
|
parse_mode: Union[str, None] = object,
|
||||||
|
caption_entities: List["types.MessageEntity"] = None,
|
||||||
reply_markup: "types.InlineKeyboardMarkup" = None
|
reply_markup: "types.InlineKeyboardMarkup" = None
|
||||||
) -> "types.Message":
|
) -> "types.Message":
|
||||||
"""Edit the caption of media messages.
|
"""Edit the caption of media messages.
|
||||||
@ -52,6 +53,9 @@ class EditMessageCaption(Scaffold):
|
|||||||
Pass "html" to enable HTML-style parsing only.
|
Pass "html" to enable HTML-style parsing only.
|
||||||
Pass None to completely disable style parsing.
|
Pass None to completely disable style parsing.
|
||||||
|
|
||||||
|
caption_entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||||
|
List of special entities that appear in the caption, which can be specified instead of __parse_mode__.
|
||||||
|
|
||||||
reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup`, *optional*):
|
reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup`, *optional*):
|
||||||
An InlineKeyboardMarkup object.
|
An InlineKeyboardMarkup object.
|
||||||
|
|
||||||
@ -68,5 +72,6 @@ class EditMessageCaption(Scaffold):
|
|||||||
message_id=message_id,
|
message_id=message_id,
|
||||||
text=caption,
|
text=caption,
|
||||||
parse_mode=parse_mode,
|
parse_mode=parse_mode,
|
||||||
|
entities=caption_entities,
|
||||||
reply_markup=reply_markup
|
reply_markup=reply_markup
|
||||||
)
|
)
|
||||||
|
@ -16,10 +16,11 @@
|
|||||||
# You should have received a copy of the GNU Lesser General Public License
|
# You should have received a copy of the GNU Lesser General Public License
|
||||||
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from typing import Union
|
from typing import Union, List
|
||||||
|
|
||||||
from pyrogram import raw
|
from pyrogram import raw
|
||||||
from pyrogram import types
|
from pyrogram import types
|
||||||
|
from pyrogram import utils
|
||||||
from pyrogram.scaffold import Scaffold
|
from pyrogram.scaffold import Scaffold
|
||||||
|
|
||||||
|
|
||||||
@ -30,6 +31,7 @@ class EditMessageText(Scaffold):
|
|||||||
message_id: int,
|
message_id: int,
|
||||||
text: str,
|
text: str,
|
||||||
parse_mode: Union[str, None] = object,
|
parse_mode: Union[str, None] = object,
|
||||||
|
entities: List["types.MessageEntity"] = None,
|
||||||
disable_web_page_preview: bool = None,
|
disable_web_page_preview: bool = None,
|
||||||
reply_markup: "types.InlineKeyboardMarkup" = None
|
reply_markup: "types.InlineKeyboardMarkup" = None
|
||||||
) -> "types.Message":
|
) -> "types.Message":
|
||||||
@ -54,6 +56,9 @@ class EditMessageText(Scaffold):
|
|||||||
Pass "html" to enable HTML-style parsing only.
|
Pass "html" to enable HTML-style parsing only.
|
||||||
Pass None to completely disable style parsing.
|
Pass None to completely disable style parsing.
|
||||||
|
|
||||||
|
entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||||
|
List of special entities that appear in message text, which can be specified instead of __parse_mode__.
|
||||||
|
|
||||||
disable_web_page_preview (``bool``, *optional*):
|
disable_web_page_preview (``bool``, *optional*):
|
||||||
Disables link previews for links in this message.
|
Disables link previews for links in this message.
|
||||||
|
|
||||||
@ -81,7 +86,7 @@ class EditMessageText(Scaffold):
|
|||||||
id=message_id,
|
id=message_id,
|
||||||
no_webpage=disable_web_page_preview or None,
|
no_webpage=disable_web_page_preview or None,
|
||||||
reply_markup=reply_markup.write() if reply_markup else None,
|
reply_markup=reply_markup.write() if reply_markup else None,
|
||||||
**await self.parser.parse(text, parse_mode)
|
**await utils.parse_text_entities(self, text, parse_mode, entities)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
from typing import Union, BinaryIO
|
from typing import Union, BinaryIO, List
|
||||||
|
|
||||||
from pyrogram import StopTransmission
|
from pyrogram import StopTransmission
|
||||||
from pyrogram import raw
|
from pyrogram import raw
|
||||||
@ -37,6 +37,7 @@ class SendAnimation(Scaffold):
|
|||||||
caption: str = "",
|
caption: str = "",
|
||||||
unsave: bool = False,
|
unsave: bool = False,
|
||||||
parse_mode: Union[str, None] = object,
|
parse_mode: Union[str, None] = object,
|
||||||
|
caption_entities: List["types.MessageEntity"] = None,
|
||||||
duration: int = 0,
|
duration: int = 0,
|
||||||
width: int = 0,
|
width: int = 0,
|
||||||
height: int = 0,
|
height: int = 0,
|
||||||
@ -83,6 +84,9 @@ class SendAnimation(Scaffold):
|
|||||||
Pass "html" to enable HTML-style parsing only.
|
Pass "html" to enable HTML-style parsing only.
|
||||||
Pass None to completely disable style parsing.
|
Pass None to completely disable style parsing.
|
||||||
|
|
||||||
|
caption_entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||||
|
List of special entities that appear in the caption, which can be specified instead of __parse_mode__.
|
||||||
|
|
||||||
duration (``int``, *optional*):
|
duration (``int``, *optional*):
|
||||||
Duration of sent animation in seconds.
|
Duration of sent animation in seconds.
|
||||||
|
|
||||||
@ -219,7 +223,7 @@ class SendAnimation(Scaffold):
|
|||||||
random_id=self.rnd_id(),
|
random_id=self.rnd_id(),
|
||||||
schedule_date=schedule_date,
|
schedule_date=schedule_date,
|
||||||
reply_markup=reply_markup.write() if reply_markup else None,
|
reply_markup=reply_markup.write() if reply_markup else None,
|
||||||
**await self.parser.parse(caption, parse_mode)
|
**await utils.parse_text_entities(self, caption, parse_mode, caption_entities)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
except FilePartMissing as e:
|
except FilePartMissing as e:
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
from typing import Union, BinaryIO
|
from typing import Union, BinaryIO, List
|
||||||
|
|
||||||
from pyrogram import StopTransmission
|
from pyrogram import StopTransmission
|
||||||
from pyrogram import raw
|
from pyrogram import raw
|
||||||
@ -36,10 +36,12 @@ class SendAudio(Scaffold):
|
|||||||
audio: Union[str, BinaryIO],
|
audio: Union[str, BinaryIO],
|
||||||
caption: str = "",
|
caption: str = "",
|
||||||
parse_mode: Union[str, None] = object,
|
parse_mode: Union[str, None] = object,
|
||||||
|
caption_entities: List["types.MessageEntity"] = None,
|
||||||
duration: int = 0,
|
duration: int = 0,
|
||||||
performer: str = None,
|
performer: str = None,
|
||||||
title: str = None,
|
title: str = None,
|
||||||
thumb: Union[str, BinaryIO] = None, file_name: str = None,
|
thumb: Union[str, BinaryIO] = None,
|
||||||
|
file_name: str = None,
|
||||||
disable_notification: bool = None,
|
disable_notification: bool = None,
|
||||||
reply_to_message_id: int = None,
|
reply_to_message_id: int = None,
|
||||||
schedule_date: int = None,
|
schedule_date: int = None,
|
||||||
@ -79,6 +81,9 @@ class SendAudio(Scaffold):
|
|||||||
Pass "html" to enable HTML-style parsing only.
|
Pass "html" to enable HTML-style parsing only.
|
||||||
Pass None to completely disable style parsing.
|
Pass None to completely disable style parsing.
|
||||||
|
|
||||||
|
caption_entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||||
|
List of special entities that appear in the caption, which can be specified instead of __parse_mode__.
|
||||||
|
|
||||||
duration (``int``, *optional*):
|
duration (``int``, *optional*):
|
||||||
Duration of the audio in seconds.
|
Duration of the audio in seconds.
|
||||||
|
|
||||||
@ -213,7 +218,7 @@ class SendAudio(Scaffold):
|
|||||||
random_id=self.rnd_id(),
|
random_id=self.rnd_id(),
|
||||||
schedule_date=schedule_date,
|
schedule_date=schedule_date,
|
||||||
reply_markup=reply_markup.write() if reply_markup else None,
|
reply_markup=reply_markup.write() if reply_markup else None,
|
||||||
**await self.parser.parse(caption, parse_mode)
|
**await utils.parse_text_entities(self, caption, parse_mode, caption_entities)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
except FilePartMissing as e:
|
except FilePartMissing as e:
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
from typing import Union, BinaryIO
|
from typing import Union, BinaryIO, List
|
||||||
|
|
||||||
from pyrogram import StopTransmission
|
from pyrogram import StopTransmission
|
||||||
from pyrogram import raw
|
from pyrogram import raw
|
||||||
@ -37,6 +37,7 @@ class SendDocument(Scaffold):
|
|||||||
thumb: Union[str, BinaryIO] = None,
|
thumb: Union[str, BinaryIO] = None,
|
||||||
caption: str = "",
|
caption: str = "",
|
||||||
parse_mode: Union[str, None] = object,
|
parse_mode: Union[str, None] = object,
|
||||||
|
caption_entities: List["types.MessageEntity"] = None,
|
||||||
file_name: str = None,
|
file_name: str = None,
|
||||||
force_document: bool = None,
|
force_document: bool = None,
|
||||||
disable_notification: bool = None,
|
disable_notification: bool = None,
|
||||||
@ -82,6 +83,9 @@ class SendDocument(Scaffold):
|
|||||||
Pass "html" to enable HTML-style parsing only.
|
Pass "html" to enable HTML-style parsing only.
|
||||||
Pass None to completely disable style parsing.
|
Pass None to completely disable style parsing.
|
||||||
|
|
||||||
|
caption_entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||||
|
List of special entities that appear in the caption, which can be specified instead of __parse_mode__.
|
||||||
|
|
||||||
file_name (``str``, *optional*):
|
file_name (``str``, *optional*):
|
||||||
File name of the document sent.
|
File name of the document sent.
|
||||||
Defaults to file's path basename.
|
Defaults to file's path basename.
|
||||||
@ -191,7 +195,7 @@ class SendDocument(Scaffold):
|
|||||||
random_id=self.rnd_id(),
|
random_id=self.rnd_id(),
|
||||||
schedule_date=schedule_date,
|
schedule_date=schedule_date,
|
||||||
reply_markup=reply_markup.write() if reply_markup else None,
|
reply_markup=reply_markup.write() if reply_markup else None,
|
||||||
**await self.parser.parse(caption, parse_mode)
|
**await utils.parse_text_entities(self, caption, parse_mode, caption_entities)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
except FilePartMissing as e:
|
except FilePartMissing as e:
|
||||||
|
@ -16,9 +16,9 @@
|
|||||||
# You should have received a copy of the GNU Lesser General Public License
|
# You should have received a copy of the GNU Lesser General Public License
|
||||||
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from typing import Union
|
from typing import Union, List
|
||||||
|
|
||||||
from pyrogram import raw
|
from pyrogram import raw, utils
|
||||||
from pyrogram import types
|
from pyrogram import types
|
||||||
from pyrogram.scaffold import Scaffold
|
from pyrogram.scaffold import Scaffold
|
||||||
|
|
||||||
@ -29,6 +29,7 @@ class SendMessage(Scaffold):
|
|||||||
chat_id: Union[int, str],
|
chat_id: Union[int, str],
|
||||||
text: str,
|
text: str,
|
||||||
parse_mode: Union[str, None] = object,
|
parse_mode: Union[str, None] = object,
|
||||||
|
entities: List["types.MessageEntity"] = None,
|
||||||
disable_web_page_preview: bool = None,
|
disable_web_page_preview: bool = None,
|
||||||
disable_notification: bool = None,
|
disable_notification: bool = None,
|
||||||
reply_to_message_id: int = None,
|
reply_to_message_id: int = None,
|
||||||
@ -58,6 +59,9 @@ class SendMessage(Scaffold):
|
|||||||
Pass "html" to enable HTML-style parsing only.
|
Pass "html" to enable HTML-style parsing only.
|
||||||
Pass None to completely disable style parsing.
|
Pass None to completely disable style parsing.
|
||||||
|
|
||||||
|
entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||||
|
List of special entities that appear in message text, which can be specified instead of __parse_mode__.
|
||||||
|
|
||||||
disable_web_page_preview (``bool``, *optional*):
|
disable_web_page_preview (``bool``, *optional*):
|
||||||
Disables link previews for links in this message.
|
Disables link previews for links in this message.
|
||||||
|
|
||||||
@ -116,7 +120,7 @@ class SendMessage(Scaffold):
|
|||||||
]))
|
]))
|
||||||
"""
|
"""
|
||||||
|
|
||||||
message, entities = (await self.parser.parse(text, parse_mode)).values()
|
message, entities = (await utils.parse_text_entities(self, text, parse_mode, entities)).values()
|
||||||
|
|
||||||
r = await self.send(
|
r = await self.send(
|
||||||
raw.functions.messages.SendMessage(
|
raw.functions.messages.SendMessage(
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
from typing import Union, BinaryIO
|
from typing import Union, BinaryIO, List
|
||||||
|
|
||||||
import pyrogram
|
import pyrogram
|
||||||
from pyrogram import raw
|
from pyrogram import raw
|
||||||
@ -36,6 +36,7 @@ class SendPhoto(Scaffold):
|
|||||||
photo: Union[str, BinaryIO],
|
photo: Union[str, BinaryIO],
|
||||||
caption: str = "",
|
caption: str = "",
|
||||||
parse_mode: Union[str, None] = object,
|
parse_mode: Union[str, None] = object,
|
||||||
|
caption_entities: List["types.MessageEntity"] = None,
|
||||||
ttl_seconds: int = None,
|
ttl_seconds: int = None,
|
||||||
disable_notification: bool = None,
|
disable_notification: bool = None,
|
||||||
reply_to_message_id: int = None,
|
reply_to_message_id: int = None,
|
||||||
@ -74,6 +75,9 @@ class SendPhoto(Scaffold):
|
|||||||
Pass "html" to enable HTML-style parsing only.
|
Pass "html" to enable HTML-style parsing only.
|
||||||
Pass None to completely disable style parsing.
|
Pass None to completely disable style parsing.
|
||||||
|
|
||||||
|
caption_entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||||
|
List of special entities that appear in the caption, which can be specified instead of __parse_mode__.
|
||||||
|
|
||||||
ttl_seconds (``int``, *optional*):
|
ttl_seconds (``int``, *optional*):
|
||||||
Self-Destruct Timer.
|
Self-Destruct Timer.
|
||||||
If you set a timer, the photo will self-destruct in *ttl_seconds*
|
If you set a timer, the photo will self-destruct in *ttl_seconds*
|
||||||
@ -169,7 +173,7 @@ class SendPhoto(Scaffold):
|
|||||||
random_id=self.rnd_id(),
|
random_id=self.rnd_id(),
|
||||||
schedule_date=schedule_date,
|
schedule_date=schedule_date,
|
||||||
reply_markup=reply_markup.write() if reply_markup else None,
|
reply_markup=reply_markup.write() if reply_markup else None,
|
||||||
**await self.parser.parse(caption, parse_mode)
|
**await utils.parse_text_entities(self, caption, parse_mode, caption_entities)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
except FilePartMissing as e:
|
except FilePartMissing as e:
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
from typing import Union, BinaryIO
|
from typing import Union, BinaryIO, List
|
||||||
|
|
||||||
from pyrogram import StopTransmission
|
from pyrogram import StopTransmission
|
||||||
from pyrogram import raw
|
from pyrogram import raw
|
||||||
@ -36,6 +36,7 @@ class SendVideo(Scaffold):
|
|||||||
video: Union[str, BinaryIO],
|
video: Union[str, BinaryIO],
|
||||||
caption: str = "",
|
caption: str = "",
|
||||||
parse_mode: Union[str, None] = object,
|
parse_mode: Union[str, None] = object,
|
||||||
|
caption_entities: List["types.MessageEntity"] = None,
|
||||||
duration: int = 0,
|
duration: int = 0,
|
||||||
width: int = 0,
|
width: int = 0,
|
||||||
height: int = 0,
|
height: int = 0,
|
||||||
@ -79,6 +80,9 @@ class SendVideo(Scaffold):
|
|||||||
Pass "html" to enable HTML-style parsing only.
|
Pass "html" to enable HTML-style parsing only.
|
||||||
Pass None to completely disable style parsing.
|
Pass None to completely disable style parsing.
|
||||||
|
|
||||||
|
caption_entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||||
|
List of special entities that appear in the caption, which can be specified instead of __parse_mode__.
|
||||||
|
|
||||||
duration (``int``, *optional*):
|
duration (``int``, *optional*):
|
||||||
Duration of sent video in seconds.
|
Duration of sent video in seconds.
|
||||||
|
|
||||||
@ -213,7 +217,7 @@ class SendVideo(Scaffold):
|
|||||||
random_id=self.rnd_id(),
|
random_id=self.rnd_id(),
|
||||||
schedule_date=schedule_date,
|
schedule_date=schedule_date,
|
||||||
reply_markup=reply_markup.write() if reply_markup else None,
|
reply_markup=reply_markup.write() if reply_markup else None,
|
||||||
**await self.parser.parse(caption, parse_mode)
|
**await utils.parse_text_entities(self, caption, parse_mode, caption_entities)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
except FilePartMissing as e:
|
except FilePartMissing as e:
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
from typing import Union, BinaryIO
|
from typing import Union, BinaryIO, List
|
||||||
|
|
||||||
from pyrogram import StopTransmission
|
from pyrogram import StopTransmission
|
||||||
from pyrogram import raw
|
from pyrogram import raw
|
||||||
@ -36,6 +36,7 @@ class SendVoice(Scaffold):
|
|||||||
voice: Union[str, BinaryIO],
|
voice: Union[str, BinaryIO],
|
||||||
caption: str = "",
|
caption: str = "",
|
||||||
parse_mode: Union[str, None] = object,
|
parse_mode: Union[str, None] = object,
|
||||||
|
caption_entities: List["types.MessageEntity"] = None,
|
||||||
duration: int = 0,
|
duration: int = 0,
|
||||||
disable_notification: bool = None,
|
disable_notification: bool = None,
|
||||||
reply_to_message_id: int = None,
|
reply_to_message_id: int = None,
|
||||||
@ -74,6 +75,9 @@ class SendVoice(Scaffold):
|
|||||||
Pass "html" to enable HTML-style parsing only.
|
Pass "html" to enable HTML-style parsing only.
|
||||||
Pass None to completely disable style parsing.
|
Pass None to completely disable style parsing.
|
||||||
|
|
||||||
|
caption_entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||||
|
List of special entities that appear in the caption, which can be specified instead of __parse_mode__.
|
||||||
|
|
||||||
duration (``int``, *optional*):
|
duration (``int``, *optional*):
|
||||||
Duration of the voice message in seconds.
|
Duration of the voice message in seconds.
|
||||||
|
|
||||||
@ -175,7 +179,7 @@ class SendVoice(Scaffold):
|
|||||||
random_id=self.rnd_id(),
|
random_id=self.rnd_id(),
|
||||||
schedule_date=schedule_date,
|
schedule_date=schedule_date,
|
||||||
reply_markup=reply_markup.write() if reply_markup else None,
|
reply_markup=reply_markup.write() if reply_markup else None,
|
||||||
**await self.parser.parse(caption, parse_mode)
|
**await utils.parse_text_entities(self, caption, parse_mode, caption_entities)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
except FilePartMissing as e:
|
except FilePartMissing as e:
|
||||||
|
@ -16,6 +16,9 @@
|
|||||||
# You should have received a copy of the GNU Lesser General Public License
|
# You should have received a copy of the GNU Lesser General Public License
|
||||||
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
from ..messages_and_media import MessageEntity
|
||||||
from ..object import Object
|
from ..object import Object
|
||||||
|
|
||||||
|
|
||||||
@ -31,9 +34,16 @@ class InputMedia(Object):
|
|||||||
- :obj:`~pyrogram.types.InputMediaVideo`
|
- :obj:`~pyrogram.types.InputMediaVideo`
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, media: str, caption: str, parse_mode: str):
|
def __init__(
|
||||||
|
self,
|
||||||
|
media: str,
|
||||||
|
caption: str = None,
|
||||||
|
parse_mode: str = None,
|
||||||
|
caption_entities: List[MessageEntity] = None
|
||||||
|
):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
self.media = media
|
self.media = media
|
||||||
self.caption = caption
|
self.caption = caption
|
||||||
self.parse_mode = parse_mode
|
self.parse_mode = parse_mode
|
||||||
|
self.caption_entities = caption_entities
|
||||||
|
@ -16,9 +16,10 @@
|
|||||||
# You should have received a copy of the GNU Lesser General Public License
|
# You should have received a copy of the GNU Lesser General Public License
|
||||||
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from typing import Union
|
from typing import Union, List
|
||||||
|
|
||||||
from .input_media import InputMedia
|
from .input_media import InputMedia
|
||||||
|
from ..messages_and_media import MessageEntity
|
||||||
|
|
||||||
|
|
||||||
class InputMediaAnimation(InputMedia):
|
class InputMediaAnimation(InputMedia):
|
||||||
@ -46,6 +47,9 @@ class InputMediaAnimation(InputMedia):
|
|||||||
Pass "html" to enable HTML-style parsing only.
|
Pass "html" to enable HTML-style parsing only.
|
||||||
Pass None to completely disable style parsing.
|
Pass None to completely disable style parsing.
|
||||||
|
|
||||||
|
caption_entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||||
|
List of special entities that appear in the caption, which can be specified instead of __parse_mode__.
|
||||||
|
|
||||||
width (``int``, *optional*):
|
width (``int``, *optional*):
|
||||||
Animation width.
|
Animation width.
|
||||||
|
|
||||||
@ -62,11 +66,12 @@ class InputMediaAnimation(InputMedia):
|
|||||||
thumb: str = None,
|
thumb: str = None,
|
||||||
caption: str = "",
|
caption: str = "",
|
||||||
parse_mode: Union[str, None] = object,
|
parse_mode: Union[str, None] = object,
|
||||||
|
caption_entities: List[MessageEntity] = None,
|
||||||
width: int = 0,
|
width: int = 0,
|
||||||
height: int = 0,
|
height: int = 0,
|
||||||
duration: int = 0
|
duration: int = 0
|
||||||
):
|
):
|
||||||
super().__init__(media, caption, parse_mode)
|
super().__init__(media, caption, parse_mode, caption_entities)
|
||||||
|
|
||||||
self.thumb = thumb
|
self.thumb = thumb
|
||||||
self.width = width
|
self.width = width
|
||||||
|
@ -16,9 +16,10 @@
|
|||||||
# You should have received a copy of the GNU Lesser General Public License
|
# You should have received a copy of the GNU Lesser General Public License
|
||||||
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from typing import Union
|
from typing import Union, List
|
||||||
|
|
||||||
from .input_media import InputMedia
|
from .input_media import InputMedia
|
||||||
|
from ..messages_and_media import MessageEntity
|
||||||
|
|
||||||
|
|
||||||
class InputMediaAudio(InputMedia):
|
class InputMediaAudio(InputMedia):
|
||||||
@ -48,6 +49,9 @@ class InputMediaAudio(InputMedia):
|
|||||||
Pass "html" to enable HTML-style parsing only.
|
Pass "html" to enable HTML-style parsing only.
|
||||||
Pass None to completely disable style parsing.
|
Pass None to completely disable style parsing.
|
||||||
|
|
||||||
|
caption_entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||||
|
List of special entities that appear in the caption, which can be specified instead of __parse_mode__.
|
||||||
|
|
||||||
duration (``int``, *optional*):
|
duration (``int``, *optional*):
|
||||||
Duration of the audio in seconds
|
Duration of the audio in seconds
|
||||||
|
|
||||||
@ -64,11 +68,12 @@ class InputMediaAudio(InputMedia):
|
|||||||
thumb: str = None,
|
thumb: str = None,
|
||||||
caption: str = "",
|
caption: str = "",
|
||||||
parse_mode: Union[str, None] = object,
|
parse_mode: Union[str, None] = object,
|
||||||
|
caption_entities: List[MessageEntity] = None,
|
||||||
duration: int = 0,
|
duration: int = 0,
|
||||||
performer: str = "",
|
performer: str = "",
|
||||||
title: str = ""
|
title: str = ""
|
||||||
):
|
):
|
||||||
super().__init__(media, caption, parse_mode)
|
super().__init__(media, caption, parse_mode, caption_entities)
|
||||||
|
|
||||||
self.thumb = thumb
|
self.thumb = thumb
|
||||||
self.duration = duration
|
self.duration = duration
|
||||||
|
@ -16,9 +16,10 @@
|
|||||||
# You should have received a copy of the GNU Lesser General Public License
|
# You should have received a copy of the GNU Lesser General Public License
|
||||||
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from typing import Union
|
from typing import Union, List
|
||||||
|
|
||||||
from .input_media import InputMedia
|
from .input_media import InputMedia
|
||||||
|
from ..messages_and_media import MessageEntity
|
||||||
|
|
||||||
|
|
||||||
class InputMediaDocument(InputMedia):
|
class InputMediaDocument(InputMedia):
|
||||||
@ -45,6 +46,9 @@ class InputMediaDocument(InputMedia):
|
|||||||
Pass "markdown" or "md" to enable Markdown-style parsing only.
|
Pass "markdown" or "md" to enable Markdown-style parsing only.
|
||||||
Pass "html" to enable HTML-style parsing only.
|
Pass "html" to enable HTML-style parsing only.
|
||||||
Pass None to completely disable style parsing.
|
Pass None to completely disable style parsing.
|
||||||
|
|
||||||
|
caption_entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||||
|
List of special entities that appear in the caption, which can be specified instead of __parse_mode__.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
@ -52,8 +56,9 @@ class InputMediaDocument(InputMedia):
|
|||||||
media: str,
|
media: str,
|
||||||
thumb: str = None,
|
thumb: str = None,
|
||||||
caption: str = "",
|
caption: str = "",
|
||||||
parse_mode: Union[str, None] = object
|
parse_mode: Union[str, None] = object,
|
||||||
|
caption_entities: List[MessageEntity] = None
|
||||||
):
|
):
|
||||||
super().__init__(media, caption, parse_mode)
|
super().__init__(media, caption, parse_mode, caption_entities)
|
||||||
|
|
||||||
self.thumb = thumb
|
self.thumb = thumb
|
||||||
|
@ -16,9 +16,10 @@
|
|||||||
# You should have received a copy of the GNU Lesser General Public License
|
# You should have received a copy of the GNU Lesser General Public License
|
||||||
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from typing import Union
|
from typing import Union, List
|
||||||
|
|
||||||
from .input_media import InputMedia
|
from .input_media import InputMedia
|
||||||
|
from ..messages_and_media import MessageEntity
|
||||||
|
|
||||||
|
|
||||||
class InputMediaPhoto(InputMedia):
|
class InputMediaPhoto(InputMedia):
|
||||||
@ -41,12 +42,16 @@ class InputMediaPhoto(InputMedia):
|
|||||||
Pass "markdown" or "md" to enable Markdown-style parsing only.
|
Pass "markdown" or "md" to enable Markdown-style parsing only.
|
||||||
Pass "html" to enable HTML-style parsing only.
|
Pass "html" to enable HTML-style parsing only.
|
||||||
Pass None to completely disable style parsing.
|
Pass None to completely disable style parsing.
|
||||||
|
|
||||||
|
caption_entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||||
|
List of special entities that appear in the caption, which can be specified instead of __parse_mode__.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
media: str,
|
media: str,
|
||||||
caption: str = "",
|
caption: str = "",
|
||||||
parse_mode: Union[str, None] = object
|
parse_mode: Union[str, None] = object,
|
||||||
|
caption_entities: List[MessageEntity] = None
|
||||||
):
|
):
|
||||||
super().__init__(media, caption, parse_mode)
|
super().__init__(media, caption, parse_mode, caption_entities)
|
||||||
|
@ -16,9 +16,10 @@
|
|||||||
# You should have received a copy of the GNU Lesser General Public License
|
# You should have received a copy of the GNU Lesser General Public License
|
||||||
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from typing import Union
|
from typing import Union, List
|
||||||
|
|
||||||
from .input_media import InputMedia
|
from .input_media import InputMedia
|
||||||
|
from ..messages_and_media import MessageEntity
|
||||||
|
|
||||||
|
|
||||||
class InputMediaVideo(InputMedia):
|
class InputMediaVideo(InputMedia):
|
||||||
@ -48,6 +49,9 @@ class InputMediaVideo(InputMedia):
|
|||||||
Pass "html" to enable HTML-style parsing only.
|
Pass "html" to enable HTML-style parsing only.
|
||||||
Pass None to completely disable style parsing.
|
Pass None to completely disable style parsing.
|
||||||
|
|
||||||
|
caption_entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||||
|
List of special entities that appear in the caption, which can be specified instead of __parse_mode__.
|
||||||
|
|
||||||
width (``int``, *optional*):
|
width (``int``, *optional*):
|
||||||
Video width.
|
Video width.
|
||||||
|
|
||||||
@ -67,12 +71,13 @@ class InputMediaVideo(InputMedia):
|
|||||||
thumb: str = None,
|
thumb: str = None,
|
||||||
caption: str = "",
|
caption: str = "",
|
||||||
parse_mode: Union[str, None] = object,
|
parse_mode: Union[str, None] = object,
|
||||||
|
caption_entities: List[MessageEntity] = None,
|
||||||
width: int = 0,
|
width: int = 0,
|
||||||
height: int = 0,
|
height: int = 0,
|
||||||
duration: int = 0,
|
duration: int = 0,
|
||||||
supports_streaming: bool = True
|
supports_streaming: bool = True
|
||||||
):
|
):
|
||||||
super().__init__(media, caption, parse_mode)
|
super().__init__(media, caption, parse_mode, caption_entities)
|
||||||
|
|
||||||
self.thumb = thumb
|
self.thumb = thumb
|
||||||
self.width = width
|
self.width = width
|
||||||
|
@ -711,6 +711,7 @@ class Message(Object, Update):
|
|||||||
text: str,
|
text: str,
|
||||||
quote: bool = None,
|
quote: bool = None,
|
||||||
parse_mode: Union[str, None] = object,
|
parse_mode: Union[str, None] = object,
|
||||||
|
entities: List["types.MessageEntity"] = None,
|
||||||
disable_web_page_preview: bool = None,
|
disable_web_page_preview: bool = None,
|
||||||
disable_notification: bool = None,
|
disable_notification: bool = None,
|
||||||
reply_to_message_id: int = None,
|
reply_to_message_id: int = None,
|
||||||
@ -749,6 +750,9 @@ class Message(Object, Update):
|
|||||||
Pass "html" to enable HTML-style parsing only.
|
Pass "html" to enable HTML-style parsing only.
|
||||||
Pass None to completely disable style parsing.
|
Pass None to completely disable style parsing.
|
||||||
|
|
||||||
|
entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||||
|
List of special entities that appear in message text, which can be specified instead of __parse_mode__.
|
||||||
|
|
||||||
disable_web_page_preview (``bool``, *optional*):
|
disable_web_page_preview (``bool``, *optional*):
|
||||||
Disables link previews for links in this message.
|
Disables link previews for links in this message.
|
||||||
|
|
||||||
@ -779,6 +783,7 @@ class Message(Object, Update):
|
|||||||
chat_id=self.chat.id,
|
chat_id=self.chat.id,
|
||||||
text=text,
|
text=text,
|
||||||
parse_mode=parse_mode,
|
parse_mode=parse_mode,
|
||||||
|
entities=entities,
|
||||||
disable_web_page_preview=disable_web_page_preview,
|
disable_web_page_preview=disable_web_page_preview,
|
||||||
disable_notification=disable_notification,
|
disable_notification=disable_notification,
|
||||||
reply_to_message_id=reply_to_message_id,
|
reply_to_message_id=reply_to_message_id,
|
||||||
@ -793,6 +798,7 @@ class Message(Object, Update):
|
|||||||
quote: bool = None,
|
quote: bool = None,
|
||||||
caption: str = "",
|
caption: str = "",
|
||||||
parse_mode: Union[str, None] = object,
|
parse_mode: Union[str, None] = object,
|
||||||
|
caption_entities: List["types.MessageEntity"] = None,
|
||||||
duration: int = 0,
|
duration: int = 0,
|
||||||
width: int = 0,
|
width: int = 0,
|
||||||
height: int = 0,
|
height: int = 0,
|
||||||
@ -846,6 +852,9 @@ class Message(Object, Update):
|
|||||||
Pass "html" to enable HTML-style parsing only.
|
Pass "html" to enable HTML-style parsing only.
|
||||||
Pass None to completely disable style parsing.
|
Pass None to completely disable style parsing.
|
||||||
|
|
||||||
|
caption_entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||||
|
List of special entities that appear in the caption, which can be specified instead of __parse_mode__.
|
||||||
|
|
||||||
duration (``int``, *optional*):
|
duration (``int``, *optional*):
|
||||||
Duration of sent animation in seconds.
|
Duration of sent animation in seconds.
|
||||||
|
|
||||||
@ -913,6 +922,7 @@ class Message(Object, Update):
|
|||||||
animation=animation,
|
animation=animation,
|
||||||
caption=caption,
|
caption=caption,
|
||||||
parse_mode=parse_mode,
|
parse_mode=parse_mode,
|
||||||
|
caption_entities=caption_entities,
|
||||||
duration=duration,
|
duration=duration,
|
||||||
width=width,
|
width=width,
|
||||||
height=height,
|
height=height,
|
||||||
@ -930,6 +940,7 @@ class Message(Object, Update):
|
|||||||
quote: bool = None,
|
quote: bool = None,
|
||||||
caption: str = "",
|
caption: str = "",
|
||||||
parse_mode: Union[str, None] = object,
|
parse_mode: Union[str, None] = object,
|
||||||
|
caption_entities: List["types.MessageEntity"] = None,
|
||||||
duration: int = 0,
|
duration: int = 0,
|
||||||
performer: str = None,
|
performer: str = None,
|
||||||
title: str = None,
|
title: str = None,
|
||||||
@ -983,6 +994,9 @@ class Message(Object, Update):
|
|||||||
Pass "html" to enable HTML-style parsing only.
|
Pass "html" to enable HTML-style parsing only.
|
||||||
Pass None to completely disable style parsing.
|
Pass None to completely disable style parsing.
|
||||||
|
|
||||||
|
caption_entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||||
|
List of special entities that appear in the caption, which can be specified instead of __parse_mode__.
|
||||||
|
|
||||||
duration (``int``, *optional*):
|
duration (``int``, *optional*):
|
||||||
Duration of the audio in seconds.
|
Duration of the audio in seconds.
|
||||||
|
|
||||||
@ -1050,6 +1064,7 @@ class Message(Object, Update):
|
|||||||
audio=audio,
|
audio=audio,
|
||||||
caption=caption,
|
caption=caption,
|
||||||
parse_mode=parse_mode,
|
parse_mode=parse_mode,
|
||||||
|
caption_entities=caption_entities,
|
||||||
duration=duration,
|
duration=duration,
|
||||||
performer=performer,
|
performer=performer,
|
||||||
title=title,
|
title=title,
|
||||||
@ -1067,6 +1082,7 @@ class Message(Object, Update):
|
|||||||
quote: bool = None,
|
quote: bool = None,
|
||||||
caption: str = "",
|
caption: str = "",
|
||||||
parse_mode: Union[str, None] = object,
|
parse_mode: Union[str, None] = object,
|
||||||
|
caption_entities: List["types.MessageEntity"] = None,
|
||||||
disable_notification: bool = None,
|
disable_notification: bool = None,
|
||||||
reply_to_message_id: int = None,
|
reply_to_message_id: int = None,
|
||||||
reply_markup: Union[
|
reply_markup: Union[
|
||||||
@ -1112,6 +1128,9 @@ class Message(Object, Update):
|
|||||||
Pass "html" to enable HTML-style parsing only.
|
Pass "html" to enable HTML-style parsing only.
|
||||||
Pass None to completely disable style parsing.
|
Pass None to completely disable style parsing.
|
||||||
|
|
||||||
|
caption_entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||||
|
List of special entities that appear in the caption, which can be specified instead of __parse_mode__.
|
||||||
|
|
||||||
disable_notification (``bool``, *optional*):
|
disable_notification (``bool``, *optional*):
|
||||||
Sends the message silently.
|
Sends the message silently.
|
||||||
Users will receive a notification with no sound.
|
Users will receive a notification with no sound.
|
||||||
@ -1140,6 +1159,7 @@ class Message(Object, Update):
|
|||||||
file_id=file_id,
|
file_id=file_id,
|
||||||
caption=caption,
|
caption=caption,
|
||||||
parse_mode=parse_mode,
|
parse_mode=parse_mode,
|
||||||
|
caption_entities=caption_entities,
|
||||||
disable_notification=disable_notification,
|
disable_notification=disable_notification,
|
||||||
reply_to_message_id=reply_to_message_id,
|
reply_to_message_id=reply_to_message_id,
|
||||||
reply_markup=reply_markup
|
reply_markup=reply_markup
|
||||||
@ -1275,6 +1295,7 @@ class Message(Object, Update):
|
|||||||
thumb: str = None,
|
thumb: str = None,
|
||||||
caption: str = "",
|
caption: str = "",
|
||||||
parse_mode: Union[str, None] = object,
|
parse_mode: Union[str, None] = object,
|
||||||
|
caption_entities: List["types.MessageEntity"] = None,
|
||||||
disable_notification: bool = None,
|
disable_notification: bool = None,
|
||||||
reply_to_message_id: int = None,
|
reply_to_message_id: int = None,
|
||||||
reply_markup: Union[
|
reply_markup: Union[
|
||||||
@ -1330,6 +1351,9 @@ class Message(Object, Update):
|
|||||||
Pass "html" to enable HTML-style parsing only.
|
Pass "html" to enable HTML-style parsing only.
|
||||||
Pass None to completely disable style parsing.
|
Pass None to completely disable style parsing.
|
||||||
|
|
||||||
|
caption_entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||||
|
List of special entities that appear in the caption, which can be specified instead of __parse_mode__.
|
||||||
|
|
||||||
disable_notification (``bool``, *optional*):
|
disable_notification (``bool``, *optional*):
|
||||||
Sends the message silently.
|
Sends the message silently.
|
||||||
Users will receive a notification with no sound.
|
Users will receive a notification with no sound.
|
||||||
@ -1383,6 +1407,7 @@ class Message(Object, Update):
|
|||||||
thumb=thumb,
|
thumb=thumb,
|
||||||
caption=caption,
|
caption=caption,
|
||||||
parse_mode=parse_mode,
|
parse_mode=parse_mode,
|
||||||
|
caption_entities=caption_entities,
|
||||||
disable_notification=disable_notification,
|
disable_notification=disable_notification,
|
||||||
reply_to_message_id=reply_to_message_id,
|
reply_to_message_id=reply_to_message_id,
|
||||||
reply_markup=reply_markup,
|
reply_markup=reply_markup,
|
||||||
@ -1670,6 +1695,7 @@ class Message(Object, Update):
|
|||||||
quote: bool = None,
|
quote: bool = None,
|
||||||
caption: str = "",
|
caption: str = "",
|
||||||
parse_mode: Union[str, None] = object,
|
parse_mode: Union[str, None] = object,
|
||||||
|
caption_entities: List["types.MessageEntity"] = None,
|
||||||
ttl_seconds: int = None,
|
ttl_seconds: int = None,
|
||||||
disable_notification: bool = None,
|
disable_notification: bool = None,
|
||||||
reply_to_message_id: int = None,
|
reply_to_message_id: int = None,
|
||||||
@ -1720,6 +1746,9 @@ class Message(Object, Update):
|
|||||||
Pass "html" to enable HTML-style parsing only.
|
Pass "html" to enable HTML-style parsing only.
|
||||||
Pass None to completely disable style parsing.
|
Pass None to completely disable style parsing.
|
||||||
|
|
||||||
|
caption_entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||||
|
List of special entities that appear in the caption, which can be specified instead of __parse_mode__.
|
||||||
|
|
||||||
ttl_seconds (``int``, *optional*):
|
ttl_seconds (``int``, *optional*):
|
||||||
Self-Destruct Timer.
|
Self-Destruct Timer.
|
||||||
If you set a timer, the photo will self-destruct in *ttl_seconds*
|
If you set a timer, the photo will self-destruct in *ttl_seconds*
|
||||||
@ -1777,6 +1806,7 @@ class Message(Object, Update):
|
|||||||
photo=photo,
|
photo=photo,
|
||||||
caption=caption,
|
caption=caption,
|
||||||
parse_mode=parse_mode,
|
parse_mode=parse_mode,
|
||||||
|
caption_entities=caption_entities,
|
||||||
ttl_seconds=ttl_seconds,
|
ttl_seconds=ttl_seconds,
|
||||||
disable_notification=disable_notification,
|
disable_notification=disable_notification,
|
||||||
reply_to_message_id=reply_to_message_id,
|
reply_to_message_id=reply_to_message_id,
|
||||||
@ -2093,6 +2123,7 @@ class Message(Object, Update):
|
|||||||
quote: bool = None,
|
quote: bool = None,
|
||||||
caption: str = "",
|
caption: str = "",
|
||||||
parse_mode: Union[str, None] = object,
|
parse_mode: Union[str, None] = object,
|
||||||
|
caption_entities: List["types.MessageEntity"] = None,
|
||||||
duration: int = 0,
|
duration: int = 0,
|
||||||
width: int = 0,
|
width: int = 0,
|
||||||
height: int = 0,
|
height: int = 0,
|
||||||
@ -2147,6 +2178,9 @@ class Message(Object, Update):
|
|||||||
Pass "html" to enable HTML-style parsing only.
|
Pass "html" to enable HTML-style parsing only.
|
||||||
Pass None to completely disable style parsing.
|
Pass None to completely disable style parsing.
|
||||||
|
|
||||||
|
caption_entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||||
|
List of special entities that appear in the caption, which can be specified instead of __parse_mode__.
|
||||||
|
|
||||||
duration (``int``, *optional*):
|
duration (``int``, *optional*):
|
||||||
Duration of sent video in seconds.
|
Duration of sent video in seconds.
|
||||||
|
|
||||||
@ -2217,6 +2251,7 @@ class Message(Object, Update):
|
|||||||
video=video,
|
video=video,
|
||||||
caption=caption,
|
caption=caption,
|
||||||
parse_mode=parse_mode,
|
parse_mode=parse_mode,
|
||||||
|
caption_entities=caption_entities,
|
||||||
duration=duration,
|
duration=duration,
|
||||||
width=width,
|
width=width,
|
||||||
height=height,
|
height=height,
|
||||||
@ -2353,6 +2388,7 @@ class Message(Object, Update):
|
|||||||
quote: bool = None,
|
quote: bool = None,
|
||||||
caption: str = "",
|
caption: str = "",
|
||||||
parse_mode: Union[str, None] = object,
|
parse_mode: Union[str, None] = object,
|
||||||
|
caption_entities: List["types.MessageEntity"] = None,
|
||||||
duration: int = 0,
|
duration: int = 0,
|
||||||
disable_notification: bool = None,
|
disable_notification: bool = None,
|
||||||
reply_to_message_id: int = None,
|
reply_to_message_id: int = None,
|
||||||
@ -2403,6 +2439,9 @@ class Message(Object, Update):
|
|||||||
Pass "html" to enable HTML-style parsing only.
|
Pass "html" to enable HTML-style parsing only.
|
||||||
Pass None to completely disable style parsing.
|
Pass None to completely disable style parsing.
|
||||||
|
|
||||||
|
caption_entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||||
|
List of special entities that appear in the caption, which can be specified instead of __parse_mode__.
|
||||||
|
|
||||||
duration (``int``, *optional*):
|
duration (``int``, *optional*):
|
||||||
Duration of the voice message in seconds.
|
Duration of the voice message in seconds.
|
||||||
|
|
||||||
@ -2458,6 +2497,7 @@ class Message(Object, Update):
|
|||||||
voice=voice,
|
voice=voice,
|
||||||
caption=caption,
|
caption=caption,
|
||||||
parse_mode=parse_mode,
|
parse_mode=parse_mode,
|
||||||
|
caption_entities=caption_entities,
|
||||||
duration=duration,
|
duration=duration,
|
||||||
disable_notification=disable_notification,
|
disable_notification=disable_notification,
|
||||||
reply_to_message_id=reply_to_message_id,
|
reply_to_message_id=reply_to_message_id,
|
||||||
@ -2470,6 +2510,7 @@ class Message(Object, Update):
|
|||||||
self,
|
self,
|
||||||
text: str,
|
text: str,
|
||||||
parse_mode: Union[str, None] = object,
|
parse_mode: Union[str, None] = object,
|
||||||
|
entities: List["types.MessageEntity"] = None,
|
||||||
disable_web_page_preview: bool = None,
|
disable_web_page_preview: bool = None,
|
||||||
reply_markup: "types.InlineKeyboardMarkup" = None
|
reply_markup: "types.InlineKeyboardMarkup" = None
|
||||||
) -> "Message":
|
) -> "Message":
|
||||||
@ -2501,6 +2542,9 @@ class Message(Object, Update):
|
|||||||
Pass "html" to enable HTML-style parsing only.
|
Pass "html" to enable HTML-style parsing only.
|
||||||
Pass None to completely disable style parsing.
|
Pass None to completely disable style parsing.
|
||||||
|
|
||||||
|
entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||||
|
List of special entities that appear in message text, which can be specified instead of __parse_mode__.
|
||||||
|
|
||||||
disable_web_page_preview (``bool``, *optional*):
|
disable_web_page_preview (``bool``, *optional*):
|
||||||
Disables link previews for links in this message.
|
Disables link previews for links in this message.
|
||||||
|
|
||||||
@ -2518,6 +2562,7 @@ class Message(Object, Update):
|
|||||||
message_id=self.message_id,
|
message_id=self.message_id,
|
||||||
text=text,
|
text=text,
|
||||||
parse_mode=parse_mode,
|
parse_mode=parse_mode,
|
||||||
|
entities=entities,
|
||||||
disable_web_page_preview=disable_web_page_preview,
|
disable_web_page_preview=disable_web_page_preview,
|
||||||
reply_markup=reply_markup
|
reply_markup=reply_markup
|
||||||
)
|
)
|
||||||
@ -2528,6 +2573,7 @@ class Message(Object, Update):
|
|||||||
self,
|
self,
|
||||||
caption: str,
|
caption: str,
|
||||||
parse_mode: Union[str, None] = object,
|
parse_mode: Union[str, None] = object,
|
||||||
|
caption_entities: List["types.MessageEntity"] = None,
|
||||||
reply_markup: "types.InlineKeyboardMarkup" = None
|
reply_markup: "types.InlineKeyboardMarkup" = None
|
||||||
) -> "Message":
|
) -> "Message":
|
||||||
"""Bound method *edit_caption* of :obj:`~pyrogram.types.Message`.
|
"""Bound method *edit_caption* of :obj:`~pyrogram.types.Message`.
|
||||||
@ -2558,6 +2604,9 @@ class Message(Object, Update):
|
|||||||
Pass "html" to enable HTML-style parsing only.
|
Pass "html" to enable HTML-style parsing only.
|
||||||
Pass None to completely disable style parsing.
|
Pass None to completely disable style parsing.
|
||||||
|
|
||||||
|
caption_entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||||
|
List of special entities that appear in the caption, which can be specified instead of __parse_mode__.
|
||||||
|
|
||||||
reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup`, *optional*):
|
reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup`, *optional*):
|
||||||
An InlineKeyboardMarkup object.
|
An InlineKeyboardMarkup object.
|
||||||
|
|
||||||
@ -2572,6 +2621,7 @@ class Message(Object, Update):
|
|||||||
message_id=self.message_id,
|
message_id=self.message_id,
|
||||||
caption=caption,
|
caption=caption,
|
||||||
parse_mode=parse_mode,
|
parse_mode=parse_mode,
|
||||||
|
caption_entities=caption_entities,
|
||||||
reply_markup=reply_markup
|
reply_markup=reply_markup
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -16,12 +16,60 @@
|
|||||||
# You should have received a copy of the GNU Lesser General Public License
|
# You should have received a copy of the GNU Lesser General Public License
|
||||||
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
from enum import Enum, auto
|
||||||
|
|
||||||
import pyrogram
|
import pyrogram
|
||||||
from pyrogram import raw
|
from pyrogram import raw
|
||||||
from pyrogram import types
|
from pyrogram import types
|
||||||
from ..object import Object
|
from ..object import Object
|
||||||
|
|
||||||
|
|
||||||
|
class AutoName(Enum):
|
||||||
|
def _generate_next_value_(self, *args):
|
||||||
|
return self.lower()
|
||||||
|
|
||||||
|
|
||||||
|
class MessageEntityType(AutoName):
|
||||||
|
MENTION = auto()
|
||||||
|
HASHTAG = auto()
|
||||||
|
CASHTAG = auto()
|
||||||
|
BOT_COMMAND = auto()
|
||||||
|
URL = auto()
|
||||||
|
EMAIL = auto()
|
||||||
|
PHONE_NUMBER = auto()
|
||||||
|
BOLD = auto()
|
||||||
|
ITALIC = auto()
|
||||||
|
UNDERLINE = auto()
|
||||||
|
STRIKETHROUGH = auto()
|
||||||
|
CODE = auto()
|
||||||
|
PRE = auto()
|
||||||
|
TEXT_LINK = auto()
|
||||||
|
TEXT_MENTION = auto()
|
||||||
|
BLOCKQUOTE = auto()
|
||||||
|
|
||||||
|
|
||||||
|
RAW_ENTITIES_TO_TYPE = {
|
||||||
|
raw.types.MessageEntityMention: MessageEntityType.MENTION,
|
||||||
|
raw.types.MessageEntityHashtag: MessageEntityType.HASHTAG,
|
||||||
|
raw.types.MessageEntityCashtag: MessageEntityType.CASHTAG,
|
||||||
|
raw.types.MessageEntityBotCommand: MessageEntityType.BOT_COMMAND,
|
||||||
|
raw.types.MessageEntityUrl: MessageEntityType.URL,
|
||||||
|
raw.types.MessageEntityEmail: MessageEntityType.EMAIL,
|
||||||
|
raw.types.MessageEntityBold: MessageEntityType.BOLD,
|
||||||
|
raw.types.MessageEntityItalic: MessageEntityType.ITALIC,
|
||||||
|
raw.types.MessageEntityCode: MessageEntityType.CODE,
|
||||||
|
raw.types.MessageEntityPre: MessageEntityType.PRE,
|
||||||
|
raw.types.MessageEntityUnderline: MessageEntityType.UNDERLINE,
|
||||||
|
raw.types.MessageEntityStrike: MessageEntityType.STRIKETHROUGH,
|
||||||
|
raw.types.MessageEntityBlockquote: MessageEntityType.BLOCKQUOTE,
|
||||||
|
raw.types.MessageEntityTextUrl: MessageEntityType.TEXT_LINK,
|
||||||
|
raw.types.MessageEntityMentionName: MessageEntityType.TEXT_MENTION,
|
||||||
|
raw.types.MessageEntityPhone: MessageEntityType.PHONE_NUMBER
|
||||||
|
}
|
||||||
|
|
||||||
|
TYPE_TO_RAW_ENTITIES = {v.value: k for k, v in RAW_ENTITIES_TO_TYPE.items()}
|
||||||
|
|
||||||
|
|
||||||
class MessageEntity(Object):
|
class MessageEntity(Object):
|
||||||
"""One special entity in a text message.
|
"""One special entity in a text message.
|
||||||
For example, hashtags, usernames, URLs, etc.
|
For example, hashtags, usernames, URLs, etc.
|
||||||
@ -29,9 +77,12 @@ class MessageEntity(Object):
|
|||||||
Parameters:
|
Parameters:
|
||||||
type (``str``):
|
type (``str``):
|
||||||
Type of the entity.
|
Type of the entity.
|
||||||
Can be "mention" (@username), "hashtag", "cashtag", "bot_command", "url", "email", "phone_number", "bold"
|
Can be "mention" (``@username``), "hashtag" (``#hashtag``), "cashtag" (``$PYRO``),
|
||||||
(bold text), "italic" (italic text), "code" (monowidth string), "pre" (monowidth block), "text_link"
|
"bot_command" (``/start@pyrogrambot``), "url" (``https://pyrogram.org``),
|
||||||
(for clickable text URLs), "text_mention" (for custom text mentions based on users' identifiers).
|
"email" (``do-not-reply@pyrogram.org``), "phone_number" (``+1-420-069-1337``), "bold" (**bold text**),
|
||||||
|
"italic" (*italic text*), "underline" (underlined text), "strikethrough" (strikethrough text),
|
||||||
|
"code" (monowidth string), "pre" (monowidth block), "text_link" (for clickable text URLs),
|
||||||
|
"text_mention" (for users without usernames).
|
||||||
|
|
||||||
offset (``int``):
|
offset (``int``):
|
||||||
Offset in UTF-16 code units to the start of the entity.
|
Offset in UTF-16 code units to the start of the entity.
|
||||||
@ -44,26 +95,10 @@ class MessageEntity(Object):
|
|||||||
|
|
||||||
user (:obj:`~pyrogram.types.User`, *optional*):
|
user (:obj:`~pyrogram.types.User`, *optional*):
|
||||||
For "text_mention" only, the mentioned user.
|
For "text_mention" only, the mentioned user.
|
||||||
"""
|
|
||||||
|
|
||||||
ENTITIES = {
|
language (``str``. *optional*):
|
||||||
raw.types.MessageEntityMention.ID: "mention",
|
For "pre" only, the programming language of the entity text.
|
||||||
raw.types.MessageEntityHashtag.ID: "hashtag",
|
"""
|
||||||
raw.types.MessageEntityCashtag.ID: "cashtag",
|
|
||||||
raw.types.MessageEntityBotCommand.ID: "bot_command",
|
|
||||||
raw.types.MessageEntityUrl.ID: "url",
|
|
||||||
raw.types.MessageEntityEmail.ID: "email",
|
|
||||||
raw.types.MessageEntityBold.ID: "bold",
|
|
||||||
raw.types.MessageEntityItalic.ID: "italic",
|
|
||||||
raw.types.MessageEntityCode.ID: "code",
|
|
||||||
raw.types.MessageEntityPre.ID: "pre",
|
|
||||||
raw.types.MessageEntityUnderline.ID: "underline",
|
|
||||||
raw.types.MessageEntityStrike.ID: "strike",
|
|
||||||
raw.types.MessageEntityBlockquote.ID: "blockquote",
|
|
||||||
raw.types.MessageEntityTextUrl.ID: "text_link",
|
|
||||||
raw.types.MessageEntityMentionName.ID: "text_mention",
|
|
||||||
raw.types.MessageEntityPhone.ID: "phone_number"
|
|
||||||
}
|
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
@ -73,7 +108,8 @@ class MessageEntity(Object):
|
|||||||
offset: int,
|
offset: int,
|
||||||
length: int,
|
length: int,
|
||||||
url: str = None,
|
url: str = None,
|
||||||
user: "types.User" = None
|
user: "types.User" = None,
|
||||||
|
language: str = None
|
||||||
):
|
):
|
||||||
super().__init__(client)
|
super().__init__(client)
|
||||||
|
|
||||||
@ -82,19 +118,49 @@ class MessageEntity(Object):
|
|||||||
self.length = length
|
self.length = length
|
||||||
self.url = url
|
self.url = url
|
||||||
self.user = user
|
self.user = user
|
||||||
|
self.language = language
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _parse(client, entity, users: dict) -> "MessageEntity" or None:
|
def _parse(client, entity, users: dict) -> "MessageEntity" or None:
|
||||||
type = MessageEntity.ENTITIES.get(entity.ID, None)
|
type = RAW_ENTITIES_TO_TYPE.get(entity.__class__, None)
|
||||||
|
|
||||||
if type is None:
|
if type is None:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
return MessageEntity(
|
return MessageEntity(
|
||||||
type=type,
|
type=type.value,
|
||||||
offset=entity.offset,
|
offset=entity.offset,
|
||||||
length=entity.length,
|
length=entity.length,
|
||||||
url=getattr(entity, "url", None),
|
url=getattr(entity, "url", None),
|
||||||
user=types.User._parse(client, users.get(getattr(entity, "user_id", None), None)),
|
user=types.User._parse(client, users.get(getattr(entity, "user_id", None), None)),
|
||||||
|
language=getattr(entity, "language", None),
|
||||||
client=client
|
client=client
|
||||||
)
|
)
|
||||||
|
|
||||||
|
async def write(self):
|
||||||
|
args = self.__dict__.copy()
|
||||||
|
|
||||||
|
for arg in ("_client", "type", "user"):
|
||||||
|
args.pop(arg)
|
||||||
|
|
||||||
|
if self.user:
|
||||||
|
args["user_id"] = await self._client.resolve_peer(self.user.id)
|
||||||
|
|
||||||
|
if not self.url:
|
||||||
|
args.pop("url")
|
||||||
|
|
||||||
|
if self.language is None:
|
||||||
|
args.pop("language")
|
||||||
|
|
||||||
|
try:
|
||||||
|
entity = TYPE_TO_RAW_ENTITIES[self.type]
|
||||||
|
|
||||||
|
if entity is raw.types.MessageEntityMentionName:
|
||||||
|
entity = raw.types.InputMessageEntityMentionName
|
||||||
|
except KeyError as e:
|
||||||
|
raise ValueError(f"Invalid message entity type {e}")
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
return entity(**args)
|
||||||
|
except TypeError as e:
|
||||||
|
raise TypeError(f"{entity.QUALNAME}'s {e}")
|
||||||
|
@ -24,9 +24,9 @@ import os
|
|||||||
import struct
|
import struct
|
||||||
from concurrent.futures.thread import ThreadPoolExecutor
|
from concurrent.futures.thread import ThreadPoolExecutor
|
||||||
from getpass import getpass
|
from getpass import getpass
|
||||||
from typing import List
|
from typing import Union, List, Dict
|
||||||
from typing import Union
|
|
||||||
|
|
||||||
|
import pyrogram
|
||||||
from pyrogram import raw
|
from pyrogram import raw
|
||||||
from pyrogram import types
|
from pyrogram import types
|
||||||
from pyrogram.file_id import FileId, FileType, PHOTO_TYPES, DOCUMENT_TYPES
|
from pyrogram.file_id import FileId, FileType, PHOTO_TYPES, DOCUMENT_TYPES
|
||||||
@ -294,3 +294,24 @@ def compute_password_check(r: raw.types.account.Password, password: str) -> raw.
|
|||||||
)
|
)
|
||||||
|
|
||||||
return raw.types.InputCheckPasswordSRP(srp_id=srp_id, A=A_bytes, M1=M1_bytes)
|
return raw.types.InputCheckPasswordSRP(srp_id=srp_id, A=A_bytes, M1=M1_bytes)
|
||||||
|
|
||||||
|
|
||||||
|
async def parse_text_entities(
|
||||||
|
client: "pyrogram.Client",
|
||||||
|
text: str,
|
||||||
|
parse_mode: str,
|
||||||
|
entities: List["types.MessageEntity"]
|
||||||
|
) -> Dict[str, raw.base.MessageEntity]:
|
||||||
|
if entities:
|
||||||
|
# Inject the client instance because parsing user mentions requires it
|
||||||
|
for entity in entities:
|
||||||
|
entity._client = client
|
||||||
|
|
||||||
|
text, entities = text, [await entity.write() for entity in entities]
|
||||||
|
else:
|
||||||
|
text, entities = (await client.parser.parse(text, parse_mode)).values()
|
||||||
|
|
||||||
|
return {
|
||||||
|
"message": text,
|
||||||
|
"entities": entities
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user