mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
Fix MessageEntity serialization for API calls #457
This commit is contained in:
parent
b170bbc5f6
commit
d0bfa8a13b
2 changed files with 43 additions and 9 deletions
|
|
@ -310,6 +310,7 @@ class Bot(BaseBot, DataMixin, ContextInstanceMixin):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
reply_markup = prepare_arg(reply_markup)
|
reply_markup = prepare_arg(reply_markup)
|
||||||
|
entities = prepare_arg(entities)
|
||||||
payload = generate_payload(**locals())
|
payload = generate_payload(**locals())
|
||||||
if self.parse_mode:
|
if self.parse_mode:
|
||||||
payload.setdefault('parse_mode', self.parse_mode)
|
payload.setdefault('parse_mode', self.parse_mode)
|
||||||
|
|
@ -410,6 +411,7 @@ class Bot(BaseBot, DataMixin, ContextInstanceMixin):
|
||||||
:rtype: :obj:`types.Message`
|
:rtype: :obj:`types.Message`
|
||||||
"""
|
"""
|
||||||
reply_markup = prepare_arg(reply_markup)
|
reply_markup = prepare_arg(reply_markup)
|
||||||
|
caption_entities = prepare_arg(caption_entities)
|
||||||
payload = generate_payload(**locals())
|
payload = generate_payload(**locals())
|
||||||
|
|
||||||
if self.parse_mode:
|
if self.parse_mode:
|
||||||
|
|
@ -473,6 +475,7 @@ class Bot(BaseBot, DataMixin, ContextInstanceMixin):
|
||||||
:rtype: :obj:`types.Message`
|
:rtype: :obj:`types.Message`
|
||||||
"""
|
"""
|
||||||
reply_markup = prepare_arg(reply_markup)
|
reply_markup = prepare_arg(reply_markup)
|
||||||
|
caption_entities = prepare_arg(caption_entities)
|
||||||
payload = generate_payload(**locals(), exclude=['photo'])
|
payload = generate_payload(**locals(), exclude=['photo'])
|
||||||
if self.parse_mode:
|
if self.parse_mode:
|
||||||
payload.setdefault('parse_mode', self.parse_mode)
|
payload.setdefault('parse_mode', self.parse_mode)
|
||||||
|
|
@ -557,6 +560,7 @@ class Bot(BaseBot, DataMixin, ContextInstanceMixin):
|
||||||
:rtype: :obj:`types.Message`
|
:rtype: :obj:`types.Message`
|
||||||
"""
|
"""
|
||||||
reply_markup = prepare_arg(reply_markup)
|
reply_markup = prepare_arg(reply_markup)
|
||||||
|
caption_entities = prepare_arg(caption_entities)
|
||||||
payload = generate_payload(**locals(), exclude=['audio', 'thumb'])
|
payload = generate_payload(**locals(), exclude=['audio', 'thumb'])
|
||||||
if self.parse_mode:
|
if self.parse_mode:
|
||||||
payload.setdefault('parse_mode', self.parse_mode)
|
payload.setdefault('parse_mode', self.parse_mode)
|
||||||
|
|
@ -641,6 +645,7 @@ class Bot(BaseBot, DataMixin, ContextInstanceMixin):
|
||||||
:rtype: :obj:`types.Message`
|
:rtype: :obj:`types.Message`
|
||||||
"""
|
"""
|
||||||
reply_markup = prepare_arg(reply_markup)
|
reply_markup = prepare_arg(reply_markup)
|
||||||
|
caption_entities = prepare_arg(caption_entities)
|
||||||
payload = generate_payload(**locals(), exclude=['document'])
|
payload = generate_payload(**locals(), exclude=['document'])
|
||||||
if self.parse_mode:
|
if self.parse_mode:
|
||||||
payload.setdefault('parse_mode', self.parse_mode)
|
payload.setdefault('parse_mode', self.parse_mode)
|
||||||
|
|
@ -726,6 +731,7 @@ class Bot(BaseBot, DataMixin, ContextInstanceMixin):
|
||||||
:rtype: :obj:`types.Message`
|
:rtype: :obj:`types.Message`
|
||||||
"""
|
"""
|
||||||
reply_markup = prepare_arg(reply_markup)
|
reply_markup = prepare_arg(reply_markup)
|
||||||
|
caption_entities = prepare_arg(caption_entities)
|
||||||
payload = generate_payload(**locals(), exclude=['video', 'thumb'])
|
payload = generate_payload(**locals(), exclude=['video', 'thumb'])
|
||||||
if self.parse_mode:
|
if self.parse_mode:
|
||||||
payload.setdefault('parse_mode', self.parse_mode)
|
payload.setdefault('parse_mode', self.parse_mode)
|
||||||
|
|
@ -815,6 +821,7 @@ class Bot(BaseBot, DataMixin, ContextInstanceMixin):
|
||||||
:rtype: :obj:`types.Message`
|
:rtype: :obj:`types.Message`
|
||||||
"""
|
"""
|
||||||
reply_markup = prepare_arg(reply_markup)
|
reply_markup = prepare_arg(reply_markup)
|
||||||
|
caption_entities = prepare_arg(caption_entities)
|
||||||
payload = generate_payload(**locals(), exclude=["animation", "thumb"])
|
payload = generate_payload(**locals(), exclude=["animation", "thumb"])
|
||||||
if self.parse_mode:
|
if self.parse_mode:
|
||||||
payload.setdefault('parse_mode', self.parse_mode)
|
payload.setdefault('parse_mode', self.parse_mode)
|
||||||
|
|
@ -889,6 +896,7 @@ class Bot(BaseBot, DataMixin, ContextInstanceMixin):
|
||||||
:rtype: :obj:`types.Message`
|
:rtype: :obj:`types.Message`
|
||||||
"""
|
"""
|
||||||
reply_markup = prepare_arg(reply_markup)
|
reply_markup = prepare_arg(reply_markup)
|
||||||
|
caption_entities = prepare_arg(caption_entities)
|
||||||
payload = generate_payload(**locals(), exclude=['voice'])
|
payload = generate_payload(**locals(), exclude=['voice'])
|
||||||
if self.parse_mode:
|
if self.parse_mode:
|
||||||
payload.setdefault('parse_mode', self.parse_mode)
|
payload.setdefault('parse_mode', self.parse_mode)
|
||||||
|
|
@ -1413,6 +1421,7 @@ class Bot(BaseBot, DataMixin, ContextInstanceMixin):
|
||||||
:rtype: :obj:`types.Message`
|
:rtype: :obj:`types.Message`
|
||||||
"""
|
"""
|
||||||
options = prepare_arg(options)
|
options = prepare_arg(options)
|
||||||
|
explanation_entities = prepare_arg(explanation_entities)
|
||||||
open_period = prepare_arg(open_period)
|
open_period = prepare_arg(open_period)
|
||||||
close_date = prepare_arg(close_date)
|
close_date = prepare_arg(close_date)
|
||||||
payload = generate_payload(**locals())
|
payload = generate_payload(**locals())
|
||||||
|
|
@ -2199,6 +2208,7 @@ class Bot(BaseBot, DataMixin, ContextInstanceMixin):
|
||||||
:rtype: :obj:`typing.Union[types.Message, base.Boolean]`
|
:rtype: :obj:`typing.Union[types.Message, base.Boolean]`
|
||||||
"""
|
"""
|
||||||
reply_markup = prepare_arg(reply_markup)
|
reply_markup = prepare_arg(reply_markup)
|
||||||
|
entities = prepare_arg(entities)
|
||||||
payload = generate_payload(**locals())
|
payload = generate_payload(**locals())
|
||||||
if self.parse_mode:
|
if self.parse_mode:
|
||||||
payload.setdefault('parse_mode', self.parse_mode)
|
payload.setdefault('parse_mode', self.parse_mode)
|
||||||
|
|
@ -2250,6 +2260,7 @@ class Bot(BaseBot, DataMixin, ContextInstanceMixin):
|
||||||
:rtype: :obj:`typing.Union[types.Message, base.Boolean]`
|
:rtype: :obj:`typing.Union[types.Message, base.Boolean]`
|
||||||
"""
|
"""
|
||||||
reply_markup = prepare_arg(reply_markup)
|
reply_markup = prepare_arg(reply_markup)
|
||||||
|
caption_entities = prepare_arg(caption_entities)
|
||||||
payload = generate_payload(**locals())
|
payload = generate_payload(**locals())
|
||||||
if self.parse_mode:
|
if self.parse_mode:
|
||||||
payload.setdefault('parse_mode', self.parse_mode)
|
payload.setdefault('parse_mode', self.parse_mode)
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,9 @@
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from . import base
|
|
||||||
from . import fields
|
|
||||||
from .user import User
|
|
||||||
from ..utils import helper, markdown
|
from ..utils import helper, markdown
|
||||||
from ..utils.deprecated import deprecated
|
from ..utils.deprecated import deprecated
|
||||||
|
from . import base, fields
|
||||||
|
from .user import User
|
||||||
|
|
||||||
|
|
||||||
class MessageEntity(base.TelegramObject):
|
class MessageEntity(base.TelegramObject):
|
||||||
|
|
@ -13,6 +12,7 @@ class MessageEntity(base.TelegramObject):
|
||||||
|
|
||||||
https://core.telegram.org/bots/api#messageentity
|
https://core.telegram.org/bots/api#messageentity
|
||||||
"""
|
"""
|
||||||
|
|
||||||
type: base.String = fields.Field()
|
type: base.String = fields.Field()
|
||||||
offset: base.Integer = fields.Field()
|
offset: base.Integer = fields.Field()
|
||||||
length: base.Integer = fields.Field()
|
length: base.Integer = fields.Field()
|
||||||
|
|
@ -20,6 +20,26 @@ class MessageEntity(base.TelegramObject):
|
||||||
user: User = fields.Field(base=User)
|
user: User = fields.Field(base=User)
|
||||||
language: base.String = fields.Field()
|
language: base.String = fields.Field()
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
type: base.String,
|
||||||
|
offset: base.Integer,
|
||||||
|
length: base.Integer,
|
||||||
|
url: base.String = None,
|
||||||
|
user: User = None,
|
||||||
|
language: base.String = None,
|
||||||
|
**kwargs
|
||||||
|
):
|
||||||
|
super().__init__(
|
||||||
|
type=type,
|
||||||
|
offset=offset,
|
||||||
|
length=length,
|
||||||
|
url=url,
|
||||||
|
user=user,
|
||||||
|
language=language,
|
||||||
|
**kwargs
|
||||||
|
)
|
||||||
|
|
||||||
def get_text(self, text):
|
def get_text(self, text):
|
||||||
"""
|
"""
|
||||||
Get value of entity
|
Get value of entity
|
||||||
|
|
@ -27,18 +47,20 @@ class MessageEntity(base.TelegramObject):
|
||||||
:param text: full text
|
:param text: full text
|
||||||
:return: part of text
|
:return: part of text
|
||||||
"""
|
"""
|
||||||
if sys.maxunicode == 0xffff:
|
if sys.maxunicode == 0xFFFF:
|
||||||
return text[self.offset:self.offset + self.length]
|
return text[self.offset : self.offset + self.length]
|
||||||
|
|
||||||
if not isinstance(text, bytes):
|
if not isinstance(text, bytes):
|
||||||
entity_text = text.encode('utf-16-le')
|
entity_text = text.encode("utf-16-le")
|
||||||
else:
|
else:
|
||||||
entity_text = text
|
entity_text = text
|
||||||
|
|
||||||
entity_text = entity_text[self.offset * 2:(self.offset + self.length) * 2]
|
entity_text = entity_text[self.offset * 2 : (self.offset + self.length) * 2]
|
||||||
return entity_text.decode('utf-16-le')
|
return entity_text.decode("utf-16-le")
|
||||||
|
|
||||||
@deprecated("This method doesn't work with nested entities and will be removed in aiogram 3.0")
|
@deprecated(
|
||||||
|
"This method doesn't work with nested entities and will be removed in aiogram 3.0"
|
||||||
|
)
|
||||||
def parse(self, text, as_html=True):
|
def parse(self, text, as_html=True):
|
||||||
"""
|
"""
|
||||||
Get entity value with markup
|
Get entity value with markup
|
||||||
|
|
@ -95,6 +117,7 @@ class MessageEntityType(helper.Helper):
|
||||||
:key: TEXT_LINK
|
:key: TEXT_LINK
|
||||||
:key: TEXT_MENTION
|
:key: TEXT_MENTION
|
||||||
"""
|
"""
|
||||||
|
|
||||||
mode = helper.HelperMode.snake_case
|
mode = helper.HelperMode.snake_case
|
||||||
|
|
||||||
MENTION = helper.Item() # mention - @username
|
MENTION = helper.Item() # mention - @username
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue