English | 中文
一个基于 Node.js 的 ChatGPT 电报机器人。支持非浏览器和基于浏览器的 API。
Fun fact: 这篇中文文档是 ChatGPT 翻译的。
🎉 v2 已发布!
🔔 2023 年 4 月 3 日 (v2.5.0)
- 支持不同用户/群组的多个会话 by @Vadko.
- 支持将消息队列设置为可选 by @Vadko.
历史更新
🔔 2023 年 3 月 10 日 (v2.4.0)
- 添加超时机制以防止消息队列被卡住。您可以在配置文件中覆盖默认超时时间。
🔔 2023 年 3 月 7 日 (v2.3.2)
- 您现在可以从 Docker Hub 拉取 预构建的 Docker 镜像 了!
🔔 2023 年 3 月 2 日 (v2.3.0)
- 支持 OpenAI 官方 chat completions API。
- 支持使用自定义的 fetch 函数进行代理。
我们强烈建议您使用 official
API。有传言称如果您继续使用 unofficial
和 browser
API,OpenAI 可能会禁止您的账户。
🔔 2023 年 2 月 28 日 (v2.2.0)
- 支持消息队列以避免速率限制。
- 改善 Markdown 解析。
🔔 2023 年 2 月 22 日 (v2.1.1)
- 支持自定义提示前缀和后缀(允许您自定义机器人的身份和行为)。
- 支持 Node.js v19。
🔔 2023 年 2 月 19 日 (v2.1.0)
我们已经添加了对 @acheong08 的非官方代理 API 的支持。此 API 使用代理服务器,允许用户绕过 Cloudflare 保护并使用真正的 ChatGPT。请参阅 使用方法 获取更多详情。
对于老用户,我们已更新我们的 API 选项。
api.version
现在变为了api.type
,可选项为browser
(之前的v3
)、official
(之前的v4
)和unofficial
。请相应地更新您的配置文件。
🔔 2023 年 2 月 17 日
根据维护者之一的说法,OpenAI 已经修补了这种方法。所以你要么使用带官方模型的无浏览器 Official API(需要付费),要么使用基于浏览器的解决方案。
私聊 | 群聊 |
---|---|
- 支持非浏览器 (官方,非官方) 和基于浏览器的 API
- 支持私聊和群聊
- 在隐私模式下工作 (机器人只能查看特定的消息)
- 基于用户和群组 ID 的机器人访问控制
- 使用命令重置聊天线程并刷新会话
- 使用消息队列以避免速率限制
- “正在输入”提示,Markdown 格式化等
- 绕过 Cloudflare 并自动完成验证码 (适用于基于浏览器的 API)
- 自定义机器人身份和行为 (通过设置
api.official.systemMessage
) - 用户友好的日志记录
感谢 @transitive-bullshit 制作了这个易于理解的表格!
类型 | 免费? | 稳定? | 质量? |
---|---|---|---|
official |
❌ 否 | ✅ 是 | ✅ 真实 ChatGPT 模型 |
unofficial |
✅ 是 | ☑️ 可能 | ✅ 真实 ChatGPT |
browser |
✅ 是 | ❌ 否 | ✅ 真实 ChatGPT |
official
: 使用 OpenAI 官方的 chat completions API,默认基于gpt-3.5-turbo
模型 (官方、稳定,但不免费)unofficial
: 使用一个非官方的代理服务器以绕过 Cloudflare 访问 ChatGPT 网页版的后端 API (使用真实的 ChatGPT,非常轻量级,但依赖第三方服务器并且受速率限制)browser
(不推荐使用): 使用 Puppeteer 访问官方的 ChatGPT 网页版 (使用真实的ChatGPT,但非常不稳定、耗费资源,并且容易出错)
Warning
有传言称,如果您继续使用
unofficial
和browser
API,OpenAI 可能会封禁您的账户。请自行决定是否使用。
要开始使用,请按照以下步骤操作:
- 克隆这个项目。
- 在
config/
文件夹下创建local.json
。可以将config/default.json
复制为模板。 - 按照文件中的说明修改
local.json
。local.json
中的设置将覆盖default.json
中的默认设置。
- 如果您想使用非浏览器的官方 API,请将
api.type
设置为official
。然后提供您的OpenAI API密钥和其他设置。您可以参考这里获取更多详细信息。请注意,这将消耗您的账户余额。 - 如果您想使用非浏览器的非官方 API,请将
api.type
设置为unofficial
。然后提供您的 OpenAI 访问令牌 (如何获取访问令牌?) 和其他设置。您可以参考这里获取更多详细信息。 - 如果您想使用基于浏览器的 API (不推荐),请将
api.type
设置为browser
。然后提供 OpenAI / Google / Microsoft 凭证和其他设置。您可以参考这里和这里获取更多详细信息。请确保您已安装基于 Chromium 的浏览器。
然后,您可以使用以下命令启动机器人:
pnpm install
pnpm build && pnpm start
请按以下步骤开始:
-
创建一个名为
config
的文件夹,并在其中创建一个local.json
文件。您可以按照“选项 1: Node”中的说明自定义设置。 -
运行以下命令启动机器人:
docker run -d -v ./config:/app/config raineggplant/chatgpt-telegram-bot:latest
这将拉取最新的只支持无浏览器 API 的镜像。如果您想使用基于浏览器的 API,则可以将标签后缀添加为
-browser
,例如raineggplant/chatgpt-telegram-bot:latest-browser
。
要在 Telegram 中与机器人聊天,您可以:
- 向机器人直接发送消息(不支持在群组中使用)
- 发送以指定命令开头的消息(例如
/chat
或您在 JSON 配置文件中指定的命令) - 回复机器人的最后一条消息
Note 在将机器人添加到群组之前,请确保已启用机器人的隐私模式,否则它将回复群组中的每条消息。
该机器人还有几个命令。
/help
:显示帮助信息。/reset
:重置当前聊天线程并开始新线程。/reload
(需要管理员权限,只适用于基于浏览器的 API):刷新 ChatGPT 会话。
Note 在群组中使用命令时,请确保在命令之后包含提及,例如
/help@chatgpt_bot
。
您可以使用 Xvfb 在无头服务器上创建虚拟帧缓冲区,并运行以下程序:
xvfb-run -a --server-args="-screen 0 1280x800x24 -nolisten tcp -dpi 96 +extension RANDR" pnpm start
我们建议您使用 Google 验证,以避免复杂的登录 Recaptchas。如果您使用 OpenAI 帐户,则可能需要使用 nopecha 或 2captcha 或手动解决Recaptcha(通过使用 x11vnc 连接到显示服务器)。有关 CAPTCHA 解决的更多详细信息,请参阅API存储库。
- ChatGPT API:ChatGPT API 的 Node.js 客户端。
- ChatGPT:Python 版本的 ChatGPT API。
- Node.js Telegram Bot API:NodeJS 的 Telegram Bot API。
- 🤖️ chatbot-telegram:另一个 Telegram ChatGPT 机器人。
如果您觉得这个项目有用,请给它一个 star ⭐。