投票奖励
投票奖励使用 server.vote Webhook 事件:处理器接收事件,通过 API 获取投票数据,在你的系统中找到玩家,并且只发放一次奖励。
要集成此方法,请先配置项目 Webhook,并验证 signature。投票数据通过 GET /votes/:vote_id 请求。
流程
- 接收 Webhook 事件并验证 signature。如果 is_test 为
true,不获取投票、不发放奖励,直接返回204。 - 确认
event_type等于server.vote。 - 读取
event_id:对于server.vote,它就是投票 ID。 - 通过 GET /votes/:vote_id 获取投票数据,并在你的系统中找到玩家。
- 按
event_type+event_id应用防重复处理,并在同一个事务中发放奖励。 - 如果无法安全发放奖励,返回失败响应,修复原因后从界面重新发送投递。
奖励示例
假设玩家 PlayerName 给 ID 为 1 的服务器投票,你的系统需要给他增加 100 金币。
- GAMEMONITORING 发送 Webhook,包含
event_type: server.vote和event_id: 9824cabb-2203-437e-9b6c-aba43dde3e4b。 - 处理器验证 signature。如果签名无效,返回
401并停止。 - 处理器请求
GET /votes/9824cabb-2203-437e-9b6c-aba43dde3e4b,获得昵称、服务器和用户数据。 - 处理器在你的数据库中通过昵称或账号绑定找到本地账号。
- 在一个事务中,处理器按
server.vote+event_id应用防重复处理,并增加100金币。 - 同一事件再次投递时,按相同的防重复处理规则处理。
同样流程也适用于物品、角色、VIP 时间、优惠码或内部队列。
投票事件
当服务器收到投票时,GAMEMONITORING 会发送 server.vote 事件。Body 只包含投递数据:event_type、event_id、is_test 和 signature。完整投票数据需要单独请求。
此事件中的 event_id 是投票 ID。不要将 Webhook body 作为昵称、服务器或用户数据来源:这些数据来自 API。
获取投票数据
把 event_id 当作 vote_id 使用,并通过 GET /votes/:vote_id 请求投票数据:
发放奖励通常需要 response.nickname、response.server 和公开的 response.user 数据。如果奖励依赖具体服务器,请始终检查 response.server.id。
映射示例:response.nickname 用来在数据库中查找玩家账号,response.server.id 选择服务器奖励规则,response.user.id 可以保存到奖励日志中。
如果 API 暂时不可用或返回异常响应,不要盲目发放奖励。返回失败状态,修复原因,然后重试投递。
完整示例
示例会验证签名、获取投票数据、避免重复发放并发放奖励。请把用户表名、余额字段和玩家查找规则替换成你自己系统的结构。
运行示例前,请先配置项目 Webhook,检查 GET /votes/:vote_id,并把 SQL 用户更新语句替换成你的账号模型。