Skip to main content
Join the official 2020 Python Developers SurveyStart the survey!

A small package handling telegram message copying preserving text entities

Project description

Telegram Message Copy (TeMeCo)

EO principles respected here Build Status codecov PyPI version

temeco is a simple Telegram message entities to html translator. Telegram Bot API makes it cumbersome fro bots to copy a user's message preserving its entities, since it is currently impossible for a bot to send entities directly along with a message, so it needs to translate a message with entities into HTML or Markdown.

This little package solves this problem and provides a convenient way to translate a message with entities to HTML.

TelegramUTF16Text class is also aware of the fact that Telegram calculates offsets for entities using UTF-16 encoding. This comes into play when text being copied contains symbols which have different lengths in UTF-8 and UTF-16 code units, like emojis.

Installation

pip install temeco

Usage:

from temeco.temeco import BasicEntity, TelegramUTF16Text, HtmlFromMsg

text = (
   "dolorem ipsum, quia dolor sit, 🔥🚒 amet, consectetur, adipisci velit, sed quia 🙃 non numquam eius modi"
   " tempora incidunt, 🙊\nut labore et dolore magnam aliquam quaerat voluptatem."
)
HtmlFromMsg(
   msg_txt=TelegramUTF16Text(text),
   entities=[
       BasicEntity(
           type="bold", offset=8, length=5, msg_text=TelegramUTF16Text(text)
       ),
       BasicEntity(
           type="code", offset=55, length=8, msg_text=TelegramUTF16Text(text)
       ),
       BasicEntity(
           type="text_link",
           offset=64,
           length=5,
           data={"url": "http://google.com/"},
           msg_text=TelegramUTF16Text(text),
       ),
       BasicEntity(
           type="italic",
           offset=153,
           length=7,
           msg_text=TelegramUTF16Text(text),
       ),
   ],
).as_str()

Note:

BasicEntity class supports the following types of entities:

  • bold
  • italic
  • text_link
  • code (monospace text)
  • pre (preformatted text)

Entities like hashtags and usernames are copied as is, since Telegram recognizes them without extra code.

You may create your own class implementing Entity interface and use it instead of BasicEntity.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for temeco, version 0.1.3
Filename, size File type Python version Upload date Hashes
Filename, size temeco-0.1.3-py3-none-any.whl (4.7 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size temeco-0.1.3.tar.gz (4.3 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page