Skip to content

本文档由 AI 编写,已经人工审核。

Discord

Discord 驱动器通过 Discord 网关(Bot Token)接收消息,并支持通过 WebhookBot 两种方式发送消息。

准备工作

  1. Discord 开发者门户 创建一个 Bot 应用。
  2. Bot 页面中启用 Message Content Intent(消息内容权限)。
  3. 复制 Bot Token。
  4. 如需 Webhook 发送:在频道设置中创建 Webhook 并复制其 URL。
  5. 将 Bot 邀请至你的服务器,确保其拥有 Read MessagesSend Messages 权限。

配置项

config.jsondiscord.<实例ID> 下添加:

是否必填默认值说明
bot_token否*Discord Bot Token,接收消息和 bot 发送模式均需此项
send_methodwebhook"webhook""bot"
max_file_size8388608(8 MB)发送附件时单个文件的最大字节数
send_as_bot_when_using_cqface_emojifalsetrue 时,包含 :cqface<id>: 标记的消息(由 NapCat 驱动器的 cqface_mode: "emoji" 生成)将通过 Bot 发送,即使 send_method 设置为 "webhook" 亦然。需配置 bot_token
send_replies_as_bottruetrue 时,回复消息在 Bot 已连接情况下会优先通过 Bot 发送,即使 send_method"webhook"。原因是 Discord Webhook 模式不支持指定回复目标消息。需配置 bot_token 才会生效。
proxy所有 Discord API 请求的代理 URL(例如:http://proxy.example.com:8080socks5://proxy.example.com:1080)。设置后,代理连接将禁用 SSL 验证。设置为 null 可显式禁用此实例的代理(忽略全局代理设置)。

* 接收消息时需要提供 bot_token。仅使用 webhook 发送时,只需在规则中提供 webhook_url

json
{
  "discord": {
    "dc_main": {
      "bot_token": "your_bot_token",
      "send_method": "webhook",
      "max_file_size": 8388608,
      "proxy": "http://proxy.example.com:8080"
    }
  }
}

发送模式

webhook(默认)

通过 Discord Webhook URL 发送消息。支持通过规则 msg 配置中的 webhook_titlewebhook_avatar 为每条消息设置自定义显示名和头像。

说明:Discord Webhook 模式不支持指定回复目标消息。若需要桥接后的回复在 Discord 中显示为“回复”,请启用 send_replies_as_bot 并配置 bot_token

json
"msg": {
  "msg_format": "{msg}",
  "webhook_title": "{user} @ {from}",
  "webhook_avatar": "{user_avatar}"
}

bot

通过 Bot 自身发送消息,需要提供 bot_token。不支持每条消息自定义用户名和头像。

规则频道键

rules.jsonchannelsfrom/to 下使用:

说明
server_idDiscord 服务器(Guild)ID
channel_idDiscord 频道 ID
webhook_url此频道的 Webhook URL(使用 webhook 发送模式时必填)
json
{
  "dc_main": {
    "server_id": "1061629481267245086",
    "channel_id": "1269706305661309030",
    "webhook_url": "https://discord.com/api/webhooks/ID/TOKEN"
  }
}

额外 msg 键

以下键可放在规则的 msg 块中,由 Discord 驱动器读取:

说明
webhook_msg_format通过 Webhook 发送时覆盖 msg_format,支持相同模板变量。
bot_msg_format通过 Bot 发送时覆盖 msg_format(包括 send_as_bot_when_using_cqface_emojisend_replies_as_bot 触发的情形),支持相同模板变量。
webhook_titleWebhook 消息上显示的用户名(仅 send_method: "webhook" 时生效)
webhook_avatarWebhook 消息上显示的头像 URL(仅 send_method: "webhook" 时生效)

所有键均支持与 msg_format 相同的模板变量。

CQ 表情 Emoji(discord_emojis.json)

使用 NapCat 驱动器的 cqface_mode: "emoji" 时,Discord 驱动器会将 :cqface<id>: 标记解析为 Discord 自定义 Emoji(<:cqface306:emoji_id>),解析依赖本地 JSON 文件。配置步骤如下:

  1. 在浏览器中访问 https://discord.com/developers/applications/<your_app_id>/emojis
  2. 打开浏览器 Network(网络)面板(F12 → Network)。
  3. 刷新页面。
  4. 找到请求 emojis 端点的记录(例如 https://discord.com/api/v9/applications/1343923133370994750/emojis)。
  5. 复制该请求的 JSON 响应体,保存为数据目录下的 discord_emojis.json(默认路径:data/discord_emojis.json)。

若文件不存在或未找到对应 Emoji,将回退为纯文本 :cqface<id>:

注意事项

  • Bot 发送的消息不会被再次桥接(Webhook 回显不会触发事件)。
  • 文件会被下载后通过 multipart 表单重新上传。若文件超过 max_file_size,其 URL 将以文字形式附加到消息中。