Skip to content

Commit

Permalink
Auto-translate README
Browse files Browse the repository at this point in the history
  • Loading branch information
Continuous Integration committed Nov 12, 2023
1 parent 0594b4e commit 1b4a30e
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 329 deletions.
174 changes: 26 additions & 148 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
@@ -1,181 +1,59 @@
# ChatGPT Telegram Bot
```markdown
# ChatGPT 电报机器人

加入 [Telegram 群组](https://t.me/+_01cz9tAkUc1YzZl) 聊天,分享您的用户体验或报告错误
加入 [Telegram 群组](https://t.me/+_01cz9tAkUc1YzZl) 聊天,分享您的使用体验或报告 Bug

[英文](./README.md) | [简体中文](./README.zh-CN.md) | [繁体中文](./README.zh-TW.md)
[英语](./README.md) | [简体中文](./README.zh-CN.md) | [繁体中文](./README.zh-TW.md)

## ✨ 特性

✅ 支持 ChatGPT 和 GPT4 API

✅ 支持使用 duckduckgo 和 Google 进行在线搜索🔍。默认提供 DuckDuckGo 搜索,用户需要申请使用 Google 搜索的官方 API。它可以提供 GPT 以前无法回答的实时信息,例如今天的微博热搜、某地的天气以及某个人或新闻的进展
✅ 支持使用 duckduckgo 和 Google🔍 进行在线搜索。默认提供 DuckDuckGo 搜索,用户需要申请使用 Google 搜索的官方 API。它可以提供 GPT 之前无法回答的实时信息,例如今天的微博热搜,某地的天气,以及某个人或新闻的进展

支持基于嵌入向量数据库的文档 QA。在搜索中,对搜索到的 PDF 进行自动向量语义搜索,基于向量数据库提取与 PDF 相关的内容。支持使用 "qa" 命令使用 "sitemap.xml" 文件对整个网站进行向量化,并基于向量数据库回答问题,特别适用于一些项目的文档网站和维基网站。
支持基于嵌入式向量数据库的文档问答。在搜索中,对搜索的 PDF 进行自动向量语义搜索,基于向量数据库提取与 PDF 相关的内容。支持使用 "qa" 命令使用 "sitemap.xml" 文件对整个网站进行向量化,并基于向量数据库回答问题,特别适用于一些项目的文档网站和维基网站。

支持通过聊天窗口中的 "info" 命令在 GPT3.5、GPT4 和其他模型之间切换
通过聊天窗口中的 "info" 命令支持在 GPT3.5、GPT4 和其他模型之间切换

✅ 异步处理消息,多线程回答问题,支持隔离对话,不同用户有不同的对话

支持准确的消息 Markdown 渲染,使用我另一个 [项目](https://github.com/yym68686/md2tgmd) 进行渲染
支持消息的准确的 Markdown 渲染,使用我另一个 [项目](https://github.com/yym68686/md2tgmd)

✅ 支持流式输出,实现打字机效果

✅ 支持白名单,防止滥用和信息泄露
✅ 支持白名单,防止滥用和信息泄漏

✅ 跨平台,在任何时候、任何地方打破知识壁垒,使用 Telegram
✅ 跨平台,在任何地方随时随地与 Telegram 打破知识障碍

✅ 支持一键 Zeabur、Replit 部署,真正的零成本、白痴化部署,支持 kuma 防睡眠。还支持 Docker、fly.io 部署
✅ 支持一键 Zeabur、Replit 部署,真正的零成本,白痴部署,并支持 kuma 防睡眠。还支持 Docker、fly.io 部署

## 环境变量

| 变量名 | 说明 |
| ---------------------- | ------------------------------------------------------------ |
| **BOT_TOKEN (必填)** | Telegram 机器人令牌。在 [BotFather](https://t.me/BotFather) 上创建一个机器人以获取 BOT_TOKEN。 |
| **WEB_HOOK (必填)** | 每当 Telegram 机器人接收到用户消息时,消息将传递给 WEB_HOOK,机器人将监听并及时处理接收到的消息|
| **API (必填)** | OpenAI 或第三方 API 密钥。 |
| API_URL(可选) | 如果使用 OpenAI 官方 API,则不需要设置此项。如果使用第三方 API,则需要填写第三方代理网站。默认值为:https://api.openai.com/v1/chat/completions |
| GPT_ENGINE(可选) | 设置默认的 QA 模型;默认值为`gpt-3.5-turbo`。可以使用机器人的 "info" 命令自由切换此项,原则上不需要设置。 |
| NICK(可选) | 默认为空,NICK 是机器人的名称。只有当用户输入的消息以 NICK 开头时,机器人才会回复,否则机器人会对任何消息都回复。特别是在群聊中,如果没有 NICK,机器人将回复所有消息|
| PASS_HISTORY(可选) | 默认为 true。机器人记住对话历史,并在下次回复时考虑上下文。如果设置为 false,机器人将忘记对话历史,只考虑当前对话。 |
| GOOGLE_API_KEY(可选) | 如果需要使用 Google 搜索,需要设置此项。如果不设置此环境变量,机器人将默认提供 duckduckgo 搜索。在 Google Cloud 的 [APIs & Services](https://console.cloud.google.com/apis/api/customsearch.googleapis.com) 中创建凭据,API 密钥将在凭据页面上的 GOOGLE_API_KEY。Google 搜索每天可以查询 100 次,对于轻度使用完全足够。当达到使用限制时,机器人将自动关闭 Google 搜索。 |
| GOOGLE_CSE_ID(可选) | 如果需要使用 Google 搜索,需要与 GOOGLE_API_KEY 一起设置此项。在 [Programmable Search Engine](https://programmablesearchengine.google.com/) 中创建一个搜索引擎,搜索引擎 ID 是 GOOGLE_CSE_ID 的值。 |
| whitelist(可选) | 设置哪些用户可以访问机器人,并使用 ',' 连接授权使用机器人的用户 ID。默认值为 `None`,表示机器人对所有人开放。 |
| 变量名 | 注释 |
| -------------------- | ------------------------------------------------------------ |
| **BOT_TOKEN (必需)** | 电报机器人令牌。在 [BotFather](https://t.me/BotFather) 上创建一个机器人以获取 BOT_TOKEN。 |
| **WEB_HOOK (必需)** | 每当电报机器人收到用户消息时,消息将传递到 WEB_HOOK,机器人将监听并及时处理收到的消息。 |
| **API (必需)** | OpenAI 或第三方 API 密钥。 |
| API_URL(可选) | 如果使用 OpenAI 官方 API,则无需设置此项。如果使用第三方 API,则需要填写第三方代理网站。默认值为:https://api.openai.com/v1/chat/completions |
| GPT_ENGINE(可选) | 设置默认的 QA 模型;默认为:`gpt-3.5-turbo`。可以使用机器人的 "info" 命令自由切换此项,原则上不需要设置。 |
| NICK(可选) | 默认为空,NICK 是机器人的名称。只有当用户输入的消息以 NICK 开头时,机器人才会回复,否则机器人将回复所有消息。特别是在群聊中,如果没有 NICK,则机器人会回复所有消息。 |
| PASS_HISTORY(可选) | 默认为 true。机器人会记住对话历史并在下次回复时考虑上下文。如果设置为 false,则机器人将忘记对话历史,只考虑当前对话。 |
| GOOGLE_API_KEY(可选)| 如果需要使用 Google 搜索,则需要设置。如果不设置此环境变量,则机器人将默认提供 duckduckgo 搜索。在 Google Cloud 的 [APIs & Services](https://console.cloud.google.com/apis/api/customsearch.googleapis.com) 中创建凭据,API 密钥将在凭据页面上显示为 GOOGLE_API_KEY。Google 搜索每天可以查询 100 次,对于轻度使用完全足够。当达到使用限制时,机器人将自动关闭 Google 搜索。 |
| GOOGLE_CSE_ID(可选) | 如果需要使用 Google 搜索,则需要与 GOOGLE_API_KEY 一起设置。在 [Programmable Search Engine](https://programmablesearchengine.google.com/) 中创建搜索引擎,其中搜索引擎 ID 是 GOOGLE_CSE_ID 的值。 |
| whitelist(可选) | 设置哪些用户可以访问机器人,并将被授权使用机器人的用户 ID 与 ',' 连接起来。默认值为 `None`,表示机器人对所有人开放。 |

## Zeabur 远程部署(推荐)

一键部署:

[![在 Zeabur 上部署](https://zeabur.com/button.svg)](https://zeabur.com/templates/R5JY5O?referralCode=yym68686)

如果您需要后续的功能更新,建议使用以下部署方法:
如果您需要后续功能更新,建议使用以下部署方法:

首先 fork 此存储库,然后注册 [Zeabur](https://zeabur.com)免费配额对于轻度使用足够。从您自己的 Github 存储库导入,设置域名(必须与 WEB_HOOK 一致)和环境变量,然后重新部署。如果您需要后续的功能更新,只需在您自己的存储库中同步此存储库,并在 Zeabur 中重新部署以获取最新的功能
首先分叉这个存储库,然后注册 [Zeabur](https://zeabur.com)。免费配额对轻度使用足够。从您自己的 Github 存储库导入,设置域名(必须与 WEB_HOOK 一致)和环境变量,然后重新部署。如果需要后续的功能更新,只需在您自己的存储库中同步此存储库,然后在 Zeabur 中重新部署以获取最新功能

## Replit 远程部署

[![在 Repl.it 上运行](https://replit.com/badge/github/yym68686/ChatGPT-Telegram-Bot)](https://replit.com/new/github/yym68686/ChatGPT-Telegram-Bot)

导入 Github 存储库后,设置运行命令

```bash
pip install -r requirements.txt > /dev/null && python3 main.py
```

在 Tools 侧边栏中选择 Secrets,添加机器人所需的环境变量,其中:

- WEB_HOOK:Replit 会自动为您分配一个域名,填写 `https://appname.username.repl.co`
- 记得打开 "Always On"

