Telegram Bot 使用文档 (8)

要使用此模式,请在parse_mode字段中传递MarkdownV2。在您的消息中使用以下语法:

*bold \*text* _italic \*text_ __underline__ ~strikethrough~ *bold _italic bold ~italic bold strikethrough~ __underline italic bold___ bold* [inline URL]() [inline mention of a user](tg://user?id=123456789) `inline fixed-width code` ​``` pre-formatted fixed-width code block ​``` ​```python pre-formatted fixed-width code block written in the Python programming language ​```

请注意:

任何代码在1到126之间(含1和126)的字符都可以在任何带有\'\'字符的位置转义,在这种情况下,它将被视为普通字符,而不是标记的一部分。

在pre和code实体内部,所有\'`\'和\'\\'字符必须以前面的\'\\'字符转义。

内联链接定义的内部(...)部分,所有\')\'和\'\\'必须以前面的\'\\'字符转义

在其他所有地方这些字符 \'_\', \'*\', \'[\', \']\', \'(\', \')\', \'~\', \'`\', \'>\', \'#\', \'+\', \'-\', \'=\', \'|\', \'{\', \'}\', \'.\', \'!\' 必须用前置\'\\'转义

如果斜体和下划线之间存在歧义,__始终从左到右被视为下划线实体的开始或结尾,所以使用___italic underline_\r__代替___italic underline___

HTML style

要使用此模式,请在parse_mode字段中传递HTML。当前支持以下标签:

<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="http://www.likecs.com/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>pre-formatted fixed-width code block written in the Python programming language</code></pre>

请注意:

当前仅支持上述标签。

所有不属于标记或HTML实体的<,>和&符号必须替换为相应的HTML实体(< 用 &lt;, > 用 &gt;, & 用 &amp;)。

支持所有数字HTML实体。

该API当前仅支持以下命名的HTML实体: &lt;, &gt;, &amp; and &quot;。

使用嵌套的pre和code标签,为pre实体定义编程语言。

不能为独立code标签指定编程语言。

Markdown style

这是旧版模式,保留下来是为了向后兼容。要使用此模式,请在parse_mode字段中传递Markdown。在您的消息中使用以下语法:

*bold text* _italic text_ [inline URL]() [inline mention of a user](tg://user?id=123456789) `inline fixed-width code` ​``` pre-formatted fixed-width code block ​``` ​```python pre-formatted fixed-width code block written in the Python programming language ​```

请注意:

实体不得嵌套,而应使用解析模式MarkdownV2。

无法指定下划线和删除线实体,请改用解析模式MarkdownV2。

要在实体外部转义字符_,*,`,[,请在字符之前加上\。

不允许在实体内部转义,因此必须先关闭实体再重新打开:对于斜体使用_snake_\__case_,对于粗体2*2=4使用 snake_case 和 *2*\**2=4*。

telegram更新

telegram中更新指的是机器人是否有收到新的消息,具体有哪些消息可以查看telegram对象部分中的Update,获取更新的方式有两种1. 轮询,2.webhook

轮询

这是一种主动询问的方式,这种方式比较简单但是效率欠佳,具体操作是,开发者每个一段时间请求一次getUpdates方法,从获取结果中判断update有无更新,有关update对象的描述可看telegram对象章节

webhook

webhook可以理解为客户端给服务端的api,只要服务端一有更新就会主动将内容发送到客户端设置的一个api中,然后客户端收到消息后可做相应处理。

给我们的机器人设置webhook

通过setWebhook方法设置(前面有介绍),需要注意的是,telegram只支持https协议,所以我们的api服务器必须要有TLS证书,必须注意一但我们设置了webhook那么通过getUpdates方法将不起作用!

telegram中的命令

通过命令来和机器人交互是电报机器人的一大特色,在telegram中命令由实体BotCommand表示(telegram对象那节已经介绍过)。

其实任何以/开头的连续英文消息都被视作命令(可以理解为这是一种具有格式的普通消息),私聊或者在群里@机器人时发送/开头的信息可以查看实体类型为bot_command。要想让机器人收到某条命令后执行响应动作只需要判断发送的消息是否匹配我们约定的内容即刻,(从某种意义上讲无论发送的消息是否是命令格式我们都可以将其视为命令只要我们愿意),开发具有命令响应的过程总结如下:

起一个死循环监听update的message消息,可以是轮询或者webhook方式

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzsszz.html