diff --git a/README.md b/README.md index a3c97992..adf870dc 100644 --- a/README.md +++ b/README.md @@ -1,126 +1,126 @@ # ChatGPT Telegram Bot -Join the [Telegram Group](https://t.me/+_01cz9tAkUc1YzZl) chat to share your user experience or report Bugs. +加入 [Telegram 群組](https://t.me/+_01cz9tAkUc1YzZl) 聊天,分享您的用戶體驗或報告錯誤。 -[English](./README.md) | [Simplified Chinese](./README.zh-CN.md) | [Traditional Chinese](./README.zh-TW.md) +[英文](./README.md) | [簡體中文](./README.zh-CN.md) | [繁體中文](./README.zh-TW.md) -## ✨ Features +## ✨ 功能 -✅ Supports ChatGPT and GPT4 API +✅ 支持 ChatGPT 和 GPT4 API -✅ Supports online search using duckduckgo and Google🔍. DuckDuckGo search is provided by default, and the official API for Google search needs to be applied by the user. It can provide real-time information that GPT could not answer before, such as Weibo hot search today, weather in a certain place today, and the progress of a certain person or news. +✅ 支持使用 duckduckgo 和 Google 进行在线搜索🔍。默认提供 DuckDuckGo 搜索,而 Google 搜索需要用户申请官方 API。它可以提供 GPT 以前无法回答的即时信息,例如今日微博热搜,某个地方今天的天气和某个人或新闻的进展情况。 -✅ Supports document QA based on the embedded vector database. In the search, for the searched PDF, automatic vector semantic search of PDF documents is performed, and pdf-related content is extracted based on the vector database. Supports using the "qa" command to vectorize the entire website with the "sitemap.xml" file, and answer questions based on the vector database, which is especially suitable for document websites and wiki websites of some projects. +✅ 支持基于嵌入式向量数据库的文档 QA。在搜索中,对于已搜索的 PDF,执行自动矢量语义搜索PDF文档,并根据矢量数据库提取与PDF相关的内容。支持使用“qa”命令向量化带有“sitemap.xml”文件的整个网站,并基于矢量数据库回答问题,特别适用于某些项目的文档网站和 wiki 网站。 -✅ Supports switching between GPT3.5, GPT4 and other models through the "info" command in the chat window +✅ 支持通过聊天窗口中的“info”命令在 GPT3.5,GPT4 和其他模型之间切换 -✅ Asynchronously processes messages, multi-threadedly answers questions, supports isolated dialogues, and different users have different dialogues +✅ 异步处理消息,多线程回答问题,支持孤立的对话,不同的用户有不同的对话 -✅ Supports accurate Markdown rendering of messages, using another [project](https://github.com/yym68686/md2tgmd) of mine +✅ 支持准确的消息 Markdown 渲染,使用我另一个 [项目](https://github.com/yym68686/md2tgmd) -✅ Supports streaming output, achieving typewriter effect +✅ 支持流式输出,实现打字机效果 -✅ Supports whitelisting to prevent abuse and information leakage +✅ 支持白名单,以防止滥用和信息泄漏 -✅ Cross-platform, breaking knowledge barriers anytime and anywhere with Telegram +✅ 跨平台,在 Telegram 上随时随地突破知识障碍 -✅ Supports one-click Zeabur, Replit deployment, true zero cost, idiotic deployment, and supports kuma anti-sleep. Also supports Docker, fly.io deployment +✅ 支持一键 Zeabur、Replit 部署,真正的零费用,傻瓜式部署,并支持 kuma 防睡眠。还支持 Docker、fly.io 部署 -## Environment variables +## 环境变量 -| Variable Name | Comment | -| ---------------------- | ------------------------------------------------------------ | -| **BOT_TOKEN (required)** | Telegram bot token. Create a bot on [BotFather](https://t.me/BotFather) to get the BOT_TOKEN. | -| **WEB_HOOK (required)** | Whenever the telegram bot receives a user message, the message will be passed to WEB_HOOK, where the bot will listen to it and process the received messages in a timely manner. | -| **API (required)** | OpenAI or third-party API key. | -| API_URL(optional) | If you are using the OpenAI official API, you don't need to set this. If you using a third-party API, you need to fill in the third-party proxy website. The default is: https://api.openai.com/v1/chat/completions | -| GPT_ENGINE (optional) | Set the default QA model; the default is:`gpt-3.5-turbo`. This item can be freely switched using the bot's "info" command, and it doesn't need to be set in principle. | -| NICK (optional) | The default is empty, and NICK is the name of the bot. The bot will only respond when the message starts with NICK that the user inputs, otherwise the bot will respond to any message. Especially in group chats, if there is no NICK, the bot will reply to all messages. | -| PASS_HISTORY (optional) | The default is true. The bot remembers the conversation history and considers the context when replying next time. If set to false, the bot will forget the conversation history and only consider the current conversation. | -| GOOGLE_API_KEY (optional)| If you need to use Google search, you need to set it. If you do not set this environment variable, the bot will default to provide duckduckgo search. Create credentials in Google Cloud's [APIs & Services](https://console.cloud.google.com/apis/api/customsearch.googleapis.com) and the API Key will be GOOGLE_API_KEY on the credentials page. Google search can be queried 100 times a day, which is completely sufficient for light use. When the usage limit has been reached, the bot will automatically turn off Google search. | -| GOOGLE_CSE_ID (optional) | If you need to use Google search, you need to set it together with GOOGLE_API_KEY. Create a search engine in [Programmable Search Engine](https://programmablesearchengine.google.com/), where the search engine ID is the value of GOOGLE_CSE_ID. | -| whitelist (optional) | Set which users can access the bot, and connect the user IDs authorized to use the bot with ','. The default value is `None`, which means that the bot is open to everyone. | +| 变量名 | 注释 | +| ------------------- | ---------------------------------------- | +| *BOT_TOKEN (required)* | Telegram 机器人令牌。在 [BotFather](https://t.me/BotFather)上创建一个机器人以获取 BOT_TOKEN。 | +| *WEB_HOOK (required)* | 每当 Telegram 机器人接收到用户的消息,该消息将被传递给 WEB_HOOK,机器人将在那里侦听并及时处理收到的消息。 | +| *API (required)* | 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 的值。 | +| 万能钥匙(可选) | 设置哪些用户可以访问机器人,并将授权使用机器人的用户 ID 与“,”连接起来。默认值为`无`,这意味着机器人向所有人开放。 | -## Zeabur Remote Deployment (Recommended) +## Zeabur 远程部署(推荐) -One-click deployment: +一键部署: [![Deploy on Zeabur](https://zeabur.com/button.svg)](https://zeabur.com/templates/R5JY5O?referralCode=yym68686) -If you need follow-up function updates, the following deployment method is recommended: +如果您需要后续功能更新,则建议使用以下部署方法: -Fork this repository first, then register for [Zeabur](https://zeabur.com). The free quota is sufficient for light use. Import from your own Github repository, set the domain name (which must be consistent with WEB_HOOK) and environment variables, and redeploy. If you need function updates in the follow-up, just synchronize this repository in your own repository and redeploy in Zeabur to get the latest functions. +首先,Fork 此存储库,然后注册 [Zeabur](https://zeabur.com)。在轻度使用的情况下,免费配额是足够的。从您自己的 Github 存储库导入后,设置域名(必须与 WEB_HOOK 一致)和环境变量,并重新部署。如果需要随后的功能更新,请在自己的存储库中同步此存储库,然后在 Zeabur 中重新部署以获取最新功能。 -## Replit Remote Deployment +## Replit 远程部署 [![Run on Repl.it](https://replit.com/badge/github/yym68686/ChatGPT-Telegram-Bot)](https://replit.com/new/github/yym68686/ChatGPT-Telegram-Bot) -After importing the Github repository, set the running command +导入 GitHub 存储库后,设置运行命令 ```bash pip install -r requirements.txt > /dev/null && python3 main.py ``` -Select Secrets in the Tools sidebar, add the environment variables required by the bot, where: +选择 Tools 侧边栏中的 Secrets,添加机器人所需的环境变量,其中: -- WEB_HOOK: Replit will automatically assign a domain name to you, fill in `https://appname.username.repl.co` -- Remember to open "Always On" +- WEB_HOOK:Replit 将为您自动分配一个域名,填写“https://appname.username.repl.co” +- 记住要打开“始终开启” -Click the run button on the top of the screen to run the bot. +单击屏幕顶部的运行按钮以运行机器人。 -## fly.io Remote Deployment +## fly.io 远程部署 -Official documentation: https://fly.io/docs/ +官方文档:https://fly.io/docs/ -Use Docker image to deploy fly.io application +使用 Docker 镜像部署 fly.io 应用程序 ```bash flyctl launch --image yym68686/chatgpt:1.0 ``` -Enter the name of the application when prompted, and select No for initializing Postgresql or Redis. +提示输入应用程序名称,然后选择“不”以初始化 PostgreSQL 或 Redis。 -Follow the prompts to deploy. A secondary domain name will be provided in the official control panel, which can be used to access the service. +按照提示进行部署。官方控制面板中将提供第二个域名,可用于访问服务。 -Set environment variables +设置环境变量 ```bash flyctl secrets set WEB_HOOK=https://flyio-app-name.fly.dev/ flyctl secrets set BOT_TOKEN=bottoken flyctl secrets set API= -# optional +# 可选 flyctl secrets set NICK=javis ``` -View all environment variables +查看所有环境变量 ```bash flyctl secrets list ``` -Remove environment variables +删除环境变量 ```bash flyctl secrets unset MY_SECRET DATABASE_URL ``` -ssh to fly.io container +ssh 到 fly.io 容器 ```bash flyctl ssh issue --agent -# ssh connection +# ssh 连接 flyctl ssh establish ``` -Check whether the webhook URL is correct +检查 Webhook URL 是否正确 ```bash https://api.telegram.org/bot/getWebhookInfo ``` -## Docker Local Deployment +## Docker 本地部署 -Start the container +启动容器 ```bash docker run -p 80:8080 -dit \ @@ -131,7 +131,7 @@ docker run -p 80:8080 -dit \ yym68686/chatgpt:1.0 ``` -Or if you want to use Docker Compose, here is a docker-compose.yml example: +或者,如果要使用 Docker Compose,以下是 docker-compose.yml 示例: ```yaml version: "3.5" @@ -148,13 +148,13 @@ services: - 80:8080 ``` -Run Docker Compose container in the background +在后台运行 Docker Compose 容器 ```bash docker-compose up -d ``` -Package the Docker image in the repository and upload it to Docker Hub +在存储库中打包 Docker 镜像并将其上传到 Docker Hub ```bash docker build --no-cache -t chatgpt:1.0 -f Dockerfile.build --platform linux/amd64 . @@ -162,9 +162,9 @@ docker tag chatgpt:1.0 yym68686/chatgpt:1.0 docker push yym68686/chatgpt:1.0 ``` -## Reference +## 参考 -Reference Projects: +参考项目: https://core.telegram.org/bots/api @@ -174,9 +174,9 @@ https://github.com/franalgaba/chatgpt-telegram-bot-serverless https://github.com/gpchelkin/scdlbot/blob/d64d14f6c6d357ba818e80b8a0a9291c2146d6fe/scdlbot/__main__.py#L8 -The markdown rendering of the message used is another [project](https://github.com/yym68686/md2tgmd) of mine. +消息的 Markdown 渲染使用了我另一个 [项目](https://github.com/yym68686/md2tgmd)。 -## Star History +## Star 历史记录 Star History Chart diff --git a/README.zh-CN.md b/README.zh-CN.md index 29081955..0fc41909 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -1,85 +1,86 @@ -# ChatGPT Telegram Bot +# ChatGPT 电报机器人 -加入 [Telegram Group](https://t.me/+_01cz9tAkUc1YzZl) 来分享您的用户体验,或报告Bug。 +加入[电报群](https://t.me/+_01cz9tAkUc1YzZl)以分享用户体验或报告错误。 -[英文](./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 之前无法回答的实时信息,例如今天的微博热门搜索,某个地方今天的天气以及某个人或新闻的进展情况。 -✅ 支持基于嵌入向量数据库的文档问答。在搜索中,对于搜索到的pdf,可以自动对PDF文档进行向量化语义搜索,并基于向量数据库提取pdf相关的内容。支持使用qa命令对含有sitemap.xml文件的网站整体向量化,并基于向量数据库回答问题,特别适合一些项目的文档网站/wiki 网站 +✅ 支持基于嵌入向量数据库的文档 QA。在搜索中,针对搜索的 PDF,会执行 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 以获取 BOT_TOKEN。 | -| **WEB_HOOK(必填)** | telegram bot 每次收到用户消息,都会把消息传给 WEB_HOOK,机器人会在此监听,及时处理telegram里面收到的消息。 | -| **API(必填)** | OpenAI 或者第三方的 api key。 | -| API_URL(可选) | 如果使用 OpenAI 官方API,不需要设置此项。如果使用第三方API,需要填写第三方代理网址,默认值为: https://api.openai.com/v1/chat/completions | -| GPT_ENGINE(可选) | 设置默认的问答模型,默认为:`gpt-3.5-turbo`,该项可以使用机器人 info 命令自由切换,原则上不需要设置。 | -| NICK(可选) | 默认为空,NICK 是机器人的名字。当用户输入消息以NICK开头,机器人才会回答,否则机器人会回答任何消息。尤其在群聊里,没有NICK,机器人会对所有消息进行回复。 | -| PASS_HISTORY(可选) | 默认为真,表示机器人会记住对话历史,下次回复时会考虑上下文。如果设置为假,机器人会忘记对话历史,只考虑当前对话。 | -| GOOGLE_API_KEY(可选) | 如果需要谷歌搜索,则需要设置。如果不设置此环境变量,机器人默认提供duckduckgo搜索。在 Google cloud 的 **API 与服务** 中创建凭据,在凭据页面 API Key 就是 GOOGLE_API_KEY。Google 搜索一天可以查询100次,轻度使用完全足够,达到限额,机器人会自动关闭Google搜索。 | -| GOOGLE_CSE_ID(可选) | 如果需要谷歌搜索,则需要与 GOOGLE_API_KEY 一起设置。在[可编程搜索引擎](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`。该项可以使用机器人的“信息”命令自由切换,原则上不需要设置 | +| 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 一起设置。在[可编程搜索引擎](https://programmablesearchengine.google.com/)上创建一个搜索引擎,其中搜索引擎 ID 是 GOOGLE_CSE_ID 的值。 | +| 白名单(可选) | 设置哪些用户可以访问机器人,并使用“,”将授权使用机器人的用户 ID 连接起来。默认值为 `None`,这意味着机器人向所有人打开。 | -## Zeabur 远程部署 (推荐) +## 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重新部署即可获得最新功能。 +首先 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仓库后,设置运行命令。 +导入 Github 仓库后,设置运行命令 ```bash pip install -r requirements.txt > /dev/null && python3 main.py ``` -在左边栏Tools里面选择Secrets,添加机器人需要的环境变量,其中: +选择工具边栏中的 Secrets,添加机器人所需的环境变量,其中: -- WEB_HOOK: 在Replit会自动分配一个域名给你,填入`https://appname.username.repl.co` +- WEB_HOOK:Replit 将自动为您分配一个域名,请填写`https://appname.username.repl.co` +- 记得开启“始终开着” -点击屏幕上方的run,即可运行机器人。记得打开Always On。 +单击屏幕顶部的运行按钮运行机器人。 ## fly.io 远程部署 官方文档:https://fly.io/docs/ -使用Docker镜像部署 fly.io 应用 +使用 Docker 镜像部署 fly.io 应用程序 ```bash flyctl launch --image yym68686/chatgpt:1.0 ``` -输入应用的名字,若提示初始化Postgresql或Redis,一律选择否。 +在提示时输入应用程序名称,选择否以初始化 Postgresql 或 Redis。 -按照提示部署。在官网控制面板会提供一个二级域名,可以使用这个二级域名访问到服务。 +按照提示进行部署。在官方控制面板中提供一个辅助域名,可用于访问服务。 设置环境变量 @@ -87,7 +88,6 @@ flyctl launch --image yym68686/chatgpt:1.0 flyctl secrets set WEB_HOOK=https://flyio-app-name.fly.dev/ flyctl secrets set BOT_TOKEN=bottoken flyctl secrets set API= -flyctl secrets set COOKIES= # 可选 flyctl secrets set NICK=javis ``` @@ -98,24 +98,23 @@ flyctl secrets set NICK=javis flyctl secrets list ``` -移除环境变量 +删除环境变量 ```bash flyctl secrets unset MY_SECRET DATABASE_URL ``` -ssh连接fly.io容器 +ssh 到 fly.io 容器 ```bash -# 生成密钥 flyctl ssh issue --agent -# ssh连接 +# ssh 连接 flyctl ssh establish ``` -查看webhook url是否正确 +检查 webhook URL 是否正确 -``` +```bash https://api.telegram.org/bot/getWebhookInfo ``` @@ -132,7 +131,7 @@ docker run -p 80:8080 -dit \ yym68686/chatgpt:1.0 ``` -或者你想使用Docker Compose,下面是docker-compose.yml 示例: +或者如果您想使用 Docker Compose,这里有一个 docker-compose.yml 示例: ```yaml version: "3.5" @@ -149,13 +148,13 @@ services: - 80:8080 ``` -后台运行Docker Compose容器 +在后台运行 Docker Compose 容器 ```bash docker-compose up -d ``` -仓库打包Docker镜像,推送到Docker Hub +将 Docker 镜像打包到仓库中,并将其上传到 Docker Hub ```bash docker build --no-cache -t chatgpt:1.0 -f Dockerfile.build --platform linux/amd64 . @@ -163,7 +162,7 @@ docker tag chatgpt:1.0 yym68686/chatgpt:1.0 docker push yym68686/chatgpt:1.0 ``` -## 参考 +## 参考文献 参考项目: @@ -175,9 +174,9 @@ 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 +消息的 markdown 渲染使用了我的另一个[项目](https://github.com/yym68686/md2tgmd)。 -## Star历史 +## 星标历史 Star History Chart diff --git a/README.zh-TW.md b/README.zh-TW.md index db1c0c96..bb4d718e 100644 --- a/README.zh-TW.md +++ b/README.zh-TW.md @@ -1,127 +1,126 @@ # ChatGPT Telegram Bot -加入 [Telegram 群组](https://t.me/+_01cz9tAkUc1YzZl) 共享用户体验或报告错误。 +加入 [Telegram Group](https://t.me/+_01cz9tAkUc1YzZl) 聊天來分享您的使用體驗或回報問題。 -[English](./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 以前回答不了的即時信息,如今日微博熱搜,某個地方的天氣,以及某個人或新聞的進展情況。 -✅ 支持基于嵌入向量数据库的文档问答。在搜索中,对于搜索到的 pdf,可以自动对 PDF 文档进行向量化语义搜索,并基于向量数据库提取 pdf 相关的内容。支持使用 qa 命令对含有 sitemap.xml 文件的网站整体向量化,并基于向量数据库回答问题,特别适合一些项目的文档网站,wiki 网站 +✅ 基於嵌入式向量數據庫的文檔問答支持。在搜索中,對於搜索到的 PDF,會自動進行 PDF 文檔的向量語義搜索,並基於向量數據庫提取與 PDF 相關的內容。支持使用“qa”命令對具有“sitemap.xml”文件的整個網站進行向量化,並基於向量數據庫回答問題,特別適用於一些項目的文檔網站和 wiki 網站。 -✅ 支持在聊天框内使用 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 部署。 -## 环境变量 +## 環境變量 -| Variable Name | Comments | -| ----------------------| ------------------------------------------------------------| -| **BOT_TOKEN (required)**| telegram 机器人令牌,在 [BotFather](https://t.me/BotFather) 创建一个 bot 以获取 BOT_TOKEN。| -| **WEB_HOOK (required)** | telegram bot 每次收到用户消息,都会把消息传给 WEB_HOOK,机器人会在此监听,及时处理 telegram 里面收到的消息。| -| **API (required)** | OpenAI 或者第三方的 api key。 | -| API_URL (optional) | 如果使用 OpenAI 官方 API,不需要设置此项。如果使用第三方API,需要填写第三方代理网址,默认值为:https://api.openai.com/v1/chat/completions | -| GPT_ENGINE (optional)| 设置默认的问答模型,默认为:`gpt-3.5-turbo`,该项可以使用机器人 info 命令自由切换,原则上不需要设置。| -| NICK (optional) | 默认为空,NICK 是机器人的名字。当用户输入消息以 NICK 开头,机器人才会回答,否则机器人会回答任何消息。尤其在群聊里,没有 NICK,机器人会对所有消息进行回复。| -| PASS_HISTORY (optional)| 默认为真,表示机器人会记住对话历史,下次回复时会考虑上下文。如果设置为假,机器人会忘记对话历史,只考虑当前对话。 | -| GOOGLE_API_KEY (optional)| 如果需要谷歌搜索,则需要设置。如果不设置此环境变量,机器人默认提供 duckduckgo 搜索。在 Google cloud 的[API 与服务](https://console.cloud.google.com/apis/api/customsearch.googleapis.com) 中创建凭据,在凭据页面 API Key 就是 GOOGLE_API_KEY。Google 搜索一天可以查询 100 次,轻度使用完全足够,达到限额,机器人会自动关闭 Google 搜索。| -| GOOGLE_CSE_ID (optional)| 如果需要谷歌搜索,则需要与 GOOGLE_API_KEY 一起设置。在 [可编程搜索引擎](https://programmablesearchengine.google.com/)中新建搜索引擎,其中 搜索引擎 ID 就是 GOOGLE_CSE_ID 的值。| -| whitelist(optional) | 设置哪些用户可以访问机器人,将授权使用机器人的用户 ID 用`,`连接起来。默认值为`None`,即对所有人开放机器人。| +| 變量名稱 | 註釋 | +| -------------------- | ------------------------------------------------------------ | +| **BOT_TOKEN (required)** | Telegram 機器人 Token。在 [BotFather](https://t.me/BotFather) 上創建一個機器人以獲取 BOT_TOKEN。 | +| **WEB_HOOK (required)** | 當 Telegram 機器人接收到用戶消息時,消息將被傳遞到 WEB_HOOK,機器人會聽取消息,及時處理接收到的消息。 | +| **API (required)** | OpenAI 或第三方 API 密鑰。 | +| API_URL(optional) | 如果使用 OpenAI 官方 API,不需要設置此項。如果使用第三方 API,需要填寫第三方代理網站。默認值為:https://api.openai.com/v1/chat/completions | +| GPT_ENGINE (optional) | 設置默認 QA 模型;默認值為“gpt-3.5-turbo”。可以使用機器人的“info”命令自由切換此項目,原則上不需要設置。 | +| NICK (optional) | 默認值為空,NICK 是機器人的名字。當用戶輸入的消息以 NICK 開頭時,機器人只會回復該消息,否則機器人會回復所有消息。尤其是在群聊中,如果沒有 NICK,機器人將回復所有消息。 | +| PASS_HISTORY (optional) | 默認值為 true。機器人會記住對話歷史,並在下次回覆時考慮上下文。如果設置為 false,機器人將忘記對話歷史,並僅考慮當前對話。| +| GOOGLE_API_KEY (optional)| 如果需要使用 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 (optional) | 如果需要使用 Google 搜索,您需要與 GOOGLE_API_KEY 一起設置。在 [Programmable Search Engine](https://programmablesearchengine.google.com/) 中創建一個搜索引擎,其中搜索引擎 ID 是 GOOGLE_CSE_ID 的值。 | +| whitelist (optional) | 設置哪些用戶可以訪問機器人,並將授權使用機器人的用戶 ID 與 ',' 相連接。默認值為 "None",這意味著機器人對所有人開放。 | -## Zeabur 远程部署 (推荐) +## Zeabur 遠程部署(建議) -一键部署: +一鍵部署: -[![Deploy on Zeabur](https://zeabur.com/button.svg)](https://zeabur.com/templates/R5JY5O?referralCode=yym68686) +[![在 Zeabur 上部署](https://zeabur.com/button.svg)](https://zeabur.com/templates/R5JY5O?referralCode=yym68686) -如果需要后续功能更新,则推荐以下部署方式: +如果您需要後續功能更新,建議使用以下部署方法: -先 fork 本仓库,再注册 [Zeabur](https://zeabur.com),免费额度足够轻度使用,从自己的 Github 仓库导入,设置好域名(必须与 WEB_HOOK 一致)和环境变量后,重新部署即可。后续需要功能更新只需要在自己的仓库里同步本仓库并在 Zeabur 重新部署即可获得最新功能。 +首先,先 fork 這個庫,然後在 [Zeabur](https://zeabur.com) 上註冊。免費額度足夠輕量使用。從自己的 Github 倉庫導入,設置域名(必須與 WEB_HOOK 一致)和環境變量,然後重新部署。如果需要後續的功能更新,只需將此庫同步到自己的庫並在 Zeabur 中重新部署即可獲取最新功能。 -## Replit 远程部署 +## Replit 遠程部署 -[![Run on Repl.it](https://replit.com/badge/github/yym68686/ChatGPT-Telegram-Bot)](https://replit.com/new/github/yym68686/ChatGPT-Telegram-Bot) +[![Repl.it 上的運行](https://replit.com/badge/github/yym68686/ChatGPT-Telegram-Bot)](https://replit.com/new/github/yym68686/ChatGPT-Telegram-Bot) -导入 Github 仓库后,设置运行命令 +導入 Github 倉庫後,設置運行命令 ```bash pip install -r requirements.txt > /dev/null && python3 main.py ``` -在左边栏 Tools 里面选择 Secrets,添加机器人需要的环境变量,其中: +選擇工具側欄中的 Secrets,添加機器人所需的環境變量,其中: -- WEB_HOOK: 在 Replit 会自动分配一个域名给你,填入 `https://appname.username.repl.co` +- WEB_HOOK: Replit將自動分配一個域名給您,填入 `https://appname.username.repl.co` +- 記得打開“Always On” -点击屏幕上方的 run,即可运行机器人。记得打开 Always On。 +單擊屏幕頂部的運行按鈕以運行機器人。 -## fly.io 远程部署 +## fly.io 遠程部署 -官方文档:https://fly.io/docs/ +官方文檔:https://fly.io/docs/ -使用 Docker 镜像部署 fly.io 应用 +使用 Docker 鏡像部署 fly.io 應用程序 ```bash flyctl launch --image yym68686/chatgpt:1.0 ``` -输入应用的名字,若提示初始化 Postgresql 或 Redis,一律选择否。 +在提示信息中輸入應用程序的名稱,並選擇放棄初始化 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 COOKIES= -# 可选 +# optional flyctl secrets set NICK=javis ``` -查看所有环境变量 +查看所有的環境變量 ```bash flyctl secrets list ``` -移除环境变量 +刪除環境變量 ```bash flyctl secrets unset MY_SECRET DATABASE_URL ``` -ssh 连接 fly.io 容器 +ssh 到 fly.io 容器中 ```bash -# 生成密钥 flyctl ssh issue --agent -# ssh 连接 +# ssh connection flyctl ssh establish ``` -查看 webhook url 是否正确 +檢查 webhook URL 是否正確 -``` +```bash https://api.telegram.org/bot/getWebhookInfo ``` ## Docker 本地部署 -启动容器 +啟動容器 ```bash docker run -p 80:8080 -dit \ @@ -132,7 +131,7 @@ docker run -p 80:8080 -dit \ yym68686/chatgpt:1.0 ``` -或者你想使用 Docker Compose,下面是 docker-compose.yml 示例: +或者,如果您想使用 Docker Compose,這裡有一個 docker-compose.yml 的示例: ```yaml version: "3.5" @@ -149,13 +148,13 @@ services: - 80:8080 ``` -后台运行 Docker Compose 容器 +在後台運行 Docker Compose 容器 ```bash docker-compose up -d ``` -仓库打包 Docker 镜像,推送到 Docker Hub +將 Docker 鏡像打包到庫中並上傳到 Docker Hub ```bash docker build --no-cache -t chatgpt:1.0 -f Dockerfile.build --platform linux/amd64 . @@ -163,9 +162,9 @@ docker tag chatgpt:1.0 yym68686/chatgpt:1.0 docker push yym68686/chatgpt:1.0 ``` -## Reference +## 參考文獻 -参考项目: +參考項目: https://core.telegram.org/bots/api @@ -175,9 +174,9 @@ 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 +使用的消息的 Markdown 渲染是我的另一個 [項目](https://github.com/yym68686/md2tgmd)。 -## Star History +## 星星記錄 Star History Chart