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

文章目录

    • 一、Telegram Bot是什么?
    • 二、Telegram Bot应用场景
    • 三、机器人是如何工作的?架构
      • getUpdates 和 webhooks
        • webhooks
        • 要求
        • 自签名证书
    • 四、如何创建和使用Telegram Bot?
      • 整体步骤和流程
      • Bot 的申请过程
      • 将机器人添加到 Telegram 群组

一、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. 单击“添加”将机器人添加到组中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/45833.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

昇思25天打卡营第25天|基于MoblieNetv2的垃圾分类

一、简介&#xff1a; 本次实验主要介绍垃圾分类代码开发的方法。通过读取本地图像数据作为输入&#xff0c;对图像中的垃圾物体进行检测&#xff0c;并且将检测结果图片保存到文件中。 实验目的&#xff1a; 了解熟悉垃圾分类应用代码的编写&#xff08;Python语言&#x…

卷积神经网络——LeNet——FashionMNIST

目录 一、文件结构二、model.py三、model_train.py四、model_test.py 一、文件结构 二、model.py import torch from torch import nn from torchsummary import summaryclass LeNet(nn.Module):def __init__(self):super(LeNet,self).__init__()self.c1 nn.Conv2d(in_channe…

Autosar Dcm配置-0x28服务ComControl-基于ETAS软件

文章目录 前言DcmDcmDsdDcmDspBswMBswMModeRequestPortBswMModeConditionBswMLogicalExpressionBswMActionBswMActionListBswMRule总结前言 0x28服务主要用来控制非诊断报文的通讯,一般在刷写预编程过程中,用来禁止APP的通信报文,可以减少总线负载率,提高刷写成功率。本文…

[C++] STL :stackqueue详解 及 模拟实现

标题&#xff1a;[C] STL &#xff1a;stack&&queue详解 水墨不写bug 目录 &#xff08;一&#xff09;stack简介 &#xff08;二&#xff09;queue简介 &#xff08;三&#xff09;容器适配器 &#xff08;四&#xff09;stack和queue的模拟实现 /*** …

数据结构(初阶1.复杂度)

文章目录 一、复杂度概念 二、时间复杂度 2.1 大O的渐进表示法 2.2 时间复杂度计算示例 2.2.1. // 计算Func2的时间复杂度&#xff1f; 2.2.2.// 计算Func3的时间复杂度&#xff1f; 2.2.3.// 计算Func4的时间复杂度&#xff1f; 2.2.4.// 计算strchr的时间复杂度&#xff1f; …

构造者模式的实现

引言——构造复杂对象的艺术 软件工程中&#xff0c;构造复杂对象的艺术被巧妙地封装在构造者模式&#xff08;Builder Pattern&#xff09;中。这种设计模式不仅提供了一种清晰且灵活的方式来构建复杂对象&#xff0c;还使得代码更具可读性和可维护性。构造者模式的核心思想是…

Unity最新第三方开源插件《Stateful Component》管理中大型项目MonoBehaviour各种序列化字段 ,的高级解决方案

上文提到了UIState, ObjectRefactor等,还提到了远古的NGUI, KBEngine-UI等 这个算是比较新的解决方法吧,但是抽象出来,问题还是这些个问题 所以你就说做游戏是不是先要解决这些问题? 而不是高大上的UiImage,DoozyUI等 Mono管理引用基本用法 ① 添加Stateful Component …

安全测试理论

安全测试理论 什么是安全测试&#xff1f; 安全测试&#xff1a;发现系统安全隐患的过程安全测试与传统测试区别 传统测试&#xff1a;发现bug为目的 安全测试&#xff1a;发现系统安全隐患什么是渗透测试 渗透测试&#xff1a;已成功入侵系统为目标的的攻击过程渗透测试与安全…

“好物”推荐+Xshell连接实例+使用Conda创建独立的Python环境

目录 主题&#xff1a;好易智算平台推荐RTX 4090DGPU实例租用演示安装配置torch1.9.1cuda11.1.1环境引言&#xff1a;算力的新时代平台介绍&#xff1a;技术与信任的结晶使用案例&#xff1a;实际使用展示创建实例开始使用连接实例&#xff08;下文演示使用Xshell连接&#xff…

昇思25天学习打卡营第二十天|基于MobileNetv2的垃圾分类

打卡营第二十天&#xff0c;今天学习的内容是MobileNet垃圾分类&#xff0c;记录一下学习内容&#xff1a; 学习内容 本文档主要介绍垃圾分类代码开发的方法。通过读取本地图像数据作为输入&#xff0c;对图像中的垃圾物体进行检测&#xff0c;并且将检测结果图片保存到文件中…

【ARM】CCI集成指导整理

目录 1.CCI集成流程 2.CCI功能集成指导 2.1CCI结构框图解释 Request concentrator Transaction tracker Read-data Network Write-data Network B-response Network 2.2 接口注意项 记录一下CCI500的ACE slave interface不支持的功能&#xff1a; 对于ACE-Lite slav…

基于信号处理的PPG信号滤波降噪方法(MATLAB)

光电容积脉搏波PPG信号结合相关算法可以用于人体生理参数检测&#xff0c;如血压、血氧饱和度等&#xff0c;但采集过程中极易受到噪声干扰&#xff0c;对于血压、血氧饱和度测量的准确性造成影响。随着当今社会医疗保健技术的发展&#xff0c;可穿戴监测设备对于PPG信号的质量…

简单的SQL字符型注入

目录 注入类型 判断字段数 确定回显点 查找数据库名 查找数据库表名 查询字段名 获取想要的数据 以sqli-labs靶场上的简单SQL注入为例 注入类型 判断是数字类型还是字符类型 常见的闭合方式 ?id1、?id1"、?id1)、?id1")等&#xff0c;大多都是单引号…

