Skip to content
开发文档事件与礼物

live.gift ​

live.gift 表示直播间礼物消息。

Payload ​

字段类型必填说明
message_idstring是用于去重的唯一消息标识
room_idstring是直播间标识;不可用时为空字符串
giftobject是礼物信息
group_idstring是礼物分组标识;不可用时为空字符串
group_countstring是礼物分组数量;不可用时为空字符串
repeat_countstring是连击次数;不可用时为空字符串
combo_countstring是combo 次数;不可用时为空字符串
repeat_endboolean是连击或 combo 序列是否已结束
userobject否公开用户对象

Gift 对象 ​

字段类型必填说明
idstring是礼物标识
namestring是礼物名称;不可用时为空字符串
typenumber是礼物类型枚举值;不可用时为 0
diamond_countnumber是单个礼物的钻石价值;不可用时为 0
image_urlstring是礼物图片 URL;不可用时为空字符串

示例 ​

json
{
  "type": "EVENT",
  "event": "live.gift",
  "timestamp": 1786010400000,
  "payload": {
    "message_id": "7520000000000000002",
    "room_id": "7520000000000000000",
    "gift": {
      "id": "5655",
      "name": "Rose",
      "type": 1,
      "diamond_count": 1,
      "image_url": "https://example.invalid/gift.png"
    },
    "group_id": "group_001",
    "group_count": "1",
    "repeat_count": "3",
    "combo_count": "3",
    "repeat_end": true,
    "user": {
      "id": "7300000000000000000",
      "nickname": "Viewer",
      "display_id": "viewer_01",
      "avatar_url": "https://example.invalid/avatar.png"
    }
  }
}

客户端注意 ​

  • 将计数字段当作字符串处理。
  • 容忍未知的礼物 type 值。
  • 需要收尾 combo 展示时,使用 repeat_end。
  • user 对象可能不存在。

选择礼物并触发效果 ​

可以通过可搜索的礼物目录或机器可读 JSON查找礼物 ID。把“礼物 → 效果”规则放在业务配置中,并使用 payload.gift.id 的字符串值进行匹配。

ts
const effectByGiftId = new Map([
  ['5655', 'drop-rose'],
  ['6064', 'show-gg'],
  ['7569', 'controller-boost']
])

function onGift(payload: LiveGiftPayload) {
  const effect = effectByGiftId.get(String(payload.gift.id))
  if (!effect || !payload.repeat_end) return
  runEffect(effect, payload)
}

不要按 gift.name 匹配:名称可能被本地化,不同 ID 也可能重名。也不要按 diamond_count 匹配,因为价值和可用性可能变化。礼物目录只是编写配置时的快照,收到的实时事件才是运行时最终事实。

即时触发、连击结束触发和逐个礼物触发的差异,见礼物目录:明确选择触发策略。