Telegram Bot、小程序开发(一)基础入门

一、Telegram Bot是什么?

telegram 是全球顶流的社交软件,目前其提供了机器人 botmini 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应用场景

如下一些比较常见的使用场景:

  1. 消息提醒:Telegram Bot可以订阅各种频道或群组,当有新消息发布时,机器人会自动将消息推送给用户,确保用户不会错过任何重要信息。
  2. 自动化回复:通过预设的规则和模板,Telegram Bot可以自动回复用户的消息,节省了人工回复的时间和精力。
  3. 数据查询:Telegram Bot可以连接到各种数据源,如数据库、API等,用户可以通过发送查询请求来获取所需的数据。
  4. 远程控制: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?

整体步骤和流程

  1. 注册Bot账号:首先,你需要在Telegram官网上注册一个Bot账号,获取一个唯一的Bot Token,这是创建和使用机器人的关键。

  2. 开发机器人:接下来,你需要使用编程语言(如Python、JavaScript等)来开发机器人。你可以使用Telegram提供的Bot API来编写代码,实现机器人的各种功能。

  3. 部署机器人:开发完成后,你需要将机器人部署到服务器上,并确保服务器能够正常访问Telegram的Bot API。

  4. 添加机器人到群组或频道:最后,你需要将机器人添加到需要使用的群组或频道中,并设置相应的权限。

总结:分为以下四个步骤:

  • 申请机器人 - token
  • 搭建 server - webhook
  • 绑定 token & webhook
  • 线上部署

Bot 的申请过程

创建机器人
在telegram中我们可以通过和一个名为 @BotFather 的机器人交互来申请我们自己的机器人,具体步骤如下:

  1. 打开 Telegram ,搜索 @BotFather
  2. 在聊天页面,按照引导发送 /newbot 命令,创建一个机器人,复制他的令牌。
  3. 一旦你创建了一个bot并获取到你的authorization token,那就直接去查看bot API手册看看你能操作机器人做什么事情。
    在这里插入图片描述

机器人令牌是其唯一标识符 - 将其存储在安全的地方,并且仅与需要直接访问机器人的人员共享。拥有令牌的每个人都可以完全控制机器人。

如果您的现有令牌受到威胁,或者由于某种原因而丢失了该令牌,请使用/ token命令生成一个新的令牌。

将机器人添加到 Telegram 群组

请按照以下步骤操作:

  1. 打开您想要添加机器人的 Telegram 群组。
  2. 单击顶部的组名称以打开选项菜单。
  3. 从下拉菜单中选择“添加成员”。
  4. 在搜索栏中搜索机器人名称并选择它。
  5. 单击“添加”将机器人添加到组中。

相关推荐

  1. 程序程序开发教程入门到精通

    2024-07-13 21:18:05       46 阅读
  2. 《微信程序开发入门到实战》学习四十

    2024-07-13 21:18:05       47 阅读
  3. 《微信程序开发入门到实战》学习六十

    2024-07-13 21:18:05       69 阅读
  4. 《微信程序开发入门到实战》学习七十

    2024-07-13 21:18:05       55 阅读
  5. 《微信程序开发入门到实战》学习八十

    2024-07-13 21:18:05       44 阅读
  6. 《微信程序开发入门到实战》学习九十

    2024-07-13 21:18:05       44 阅读
  7. 微信程序开发入门指南

    2024-07-13 21:18:05       20 阅读
  8. 微信程序开发入门指南

    2024-07-13 21:18:05       21 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 21:18:05       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 21:18:05       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 21:18:05       58 阅读
  4. Python语言-面向对象

    2024-07-13 21:18:05       69 阅读

热门阅读

  1. ES证书过期替换方案

    2024-07-13 21:18:05       24 阅读
  2. 深度学习调参

    2024-07-13 21:18:05       18 阅读
  3. 算法练习第29天|1005.K次取反后最大化的数组和

    2024-07-13 21:18:05       16 阅读
  4. C++ STL sort用法

    2024-07-13 21:18:05       19 阅读
  5. 什么是稀疏化

    2024-07-13 21:18:05       17 阅读
  6. centos清空history

    2024-07-13 21:18:05       12 阅读
  7. 宪法学学习笔记(个人向) Part.5

    2024-07-13 21:18:05       18 阅读
  8. C++《日期》实现

    2024-07-13 21:18:05       19 阅读
  9. 151. Reverse Words in a String

    2024-07-13 21:18:05       19 阅读
  10. 力扣--20. 有效的括号

    2024-07-13 21:18:05       17 阅读
  11. RC-u3 跑团机器人

    2024-07-13 21:18:05       15 阅读