【ASTGCN】模型调试学习笔记--数据生成详解(超详细)

利用滑动窗口生成时间序列 原理图示&#xff1a; 以PEMS04数据集为例。 该数据集维度为&#xff1a;(16992,307,3)&#xff0c;16992表示时间序列的长度&#xff0c;307为探测器个数&#xff0c;即图的顶点个数&#xff0c;3为特征数&#xff0c;即流量&#xff0c;速度、平…

期权专题12:期权保证金和期权盈亏

目录 1. 期权保证金 1.1 计算逻辑 1.2 代码复现 1.3 实际案例 2. 期权盈亏 2.1 价格走势 2.2 计算公式 2.2.1 卖出期权 2.2.2 买入期权 免责声明&#xff1a;本文由作者参考相关资料&#xff0c;并结合自身实践和思考独立完成&#xff0c;对全文内容的准确性、完整性或…

[CISCN 2023 华北]normal_snake

[CISCN 2023 华北]normal_snake 源码和依赖 算了直接说吧&#xff0c;不想截图了&#xff0c;就多了一个C3P0和yaml的依赖 然后read路由可以反序列化yaml的Str 我们看到waf 那个String是可以二次反序列化绕过的,然后CUSTOM_STRING1解码后是"BadAttributeValuePairExcept…

【java】力扣 反转链表

力扣 206 链表反转 题目介绍 解法讲解 先定义两个游标indexnull&#xff0c;prenull&#xff0c;反转之后链表应该是5&#xff0c;4&#xff0c;3&#xff0c;2&#xff0c;1&#xff0c;我们先进行2->1的反转&#xff0c;然后再循坏即可 让定义的游标index去存储head.n…

MySQL设置白名单限制

白名单&#xff08;Whitelist&#xff09;是一种机制&#xff0c;用于限制哪些主机可以连接到服务器&#xff0c;而阻止其他主机的访问。通过配置白名单&#xff0c;可以增加服务器的安全性&#xff0c;防止未授权的访问。 在MySQL数据库中直接设置白名单访问&#xff08;即限制…

【触摸屏】【地震知识宣传系统】功能模块:视频 + 知识问答

项目背景 鉴于地震知识的普及对于提升公众防灾减灾意识的重要性&#xff0c;客户希望开发一套互动性强、易于理解的地震学习系统&#xff0c;面向公众、学生及专业人员进行地震知识教育与应急技能培训。 产品功能 系统风格&#xff1a;严谨的设计风格和准确的信息呈现&#…

红酒的艺术之旅:品味、鉴赏与生活的整合

在繁忙的都市生活中&#xff0c;红酒如同一道不同的风景线&#xff0c;将品味、鉴赏与日常生活巧妙地整合在一起。它不仅仅是一种饮品&#xff0c;更是一种艺术&#xff0c;一种生活的态度。今天&#xff0c;就让我们一起踏上这趟红酒的艺术之旅&#xff0c;探寻雷盛红酒如何以…