这不是一个重复的问题。 我想在我的电报机器人中使用由 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);
}
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 <, > with > and & with &).
支持所有数字 HTML 实体。
API 目前仅支持以下命名 HTML 实体:
<, >, & and ".
如果需要使用html进行格式化,则需要将“parse_mode”设置为“html”;
https://api.telegram.org/bot1328912345:BBCCDDExVAKD2GOEA1mXWfXfhQ_z8Y6rRh8/sendmessage?chat_id=12345678&text=Sample message&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>
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