I need to send a message with premium emoji to a given entity using Telethon client. Telegram account connected to client has active premium subscription. Below is my python code:
await client.send_message(
entity="me",
message='<tg-emoji emoji-id="5301096984617166561">☝️</tg-emoji>',
parse_mode="html"
)
When I run it, instead of premium emoji with given id, regular emoji ☝️
is sent.
Why? What is the right way to send premium emoji inside message with html parse mode?
How to send premium emoji with Telethon client.
from telethon.extensions import html
from telethon import types
class CustomHtml:
@staticmethod
def parse(text):
text, entities = html.parse(text)
for i, e in enumerate(entities):
if isinstance(e, types.MessageEntityTextUrl):
if e.url == 'spoiler':
entities[i] = types.MessageEntitySpoiler(e.offset, e.length)
elif e.url.startswith('emoji/'):
entities[i] = types.MessageEntityCustomEmoji(e.offset, e.length, int(e.url.split('/')[1]))
return text, entities
@staticmethod
def unparse(text, entities):
for i, e in enumerate(entities or []):
if isinstance(e, types.MessageEntityCustomEmoji):
entities[i] = types.MessageEntityTextUrl(e.offset, e.length, f'emoji/{e.document_id}')
if isinstance(e, types.MessageEntitySpoiler):
entities[i] = types.MessageEntityTextUrl(e.offset, e.length, 'spoiler')
return html.unparse(text, entities)
client.parse_mode = CustomHtml()
emoji_text = '<a href="emoji/{emoji_id}">{emoji_symbol}</a>'
await client.send_message(
entity=entity,
message=emoji_text
)