字节笔记本

2026年2月22日

coze-discord-proxy:将 Discord Coze-Bot 代理为 OpenAI API 的开源工具

本文介绍 coze-discord-proxy,一个将 Discord 对话 Coze-Bot 代理为 OpenAI API 格式的开源项目。该项目允许开发者通过标准 API 接口调用 GPT-4 模型,提供对话、文生图、图生文、知识库检索等完整功能,完美兼容 NextChat、One-API、LobeChat 等主流对话面板。

项目简介

coze-discord-proxy 是由 deanxv 开发维护的开源项目,截至目前已在 GitHub 获得 3.8k+ stars,主要使用 Go 语言(99.2%)编写。该项目通过代理 Discord 与 Coze-Bot 的对话,实现了与 OpenAI API 格式对齐的接口,让开发者可以免费或低成本地使用 GPT-4 等强大的 AI 模型。

核心特性

  • 完美适配主流对话面板:支持 NextChat、One-API、LobeChat 等流行对话界面
  • 对话隔离:支持多用户对话隔离,确保隐私安全
  • 流式响应:对话接口支持流式返回,体验与官方 API 一致
  • Discord 频道管理:支持创建 Discord 分类/频道/线程
  • OpenAI 兼容接口:支持 /v1/chat/completions 对话接口,兼容 DALL-E-3 文生图
  • 多模态支持:支持图生文、图改图、文件生文(GPT-4V 格式)
  • 文生图接口:支持 /v1/images/generations DALL-E-3 接口
  • 定时活跃:支持每日 9 点定时任务自动活跃机器人
  • 负载均衡:支持配置多 Discord 用户和多 Coze 机器人实现请求负载均衡

技术栈

  • Go 语言 - 后端服务核心(99.2%)
  • Docker - 容器化部署支持(0.8%)
  • Discord API - 消息收发与频道管理
  • Coze API - AI 模型调用
  • Swagger - API 文档自动生成

前置要求

在开始部署前,你需要准备以下资源:

  1. Discord 账号 - 用于创建服务器和 Bot
  2. Coze 账号 - 用于创建和配置 AI Bot
  3. 服务器/云主机 - 用于部署代理服务(或使用 Zeabur/Render 等第三方平台)

安装指南

