MCPcopy Index your code
hub / github.com/RainEggplant/chatgpt-telegram-bot

github.com/RainEggplant/chatgpt-telegram-bot @v2.5.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.5.0 ↗ · + Follow
29 symbols 56 edges 10 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

ChatGPT Telegram 机器人

badge:version docker image size license

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)

🔔 2023 年 3 月 2 日 (v2.3.0)

我们强烈建议您使用 official API。有传言称如果您继续使用 unofficialbrowser 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(需要付费),要么使用基于浏览器的解决方案。

🔔 2023 年 2 月 15 日

我们发布了 v2.0.0 版本的这个机器人,支持 非浏览器基于浏览器 的 API。您可以随时使用配置文件在两个 API 之间切换。此外,我们已经重构了代码库,使其更易于维护和扩展。

对于老用户,您需要从 .env 文件切换到 config/ 文件夹下的 json 文件。

特点

私聊 群聊
  • 支持非浏览器 (官方,非官方) 和基于浏览器的 API
  • 支持私聊和群聊
  • 在隐私模式下工作 (机器人只能查看特定的消息)
  • 基于用户和群组 ID 的机器人访问控制
  • 使用命令重置聊天线程并刷新会话
  • 使用消息队列以避免速率限制
  • “正在输入”提示,Markdown 格式化等
  • 绕过 Cloudflare 并自动完成验证码 (适用于基于浏览器的 API)
  • 自定义机器人身份和行为 (通过设置 api.official.systemMessage)
  • 用户友好的日志记录

使用方法

三种 API 类型之间的区别

感谢 @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

有传言称,如果您继续使用 unofficialbrowser API,OpenAI 可能会封禁您的账户。请自行决定是否使用。

启动服务器

选项 1: Node

要开始使用,请按照以下步骤操作:

  1. 克隆这个项目。
  2. config/ 文件夹下创建 local.json。可以将 config/default.json 复制为模板。
  3. 按照文件中的说明修改 local.jsonlocal.json 中的设置将覆盖 default.json 中的默认设置。
  4. 如果您想使用非浏览器的官方 API,请将 api.type 设置为 official。然后提供您的OpenAI API密钥和其他设置。您可以参考这里获取更多详细信息。请注意,这将消耗您的账户余额。
  5. 如果您想使用非浏览器的非官方 API,请将 api.type 设置为 unofficial。然后提供您的 OpenAI 访问令牌 (如何获取访问令牌?) 和其他设置。您可以参考这里获取更多详细信息。
  6. 如果您想使用基于浏览器的 API (不推荐),请将 api.type 设置为 browser。然后提供 OpenAI / Google / Microsoft 凭证和其他设置。您可以参考这里这里获取更多详细信息。请确保您已安装基于 Chromium 的浏览器。

然后,您可以使用以下命令启动机器人:

pnpm install
pnpm build && pnpm start

选项 2: Docker

请按以下步骤开始:

  1. 创建一个名为 config 的文件夹,并在其中创建一个 local.json 文件。您可以按照“选项 1: Node”中的说明自定义设置。
  2. 运行以下命令启动机器人:

    shell docker run -d -v ./config:/app/config raineggplant/chatgpt-telegram-bot:latest

    这将拉取最新的只支持无浏览器 API 的镜像。如果您想使用基于浏览器的 API,则可以将标签后缀添加为 -browser,例如 raineggplant/chatgpt-telegram-bot:latest-browser

在 Telegram 中与机器人聊天

要在 Telegram 中与机器人聊天,您可以:

  • 向机器人直接发送消息(不支持在群组中使用)
  • 发送以指定命令开头的消息(例如 /chat 或您在 JSON 配置文件中指定的命令)
  • 回复机器人的最后一条消息

Note 在将机器人添加到群组之前,请确保已启用机器人的隐私模式,否则它将回复群组中的每条消息。

该机器人还有几个命令。

  • /help:显示帮助信息。
  • /reset:重置当前聊天线程并开始新线程。
  • /reload(需要管理员权限,只适用于基于浏览器的 API):刷新 ChatGPT 会话。

Note 在群组中使用命令时,请确保在命令之后包含提及,例如/help@chatgpt_bot

高级选项

在无头服务器上运行基于浏览器 API 的机器人

您可以使用 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存储库

鸣谢

许可证

MIT License.

如果您觉得这个项目有用,请给它一个 star ⭐。

Extension points exported contracts — how you extend this code

Core symbols most depended-on inside this repo

Shape

Class 12
Interface 7
Method 6
Function 4

Languages

TypeScript100%

Modules by API surface

src/types.d.ts6 symbols
src/db.ts4 symbols
src/utils.ts3 symbols
src/handlers/message.ts3 symbols
src/handlers/command.ts3 symbols
src/handlers/chat.ts3 symbols
src/handlers/authentication.ts3 symbols
src/api.ts3 symbols
src/index.ts1 symbols

For agents

$ claude mcp add chatgpt-telegram-bot \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page