官方 Discord API 是为机器人和客户端打造的底层接口;你需要处理网关事件,手动缓存,并自行管理 intents。Noxyr 服务器 API 则是一个限定于单个服务器的高层 HTTP API,直接返回已经整理好的分析数据。两者解决的问题不同。下面说明各自适用的场景。
Discord API 能为你提供什么
Discord API 文档(搜索量很大,谷歌趋势显示“discord api documentation”的查询同比增长 700%)是 Discord 自身所拥有的一切内容的权威来源:消息、用户、服务器(guild)、身份组、频道、语音、帖子串(thread)和管理功能。你可以获得用于执行操作的 REST API,以及用于接收事件的 WebSocket 网关。要构建任何实时功能,都需要建立持久连接,处理 READY 和心跳,管理缓存失效以及速率限制桶。
Noxyr 服务器 API 能为你提供什么
Noxyr 服务器 API 的接口要小得多:通过 Bearer 令牌限定在单个服务器上,共六个只读端点。它能回答“本月有多少工单?”或“每种货币的收入是多少?”这类 Discord API 完全无法回答的问题,因为底层数据存放在 Noxyr 的数据库中,而不是 Discord 里。
并列对比
- 认证:Discord 使用 OAuth2 或带 intents 的机器人令牌。Noxyr 每个服务器使用一个 Bearer 令牌。
- 传输:Discord 是 REST + WebSocket 网关。Noxyr 是普通的 HTTPS,并为浏览器启用了 CORS。
- 范围:Discord 对你的机器人而言是全局的,覆盖它所在的每个服务器。Noxyr 则绑定到某一个特定的服务器。
- 数据结构:Discord 返回原始对象,如服务器、成员、消息。Noxyr 返回汇总数据、总计、平均值和每日分桶数据。
- 速率限制:Discord 按路由使用分桶限制。Noxyr 对每个密钥统一限制为每分钟 60 次请求。
- 设置成本:Discord 需要一个机器人应用、邀请、intents 和事件处理程序。Noxyr 只需点击一次即可生成密钥。
何时选择 Discord……
- 你需要实时事件(收到一条消息、有成员加入、语音频道发生变化)。
- 你希望在应用中发送消息、编辑频道、封禁用户或管理身份组。
- 你正在构建 Discord 机器人或第三方 Discord 客户端。
何时选择 Noxyr 服务器 API……
- 你希望在公开网站上展示实时服务器数据,而无需维护机器人。
- 你需要工单分析、销售数据、评价平均分或抽奖参与情况,而这些都是 Discord 不存储的数据。
- 你希望获得对 CORS 友好的 JSON,可以直接从浏览器控制面板调用,无需代理。
- 你需要一个稳定、带版本的接口,并通过范围开关在无需重新部署的情况下关闭数据暴露。
两者同时使用
这两个 API 搭配得很好。在你自己的机器人中使用 Discord API 来响应事件,并使用 Noxyr 服务器 API 来读取网站上的汇总状态。这样,你的公开控制面板完全不需要机器人 intents 或网关连接,一次 HTTPS 请求就足够了。
更多内容:服务器 API 教程、设计原则、处理 Discord API 错误。