电报机器人怎么添加自动对话:考研英语读书会单词测验设置教程

发布时间:2026-11-03 16:43:58

背景说明

本文以“考研英语读书会晨间单词测验”为例:成员发送测验命令后,机器人自动出题;成员回复答案后,机器人判断正误并给出提示。这个场景比单纯设置欢迎语更适合学习群,也能让自动对话形成“发起—提问—作答—反馈”的完整流程。

先说明一个关键点:Telegram 的 BotFather 负责创建机器人和设置基础信息,不提供完整的对话流程编辑器。要实现根据成员消息自动回复,需要把机器人接入代码或第三方机器人平台。下面采用 Python 编写一个简易版本,适合自己部署和修改;如果只想做关键词回复,也可以在代码中增加关键词判断。

第一步:在 BotFather 创建考研单词机器人

  1. 在 Telegram 搜索官方账号 @BotFather,打开对话并发送 /newbot。
  2. 根据提示设置显示名称,例如“晨间考研词汇测验”;再设置唯一用户名,用户名通常需要以 bot 结尾。
  3. 创建成功后,BotFather 会返回一串 API Token。它相当于机器人的访问凭证,请复制保存,不要公开发到群里、截图发布或提交到公开代码仓库。
  4. 可选:发送 /setdescription 设置简介,例如“发送 /quiz 开始今日单词测验”。

第二步:准备运行环境并安装依赖

在电脑或服务器安装 Python 3.10 及以上版本,然后打开终端执行:

pip install python-telegram-bot

新建文件 study_bot.py。本教程先用电脑测试,确认机器人能够正常回复后,再将程序放到云服务器或其他常开设备运行。机器人程序停止后,自动对话也会随之停止。

第三步:编写单词测验的自动对话逻辑

把下面代码保存到 study_bot.py。示例中,成员发送 /quiz 后会收到问题;之后发送“放弃”或 abandon,机器人会回复正确;其他答案会收到提示。成员发送“打卡”还可以触发群内提醒文案。你可以按课程内容替换题目和答案。

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

TOKEN = os.getenv('TELEGRAM_BOT_TOKEN')
if not TOKEN:
    raise RuntimeError('请先设置 TELEGRAM_BOT_TOKEN 环境变量')

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text('欢迎加入晨间考研词汇测验。发送 /quiz 开始答题。')

async def quiz(update: Update, context: ContextTypes.DEFAULT_TYPE):
    context.user_data['waiting_quiz'] = True
    await update.message.reply_text('今日单词:abandon。它的常见中文意思是什么?请直接回复答案。')

async def on_text(update: Update, context: ContextTypes.DEFAULT_TYPE):
    text = update.message.text.strip().lower()
    if context.user_data.get('waiting_quiz'):
        context.user_data['waiting_quiz'] = False
        if text in {'放弃', '抛弃', 'abandon'}:
            await update.message.reply_text('回答正确!abandon 常见意思是放弃、抛弃。明天继续打卡。')
        else:
            await update.message.reply_text('这次不太准确。提示:这个词表示不再继续做某事,可回复 /quiz 再练一题。')
    elif '打卡' in text:
        await update.message.reply_text('收到,今日词汇打卡已提醒。记得把新学单词加入复习清单。')

app = Application.builder().token(TOKEN).build()
app.add_handler(CommandHandler('start', start))
app.add_handler(CommandHandler('quiz', quiz))
app.add_handler(MessageHandler(filters.TEXT, on_text))
app.run_polling()

注意,群聊里如果只希望成员用命令和机器人互动,可保留 BotFather 的隐私模式,并让成员通过 /quiz 发起测验。如果你希望机器人识别群内普通文字,例如成员直接发“打卡”就触发回复,需要在 BotFather 发送 /setprivacy,选择对应机器人,再选择 Disable,并将机器人重新加入群聊。关闭隐私模式后,机器人可能会接收到更多群消息,因此代码中应限制触发条件,避免对每条聊天内容都回复。

第四步:设置 Token 并启动机器人

不要把 Token 直接写进代码。macOS 或 Linux 终端可执行:

export TELEGRAM_BOT_TOKEN='替换为BotFather提供的Token'
python study_bot.py

Windows PowerShell 可执行:

$env:TELEGRAM_BOT_TOKEN='替换为BotFather提供的Token'
python study_bot.py

启动后,在 Telegram 中打开自己的机器人,先发送 /start,再发送 /quiz 测试完整流程。若终端显示运行状态且机器人能正常回复,说明基础配置成功。准备长期使用时,应将程序部署到可靠的云服务器,并通过服务器的进程管理工具保持运行。

第五步:把机器人加入读书会群并验证

  1. 打开机器人的资料页,选择添加到群组,将它加入考研英语读书会。
  2. 在群里发送 /quiz,检查机器人是否出题;再发送正确答案和错误答案,分别确认反馈符合预期。
  3. 如果使用“打卡”关键词触发回复,按前文说明检查隐私模式设置;若不希望机器人读取普通群消息,就让成员使用明确命令,或在代码里仅处理提及机器人的消息。
  4. 可进一步把固定题目改成题库,按日期抽题;也可以增加“下一题”“查看今日成绩”等命令。修改后重新启动程序,再到群里复测。

注意事项

  • 机器人不能主动私聊从未启动过它的用户。成员通常需要先打开机器人并发送 /start,机器人才能在私聊中继续互动。若需要群内练习,可直接在群里使用命令。
  • Token 必须保密。一旦泄露,应在 BotFather 中撤销或重新生成凭证,并更新服务器环境变量。
  • 确认触发范围。关闭群隐私模式后,机器人可能读取更多群消息。读书会里最好只匹配“打卡”等明确关键词,避免干扰讨论或处理无关内容。
  • 避免把答案规则写得过窄。本示例用几个固定答案演示,实际题库可能有同义词、大小写或空格差异,建议补充可接受答案并在小范围测试。
  • 保证程序持续运行。本地电脑休眠、关机或关闭终端都会让机器人停止响应;正式使用应部署到常开环境,并定期检查程序日志。

常见问题

问:在 BotFather 里找不到自动对话设置,正常吗?
答:正常。BotFather 主要用于创建机器人、设置资料和部分基础选项;问答逻辑需要代码或机器人搭建平台来实现。

问:机器人能看到群成员发的“打卡”吗?
答:默认隐私模式下,机器人通常看不到普通群消息。可以关闭隐私模式后重新添加机器人,也可以让成员通过命令、提及机器人等方式互动。选择哪种方式取决于群管理和隐私需求。

问:为什么运行程序后仍然没有回复?
答:先检查 Token 是否正确、程序是否仍在运行,以及是否启动了正确的机器人账号。再确认测试时发送的是 /start 或 /quiz。如果问题发生在群聊,检查机器人是否已入群,以及群隐私模式是否符合当前触发方式。

问:不懂 Python,能不能不用代码?
答:可以尝试支持 Telegram Bot API 的第三方无代码平台,按平台界面配置触发词、问题和回复。但不同平台的功能、费用及数据处理方式不同,使用前应确认其权限与隐私政策;涉及复杂状态、成绩记录或长期维护时,代码方案通常更灵活。