holidays
模块发送假期通知@BotFather
机器人来设置您的机器人并为其获取 Telegram Bot API 令牌3.10.12
到3.12.2
上进行测试和工作pip install -r requirements.txt
安装所需的 Python 包(经过测试并使用requirements.txt中列出的版本pydub
通常需要单独安装ffmpeg
。请注意,如果您不使用语音消息/WhisperAPI 功能,则实际上不需要pydub
和ffmpeg
,但如果您使用,建议安装(Debian/Ubuntu Linux): sudo apt-get install ffmpeg
lynx
;它需要作为子进程运行。 (在 Debian/Ubuntu Linux 上安装: sudo apt-get install lynx
)git clone https://github.com/FlyingFathead/TelegramBot-OpenAI-API/ &&
cd TelegramBot-OpenAI-API/
pip install -r requirements.txt
sudo apt-get install -y ffmpeg lynx
TELEGRAM_BOT_TOKEN
环境变量,或将其放入config/
目录中名为bot_token.txt
的文本文件中 (= config/bot_token.txt
)OPENAI_API_KEY
环境变量或放入主程序目录内名为api_token.txt
的文本文件中OPENWEATHERMAP_API_KEY
和MAPTILER_API_KEY
环境变量。您可以从 OpenWeather 和 MapTiler 获取 API 密钥WEATHERAPI_KEY
环境变量来使用它。OPENROUTESERVICE_API_KEY
环境变量PERPLEXITY_API_KEY
config/config.ini
来调整您的配置和设置python src/main.py
Docker必须安装在您的计算机上。
Telegram Bot API 密钥和OpenAI API 密钥:
首先,从 GitHub 克隆存储库:
git clone https://github.com/FlyingFathead/TelegramBot-OpenAI-API.git
cd TelegramBot-OpenAI-API
该项目包括一个设置脚本,它将指导您输入 API 密钥并生成.env
文件。
运行脚本:
./docker_setup.sh
按照脚本提供的说明进行操作。它将询问您的 OpenAI API 密钥和 Telegram Bot API 密钥,验证它们,并使用您的凭据创建一个.env
文件。
创建.env
文件后,您需要构建 Docker 映像。
您可以运行特色的docker_deploy.sh
来构建 Docker 镜像:
sudo ./docker_deploy.sh
或者,您可以手动构建它:
sudo docker build -t telegrambot-openai-api .
这将根据存储库中的Dockerfile
在本地构建镜像。
镜像构建成功后,您可以在 Docker 容器中启动机器人。
使用以下命令运行容器:
sudo docker run --env-file .env --name telegrambot-openai-api -d telegrambot-openai-api
-d
标志以分离模式(在后台)运行容器。--env-file .env
标志将您的 API 密钥注入到容器中。您可以使用以下命令检查容器是否正在运行:
sudo docker ps
这将列出所有正在运行的容器。如果您的机器人运行正常,它应该出现在列表中。
如果您需要停止机器人,可以通过运行以下命令来实现:
sudo docker stop < container_id >
将<container_id>
替换为实际容器 ID,您可以从docker ps
输出中获取该 ID。
日志:如果您需要查看机器人的日志来解决任何问题,您可以使用:
sudo docker logs < container_id >
重新启动容器:如果您停止容器并想要再次启动它,您可以再次运行docker run
命令或使用以下命令重新启动现有容器:
sudo docker start < container_id >
如果存储库收到更新并且您想要应用它们,请按照以下步骤操作:
从 GitHub 拉取最新更改:
git pull origin main
重建 Docker 镜像:
sudo docker build -t telegrambot-openai-api .
停止当前正在运行的容器:
sudo docker stop < container_id >
使用更新后的镜像启动一个新容器:
sudo docker run --env-file .env --name telegrambot-openai-api -d telegrambot-openai-api
还有一个docker_deploy.sh
脚本,旨在减少重建和部署的麻烦。
您现在应该在 Docker 容器中运行 TelegramBot-OpenAI-API,并完全连接到 Telegram 和 OpenAI。享受你的机器人吧!
如果您遇到任何问题,请查阅日志或访问存储库的问题页面。
config.ini
使用configmerger.py
将旧配置文件更新为新版本的config.ini
。为此,您可以将现有配置的副本保存到名为myconfig.txt
的文件中,并在其中包含要为新版本保留的行。
之后,只需运行 ie python src/configmerger.py myconfig.txt
,所有现有的配置行都将迁移到新的配置行。在大多数情况下都有效,但请记住要小心并使用 ie diff
仔细检查任何迁移问题!
(示例)如何合并和更新现有配置:
python3 src/configmerger.py myconfig.txt
calc_module.py
中的小修复和更多错误捕获config.ini
NWS
部分下设置config.ini
,用于配置 NWS 天气预报和警报config.ini
中保留 US NWS 的天气警报,即使您启用了其他获取方法(即 OpenWeatherMap),宁可安全也不后悔docker_setup.sh
以简化基于 Docker 的部署Dockerfile
和接收401 Unauthorized
时更好的错误捕获python src/main.py
从这里开始启动机器人config.ini
配置 Elasticsearchsource
,因此现在可以更清楚地记录任何外部数据拉取config/
下时,可能会处理 API 密钥config/
下whisper-transcriber-telegram-bot
导入了机器人令牌读取的新逻辑bot_token.py
已相应更改和更新config_paths.py
现在具有配置文件路径的项目范围配置( config.ini
等...)bot_token.txt
(如果使用)移动到config/
configmerger.py
更新您的自定义配置llama-3.1-sonar-small-128k-online
)EnableAgenticBrowsing = True
从config.ini
启用api_get_duckduckgo_search.py
的小修复; WIP 后的代理链接modules.py
中的markdown_to_html
)calc_module.py
以提高计算请求的精度。rss_parser.py
)perplexity_handler.py
)yfinance
pip 包)gpt-4o-mini
而不是gpt-3.5-turbo
(更新、更便宜、更好)langdetect
切换到 OpenAI APIapi_perplexity_search.py
中的detect_language
函数)langdetect
更准确,并且可以通过模型选择进一步利用api_key.py
模块的小稳健性改进和修复config.ini
holidays
模块提及假期(可以扩展)yt-dlp
config.ini
中使用ElasticsearchEnabled
标志(设置为True
或False
来启用或禁用)langdetect
和处理修复langdetect
自动评估翻译要求/usagechart
功能(需要matplotlib
)/setsystemmessage <message>
(在机器人重新启动之前有效)和/resetsystemmessage
(从config.ini
重置)/reset
命令用于机器人重置。在config.ini
中相应地设置ResetCommandEnabled
和AdminOnlyReset
标志。text_message_handler.py
和语音消息处理到voice_message_handler.py
config.ini
=> SessionTimeoutMinutes
、 MaxRetainedMessages
)log_message
和rotate_log_file
(日志文件处理)=> modules.py
check_global_rate_limit
=> modules.py
modules.py
token_usage.json
,文件结构较之前版本已更改)bot_commands.py
,修复了configmerger.py
版本configmerger.py
以简化机器人更新(将旧配置标志与新版本合并)config.ini
以打开或关闭该选项config.ini
中可自定义/start
问候语/usage
命令来跟踪令牌使用情况(仅适用于机器人所有者,0 在config.ini
中禁用)config.ini
)config.ini
utils.py
中config.ini
中的新日志记录选项escape_markdown
移动到一个单独的.py
文件中,无论如何它都没有被使用api_key.py
、 bot_token.py
)Timeout
值添加到config.ini
config.ini
中设置模型温度/help
和/about