Add message entity

This commit is contained in:
Alex Root Junior 2017-05-19 23:39:40 +03:00
parent 9d0f3fa65d
commit d154d7c1e9
2 changed files with 52 additions and 2 deletions

View file

@ -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')

View 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