本项目是一个基于 Telegram 和 Dify 的聊天机器人。它允许用户通过 Telegram 与 Dify 上的 AI 应用进行交互,支持文本、图片、语音、文件等多种消息类型,并具有以下特性:
- 流式响应: 支持 Dify 的流式响应,提供更快的交互体验。
- 多用户支持: 可以同时与多个 Telegram 用户进行对话。
- 会话管理: 自动管理与 Dify 的会话,支持上下文理解。
- API 密钥切换: 可以在 Telegram 中通过命令切换不同的 Dify API 密钥。
- 消息队列: 使用消息队列处理并发消息,提高稳定性。
- 速率限制: 限制用户发送消息的频率,防止滥用。
- 文件上传: 支持将 Telegram 中的文件上传到 Dify。
- 管理员功能:
- 拉黑/取消拉黑用户
- 清除所有用户的聊天 ID 记录
- 错误处理和重连: 遇到网络问题或其他错误时,自动重试或重新连接。
- 持久化存储: 将会话、黑名单等数据保存到本地,重启后可恢复。
- 与 Dify AI 应用进行文本、图片、语音、文件对话。
- 通过
/set命令切换 Dify API 密钥(人格)。 - 管理员可以通过
/block命令拉黑用户。 - 管理员可以通过
/unblock命令取消拉黑用户。 - 管理员可以通过
/clean命令清除所有用户的聊天 ID 记录。 - 支持 Dify 的流式响应。
- 自动处理与 Dify 的会话。
-
克隆仓库:
git clone https://github.com/your-username/your-repo-name.git cd your-repo-name -
安装依赖:
pip install -r requirements.txt
requirements.txt文件内容:
httpx==0.27.0 python-telegram-bot==20.8
-
Telegram Bot Token:
- 在 Telegram 中与 @BotFather 对话,创建一个新的机器人,获取 Bot Token。
- 将
TELEGRAM_BOT_TOKEN变量的值替换为你的 Bot Token。
-
Dify API URL:
- 将
DIFY_API_URL变量的值替换为你的 Dify API 地址。
- 将
-
Dify API 密钥:
- 在
API_KEYS字典中添加你的 Dify API 密钥,可以添加多个,并为每个密钥设置一个别名。 DEFAULT_API_KEY_ALIAS变量指定默认使用的 API 密钥别名。
- 在
-
管理员 ID:
- 将
ADMIN_IDS列表中的 ID 替换为你自己的 Telegram 用户 ID。
- 将
-
(可选)HTTP 代理:
- 如果需要通过 HTTP 代理访问 Dify API,请设置
HTTP_PROXY变量。
- 如果需要通过 HTTP 代理访问 Dify API,请设置
-
运行机器人:
python main.py
-
在 Telegram 中与机器人对话:
- 向机器人发送
/start命令,开始对话。 - 发送文本、图片、语音或文件消息。
- 使用
/set <api_key_alias>命令切换 Dify API 密钥(例如/set dave)。
- 向机器人发送
-
管理员命令(仅限管理员):
/block <user_id>:拉黑用户。/unblock <user_id>:取消拉黑用户。/clean:清除所有用户的聊天 ID 记录。
欢迎提交 issue 或 pull request。
本项目使用 MIT 许可证,详见 LICENSE 文件。