基于Node.js的ChatGPT Telegram机器人部署与优化指南
1. 项目概述与核心价值
最近在折腾一个挺有意思的东西,一个叫hobk/chatgpt-telebot的开源项目。简单来说,它就是一个桥梁,能把 OpenAI 的 ChatGPT 模型能力,无缝对接到全球流行的即时通讯软件 Telegram 上。想象一下,你可以在 Telegram 的私聊或者群里,像跟朋友聊天一样,直接向一个机器人提问,而背后为你服务的,是那个强大的 ChatGPT。这个项目就是帮你快速搭建起这个桥梁的工具箱。
我之所以花时间研究它,是因为看到了一个非常具体的需求场景。对于个人开发者、小团队或者只是想尝鲜的极客来说,直接调用 OpenAI 的 API 虽然强大,但缺乏一个便捷、自然的交互界面。Telegram 的机器人生态非常成熟,用户基数庞大,交互体验流畅。把这两者结合起来,你就能瞬间拥有一个24小时在线、知识渊博、能处理多种任务的智能助手。无论是用来回答技术问题、进行语言翻译、总结长篇文章,还是作为一个有趣的聊天伙伴,都非常实用。这个项目降低了实现这一想法的门槛,你不需要从零开始处理 Telegram Bot API 的复杂交互和 OpenAI API 的调用逻辑,它已经帮你封装好了核心流程。
从技术栈上看,这个项目主要涉及几个关键点:Node.js 运行环境、Telegram Bot API 的集成、OpenAI API 的调用,以及如何将这两者的数据流安全、高效地串联起来。它本质上是一个服务端应用,持续运行,监听 Telegram 平台推送过来的用户消息,然后将其转发给 OpenAI 的接口,拿到回复后再传回给 Telegram 用户。整个过程需要考虑消息队列、错误处理、上下文管理(让 AI 记住之前的对话)、以及成本控制(因为 OpenAI API 是收费的)等问题。接下来,我就把自己搭建、配置和优化这个机器人的全过程,以及踩过的坑和总结的经验,详细拆解一遍。
2. 环境准备与项目初始化
2.1 基础环境搭建
这个项目是基于 Node.js 的,所以第一步是确保你的开发或生产环境已经安装了合适版本的 Node.js。我推荐使用 Node.js 18 或更高的 LTS 版本,它们在稳定性和对现代 JavaScript 特性的支持上都更好。你可以通过node -v命令来检查当前版本。如果还没安装,可以去 Node.js 官网下载安装包,或者使用nvm(Node Version Manager) 这样的版本管理工具,这对于需要在不同项目间切换 Node 版本的情况特别方便。
接下来是获取项目代码。hobk/chatgpt-telebot托管在 GitHub 上,我们可以直接克隆到本地。打开你的终端,切换到一个你打算存放项目的目录,然后执行克隆命令:
git clone https://github.com/hobk/chatgpt-telebot.git cd chatgpt-telebot进入项目目录后,你会发现一个典型的 Node.js 项目结构,包含package.json文件。下一步是安装项目依赖。运行npm install命令,npm 会自动读取package.json中的依赖列表并下载安装。这个过程可能会花点时间,取决于你的网络速度。这里有个小技巧:如果你在国内,感觉 npm 官方源速度慢,可以临时切换到淘宝的镜像源,命令是npm config set registry https://registry.npmmirror.com,安装完成后再切回来,或者使用cnpm。
注意:在安装依赖时,务必保持网络通畅。有时某些原生模块(如果有的话)的编译可能会失败,这通常是因为缺少系统级的编译工具(比如 Python、C++编译器等)。在 Linux/macOS 上可能需要安装
build-essential或Xcode Command Line Tools,在 Windows 上可能需要安装Windows Build Tools。如果遇到这类错误,根据终端报错信息搜索解决方案通常能很快解决。
2.2 核心账号与令牌获取
项目运行依赖于两个关键的“钥匙”:Telegram Bot Token 和 OpenAI API Key。没有它们,机器人就像没有汽油的汽车,无法启动。
1. 创建你的 Telegram 机器人并获取 Token:首先,你需要在 Telegram 上找到一个叫@BotFather的官方机器人。没错,机器人的“上帝”本身也是一个机器人。在 Telegram 中搜索并打开与@BotFather的对话。
- 发送
/newbot指令开始创建流程。 - 接着,它会问你给机器人起个名字(
name),这个名字会显示在聊天界面,比如我叫它“AI小助理”。 - 然后,它要求你设置一个唯一的用户名(
username),必须以bot结尾,例如my_awesome_ai_bot。这个用户名是其他用户找到你的机器人的标识。 - 如果一切顺利,
@BotFather会恭喜你并给你一串长长的哈希字符串,格式类似1234567890:ABCdefGhIJKlmNoPQRsTUVwxyZ。这串字符就是你的 Bot Token,务必妥善保管,不要泄露!它拥有控制你这个机器人的全部权限。你可以通过/setcommands指令为你的机器人设置一个命令菜单,让用户更易用。
2. 获取 OpenAI API Key:
- 访问 OpenAI 的官网平台,登录你的账户(如果没有需要注册)。
- 在控制台界面,通常可以在个人设置或 API Keys 部分找到创建和管理 API Key 的选项。
- 点击 “Create new secret key”,为其起个名字以便识别(比如“Telegram Bot专用”),然后生成。生成后,页面会立即显示你的 API Key,格式类似
sk-开头的一长串字符。同样,这个 Key 只会显示一次,请立即复制并保存到安全的地方。如果丢失,需要重新生成。
重要提示:这两个 Token/Key 是项目的核心机密。在实际部署时,绝对不要将它们硬编码在代码里或提交到公开的代码仓库(如 GitHub)。接下来我们会用环境变量来安全地管理它们。
3. 配置文件解析与深度定制
3.1 配置文件结构与关键参数
项目根目录下通常有一个配置文件,可能是.env.example、config.js或config.json。首先,我们需要根据示例文件创建我们自己的配置文件。比如,如果存在.env.example,我们可以复制它并重命名为.env:
cp .env.example .env然后,用文本编辑器打开.env文件。你会看到一系列以KEY=VALUE形式存在的环境变量。我们需要将之前获取的两把“钥匙”填进去。一个典型的配置核心部分如下:
# Telegram Bot Token BOT_TOKEN=你的Telegram_Bot_Token # OpenAI API Key OPENAI_API_KEY=你的OpenAI_API_Key # 可选:指定使用的OpenAI模型,例如 gpt-3.5-turbo, gpt-4 等 OPENAI_MODEL=gpt-3.5-turbo # 可选:系统提示词,用于设定AI助手的角色和行为 SYSTEM_MESSAGE=You are a helpful assistant. # 可选:对话历史记录的最大长度(轮次),用于控制上下文长度 MAX_HISTORY_LENGTH=10 # 可选:代理服务器设置(如需) # HTTP_PROXY=http://your-proxy:port # HTTPS_PROXY=http://your-proxy:portBOT_TOKEN和OPENAI_API_KEY:这是必填项,我们已经准备好了。OPENAI_MODEL:指定你要使用的 AI 模型。gpt-3.5-turbo性价比高、响应快,适合大多数聊天场景;gpt-4能力更强但价格更贵、速度稍慢。你可以根据需求和预算选择。项目可能支持更多模型,需查看其文档。SYSTEM_MESSAGE:这是非常强大的一环。它定义了 AI 的“人设”。你可以在这里详细描述你希望 AI 扮演的角色、遵守的规则、回答的风格。例如,你可以设置为“你是一位资深的软件工程师,用简洁专业的语言回答问题,如果不知道就明确说不知道,不要编造信息。” 这能极大地影响机器人的输出质量和风格。MAX_HISTORY_LENGTH:为了维持对话的连贯性,机器人需要记住之前的一些对话轮次作为上下文。这个参数决定了它记住多少轮。设置得太小(如3),AI 可能很快忘记之前聊过什么;设置得太大(如50),虽然上下文更完整,但会导致每次请求发送的数据量变大,增加 API 调用成本和延迟,并且有模型本身的上下文长度限制(例如gpt-3.5-turbo通常是 4096 个 token)。一般设置在 5-20 之间是个不错的起点。- 代理设置:如果你所在的网络环境无法直接访问 OpenAI 的 API,你可能需要配置 HTTP/HTTPS 代理。取消对应行的注释并填入你的代理地址。
3.2 高级配置与个性化
除了基本配置,我们还可以深入代码层面进行个性化定制。这通常需要你有一点 JavaScript 基础。查看项目的index.js或主入口文件,你可以找到消息处理的核心逻辑。
1. 实现按用户或群组隔离上下文:默认情况下,项目可能为所有对话共享一个上下文,或者为每个聊天 ID(私聊或群聊)单独维护上下文。但有时我们希望在同一个群聊里,机器人能区分不同用户的对话,即用户A和用户B与机器人的对话历史互不干扰。这需要修改上下文存储的逻辑。一个简单的思路是,以chatId_userId的组合作为键来存储对话历史,而不是单一的chatId。你需要找到项目中管理对话历史(可能是一个Map或对象)的部分,并修改其键的生成策略。
2. 添加自定义命令和权限控制:Telegram 机器人支持自定义命令(如/start,/help,/reset)。项目可能已经内置了一些。你可以很容易地添加新的。例如,添加一个/version命令来返回机器人版本信息,或者添加一个/clear命令让用户手动清空自己的对话历史。在代码中寻找类似bot.onText(/\/command/, callback)这样的模式进行添加。同时,你还可以在回调函数中检查msg.from.id,来实现基于用户 ID 的权限控制,比如只允许特定的管理员用户使用某些高级命令。
3. 设置使用频率限制:为了防止 API 被滥用(导致费用激增)或对单个用户进行限流,你需要实现一个简单的频率限制。这可以在消息处理函数的最开始加入。例如,使用一个Map来记录每个用户上次请求的时间戳,如果同一个用户在短时间内(比如5秒内)发送了多条消息,则忽略后续消息或回复“请稍后再试”。
// 伪代码示例 const userLastRequest = new Map(); const COOLDOWN_MS = 5000; // 5秒冷却 bot.on('message', (msg) => { const userId = msg.from.id; const now = Date.now(); const lastRequest = userLastRequest.get(userId); if (lastRequest && (now - lastRequest) < COOLDOWN_MS) { // 发送频率过快提示 bot.sendMessage(msg.chat.id, '请求过于频繁,请稍后再试。'); return; } userLastRequest.set(userId, now); // ... 后续处理逻辑 });4. 日志与监控:为了方便调试和监控机器人运行状态,建议添加日志记录。你可以使用console.log,但更推荐使用winston或pino这样的日志库,它们可以按级别(info, error, debug)记录日志,并输出到文件或控制台。记录的内容可以包括:接收到的消息摘要、发送给 OpenAI 的请求、收到的回复、API 调用耗时、以及任何错误信息。这在你排查“为什么机器人不回复了”这类问题时至关重要。
4. 部署与运行实战
4.1 本地开发运行与调试
配置好.env文件后,我们就可以在本地运行机器人了。通常,项目的package.json里会定义启动脚本。查看package.json的scripts部分,常见的启动命令是npm start或node index.js。
在项目根目录下打开终端,运行:
npm start # 或者 node index.js如果一切配置正确,你应该能看到终端输出类似 “Bot has been started...” 或 “Listening for messages...” 的日志信息。这表明你的机器人服务已经启动,并在轮询(Polling)Telegram 服务器的消息。
本地调试流程:
- 验证机器人上线:在 Telegram 中搜索你创建的机器人用户名(如
@my_awesome_ai_bot),点击 “START” 或发送/start命令。如果本地服务运行正常,你应该能收到机器人的欢迎回复。 - 测试基础对话:尝试发送一些简单问题,比如 “Hello” 或 “What's the weather like?”,观察机器人是否能回复,以及回复内容是否符合预期。
- 观察终端日志:同时,注意查看运行服务的终端窗口。所有接收和发送的消息、API 调用情况、可能出现的错误都应该在这里打印出来。这是你排查问题的第一现场。
- 测试上下文:连续问几个相关的问题,比如先问“Python是什么?”,再问“它适合做什么?”,看机器人第二句回答是否能基于第一句的上下文。
- 测试重置功能:如果项目实现了
/reset命令,使用它,然后再次问一个依赖上下文的问题,确认历史已被清空。
在本地运行非常适合开发和调试,你可以随时修改代码,重启服务,快速验证效果。但本地运行要求你的电脑一直开机且联网,这显然不适合提供持续服务。因此,我们需要将机器人部署到服务器上。
4.2 服务器部署方案选型
将 Node.js 应用部署到线上服务器有多种成熟方案,这里介绍两种最常用的。
方案一:使用 PM2 进程管理(推荐给大多数个人项目)PM2 是一个强大的 Node.js 进程管理器,它能保证应用持续运行,崩溃后自动重启,还能方便地查看日志和监控性能。
- 服务器准备:购买一台云服务器(如腾讯云、阿里云、AWS EC2 等),安装好 Node.js 环境。
- 上传代码:通过 Git 克隆你的项目到服务器,或者使用
scp、rsync等工具将本地代码上传。 - 安装 PM2 全局:在服务器上运行
npm install -g pm2。 - 使用 PM2 启动:在项目目录下,运行
pm2 start index.js --name chatgpt-telebot。--name参数给你的进程起个名字,方便管理。 - 常用 PM2 命令:
pm2 logs chatgpt-telebot:查看该应用的实时日志。pm2 status:查看所有由 PM2 管理的应用状态。pm2 restart chatgpt-telebot:重启应用。pm2 stop chatgpt-telebot:停止应用。pm2 delete chatgpt-telebot:从 PM2 列表中删除应用。
- 设置开机自启:运行
pm2 startup然后根据提示执行它生成的命令,再运行pm2 save,这样服务器重启后你的机器人也会自动启动。
提示:在服务器上,同样需要创建
.env文件并填入正确的配置信息。务必确保服务器防火墙和安全组规则允许外网访问(Telegram API 使用 HTTPS),但也要保护好你的.env文件不被他人读取。
方案二:使用 Docker 容器化部署Docker 能提供一致性的运行环境,避免“在我机器上好好的”这类问题。如果项目提供了Dockerfile,部署会非常简单。
- 构建镜像:在项目根目录(包含
Dockerfile的目录)运行docker build -t chatgpt-telebot .。 - 运行容器:
docker run -d --name telegram-bot --env-file .env chatgpt-telebot。-d表示后台运行,--env-file指定包含环境变量的文件。 - 查看日志:
docker logs -f telegram-bot。
如果没有Dockerfile,你可以自己编写一个,基础镜像是node:18-alpine,然后复制代码、安装依赖、设置启动命令。
关于 Webhook 与 Polling:Telegram Bot 有两种方式接收消息:Polling(轮询)和Webhook(网络钩子)。
- Polling:你的服务器定期(比如每秒)向 Telegram 服务器询问:“有没有新消息给我?” 这种方式简单,适合开发和服务器没有固定公网 IP/域名的情况。
hobk/chatgpt-telebot项目默认很可能使用这种方式。 - Webhook:你需要一个具有 SSL 证书(即 HTTPS)的公网可访问的 URL。你把这个 URL 告诉 Telegram,每当有消息发给你的机器人时,Telegram 服务器会主动将消息推送到你这个 URL。这种方式实时性更高,更节省资源(不需要频繁轮询),但设置稍复杂,需要处理 SSL 和公网访问。
对于初学者和大多数场景,Polling 完全够用。如果你使用 PM2 或 Docker 部署,并且服务器有公网 IP,Polling 就能稳定工作。只有当你有极高的性能要求或特定架构需求时,才需要考虑切换到 Webhook 模式,这通常需要修改项目代码中 Bot 的初始化部分。
5. 成本控制、优化与安全实践
5.1 监控与优化 API 调用成本
使用 OpenAI API 是收费的,费用基于你消耗的 Token 数量。Token 可以粗略理解为单词和标点符号的片段。因此,控制成本非常重要。
1. 理解计费因素:
- 输入 Token:你发送给 API 的消息(包括系统提示、历史对话和当前用户问题)的总长度。
- 输出 Token:AI 返回的答案的长度。
- 模型单价:不同模型每千个 Token 的价格不同(例如
gpt-3.5-turbo比gpt-4便宜得多)。
2. 核心优化策略:
- 合理设置
MAX_HISTORY_LENGTH:这是控制输入 Token 数量的最有效杠杆。不要盲目设置过大。对于日常闲聊,5-10 轮历史通常足以维持连贯性。你可以根据机器人的实际对话分析,找到一个平衡点。 - 精简
SYSTEM_MESSAGE:系统提示词也会计入每次请求的 Token。在清晰定义角色的前提下,尽量保持简洁。避免写入冗长的背景故事。 - 实现对话总结或截断:对于超长对话,一种高级策略是当历史记录超过一定长度时,不是简单地丢弃最老的记录,而是尝试用 AI 将之前的长篇对话总结成一段简短的摘要,然后用这个摘要作为新的“历史”开头。这能极大地节省 Token 并保持超长上下文。不过,这需要额外的 API 调用和更复杂的逻辑。
- 设置使用额度或开关:你可以在代码层面为每个用户或每个群组设置每日或每月使用限额。当达到限额后,机器人可以礼貌地拒绝回答。这能有效防止意外滥用。
3. 监控成本:
- 定期查看 OpenAI 平台上的使用量统计和费用情况。
- 可以在机器人代码中,记录每次请求消耗的 Token 数(OpenAI API 响应头中通常会返回),并汇总到日志或数据库中,以便自己分析使用模式。
5.2 安全加固与隐私考量
运行一个公开的、连接着付费 API 的机器人,安全不容忽视。
1. 保护你的密钥:
- 永远不要提交
.env文件到 Git:确保.env在.gitignore文件中。 - 服务器文件权限:确保服务器上
.env文件的权限设置为仅所有者可读(如chmod 600 .env)。 - 使用密钥管理服务:对于更严格的生产环境,可以考虑使用云服务商提供的密钥管理服务(如 AWS Secrets Manager, Azure Key Vault)来动态获取密钥,而不是存储在文件里。
2. 访问控制:
- 限制可使用机器人的用户/群组:在代码中维护一个白名单(允许使用的用户 ID 或群组 ID 列表)。在收到消息时,首先检查
msg.chat.id或msg.from.id是否在白名单内,如果不是,则忽略或回复无权限。这可以防止机器人被拉入陌生的群组产生不必要的消耗。 - 禁用群组中的“提及”回复:在群聊中,默认情况下机器人可能会响应所有消息,这既吵又费钱。可以修改逻辑,使其只响应以
/开头的命令消息,或者只有当消息中明确@提及了机器人用户名时才回复。
3. 内容过滤与审核:
- 虽然 ChatGPT 本身有安全策略,但你可能希望增加一层自己的过滤。例如,可以检查用户输入中是否包含某些极端敏感词汇,如果包含则直接拒绝处理并给出警告。这既是为了合规,也是保护你的机器人不被用于不当用途。
- 同样,对 AI 返回的内容也可以进行二次检查(虽然概率低,但 AI 有可能生成不合适的内容),然后再发送给用户。
4. 处理 API 失败:
- OpenAI API 可能因为网络、速率限制、账户问题等调用失败。你的代码必须有健壮的错误处理。当 API 调用失败时,应该向用户发送一个友好的错误提示(如“服务暂时不可用,请稍后再试”),而不是让机器人沉默或崩溃。同时,在日志中详细记录错误信息以便排查。
6. 功能扩展与高级玩法
基础功能跑通后,你可以基于这个框架,玩出很多花样。
1. 多模态支持:如果项目支持或经过改造,可以让机器人处理图片。当用户发送图片时,你可以使用 OpenAI 的视觉理解模型(如 GPT-4V)来分析图片内容并回复。或者,当用户请求生成图片时,调用 DALL-E API 生成图片并发送回 Telegram。Telegram Bot API 支持发送图片、文档等多种媒体格式。
2. 集成外部工具与知识库:让机器人不再仅仅依赖 OpenAI 的内置知识。你可以:
- 联网搜索:当用户问及时事或最新信息时,调用搜索引擎 API(如 SerpAPI)获取结果,然后将搜索结果作为上下文的一部分发给 ChatGPT,让它总结后回复。
- 接入私有数据:通过“嵌入”技术,将你的公司文档、个人笔记等文本资料向量化存储。当用户提问时,先从其私有知识库中检索最相关的片段,再连同问题和片段一起发给 ChatGPT,让它基于你的私有资料作答。这相当于为机器人接上了“外接大脑”。
3. 实现工作流自动化:将机器人作为自动化流程的触发器。例如:
- 用户向机器人发送一个 GitHub 仓库链接,机器人自动调用 API 获取该仓库信息并总结。
- 用户发送“提醒我明天下午3点开会”,机器人解析时间信息,并调用一个日历 API 或简单地在你自己的数据库里创建一条提醒记录。
- 在群聊中,当有人发送特定关键词(如“报bug”)时,机器人自动收集该条消息和后续讨论,并格式化成 issue 模板,提示用户确认后提交到项目管理工具。
4. 状态管理与插件化:为机器人引入状态机。例如,定义一个“翻译模式”:用户发送/translate后,机器人进入翻译状态,接下来用户发送的任何文本都会被当作待翻译内容,机器人调用翻译 API 后回复结果,然后退出该状态。这比每次都要输入/translate 文本更自然。你可以设计一个插件系统,将不同功能(聊天、翻译、查天气、讲笑话)模块化,方便管理和扩展。
7. 常见问题排查与维护心得
在实际运行中,你肯定会遇到各种各样的问题。这里记录一些典型场景和解决思路。
问题1:机器人收不到消息,或者回复延迟极高。
- 可能原因A:Token 配置错误。仔细检查
.env文件中的BOT_TOKEN是否与@BotFather给出的一致,前后有无多余空格。 - 可能原因B:服务器网络问题。你的服务器可能无法访问 Telegram 的 API 服务器。在服务器上尝试
curl一个 Telegram 的 API 地址看看是否通。如果使用 Polling 且服务器在国内,有时网络波动会导致连接不稳定。 - 可能原因C:PM2 进程挂了或日志满了。使用
pm2 status查看进程状态,使用pm2 logs查看是否有持续的错误输出。有时磁盘满了导致日志无法写入也会使进程异常。 - 排查步骤:
- 检查 PM2/Docker 进程状态,重启服务。
- 查看应用日志,寻找错误信息(如
Invalid token,ECONNREFUSED等)。 - 在服务器上手动运行
node index.js看控制台输出。 - 临时关闭服务器防火墙或安全组策略测试。
问题2:机器人能收到消息,但从不回复,或者回复“出错”。
- 可能原因A:OpenAI API Key 错误或余额不足。登录 OpenAI 平台检查 API Key 是否有效,以及账户是否有额度。
- 可能原因B:触发了 OpenAI 的内容安全策略。用户的问题或 AI 的回复可能被 OpenAI 的安全系统拦截。查看应用日志中 OpenAI API 返回的错误信息。
- 可能原因C:代码逻辑错误或未处理异常。某个消息处理函数中出现了未捕获的异常,导致整个进程卡住或崩溃。查看日志中是否有
UnhandledPromiseRejection或具体的错误堆栈。 - 排查步骤:
- 检查 OpenAI 账户状态和账单。
- 在代码中增加更详细的错误捕获和日志,尤其是在调用 OpenAI API 的部分。
- 尝试用一个最简单的问题(如“Hi”)测试,排除复杂输入导致的问题。
问题3:对话上下文混乱,AI 答非所问。
- 可能原因A:
MAX_HISTORY_LENGTH设置过小。AI 忘记了太早的对话。 - 可能原因B:上下文存储键冲突。如果你修改了代码,检查是否为每个用户或每个会话正确维护了独立的历史记录 Map 键。
- 可能原因C:历史消息在拼接时格式错误。OpenAI Chat API 要求消息以特定格式(
role:system,user,assistant)的数组传递。检查你的代码在组装这个数组时是否正确,是否在历史中混杂了角色错误的消息。 - 排查步骤:
- 在日志中打印出每次发送给 OpenAI 的完整消息数组,检查其结构和内容。
- 临时调大
MAX_HISTORY_LENGTH测试。 - 使用
/reset命令清空历史再测试。
问题4:在群聊中,机器人回复了所有人的消息,刷屏严重。
- 可能原因:默认的消息监听逻辑是处理所有消息。你需要修改代码,在群聊中只处理命令或提及。
- 解决方案:在消息处理回调中,判断
msg.chat.type是否为‘group’或‘supergroup’。如果是,再判断消息文本是否以/开头(命令),或者是否包含机器人的用户名(如@my_awesome_ai_bot)。只有满足条件时才进行后续处理。
长期维护建议:
- 定期更新依赖:运行
npm outdated查看是否有可更新的包,尤其是 Telegram Bot API 和 OpenAI 库的更新,可能包含重要功能或安全修复。更新前请在测试环境验证。 - 备份配置和数据库:如果你将对话历史或用户数据持久化到了数据库(如 SQLite、Redis),请定期备份。
- 关注 OpenAI 的更新:OpenAI 的模型、API 和定价可能会有调整,及时关注其官方公告,评估对你的机器人的影响。
- 设立监控告警:最简单的,可以用 PM2 的
pm2 monit查看资源占用。更进一步的,可以编写一个健康检查脚本,定期向机器人发送测试消息,如果收不到预期回复,就通过邮件或即时通讯工具通知你。
