coze+discord 代理服务—通过接口调用被coze托管的discord-bot
觉得有点意思的话 别忘了点个🌟
- 完美适配
NextChat,one-api,LobeChat等 - 对话支持流式返回
- 对话支持文生图(需
coze配置DALL·E3插件)返回图片url - 对话支持图生文(需
coze配置GPT4V插件)(发送的文本消息中携带图片url/按照GPT4V识图请求格式发起请求) - 支持创建
discord频道/子频道/线程 - 支持对话指定
discord频道/子频道/线程 实现对话隔离 - 支持和
openai对齐的对话接口(v1/chat/completions)(支持文生图) - 支持和
openai对齐的GPT4V识图接口(v1/chat/completions)(读取url/base64) - 支持和
openai对齐的dall-e-3接口(v1/images/generations) - 支持配置多个[机器人-频道] (通过
PROXY_SECRET指定) 详细请看进阶配置
http://<ip>:<port>/swagger/index.html
- 打开 discord开发者平台 。
- 创建bot-A,并记录bot专属的
token和id(COZE_BOT_ID),此bot为被coze托管的bot。 - 创建bot-B,并记录bot专属的
token(BOT_TOKEN),此bot为我们与discord交互的bot。 - 两个bot开通对应权限(
Send Messages,Read Message History等)并邀请进服务器,记录服务器ID(GUILD_ID) ( 过程不在此赘述)。 - 打开 coze官网 创建自己bot。
- 创建好后推送,配置discord-bot的
token,即bot-A的token,点击完成后在discord的服务器中可看到bot-A在线并可以@使用。 - 配置环境变量,并启动本项目。
- 访问接口地址即可开始调试。
填 接口地址(ip:端口/域名) 及 API-Key(PROXY_SECRET),其它的随便填随便选。
如果自己没有搭建NextChat面板,这里有个已经搭建好的可以使用 NextChat
填 BaseURL(ip:端口/域名) 及 密钥(PROXY_SECRET),其它的随便填随便选。
docker-compose pull && docker-compose up -dversion: '3.4'
services:
coze-discord-proxy:
image: deanxv/coze-discord-proxy:latest
container_name: coze-discord-proxy
restart: always
ports:
- "7077:7077"
volumes:
- ./data:/app/coze-discord-proxy/data
environment:
- BOT_TOKEN=MTE5OTk2xxxxxxxxxxxxxxrwUrUWNbG63w # 必须修改为我们主动发送消息的Bot-Token
- GUILD_ID=119xxxxxxxx796 # 必须修改为两个机器人所在的服务器ID
- COZE_BOT_ID=119xxxxxxxx7 # 必须修改为由coze托管的机器人ID
- CHANNEL_ID=119xxxxxx24 # 默认频道-在使用与openai对齐的接口时(/v1/chat/completions) 消息会默认发送到此频道
- PROXY_SECRET=123456 # [可选]接口密钥-修改此行为请求头校验的值(多个请以,分隔)
- TZ=Asia/Shanghai
docker run --name coze-discord-proxy -d --restart always \
-p 7077:7077 \
-v $(pwd)/data:/app/coze-discord-proxy/data \
-e BOT_TOKEN="MTE5OTk2xxxxxxxxxxxxxxrwUrUWNbG63w" \
-e GUILD_ID="119xxxxxxxx796" \
-e COZE_BOT_ID="119xxxxxxxx7" \
-e PROXY_SECRET="123456" \
-e CHANNEL_ID="119xxxxxx24" \
-e TZ=Asia/Shanghai \
deanxv/coze-discord-proxy其中,BOT_TOKEN,GUILD_ID,COZE_BOT_ID,PROXY_SECRET,CHANNEL_ID修改为自己的。
部署到 Zeabur
Zeabur 的服务器在国外,自动解决了网络的问题,同时免费的额度也足够个人使用
点击一键部署:
一键部署后 BOT_TOKEN,GUILD_ID,COZE_BOT_ID,PROXY_SECRET,CHANNEL_ID变量也需要替换!
或手动部署:
-
首先 fork 一份代码。
-
进入 Zeabur,使用github登录,进入控制台。
-
在 Service -> Add Service,选择 Git(第一次使用需要先授权),选择你 fork 的仓库。
-
Deploy 会自动开始,先取消。
-
添加环境变量
BOT_TOKEN:MTE5OTk2xxxxxxxxxxxxxxrwUrUWNbG63w主动发送消息的Bot-TokenGUILD_ID:119xxxxxxxx796两个机器人所在的服务器IDCOZE_BOT_ID:119xxxxxxxx7由coze托管的机器人IDCHANNEL_ID:119xxxxxx24# 默认频道-在使用与openai对齐的接口时(/v1/chat/completions) 消息会默认发送到此频道PROXY_SECRET:123456[可选]接口密钥-修改此行为请求头校验的值(多个请以,分隔),配置此参数后,每次发起请求时请求头加上proxy-secret参数,即header中添加proxy-secret:123456
保存。
- 选择 Redeploy。
部署到 Render
Render 提供免费额度,绑卡后可以进一步提升额度
Render 可以直接部署 docker 镜像,不需要 fork 仓库:Render
BOT_TOKEN:MTE5OTk2xxxxxxxxxxxxxxrwUrUWNbG63w主动发送消息的Bot-TokenGUILD_ID:119xxxxxxxx796两个机器人所在的服务器IDCOZE_BOT_ID:119xxxxxxxx7由coze托管的机器人IDCHANNEL_ID:119xxxxxx24默认频道-在使用与openai对齐的接口时(/v1/chat/completions) 消息会默认发送到此频道PORT[可选]端口PROXY_SECRET:123456[可选]接口密钥-修改此行为请求头校验的值(多个请以,分隔),配置此参数后,每次发起请求时请求头加上proxy-secret参数,即header中添加proxy-secret:123456REQUEST_OUT_TIME:60[可选]对话接口非流响应下的请求超时时间STREAM_REQUEST_OUT_TIME:60[可选]对话接口流响应下的每次流返回超时时间PROXY_URL:http://127.0.0.1:10801[可选]代理
- 部署前在
docker/docker-compose部署同级目录下创建data/config/bot_config.json文件 - 编写该
json文件,bot_config.json格式如下
[
{
"proxySecret": "123", // 接口请求密钥(PROXY_SECRET)
"cozeBotId": "12***************31", // coze托管的机器人ID
"channelId": "12***************56" // discord频道ID(机器人必须在此频道所在的服务器)
},
{
"proxySecret": "456",
"cozeBotId": "12***************64",
"channelId": "12***************78"
},
{
"proxySecret": "789",
"cozeBotId": "12***************12",
"channelId": "12***************24"
}
]- 重启服务
当有此配置时,会通过请求头携带的请求密钥匹配此配置中的
cozeBotId,channelId,若匹配到多个则随机匹配一个,所以当存在多用户使用时可对每个用户分发独立的请求密钥。
Coze 官网 : https://www.coze.com
Discord 开发地址 : https://discord.com/developers/applications