文章目录
- 一、Telegram Bot是什么?
- 二、Telegram Bot应用场景
- 三、机器人是如何工作的?架构
- getUpdates 和 webhooks
- webhooks
- 要求
- 自签名证书
- 四、如何创建和使用Telegram Bot?
- 整体步骤和流程
- Bot 的申请过程
- 将机器人添加到 Telegram 群组
一、Telegram Bot是什么?
telegram 是全球顶流的社交软件,目前其提供了机器人 bot
和 mini app
,可以非常方便的开发三方服务。
Telegram Bot是一种运行在Telegram平台上的自动化程序,它可以接收和发送消息,执行各种任务,甚至与用户进行交互。通过Telegram Bot,用户可以轻松地实现消息提醒、自动化回复、数据查询、远程控制等功能,极大地提高了工作效率和便利性。
Telegram Bot 是完全在 Telegram 应用程序中运行的小型应用程序。用户通过灵活的界面与机器人交互,这些界面可以支持任何类型的任务或服务。
Telegram Bot 平台拥有超过 1000 万个机器人,对用户和开发人员都是免费的。
Telegram 是 Crypto 的「重要阵地」。订阅数 / 会员数最多的 Channel 以及 Group,超过一半是与 Crypto 内容相关的。几乎所有 Web 3.0/Crypto 项目都拥有 Telegram 社群,以便于实现其社区交流、项目更新、宣发等目的。
bots是运行在telegram内部的第三方应用。用户可以通过发送消息,命令或者内联请求和bots进行交互。开发者可以通过向bot API发送HTTPS请求来控制自己的bot。
二、Telegram Bot应用场景
如下一些比较常见的使用场景:
- 消息提醒:Telegram Bot可以订阅各种频道或群组,当有新消息发布时,机器人会自动将消息推送给用户,确保用户不会错过任何重要信息。
- 自动化回复:通过预设的规则和模板,Telegram Bot可以自动回复用户的消息,节省了人工回复的时间和精力。
- 数据查询:Telegram Bot可以连接到各种数据源,如数据库、API等,用户可以通过发送查询请求来获取所需的数据。
- 远程控制:Telegram Bot还可以作为远程控制的工具,用户可以通过发送指令来控制远程设备或执行特定的任务。
三、机器人是如何工作的?架构
电报机器人是不需要电话号码即可设置的特殊帐户。机器人连接到其所有者的服务器,该服务器处理来自用户的输入和请求。
Telegram 的中间人服务器处理与 Telegram API 的所有加密和通信。开发人员通过简单的 HTTPS 接口与该服务器进行通信,该接口具有简化版本的 Telegram API(称为 Bot API)
用户可以向Telegram Bot发送消息,命令和内联请求等方式与Telegram Bot人进行交互,而Telegram Bot开发者可以通过Telegram Bot API,用https请求方式来控制机器人。
比如说https://xxx.com/bot123。这样,每次当用户向bot输入命令时,Telegram就会把这次的命令转发到https://xxx.com/bot123,因此,我们需要在https://xxx.com/bot123部署我们的bot。
在线上部署时,我们还需要有自己的域名并且要支持https!!!
由于您的浏览器能够发送 HTTPS 请求,因此您可以使用它来快速试用 API。获取令牌后,请尝试将此字符串粘贴到浏览器中:
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getMe
对 Telegram Bot API 的所有查询都必须通过 HTTPS 提供,并且需要以以下形式呈现: https://api.telegram.org/bot<token>/METHOD_NAME
. Bot API 中的所有方法都不区分大小写。所有查询都必须使用 UTF-8 进行。
我们支持 GET 和 POST HTTP 方法。我们支持在机器人 API 请求中传递参数的四种方式:
- URL query string URL 查询字符串
- application/x-www-form-urlencoded
- application/json(上传文件除外)
- multipart/form-data(用于上传文件)
getUpdates 和 webhooks
官方文档:https://core.telegram.org/bots/webhooks
我们目前支持两种处理机器人更新的方式,getUpdates 和 setWebhook。getUpdates 是拉取机制,setwebhook 是推送机制。
getUpdates 和 Webhook 之间的主要区别在于连接的方式。getUpdates 表示您将连接到我们的服务器,webhook 表示我们将连接到您的服务器。 连接到您的服务器必须安全完成,我们必须确定我们毕竟是在与您交谈。这意味着您必须处理所有服务器端加密内容,实际上向我们展示了一个绿色锁。如果您使用Web服务器供我们发布,则需要在您选择的端口/虚拟主机上支持SSL/TLS处理。
目前我们采用的是webhook方式,这要求两者之间的通信基于https的。
webhooks
Telegram Bot的程序主要流程
- 搭建一个web应用程序,创建一个回调接口,接收Telegram的回调数据。
- 根据自己的业务规则,处理回调数据
- 将处理好的数据返回(响应用户的)
关于搭建webhoot服务器的要求,可以参考这边官方要求 https://core.telegram.org/bots/webhooks
搭建基于Https协议的服务器,并设置webhooks url(供Telegram回调的服务器路径),官方提供了四种设置方式,具体可以参考官方建议。最简单的方式如下:
https://api.telegram.org/bot你的token/setWebhook?url=https://服务器的回调路径
setWebhook 方法严格来说并不是或获取信息,而是告知服务器一个 url 地址。服务器将会在收到新消息时,通过 POST 方法将 json 格式的 Update 对象发送到指定的 url 地址。
下面列出部分使用 setWebhook 时的注意事项,更多请参阅 官方文档
注 1:如果 Telegram 服务器连接 url 失败,将会进行合理次数的多次请求。
注 2:告知服务器的 url 地址必须是一个 https url,该 url 的证书可以是正规证书机构签发的,也可以是用户自签的(需要在使用该方法时,通过文件上传的方式上传证书)。
注 3:Webhook 服务只能运行在 IPv4 地址的 443, 80, 88, 8443 端口中(即使运行在 80 端口也必须是 https 加密的服务)
注 4:推荐将 url 设计的较为复杂以避免攻击者伪装成 Telegram 服务器向你的 url 发送请求,譬如包含一段攻击者难以猜测的字符串,或者通过防火墙禁止 Telegram 服务器 IP 以外的请求。
要求
-
A domain name 域名
设置 webhook 需要一个 URL 供我们发布。为此,您需要一个带有域名的服务器。如果您没有,则需要先获得一个。Telegram 目前不提供托管或域名服务。互联网上有相当多的VPS /网络托管服务提供商,请随意选择一个您喜欢的。如果您使用的是自签名证书,则可以将 IP 用作 CN,而不是域名。 -
开放端口
Webhook 需要在服务器上打开端口。我们目前支持以下端口:443、80、88 和 8443。其他端口不受支持,也无法正常工作。请确保机器人在其中一个受支持的端口上运行,并且可通过其公共地址访问机器人。 -
始终是 SSL/TLS
无论使用哪个端口,Webhook 都需要 SSL/TLS 加密。无法使用纯文本 HTTP Webhook。为了机器人和用户,你也不应该想要这样做。 -
Not all SSL/TLS is equal
我们支持任何 SSL/TLS 版本 TLS1.2 及更高版本的 Webhook。这意味着不支持 SSLV2/3/TLS1.0/TSL1.1, -
SSL 需要证书
证书的公用名 (CN)(自签名或已验证)必须与托管机器人的域名匹配。您还可以使用与 Webhook 的域匹配的使用者备用名称 (SAN)。支持服务器名称指示 (SNI) 路由。如果您使用的是自签名证书,则可以将 IP 用作 CN,而不是域名。 -
已验证或自签名
证书可以是验证的,也可以是自签名的。使用自签名证书设置 Webhook 与使用经过验证的证书设置 Webhook 略有不同。确保您为为 Webhook 选择的证书类型使用了正确的设置。 -
Supported certificates 支持的证书
并非所有已验证的证书都受支持。证书基于信任网络,并形成链。信任已验证的证书意味着我们必须信任该证书的提供者,即证书颁发机构(以及其根证书)。在选择证书提供商之前,请查看此列表以确保我们确实信任其根证书。
自签名证书
使用自签名证书意味着您将失去 CA 支持的信任链。由于 Telegram 没有信任链来验证您的证书,因此在设置 Webhook 时,您必须使用生成的公共证书作为输入文件。请记住,证书文件必须以 PEM 编码 (ASCII BASE64) 格式作为多部分/表单数据上传。
openssl req -newkey rsa:2048 -sha256 -nodes -keyout YOURPRIVATE.key -x509 -days 365 -out YOURPUBLIC.pem -subj "/C=US/ST=New York/L=Brooklyn/O=Example Brooklyn Company/CN=YOURDOMAIN.EXAMPLE"
会得到 2 个文件、一个私钥和一个公有证书文件。使用 YOURPUBLIC.PEM 作为用于设置 Webhook 的输入文件
要使用自签名证书,您需要使用 certificate 参数上传您的公钥证书。请上传为 InputFile,发送 String 将不起作用。
四、如何创建和使用Telegram Bot?
整体步骤和流程
-
注册Bot账号:首先,你需要在Telegram官网上注册一个Bot账号,获取一个唯一的
Bot Token
,这是创建和使用机器人的关键。 -
开发机器人:接下来,你需要使用编程语言(如Python、JavaScript等)来开发机器人。你可以使用Telegram提供的Bot API来编写代码,实现机器人的各种功能。
-
部署机器人:开发完成后,你需要将机器人部署到服务器上,并确保服务器能够正常访问Telegram的Bot API。
-
添加机器人到群组或频道:最后,你需要将机器人添加到需要使用的群组或频道中,并设置相应的权限。
总结:分为以下四个步骤:
- 申请机器人 - token
- 搭建 server - webhook
- 绑定 token & webhook
- 线上部署
Bot 的申请过程
创建机器人
在telegram中我们可以通过和一个名为 @BotFather
的机器人交互来申请我们自己的机器人,具体步骤如下:
- 打开 Telegram ,搜索
@BotFather
- 在聊天页面,按照引导发送
/newbot
命令,创建一个机器人,复制他的令牌。 - 一旦你创建了一个bot并获取到你的authorization token,那就直接去查看bot API手册看看你能操作机器人做什么事情。
机器人令牌是其唯一标识符 - 将其存储在安全的地方,并且仅与需要直接访问机器人的人员共享。拥有令牌的每个人都可以完全控制机器人。
如果您的现有令牌受到威胁,或者由于某种原因而丢失了该令牌,请使用/ token命令生成一个新的令牌。
将机器人添加到 Telegram 群组
请按照以下步骤操作:
- 打开您想要添加机器人的 Telegram 群组。
- 单击顶部的组名称以打开选项菜单。
- 从下拉菜单中选择“添加成员”。
- 在搜索栏中搜索机器人名称并选择它。
- 单击“添加”将机器人添加到组中。