mirror of
https://github.com/aiogram/aiogram.git
synced 2025-12-12 10:11:52 +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 import Deserializable
|
||||||
from aiogram.types.chat import Chat
|
from aiogram.types.chat import Chat
|
||||||
|
from aiogram.types.message_entity import MessageEntity
|
||||||
from aiogram.types.user import User
|
from aiogram.types.user import User
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -33,8 +34,8 @@ class Message(Deserializable):
|
||||||
self.reply_to_message: Message = reply_to_message
|
self.reply_to_message: Message = reply_to_message
|
||||||
self.edit_date: datetime.datetime = edit_date
|
self.edit_date: datetime.datetime = edit_date
|
||||||
self.text: str = text
|
self.text: str = text
|
||||||
|
|
||||||
self.entities = entities
|
self.entities = entities
|
||||||
|
|
||||||
self.audio = audio
|
self.audio = audio
|
||||||
self.document = document
|
self.document = document
|
||||||
self.game = game
|
self.game = game
|
||||||
|
|
@ -78,6 +79,10 @@ class Message(Deserializable):
|
||||||
def _parse_message(cls, message):
|
def _parse_message(cls, message):
|
||||||
return Message.de_json(message) if message else None
|
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
|
@classmethod
|
||||||
def de_json(cls, data):
|
def de_json(cls, data):
|
||||||
data = cls.check_json(data)
|
data = cls.check_json(data)
|
||||||
|
|
@ -93,8 +98,8 @@ class Message(Deserializable):
|
||||||
reply_to_message = cls._parse_message(data.get('reply_to_message', {}))
|
reply_to_message = cls._parse_message(data.get('reply_to_message', {}))
|
||||||
edit_date = cls._parse_date(data.get('edit_date', 0))
|
edit_date = cls._parse_date(data.get('edit_date', 0))
|
||||||
text = data.get('text')
|
text = data.get('text')
|
||||||
|
entities = cls._parse_entities(data.get('entities'))
|
||||||
|
|
||||||
entities = data.get('entities')
|
|
||||||
audio = data.get('audio')
|
audio = data.get('audio')
|
||||||
document = data.get('document')
|
document = data.get('document')
|
||||||
game = data.get('game')
|
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