Skip to main content

Convert Telegram MarkdownV2 text to LINE Flex Messages

Project description

tg-markdown-to-flex

Convert Telegram MarkdownV2 text to LINE Flex Messages.

Available as both a Rust crate and a Python package (via PyO3).

What it does

Takes a string with Telegram MarkdownV2 formatting and produces a LINE Flex Message JSON — a bubble with styled text spans, code blocks, and link buttons.

Formatting mapping

Telegram MarkdownV2 LINE Flex
*bold* span weight: "bold"
_italic_ span style: "italic"
__underline__ span decoration: "underline"
~strikethrough~ span decoration: "line-through"
`inline code` span with red color, small size
```code block``` separate text component, red/small
||spoiler|| span with near-white color
[text](url) link button (see below)

Smart link dedup

By default, links at the end of a line are rendered as a button in the message body (with a separator and grey background), avoiding duplication. Links in the middle of text still get an inline blue/underlined span plus a footer button.

This behavior is configurable — see the options below.

Python

Requires Python 3.13+.

Installation

uv add tg-markdown-to-flex

# or
pip install tg-markdown-to-flex

Usage

import json
from tg_markdown_to_flex import tg_markdown_to_flex

flex_json = tg_markdown_to_flex("Hello *bold* and _italic_ with [a link](https://example.com)")
message = json.loads(flex_json)

# Send via LINE Messaging API
# line_bot_api.push_message(to, FlexMessage(alt_text=message["altText"], contents=message["contents"]))

The function returns a JSON string representing a complete Flex Message (type "flex" with altText and contents).

Options

tg_markdown_to_flex(
    text,
    *,
    standalone_links_as_buttons=True,  # dedup trailing links as body buttons
    decorate_links=True,               # blue/underline styling on inline links
)

Type checking

The package ships with PEP 561 type stubs.

Rust

Installation

[dependencies]
tg-markdown-to-flex = "0.3.0"

Usage

use tg_markdown_to_flex::{tg_markdown_to_flex, tg_markdown_to_flex_json};

// Get a FlexMessage struct
let message = tg_markdown_to_flex("Hello *world*");

// Or get JSON directly
let json = tg_markdown_to_flex_json("Hello *world*");

With options:

use tg_markdown_to_flex::{tg_markdown_to_flex_with_options, ConvertOptions};

let options = ConvertOptions {
    standalone_links_as_buttons: false,
    decorate_links: false,
};
let message = tg_markdown_to_flex_with_options("Hello *world*", &options);

Testing

cargo nextest run

License

MIT

Project details


Download files

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

Source Distribution

tg_markdown_to_flex-0.3.0.tar.gz (21.1 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

tg_markdown_to_flex-0.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (256.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

tg_markdown_to_flex-0.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (250.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

tg_markdown_to_flex-0.3.0-cp313-cp313-macosx_11_0_arm64.whl (223.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tg_markdown_to_flex-0.3.0-cp313-cp313-macosx_10_12_x86_64.whl (226.1 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

File details

Details for the file tg_markdown_to_flex-0.3.0.tar.gz.

File metadata

  • Download URL: tg_markdown_to_flex-0.3.0.tar.gz
  • Upload date:
  • Size: 21.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for tg_markdown_to_flex-0.3.0.tar.gz
Algorithm Hash digest
SHA256 8d4e2f25cedb1d6ae85233ba4eb6e9e568d331b33698e7889b76a14efd673c24
MD5 ed8c33c7204594fbd153d22af8b465da
BLAKE2b-256 af2d75158dc3a3255c6627a0d22e73c85348afceb60e6e22f7f4d4112d86ae94

See more details on using hashes here.

File details

Details for the file tg_markdown_to_flex-0.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: tg_markdown_to_flex-0.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 256.3 kB
  • Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for tg_markdown_to_flex-0.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 eb6c57bfacf6a99e92eb32569f9f442e71cf0496d06a74051c2140dd90cf3627
MD5 842257fd0fae762b2e375c536e2706f6
BLAKE2b-256 9db99a0656e2327e67fcf7bf0383841467699797aaf5858fa60b65cd0ce3c80a

See more details on using hashes here.

File details

Details for the file tg_markdown_to_flex-0.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: tg_markdown_to_flex-0.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 250.5 kB
  • Tags: CPython 3.13, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for tg_markdown_to_flex-0.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b35a8a4ded1c62988c8768bfc6ae0388f7c2f428facf478e1bddd291989d8df8
MD5 0940a803f20c8b85be51e273795dc5ae
BLAKE2b-256 7815db00f3809232368061a2e4235565776ace221ee2671405aa7f644ff5cae1

See more details on using hashes here.

File details

Details for the file tg_markdown_to_flex-0.3.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

  • Download URL: tg_markdown_to_flex-0.3.0-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 223.9 kB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for tg_markdown_to_flex-0.3.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 95237527a1aee2b156e6900694cf1af2dc6d5fb10ebdd88f515bfbaee2052999
MD5 196c7e1a6cda32b895dfa74727965ad2
BLAKE2b-256 6430f91882093ee35d76c83ba87f20f2439c3907214ed7588ad0efa92f7d6455

See more details on using hashes here.

File details

Details for the file tg_markdown_to_flex-0.3.0-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: tg_markdown_to_flex-0.3.0-cp313-cp313-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 226.1 kB
  • Tags: CPython 3.13, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for tg_markdown_to_flex-0.3.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 739472737fb18b4241952000650122a03e99569a866471df4f8763ccefad6836
MD5 cbd53019b5908068e529490808856cab
BLAKE2b-256 689ab33776517a71cb4da5675651912dab198719f5612f23185554ffef048242

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page