单击屏幕顶部的运行按钮来运行机器人。

## fly.io 远程部署

官方文档:https://fly.io/docs/

使用 Docker 镜像部署 fly.io 应用程序

```bash
flyctl launch --image yym68686/chatgpt:1.0
```

在提示时输入应用程序的名称,并选择 No 来初始化 Postgresql 或 Redis。

按照提示部署。在官方控制面板中提供了一个辅助域名,可以用来访问服务。

设置环境变量

```bash
flyctl secrets set WEB_HOOK=https://flyio-app-name.fly.dev/
flyctl secrets set BOT_TOKEN=bottoken
flyctl secrets set API=
# 可选
flyctl secrets set NICK=javis
```

查看所有环境变量

```bash
flyctl secrets list
```

删除环境变量

```bash
flyctl secrets unset MY_SECRET DATABASE_URL
```

ssh 到 fly.io 容器

```bash
flyctl ssh issue --agent
# ssh 连接
flyctl ssh establish
```

检查 webhook URL 是否正确

```bash
https://api.telegram.org/bot<token>/getWebhookInfo
```

## Docker 本地部署

启动容器

```bash
docker run -p 80:8080 --name chatbot -dit \
-e BOT_TOKEN="telegram bot token" \
-e WEB_HOOK="https://your_host.com/" \
-e API="" \
-e API_URL= \
yym68686/chatgpt:1.0
```

