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.mfbz.cn/a/796684.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

函数(实参以及形参)

实际参数&#xff08;实参&#xff09; 实际参数就是在调用函数时传递给函数的具体值。这些值可以是常量、变量、表达式或更复杂的数据结构。实参的值在函数被调用时传递给对应的形参&#xff0c;然后函数内部就可以使用这些值来执行相应的操作。 int main() {int a 0;int b …

嵌入式人工智能应用-篇外-烧写说明

1 外部接线 1.1 前期准备 需要准备的工具 ⚫ 一根 Mini USB 线 ⚫ 嵌入式人工智能教学科研平台 ⚫ 12V DC 电源 ⚫ 一台电脑 1.2 接线 12V DC 电源接入 12V IN&#xff1b;Mini USB 线连接 USB OTG&#xff1b;如果有两条 Mini USB 线&#xff0c;可以接入 UART2 to USB 口…

git安装使用gitlab

第一步&#xff1a;下载git 第二步&#xff1a;安装 第三步&#xff1a;配置sshkey 第四步&#xff1a;处理两台电脑的sshkey问题 第一步下载git 网址&#xff1a;Git点Downloads根据你的操作系统选择对应的版本&#xff0c;我的是Windows&#xff0c;所以我选择了Windows …

动手学深度学习(Pytorch版)代码实践 -注意力机制-Transformer

68Transformer 1. PositionWiseFFN 基于位置的前馈网络 原理&#xff1a;这是一个应用于每个位置的前馈神经网络。它使用相同的多层感知机&#xff08;MLP&#xff09;对序列中的每个位置独立进行变换。作用&#xff1a;对输入序列的每个位置独立地进行非线性变换&#xff0c…

Open-TeleVision——通过VR沉浸式感受人形机器人视野:兼备远程控制和深度感知能力

前言 7.3日&#xff0c;我司七月在线(集AI大模型职教、应用开发、机器人解决方案为一体的科技公司)的「大模型机器人(具身智能)线下营」群里的一学员发了《Open-TeleVision: Teleoperation with Immersive Active Visual Feedback》这篇论文的链接&#xff0c;我当时快速看了一…

【网络文明】关注网络安全

在这个数字化时代&#xff0c;互联网已成为我们生活中不可或缺的一部分&#xff0c;它极大地便利了我们的学习、工作、娱乐乃至日常生活。然而&#xff0c;随着网络空间的日益扩大&#xff0c;网络安全问题也日益凸显&#xff0c;成为了一个不可忽视的全球性挑战。认识到网络安…

C双指针滑动窗口算法

这也许是双指针技巧的最⾼境界了&#xff0c;如果掌握了此算法&#xff0c;可以解决⼀⼤类⼦字符串匹配的问题 原理 1、我们在字符串 S 中使⽤双指针中的左右指针技巧&#xff0c;初始化 left right 0&#xff0c;把索引闭区间 [left, right] 称为⼀个「窗⼝」。 2、我们先…

开发个人Ollama-Chat--6 OpenUI

开发个人Ollama-Chat–6 OpenUI Open-webui Open WebUI 是一种可扩展、功能丰富且用户友好的自托管 WebUI&#xff0c;旨在完全离线运行。它支持各种 LLM 运行器&#xff0c;包括 Ollama 和 OpenAI 兼容的 API。 功能 由于总所周知的原由&#xff0c;OpenAI 的接口需要密钥才…

总结单例模式的写法

一、单例模式的概念 1.1 单例模式的概念 单例模式&#xff08;Singleton Pattern&#xff09;是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。就是当前进程确保一个类全局只有一个实例。 1.2 单例模式的优…

首次跑通Arduino IDE + ESP8266

感触 网络&#xff0c;网络&#xff0c;还是网络。 中文开发者往往具备更多的网络知识和能力。 文档&#xff0c;文档&#xff0c;更是文档。 在计算机领域&#xff0c;遇到的问题&#xff0c;99.999%前人已经解决过。

Lesson 50 He likes ... But he doesn‘t like ...

Lesson 50 He likes … But he doesn’t like … 词汇 tomato n. 西红柿 复数&#xff1a;tomatoes 同义词&#xff1a;ketch-up 番茄酱     dead horse 例句&#xff1a;冰箱里有很多西红柿。    There are some tomatoes in the fridge. potato n. 土豆 复数&#…

【公益案例展】华为云X《无尽攀登》——攀登不停,向上而行

‍ 华为云公益案例 本项目案例由华为云投递并参与数据猿与上海大数据联盟联合推出的 #榜样的力量# 《2024中国数据智能产业最具社会责任感企业》榜单/奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 夏伯渝&#xff0c;中国无腿登珠峰第一人&#xff0c;一生43年…

Redis持久化RDB,AOF

目 录 CONFIG动态修改配置 慢查询 持久化 在上一篇主要对redis的了解入门&#xff0c;安装&#xff0c;以及基础配置&#xff0c;多实例的实现&#xff1a;redis的安装看我上一篇&#xff1a; Redis安装部署与使用,多实例 redis是挡在MySQL前面的&#xff0c;运行在内存…

Java基础-I/O流

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 字节流 定义 说明 InputStream与OutputStream示意图 说明 InputStream的常用方法 说明 OutputStrea…

虚函数__

10 文章目录 虚函数虚函数表override(不允许后续函数继承)虚析构纯虚函数 虚函数 虚函数表 override(不允许后续函数继承) 虚析构 纯虚函数

C++的deque(双端队列),priority_queue(优先级队列)

deque deque是一个容器,是双端队列,从功能上来讲,deque是一个vector和list的结合体 顺序表和链表 deque的结构和优缺点 开辟buff小数组,空间不够了,不扩容,而是开辟一个新的小数组 开辟中控数组(指针数组)指向buff小数组 将已存在的数组指针存在中控数组中间,可以使用下标访…

【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…

Java项目:基于SSM框架实现的中小型企业财务管理系统【ssm+B/S架构+源码+数据库+答辩PPT+开题报告+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的中小型企业财务管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单…

【分库】分库的核心原则

目录 分库的核心原则 前言 分区透明性与一致性保证 弹性伸缩性与容错性设计 数据安全与访问控制机制 分库的核心原则 前言 在设计和实施分库策略时&#xff0c;遵循一系列核心原则是至关重要的&#xff0c;以确保系统不仅能够在当前规模下高效运行&#xff0c;还能够随着…

集成excel工具:自定义导入回调监听器、自定义类型转换器、web中的读

文章目录 I 封装导入导出1.1 定义工具类1.2 自定义读回调监听器: 回调业务层处理导入数据1.3 定义文件导入上下文1.4 定义回调协议II 自定义转换器2.1 自定义枚举转换器2.2 日期转换器2.3 时间、日期、月份之间的互转2.4 LongConverterIII web中的读3.1 使用默认回调监听器3.2…