读书会报名与打卡场景:电报机器人怎么设置自动回复?

发布时间:2026-11-01 12:54:52

背景说明:把读书会常见问答交给机器人

线上读书会经常要反复回答“怎么报名”“本周读哪一章”“打卡发在哪里”等问题。本文用一个小型读书会作为具体场景,示范让机器人在收到报名、打卡或规则等关键词时自动回复。这个方案适合机器人私聊;如果你希望它在群组中处理所有成员发言,还需要额外调整群组隐私设置。

先说明一点:在 Telegram(常称电报)里,通过 BotFather 创建机器人并不会自动获得自动回复能力。你还要连接一个机器人程序,或使用可信的机器人搭建平台。下面采用 Python 程序演示,方便自定义回复内容。搜索“电报机器人怎么添加自动对话”的用户也可以按这个流程理解:先创建机器人,再编写对话规则,最后启动程序。

第一步:用 BotFather 创建读书会机器人

在 Telegram 中搜索官方账号 BotFather,打开对话后发送 /newbot。按照提示输入机器人的显示名称,例如“周三读书会助手”,再设置一个以 bot 结尾的唯一用户名。创建成功后,BotFather 会返回一串 API Token。它相当于机器人的密码,请勿贴到群聊、公开网页或截图中。

随后搜索刚创建的机器人,打开聊天并点击 Start,或发送 /start。用户必须先主动启动机器人,机器人才能向该用户发送私聊消息;机器人不能主动给从未与它互动过的人发起私聊。这就是电报机器人激活步骤详解中容易忽略的一点。

第二步:准备运行环境并保存 Token

在电脑安装 Python 3.10 或更新版本,打开终端安装 Telegram 的 Python 套件:pip install python-telegram-bot。再把 BotFather 提供的 Token 保存为环境变量 BOT_TOKEN。Windows PowerShell 可使用 $env:BOT_TOKEN="你的Token";macOS 或 Linux 终端可使用 export BOT_TOKEN="你的Token"。请把“你的Token”替换成实际值,不要把 Token 写进公开代码仓库。

第三步:编写报名、打卡和规则的自动回复

新建文件 bookclub_bot.py,粘贴下面的基础代码。它会识别“报名”“打卡”“书目”等关键词,并对其他普通文字给出提示。请把示例中的日期、书名和报名方式改成你读书会的实际信息。

import os
from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, ContextTypes, filters

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text("欢迎参加周三读书会!发送“报名”“打卡”或“书目”查看对应说明。")

async def answer(update: Update, context: ContextTypes.DEFAULT_TYPE):
    text = (update.message.text or "").strip()
    if "报名" in text:
        reply = "报名请回复:昵称 + 想参加的场次。本周线上交流时间为周三20:00。"
    elif "打卡" in text:
        reply = "打卡格式:书名 + 今天读到的章节 + 一句感想。请不要发布未标注的关键剧透。"
    elif "书目" in text or "读哪" in text:
        reply = "本周共读《示例书名》第1至3章;实际书目请以组织者公告为准。"
    else:
        reply = "我暂时没识别这个问题。可发送“报名”“打卡”或“书目”,也可以联系读书会组织者。"
    await update.message.reply_text(reply)

app = Application.builder().token(os.environ["BOT_TOKEN"]).build()
app.add_handler(CommandHandler("start", start))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, answer))
app.run_polling()

注意,代码中的 & 是 HTML 页面展示 Python 代码时的转义写法。复制到 .py 文件时,应将它还原为 Python 运算符 &(即键盘上的 and 符号)。保存文件后,在设置好 BOT_TOKEN 的同一个终端运行 python bookclub_bot.py。终端保持运行,机器人才能持续接收并回复消息。

第四步:用真实提问测试对话

回到机器人私聊,依次发送 /start、“我想报名”“今天怎么打卡”“这周读哪本书”,确认回复是否符合活动安排。再试一条未设置的提问,检查兜底提示是否清楚。如果需要增加问答,在 answer 函数中添加更多 elif 分支,并把高频、明确的关键词放在前面,避免规则互相覆盖。这也是电报如何设置机器人功能的核心:将触发条件和回复文本逐项对应,再通过实际消息验证。

第五步:决定是否让机器人在群组中回复

如果只服务报名和打卡,建议让成员私聊机器人,配置更简单,也能避免机器人干扰群聊。若确实要在群里自动识别普通消息,可在 BotFather 使用 /setprivacy 调整隐私模式,并按提示重新将机器人添加到群组。开放群组读取权限前,先确认机器人只处理必要内容,并告知成员它会如何回复及数据如何处理。

注意事项

  • 保护 Token:Token 泄露后,别人可能控制机器人。发现泄露应立即通过 BotFather 撤销并生成新 Token。
  • 区分自动回复与主动推送:用户需要先启动机器人;活动提醒也应只发送给已与机器人互动且同意接收消息的人。
  • 检查消息隐私:电报机器人会储存你的消息吗?机器人程序本身可以读取发送给它的消息;是否保存内容,取决于你编写的程序、托管平台及其日志设置。本文示例没有主动把消息写入数据库,但运行环境仍可能产生日志。使用第三方平台前,应先查看其隐私政策和数据保留规则。
  • 准备稳定运行环境:本地电脑关机或程序退出后,机器人就不会回复。要长期在线,可部署到受信任的服务器,并妥善管理访问权限。
  • 避免把群聊当作私聊:群组隐私模式会影响机器人能看到哪些普通消息。测试群组功能时,先用小范围测试群验证,不要直接开放不必要的读取权限。

常见问题

电报机器人没反应,先检查什么?

确认用户已经点击 Start;程序终端仍在运行;BOT_TOKEN 正确且没有多余空格;消息是否命中代码中的关键词;机器人是否在目标群组中,以及隐私模式是否允许它看到相关消息。还可以检查终端是否显示报错,并先在私聊里发送 /start 排除群组权限问题。

能不能不写代码,直接设置自动回复?

可以考虑第三方机器人搭建平台,但平台是否支持 Telegram、关键词回复和数据导出,需以其当前功能为准。将机器人 Token 交给平台前,应评估服务商可信度,并确认消息会不会被记录、保存多久以及如何删除。

机器人能否自动回答所有问题?

上述代码只匹配预先设定的关键词,不理解所有自然语言,也不会自动知道活动最新安排。建议把时间、书目和报名方式写成可维护的配置,活动信息变化后及时更新回复;复杂问题则引导用户联系组织者。