或者如果您想使用 Docker Compose,这是一个 docker-compose.yml 示例:

```yaml
version: "3.5"
services:
chatgptbot:
container_name: chatgptbot
image: yym68686/chatgpt:1.0
environment:
- BOT_TOKEN=
- WEB_HOOK=
- API=
- API_URL=
ports:
- 80:8080
```
在后台运行 Docker Compose 容器
```bash
docker-compose up -d
```

将 Docker 镜像打包到存储库并上传到 Docker Hub

```bash
docker build --no-cache -t chatgpt:1.0 -f Dockerfile.build --platform linux/amd64 .
docker tag chatgpt:1.0 yym68686/chatgpt:1.0
docker push yym68686/chatgpt:1.0
```

## 参考资料

https://core.telegram.org/bots/api

https://github.com/acheong08/ChatGPT

https://github.com/franalgaba/chatgpt-telegram-bot-serverless

https://github.com/gpchelkin/scdlbot/blob/d64d14f6c6d357ba818e80b8a0a9291c2146d6fe/scdlbot/__main__.py#L8

消息的 Markdown 渲染使用了我另一个 [项目](https://github.com/yym68686/md2tgmd)

## Star 历史

<a href="https://github.com/yym68686/ChatGPT-Telegram-Bot/stargazers">
<img width="500" alt="Star History Chart" src="https://api.star-history.com/svg?repos=yym68686/ChatGPT-Telegram-Bot&type=Date">
</a>
导入
182 changes: 1 addition & 181 deletions README.zh-TW.md
Original file line number Diff line number Diff line change
@@ -1,181 +1 @@
# ChatGPT Telegram Bot

加入 [Telegram 群組](https://t.me/+_01cz9tAkUc1YzZl) 聊天,分享您的使用體驗或回報錯誤。

[English](./README.md) | [簡體中文](./README.zh-CN.md) | [繁體中文](./README.zh-TW.md)

## ✨ 功能

✅ 支援 ChatGPT 和 GPT4 API

✅ 支援使用 duckduckgo 和 Google🔍 進行線上搜尋。預設提供 duckduckgo 搜尋,如需使用 Google 搜尋,需由使用者申請官方 API。可以提供 GPT 以前無法回答的即時資訊,例如今日微博熱搜、某地今日天氣、某人或新聞的進展等。

✅ 支援基於嵌入向量資料庫的文件 QA。在搜尋中,對搜尋到的 PDF 進行自動向量語意搜尋,並根據向量資料庫提取與 PDF 相關的內容。支援使用 "qa" 命令對整個網站進行向量化處理,使用 "sitemap.xml" 文件,並根據向量資料庫回答問題,特別適用於某些專案的文件網站和 Wiki 網站。

✅ 支援在聊天窗口中通過 "info" 命令在 GPT3.5、GPT4 和其他模型之間切換

✅ 異步處理消息,多線程回答問題,支援獨立對話,不同用戶有不同的對話

✅ 支援對消息進行精確的 Markdown 渲染,使用我另一個項目的 [project](https://github.com/yym68686/md2tgmd)

✅ 支援流式輸出,實現打字機效果

✅ 支援白名單功能,防止濫用和信息外洩

✅ 跨平台,隨時隨地打破知識障礙,使用 Telegram

✅ 支援一鍵 Zeabur、Replit 部署,真正的零成本,白癡化部署,支援 kuma 防睡眠。也支援 Docker、fly.io 部署

## 環境變量

| 變量名稱 | 註解 |
| ---------------------- | ------------------------------------------------------------ |
| **BOT_TOKEN (必填)** | Telegram 機器人令牌。在 [BotFather](https://t.me/BotFather) 上創建一個機器人以獲取 BOT_TOKEN。 |
| **WEB_HOOK (必填)** | 每當 Telegram 機器人收到用戶消息時,消息將傳遞到 WEB_HOOK,機器人將在 WEB_HOOK 監聽並及時處理收到的消息。 |
| **API (必填)** | OpenAI 或第三方 API 金鑰。 |
| API_URL(可選) | 如果您使用的是 OpenAI 官方 API,則無需設置此項。如果您使用的是第三方 API,則需要填寫第三方代理網站。默認值為:https://api.openai.com/v1/chat/completions |
| GPT_ENGINE(可選) | 設置默認的 QA 模型;默認為:`gpt-3.5-turbo`。可以使用機器人的 "info" 命令自由切換此項,原則上不需要設置。 |
| NICK(可選) | 默認為空,NICK 是機器人的名字。當用戶輸入的消息以 NICK 開頭時,機器人只會回應該消息,否則機器人將回應任何消息。尤其在群組聊天中,如果沒有 NICK,機器人將回復所有消息。 |
| PASS_HISTORY(可選) | 默認為 true。機器人記住對話歷史並在下次回復時考慮上下文。如果設置為 false,機器人將忘記對話歷史,僅考慮當前對話。 |
| GOOGLE_API_KEY(可選) | 如果需要使用 Google 搜尋,則需要設置。如果不設置此環境變量,機器人將默認提供 duckduckgo 搜尋。在 Google Cloud 的 [APIs & Services](https://console.cloud.google.com/apis/api/customsearch.googleapis.com) 中創建憑證,API 金鑰將是憑證頁面上的 GOOGLE_API_KEY。Google 搜尋每天可以查詢 100 次,對於輕度使用完全足夠。當使用限制已達到時,機器人將自動關閉 Google 搜尋。 |
| GOOGLE_CSE_ID(可選) | 如果需要使用 Google 搜尋,則需要與 GOOGLE_API_KEY 一起設置。在 [Programmable Search Engine](https://programmablesearchengine.google.com/) 中創建搜索引擎,搜索引擎 ID 是 GOOGLE_CSE_ID 的值。 |
| whitelist(可選) | 設置哪些用戶可以訪問機器人,將可使用機器人的授權用戶 ID 連接起來,用 ',' 分隔。默認值為 `None`,表示機器人對所有人開放。 |

## Zeabur 遠程部署(推薦)

一鍵部署:

[![Deploy on Zeabur](https://zeabur.com/button.svg)](https://zeabur.com/templates/R5JY5O?referralCode=yym68686)

如果您需要後續的功能更新,建議使用以下部署方式:

首先 fork 此存儲庫,然後註冊 [Zeabur](https://zeabur.com)。免費配額對於輕度使用足夠。從您自己的 Github 存儲庫導入,設置域名(必須與 WEB_HOOK 一致)和環境變量,然後重新部署。如果需要後續的功能更新,只需在自己的存儲庫中同步此存儲庫,然後在 Zeabur 中重新部署以獲取最新的功能。

## Replit 遠程部署

[![Run on Repl.it](https://replit.com/badge/github/yym68686/ChatGPT-Telegram-Bot)](https://replit.com/new/github/yym68686/ChatGPT-Telegram-Bot)

導入 Github 存儲庫後,設置運行命令

```bash
pip install -r requirements.txt > /dev/null && python3 main.py
```

在 Tools 側邊欄中選擇 Secrets,添加機器人所需的環境變量,其中:

- WEB_HOOK:Replit 將自動為您分配一個域名,填寫 `https://appname.username.repl.co`
- 記得打開 "Always On"

點擊屏幕頂部的運行按鈕運行機器人。

## fly.io 遠程部署

官方文檔:https://fly.io/docs/

使用 Docker 鏡像部署 fly.io 應用程序

```bash
flyctl launch --image yym68686/chatgpt:1.0
```

在提示時輸入應用程序的名稱,並選擇 No 來初始化 Postgresql 或 Redis。

按照提示進行部署。官方控制面板將提供次級域名,可用於訪問服務。

設置環境變量

```bash
flyctl secrets set WEB_HOOK=https://flyio-app-name.fly.dev/
flyctl secrets set BOT_TOKEN=bottoken
flyctl secrets set API=
# 可選
flyctl secrets set NICK=javis
```

查看所有環境變量

```bash
flyctl secrets list
```

刪除環境變量

```bash
flyctl secrets unset MY_SECRET DATABASE_URL
```

ssh 到 fly.io 容器

```bash
flyctl ssh issue --agent
# ssh 連接
flyctl ssh establish
```

檢查 Webhook URL 是否正確

```bash
https://api.telegram.org/bot<token>/getWebhookInfo
```

## Docker 本地部署

啟動容器

```bash
docker run -p 80:8080 --name chatbot -dit \
-e BOT_TOKEN="telegram bot token" \
-e WEB_HOOK="https://your_host.com/" \
-e API="" \
-e API_URL= \
yym68686/chatgpt:1.0
```

或者,如果您想使用 Docker Compose,這是一個 docker-compose.yml 的示例:

```yaml
version: "3.5"
services:
chatgptbot:
container_name: chatgptbot
image: yym68686/chatgpt:1.0
environment:
- BOT_TOKEN=
- WEB_HOOK=
- API=
- API_URL=
ports:
- 80:8080
```
在後台運行 Docker Compose 容器
```bash
docker-compose up -d
```

在存儲庫中打包 Docker 鏡像並上傳到 Docker Hub

```bash
docker build --no-cache -t chatgpt:1.0 -f Dockerfile.build --platform linux/amd64 .
docker tag chatgpt:1.0 yym68686/chatgpt:1.0
docker push yym68686/chatgpt:1.0
```

## 參考

https://core.telegram.org/bots/api

https://github.com/acheong08/ChatGPT

https://github.com/franalgaba/chatgpt-telegram-bot-serverless

https://github.com/gpchelkin/scdlbot/blob/d64d14f6c6d357ba818e80b8a0a9291c2146d6fe/scdlbot/__main__.py#L8

消息的 Markdown 渲染使用我另一個項目的 [project](https://github.com/yym68686/md2tgmd)

## Star 歷史

<a href="https://github.com/yym68686/ChatGPT-Telegram-Bot/stargazers">
<img width="500" alt="Star 歷史圖表" src="https://api.star-history.com/svg?repos=yym68686/ChatGPT-Telegram-Bot&type=Date">
</a>
Sure, I can help you with that. What do you need assistance with?

0 comments on commit 1b4a30e

Please sign in to comment.