mirror of
https://github.com/aiogram/aiogram.git
synced 2025-12-12 18:19:34 +00:00
Add message entity
This commit is contained in:
parent
9d0f3fa65d
commit
d154d7c1e9
2 changed files with 52 additions and 2 deletions
|
|
@ -2,6 +2,7 @@ import datetime
|
|||
|
||||
from aiogram.types import Deserializable
|
||||
from aiogram.types.chat import Chat
|
||||
from aiogram.types.message_entity import MessageEntity
|
||||
from aiogram.types.user import User
|
||||
|
||||
|
||||
|
|
@ -33,8 +34,8 @@ class Message(Deserializable):
|
|||
self.reply_to_message: Message = reply_to_message
|
||||
self.edit_date: datetime.datetime = edit_date
|
||||
self.text: str = text
|
||||
|
||||
self.entities = entities
|
||||
|
||||
self.audio = audio
|
||||
self.document = document
|
||||
self.game = game
|
||||
|
|
@ -78,6 +79,10 @@ class Message(Deserializable):
|
|||
def _parse_message(cls, message):
|
||||
return Message.de_json(message) if message else None
|
||||
|
||||
@classmethod
|
||||
def _parse_entities(cls, entities):
|
||||
return [MessageEntity.de_json(entity) for entity in entities] if entities else None
|
||||
|
||||
@classmethod
|
||||
def de_json(cls, data):
|
||||
data = cls.check_json(data)
|
||||
|
|
@ -93,8 +98,8 @@ class Message(Deserializable):
|
|||
reply_to_message = cls._parse_message(data.get('reply_to_message', {}))
|
||||
edit_date = cls._parse_date(data.get('edit_date', 0))
|
||||
text = data.get('text')
|
||||
entities = cls._parse_entities(data.get('entities'))
|
||||
|
||||
entities = data.get('entities')
|
||||
audio = data.get('audio')
|
||||
document = data.get('document')
|
||||
game = data.get('game')
|
||||
|
|
|
|||
45
aiogram/types/message_entity.py
Normal file
45
aiogram/types/message_entity.py
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
from aiogram.types import Deserializable
|
||||
from aiogram.types.user import User
|
||||
|
||||
|
||||
class MessageEntity(Deserializable):
|
||||
__slots__ = ('data', 'type', 'offset', 'length', 'url', 'user')
|
||||
|
||||
def __init__(self, data, type, offset, length, url, user):
|
||||
self.data = data
|
||||
|
||||
self.type = type
|
||||
self.offset = offset
|
||||
self.length = length
|
||||
self.url = url
|
||||
self.user = user
|
||||
|
||||
@classmethod
|
||||
def _parse_user(cls, user):
|
||||
return User.de_json(user) if user else None
|
||||
|
||||
@classmethod
|
||||
def de_json(cls, data):
|
||||
data = cls.check_json(data)
|
||||
|
||||
type = data.get('type')
|
||||
offset = data.get('offset')
|
||||
length = data.get('length')
|
||||
url = data.get('url')
|
||||
user = cls._parse_user(data.get('user'))
|
||||
|
||||
return MessageEntity(data, type, offset, length, url, user)
|
||||
|
||||
|
||||
class MessageEntityType:
|
||||
MENTION = 'mention' # @username
|
||||
HASHTAG = 'hashtag'
|
||||
BOT_COMMAND = 'bot_command'
|
||||
URL = 'url'
|
||||
EMAIL = 'email'
|
||||
BOLD = 'bold' # bold text
|
||||
ITALIC = 'italic' # italic text
|
||||
CODE = 'code' # monowidth string
|
||||
PRE = 'pre' # monowidth block
|
||||
TEXT_LINK = 'text_link' # for clickable text URLs
|
||||
TEXT_MENTION = 'text_mention' # for users without usernames
|
||||
Loading…
Add table
Add a link
Reference in a new issue