在 Telegram 机器人中使用 HTML

问题描述 投票:0回答:4

这不是一个重复的问题。 我想在我的电报机器人中使用由 C# 编写的 html 代码。我在 SO 中搜索但没有找到任何答案。怎么做呢? 我使用 TelegramBotSharp。 这是与我解释的部分相关的代码:

MessageTarget target = (MessageTarget)update.Chat ?? update.From;     
if(Text.StartsWith("Hello")) {
    bot.SendMessage(target, "Hello <a href='http://google.com'> dear</a>", true);
}
c# telegram-bot
4个回答
10
投票
Use the following syntax in your message:

*bold text*

_italic text_

[inline URL](http://www.example.com/)

[inline mention of a user](tg://user?id=123456789)

pre-formatted fixed-width code block

注意: 目前仅支持上述标签。

标签不得嵌套。

所有不属于标签或 HTML 实体的 <, > 和 & 符号必须替换为相应的 HTML 实体

(< with &lt;, > with &gt; and & with &amp;).

支持所有数字 HTML 实体。

API 目前仅支持以下命名 HTML 实体:

&lt;, &gt;, &amp; and &quot;.


8
投票

HTML 模式

使用

HTML
时,在
parse_mode
字段中传递
sendMessage


8
投票

如果需要使用html进行格式化,则需要将“parse_mode”设置为“html”;

https://api.telegram.org/bot1328912345:BBCCDDExVAKD2GOEA1mXWfXfhQ_z8Y6rRh8/sendmessage?chat_id=12345678&amp;text=Sample message&amp;parse_mode=html)

目前 Bot 仅支持以下标签:

<b>bold</b>, <strong>bold</strong>
<i>italic</i>, <em>italic</em>
<u>underline</u>, <ins>underline</ins>
<s>strikethrough</s>, <strike>strikethrough</strike>, <del>strikethrough</del>
<b>bold <i>italic bold <s>italic bold strikethrough</s> <u>underline italic bold</u></i> bold</b>
<a href="http://www.example.com/">inline URL</a>
<a href="tg://user?id=123456789">inline mention of a user</a>
<code>inline fixed-width code</code>
<pre>pre-formatted fixed-width code block</pre>
<pre><code class="language-python">pre-formatted fixed-width code block written in the Python programming language</code></pre>

来源:https://core.telegram.org/bots/api#formatting-options


0
投票
    from bs4 import BeautifulSoup



def for_telegrtam_html_text_normalizer(text):
    soup = BeautifulSoup(text, 'lxml')
    text = soup.get_text().replace('<', '≺').replace('>', '≻')
    to_set_tags = ['b', 'strong', 'i', 'em', 'u', 'ins', 's', 'strike', 'del', 'tg-spoiler', 'a', 'code', 'pre', 'blockquote', 'blockquote expandable', 'tg-emoji', ]
    for tag in to_set_tags:
        if tag == 'a':
            elems = soup.find_all(tag, href=True)
        else:
            elems = soup.find_all(tag)
        for elem in elems:
            if tag == 'a':
                text = text.replace(elem.text, f'<{tag} href="{elem["href"]}">{elem.text}</{tag}>')
            elif tag == 'tg-emoji':
                try:
                    text = text.replace(elem.text, f'<{tag} emoji-id="{elem["emoji-id"]}">{elem.text}</{tag}>')  
                except:
                    pass
            elif tag == 'span':
                try:
                    cl_name = elem['class'][0]
                    if cl_name == "tg-spoiler":
                        text = text.replace(elem.text, f'<{tag} class="{cl_name}">{elem.text}</{tag}>')  
                except:
                    pass
            elif tag == 'code':
                try:
                    cl_name = elem['class'][0]
                except:
                    cl_name = None
                if cl_name:
                    text = text.replace(elem.text, f'<{tag} class="{cl_name}">{elem.text}</{tag}>')  
                else:
                    text = text.replace(elem.text, f'<{tag}>{elem.text}</{tag}>')
            else:
                text = text.replace(elem.text, f'<{tag}>{elem.text}</{tag}>')
    return text
© www.soinside.com 2019 - 2024. All rights reserved.