步骤 1:创建 Discord 服务器

  1. 打开 Discord 官网 并登录
  2. 点击设置 → 高级设置 → 开发者模式 → 打开
  3. 创建 Discord 服务器
  4. 右键点击服务器,选择「复制服务器 ID」(即 GUILD_ID
  5. 在服务器中创建默认频道,右键点击频道选择「复制频道 ID」(即 CHANNEL_ID

步骤 2:创建 Discord Bot

  1. 打开 Discord 开发者平台
  2. 创建新应用,命名为 COZE-BOT
    • 记录该 Bot 的 tokenid(即 COZE_BOT_ID
    • 此 Bot 将被 Coze 托管
  3. 创建新应用,命名为 CDP-BOT
    • 记录该 Bot 的 token(即 BOT_TOKEN
    • 此 Bot 用于监听 Discord 消息
  4. 为两个 Bot 开通 Administrator 权限并邀请进创建好的 Discord 服务器

步骤 3:获取用户授权

  1. 在 Discord 官网进入服务器
  2. 按 F12 打开开发者工具
  3. 在任一频道内发送一次消息
  4. 在开发者工具 → Network 中找到请求 https://discord.com/api/v9/channels/{channel_id}/messages
  5. 从该接口 header 中获取 Authorization(即 USER_AUTHORIZATION

步骤 4:配置 Coze Bot

  1. 打开 Coze 官网 创建 Bot
  2. 进行个性化配置(注意 Auto-Suggestion 保持为 Default/on
  3. 配置好后选择「发布到 Discord」
  4. 填写 COZE-BOTtoken
  5. 发布完成后在 Discord 服务器中可看到 COZE-BOT 在线并可以 @ 使用

部署方式

方式一:Docker Compose(推荐)

创建 docker-compose.yml 文件:

yaml
version: '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:
      - USER_AUTHORIZATION=MTA5OTg5N************aXUBHVI  # 必须修改
      - BOT_TOKEN=MTE5OT************UrUWNbG63w          # 必须修改
      - GUILD_ID=11************96                       # 必须修改
      - COZE_BOT_ID=11************97                    # 必须修改
      - CHANNEL_ID=11************94                     # [可选]
      - PROXY_SECRET=123456                             # [可选]接口密钥
      - TZ=Asia/Shanghai

启动服务:

bash
docker-compose pull && docker-compose up -d

方式二:Docker 命令

bash
docker run --name coze-discord-proxy -d --restart always \
  -p 7077:7077 \
  -v $(pwd)/data:/app/coze-discord-proxy/data \
  -e USER_AUTHORIZATION="MTA5OTg5N************uIfytxUgJfmaXUBHVI" \
  -e BOT_TOKEN="MTE5OTk2************rUWNbG63w" \
  -e GUILD_ID="11************96" \
  -e COZE_BOT_ID="11************97" \
  -e PROXY_SECRET="123456" \
  -e CHANNEL_ID="11************24" \
  -e TZ=Asia/Shanghai \
  deanxv/coze-discord-proxy

方式三:第三方平台

  • Zeabur - 一键部署到 Zeabur 平台
  • Render - 一键部署到 Render 平台

环境变量配置

变量名必填说明
USER_AUTHORIZATIONDiscord 用户授权密钥(多个用逗号分隔)
BOT_TOKEN监听消息的 Bot Token
GUILD_ID所有 Bot 所在的服务器 ID
COZE_BOT_ID由 Coze 托管的 Bot ID
CHANNEL_ID默认频道 ID(用于活跃机器人)
PROXY_SECRET接口密钥(与 OpenAI API-KEY 用法一致)
PORT端口,默认 7077
SWAGGER_ENABLE是否启用 Swagger 文档,默认 1
ONLY_OPENAI_API是否只暴露 OpenAI 对齐接口,默认 0
REQUEST_RATE_LIMIT每分钟单 IP 请求限制,默认 60

使用示例

集成 NextChat

  1. 打开 NextChat 设置
  2. 接口地址填写:http://<ip>:<port> 或你的域名
  3. API-Key 填写:PROXY_SECRET 的值
  4. 其他选项随意配置

集成 One-API

  1. 在 One-API 中添加渠道
  2. BaseURL 填写:http://<ip>:<port> 或你的域名
  3. 密钥填写:PROXY_SECRET 的值
  4. 模型选择:gpt-4、gpt-4-16k、dall-e-3 等

API 调用示例

bash
curl -X POST "http://localhost:7077/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_PROXY_SECRET" \
  -d '{
    "model": "gpt-4",
    "messages": [{"role": "user", "content": "你好"}],
    "stream": true
  }'

进阶配置:多机器人负载均衡

创建 data/config/bot_config.json 文件:

json
[
  {
    "proxySecret": "123",
    "cozeBotId": "12***************31",
    "model": ["gpt-3.5", "gpt-3.5-16k"],
    "channelId": "12***************56"
  },
  {
    "proxySecret": "456",
    "cozeBotId": "12***************64",
    "model": ["gpt-4", "gpt-4-16k"],
    "channelId": "12***************78"
  },
  {
    "proxySecret": "789",
    "cozeBotId": "12***************12",
    "model": ["dall-e-3"],
    "channelId": "12***************24"
  }
]

配置说明:

  • 通过请求头携带的 PROXY_SECRET + 请求体中的 model 联合匹配
  • 若匹配到多个则随机选择,实现负载均衡
  • 灵活配置,可根据需求自定义

接口文档

部署完成后,访问以下地址查看 Swagger 接口文档:

http://<ip>:<port>/swagger/index.html

支持的接口:

  • POST /v1/chat/completions - 对话接口(支持流式)
  • POST /v1/images/generations - DALL-E-3 文生图
  • GET /v1/models - 获取可用模型列表

限制说明

  1. Coze 订阅限制:每个 Discord 用户调用 Coze-Bot 在 24 小时内有次数限制
  2. 解决方案
    • 配置多 Discord 用户(USER_AUTHORIZATION
    • 配置多 Coze 机器人(bot_config.json
    • 实现请求次数叠加和负载均衡

详细订阅限制请参考 Coze 官方文档

高并发配置建议

当并发量较高时,建议按以下方式配置:

  1. 配置多机器人:创建多个 Coze Bot 实现响应负载
  2. 准备多个 Discord 账号:邀请进同一个服务器,获取每个账号的 Authorization
  3. 配置负载均衡:将多个 Authorization 用英文逗号分隔配置在 USER_AUTHORIZATION
  4. 效果:每次请求都会从多个 Discord 账号中随机选择一个发起对话

相关项目

项目链接

许可证

本项目采用 GPL-3.0 开源许可证。


开源不易,若你参考此项目或基于此项目二开,请在项目文档中标识此项目。谢谢!

分享: