TeleGPT 项目介绍
TeleGPT 是一个开箱即用的 Telegram 聊天机器人,它在 teloxide 框架和 async_openai 的支持下开发,能够通过个人 API 密钥方便地与最新的 ChatGPT 模型互动。
功能特色
- 快速响应: 以纯 Rust 语言编写,保证极高的运行速度。
- 全方位对话支持: 无论是私人聊天还是群组聊天,均能流畅运行。
- 实时消息流: 能够将直播消息流传送至消息气泡中。
- 支持 Telegram 特有的 Markdown 渲染:
- 令牌使用统计: 可通过命令记录和查询令牌使用情况。
- 完全可定制化: 支持基于文件的配置,适应用户的个性化需求。
- 管理功能(测试版): 包含用户访问控制功能。
获取 TeleGPT
Docker 部署
对于有专用服务器需求的用户,建议使用预构建的 Docker 镜像进行部署。这些镜像通过 GitHub 容器注册表发布,支持 amd64 架构的机器。
- 登录 GitHub 容器注册表(如未授权则需要此操作):
docker login -u your_github_username -p your_personal_access_token https://ghcr.io
- 创建配置文件
config.json
:
cp config.json.example config.json
根据需求填写 config.json
中的令牌信息:
- 获取 Telegram 机器人令牌
- 获取 OpenAI API 令牌
- 启动 Docker 容器:
docker-compose up -d
其他有用的命令:
docker-compose logs -f
docker-compose down
docker-compose pull
从 GitHub 发布页面下载
用户还可以从发布页面下载预构建的二进制文件以进行内部部署或测试。目前支持 Linux 和 macOS(Intel 和 Apple Silicon)。
从源码构建
可以克隆仓库并运行以下命令:
$ cargo build --release
使用方法
执行机器人之前,需要创建一个配置文件。程序默认从当前工作目录读取 telegpt.config.json
,用户也可通过 -c
参数指定配置文件路径。
配置文件示例:
{
"openaiAPIKey": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"botToken": "8888888888:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"adminUsernames": ["cyandev"],
"conversationLimit": 30,
"databasePath": "./path/to/telegpt.sqlite",
"i18n": {
"resetPrompt": "I’m ready for a new challenge. What can I do for you now?"
}
}
启动机器人:
$ /path/to/telegpt
当看到 Bot is started
字样时,表示机器人已启动!
启用详细日志
注意:用户输入将在 DEBUG
级别记录。为保护用户隐私,生产环境中请勿启用。
在调试过程中,可以通过设置 RUST_LOG
环境变量启用详细日志:
$ RUST_LOG=TRACE /path/to/telegpt
管理功能(测试版)
该功能依赖于数据库存储配置。为确保数据在重新启动后不丢失,需在配置文件中设置数据库路径。
机器人内置了一些基本的管理功能,可以控制允许哪些用户使用机器人,并动态更改成员列表。
默认情况下,机器人对所有用户开放,这可能会导致大量令牌消耗。如果希望仅限少数人使用,可以发送 /set_public off
命令将其设为私有模式。若需恢复公开,则发送 /set_public on
。
在私有模式下,只有管理员用户和被邀请的成员可以与机器人对话。可以通过 /add_member
和 /del_member
命令添加或删除成员,参数为 用户名。
数据库
机器人使用 SQLite 数据库存储运行时产生的数据。默认情况下,若未提供本地文件路径,将存储在内存数据库中。建议使用基于文件的数据库以提高可用性。
项目规划
TeleGPT 将被积极维护,计划开发一些新功能,包括:
- 指数补偿重试机制
- 对话预设
- 更友好的管理操作接口
- 使用 HTTP API 进行远程控制
贡献
欢迎提交问题和拉取请求。建议在提交新问题或拉取请求前查看现有的内容,并在开始工作前进行讨论和功能请求。
许可
本项目基于 MIT 许可证。