Coder Social home page Coder Social logo

entity's Introduction

@telegraf/entity Deno shield Bun shield NPM version

Convert Telegram entities to HTML or Markdown.

โš ๏ธ Before you start using this module, consider using copyMessage instead.

This module will produce Telegram-compatible HTML or MarkdownV2. However it is better to simply pass the text and entities back to Telegram rather than converting to HTML or Markdown.

This module is really for the rare cases where you want to convert Telegram-formatted text for consumption outside of Telegram.

npm install @telegraf/entity

Simple usage

Usage is very straightforward!

import { toHTML, toMarkdownV2 } from "@telegraf/entity";
// if Deno:
// import { toHTML, toMarkdownV2 } from "https://deno.land/x/telegraf_entity/mod.ts";

bot.on(message("text"), async ctx => {
	const html = toHTML(ctx.message); // convert text to HTML string
	const md = toMarkdownV2(ctx.message); // convert text to MarkdownV2 string
});

Both functions will also just work with captioned messages like photos or videos.

bot.on(message("photo"), async ctx => {
	const html = toHTML(ctx.message); // convert caption to HTML string
	const md = toMarkdownV2(ctx.message); // convert caption to MarkdownV2 string
});

You can also directly pass just a text and entities object:

toHTML({ text: '...', entities: [...] }); // HTML string

Advanced usage

toHTML and toMarkdown produce HTML or Markdown compatible with Telegram because it's a sensible default for a Telegram library. You may want to serialise differently, to target a different system. This module exposes a way to do this: serialiseWith.

To use this, you must first implement a serialiser with the following type:

import type { Serialiser } from "@telegraf/entity";

const myHTMLSerialiser: Serialiser (match, node) {
	// implement
}

Each matched node will be passed to your function, and you only need to wrap it however you want.

Refer to the implementation of the builtin serialisers for something you can simply copy-paste and edit to satisfaction.

The builtin escapers are also exported for your convenience:

import { escapers, type Escaper } from "@telegraf/entity";

escapers.HTML(text); // HTML escaped text
escapers.MarkdownV2(text); // escaped for Telegram's MarkdownV2

// or
const yourEscaper: Escaper = match => { /* implement */ };

By using both of these tools, you can implement your own HTML serialiser like so:

import { serialiseWith, escapers } from "@telegraf/entity";

const serialise = serialiseWith(myHTMLSerialiser, escapers.HTML);
serialise(ctx.message);

entity's People

Contributors

mkrhere avatar dcdunkan avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.