跳转到正文
Shane Blog
返回

Telegram Bot 能做什么?从一个签到机器人讲起

Telegram Bot 能做什么?从一个签到机器人讲起

之前写过一篇聊 Telegram 官网版和商店版区别的文章,这次聊点相关但不完全一样的话题——Telegram 上的机器人(Bot)到底是怎么一回事,普通人自己动手搭一个大概需要经过哪些步骤。

Bot 本质上是一个”特殊账号”

Telegram 里的 Bot 账号在结构上和普通用户账号很像,同样有用户名、同样可以被搜索、拉群、发消息,唯一的区别是它背后不是一个真人在操作,而是一段跑在服务器上的程序,根据收到的消息自动做出响应。

从使用者角度,和 Bot 聊天的体验跟和真人聊天差不多——发一条消息,过一小会儿收到回复,只是这个”回复”是代码逻辑算出来的,而不是人手动打的字。

创建 Bot:从 BotFather 开始

Telegram 上创建 Bot 的入口本身也是一个 Bot,官方维护的账号叫 @BotFather。跟它对话、发送 /newbot 指令,按提示依次填写 Bot 的显示名称和用户名(用户名必须以 bot 结尾,比如 my_checkin_bot),创建成功之后,BotFather 会返回一长串字符,这就是这个 Bot 的 Token

Token 等同于账号密码,不能泄露

谁拿到这串 Token,谁就能以这个 Bot 的身份收发消息、修改设置。如果不小心把 Token 提交进了公开的代码仓库,或者贴在了聊天记录里被别人看到,应该第一时间找 BotFather 用 /revoke 指令重新生成一个,让旧的 Token 失效。

Bot 怎么”知道”用户发了消息:轮询 vs Webhook

Token 到手之后,Bot 本身还只是一个空壳,需要写代码去接收消息、处理逻辑、发送回复。这里有两种常见的接入方式:

长轮询(Long Polling):程序主动、反复地向 Telegram 服务器发起请求,问”有没有新消息”,服务器如果暂时没有新消息,会把这次请求先”挂着”一段时间,直到有新消息才返回,而不是让程序发一次问一次、每次都是空转。这种方式好处是不需要一个公网可访问的服务器地址,本地跑一个脚本、只要能访问外网就行,适合个人练手或者小规模使用。

Webhook:反过来,由 Telegram 服务器主动把新消息推送到你指定的一个 HTTPS 地址,你的服务器被动接收就行,不需要一直发请求去”问”。这种方式效率更高(没有轮询造成的空转请求),但要求你有一个带有效 HTTPS 证书、公网可访问的服务器地址,门槛比长轮询稍高一些。

个人练手项目通常从长轮询起步,等真的需要更高并发或者更低延迟的场景,再考虑切换成 Webhook。

一个签到机器人大概需要哪几块东西

假设想做一个最简单的”群签到”机器人——用户发 /checkin,机器人记录一下这个人今天签到了,月底能查一下自己签到了多少天。拆开来看大概需要这几块:

  1. 接收并解析指令:识别出用户发的是 /checkin 这类指令,而不是普通聊天内容(Telegram Bot API 里,以 / 开头的消息会被特殊标记为”命令”)
  2. 记录数据:需要一个地方存”谁、在哪个群、哪一天签到过”,通常是接一个轻量数据库,或者简单点直接用文件存
  3. 防重复签到:同一个用户同一天不能重复签到多次,查数据库判断一下今天是否已经有记录
  4. 反馈结果:调用 Bot API 的发消息接口,把”签到成功,连续签到 X 天”之类的结果发回去
  5. (可选)定时任务:比如每天凌晨清空当天的签到状态、每月初生成一份签到排行,这部分靠服务器上的定时任务触发,和 Bot API 本身没有直接关系,是独立的一层

Telegram 官方提供的 Bot API 文档把能调用的接口都列得很全,发消息、发图片、发文件、创建内联键盘(消息下面那种可以点击的按钮)、编辑已发送的消息,基本能想到的交互方式都有对应接口,不需要自己额外造轮子。

群组里的 Bot 需要额外注意权限

如果 Bot 是被拉进群里用的(而不是私聊场景),默认情况下 Bot 只能看到”命令消息”和”@ 它的消息”,看不到群里的普通聊天内容——这是隐私保护设计,除非群主专门去 BotFather 的设置里把 Bot 的”隐私模式”(Privacy Mode)关掉,才能让 Bot 读取群里的所有消息。做签到这类只需要响应命令的场景,默认的隐私模式已经完全够用,不需要特意关闭。

小结

Telegram Bot 上手门槛其实不算高:申请 Token、选一种消息接入方式、按需调用发消息接口,一个最基础的签到机器人往往几十行代码就能跑起来。真正决定一个 Bot 好不好用的,反而是后面这些细节——命令响应要不要防抖、数据要不要做持久化、异常输入要怎么兜底,这些工程层面的打磨比”能不能跑起来”本身要花更多功夫。如果之后有机会把自己写的某个 Bot 整理成一篇完整的实操教程,应该会放在文档站里,这边就先按下不表了。


分类:
标签:
分享此文章:

上一篇
Root 权限到底是什么:从 su 到 Magisk
下一篇
谷歌服务三件套与微G:安卓上没有 GMS 会怎样