DayzHUBDiscord

开发者

机器人 API 文档

一个小型只读 API,让服务器所有者可以在自己的网站、工具和小组件中展示自己 Discord 服务器的数据。

身份验证

在控制面板的机器人 API 页面创建令牌,并通过 Authorization 请求头发送:Authorization: Bearer <token>。一个令牌属于一个服务器,只能读取该服务器。令牌只显示一次;DayZ Hub 只保存其指纹。

curl -H "Authorization: Bearer dhba_..." \
  https://dayzhub.net/api/v1/bot/guilds/<guildId>

基础 URL: https://dayzhub.net/api/v1/bot

端点

MethodPath权限范围
GET/me—
GET/guilds/{guildId}guild:read
GET/guilds/{guildId}/featuresguild:read
GET/guilds/{guildId}/giveawaysgiveaways:read
GET/guilds/{guildId}/giveaways/{id}giveaways:read
GET/guilds/{guildId}/tickets/summarytickets:read
GET/guilds/{guildId}/leaderboard/levelsleveling:read
GET/guilds/{guildId}/shop/productsshop:read
GET/guilds/{guildId}/suggestions/summarysuggestions:read
GET/guilds/{guildId}/server-statusserver-status:read

每个响应都是相同封装的 JSON。列表通过 limit(1 到 100)和 page.nextCursor 中的游标分页。

{ "ok": true, "data": [ ... ], "page": { "limit": 25, "hasMore": true, "nextCursor": "eyJpZCI6Ij..." } }

权限范围

每个令牌只拥有你授予的权限范围。全部为只读;无法通过此 API 更改任何内容。

guild:read套餐状态和功能列表
giveaways:read抽奖(进行中和已结束)及参与人数
tickets:read按状态和类别统计的工单数量(不含工单内容)
leveling:read等级排行榜(选择退出的成员为匿名)
shop:read公开的捐赠商店商品
suggestions:read按状态统计的建议数量
server-status:read游戏服务器的公开状态(仅在公开列出时)

成员隐私

成员只会出现在该功能已公开显示他们的地方,以 Discord ID 形式出现。选择退出数据处理的成员始终显示为匿名,如下所示。名称、消息、工单和表单回答绝不属于 API 的一部分。

{ "id": null, "anonymous": true }

限制

限制取决于服务器的套餐。Premium 1:2 个有效令牌,每个令牌每分钟 60 个请求。Premium 2:5 个令牌,每分钟 120 个。Premium 3:10 个令牌,每分钟 300 个。免费试用或受赞助的服务器按 Premium 1 计算。每个 IP 地址每分钟最多 300 个请求。超出限制将返回带有 Retry-After 头的 429。套餐降级不会撤销任何令牌:你已有的令牌继续可用,只是在降到上限以下之前不能创建新令牌。服务器需要付费套餐或有效试用。

缓存

响应带有 ETag 和较短的私有缓存。发送 If-None-Match,在没有变化时会返回 304。每 30 到 60 秒轮询一次已经足够。

浏览器与 CORS

请从你的服务器调用 API。CORS 默认关闭。如果网页必须在访客浏览器中调用它,请在令牌上设置一个允许的网站;来自任何其他来源的请求都会被拒绝。网页中的所有内容访客都能看到。

你的令牌、套餐和限制

GET /me 不检查套餐。除令牌本身外,它还返回 plan(premium1、premium2、premium3 或 none)、limits(该套餐的 tokens 和 perMinute)以及 tokensUsed(服务器的有效令牌数)。rateLimitPerMin 是此令牌当前的速率。

{ "ok": true, "data": { "guildId": "123456789012345678", "name": "Website", "prefix": "dhba_aB3dE", "scopes": ["guild:read"],
  "allowedOrigin": null, "rateLimitPerMin": 120, "createdAt": "2026-10-01T12:00:00.000Z",
  "plan": "premium2", "limits": { "tokens": 5, "perMinute": 120 }, "tokensUsed": 2 } }

请求 ID

每个响应都带有 X-Request-Id 头。如果你发送自己的 X-Request-Id(最多 64 个字母、数字以及 . _ : -),会被保留,否则会自动生成。错误响应中会以 requestId 重复它。联系支持时请提供它。

X-Request-Id: 3f2b8c1e-5a7d-4e0b-9c64-1d2e3f4a5b6c

{ "ok": false, "error": "rate_limited", "code": "rate_limited", "message": "Too many requests", "requestId": "3f2b8c1e-5a7d-4e0b-9c64-1d2e3f4a5b6c" }

错误

错误以 JSON 返回,包含 ok: false、code 中的稳定错误代码(error 的值相同)、简短消息和 requestId。请根据代码判断,不要依据消息文字。

400 bad_request / bad_cursor某个参数无效(limit、cursor、status 或 id)。
401 unauthorized / invalid_token令牌缺失、格式错误、未知或已撤销。
403 guild_mismatch路径中的服务器与令牌所属服务器不一致。
403 missing_scope令牌没有此端点所需的权限范围。
403 origin_not_allowedOrigin 请求头与令牌允许的网站不匹配。
403 plan_required服务器没有付费套餐或有效试用。
403 feature_not_in_plan该功能不在服务器的套餐内。
404 not_found / shop_not_enabled这里没有内容(或商店未启用)。
405 method_not_allowed仅支持 GET;该 API 为只读。
429 rate_limited请求过多。请等待 Retry-After 指定的秒数。
503 unavailable暂时不可用,请稍后再试。

DayZ Hub

Cookie 设置

选择是否允许 DayZ Hub 使用我们无 Cookie 的统计功能记录你的访问。你可以随时更改。

必要 Cookie用于登录、安全、你的语言设置以及保存此选择。
始终启用
统计 — Plausible在不使用 Cookie、不收集个人数据的情况下统计页面访问量,帮助我们改进 DayZ Hub。