抖音弹幕游戏开发之第7集:识别不同类型的消息·优雅草云桧·卓伊凡

《抖音弹幕游戏开发专栏》是优雅草建立的专栏,由优雅草资深开发工程师云桂提供实战教学配对发布有对应的视频教程,以下内容为技术文稿,卓伊凡辅助。
抖音弹幕游戏开发之第7集:识别不同类型的消息·优雅草云桧·卓伊凡

第7集:识别不同类型的消息

支持的消息类型

|----|-----------|---------------------|
| 类型 | 说明 | 特有字段 |
| 弹幕 | 用户发送的文字消息 | content |
| 礼物 | 用户赠送的礼物 | giftName, giftCount |
| 点赞 | 用户点赞行为 | count |
| 关注 | 用户关注主播 | - |
| 分享 | 用户分享直播间 | - |
| 进房 | 用户进入直播间 | memberCount |

完整的消息处理代码

复制代码
def on_message(ws, message):
    try:
        data = json.loads(message)
        msg_type = data.get('msgType', '')
        name = data.get('name', '')
        
        if msg_type == '弹幕':
            content = data.get('content', '')
            print(f"💬 [弹幕] {name}: {content}")
        elif msg_type == '礼物':
            gift_name = data.get('giftName', '')
            gift_count = data.get('giftCount', 0)
            print(f"🎁 [礼物] {name} 送了 {gift_count} 个 {gift_name}")
        elif msg_type == '点赞':
            count = data.get('count', 0)
            print(f"👍 [点赞] {name} 点了 {count} 个赞")
        elif msg_type == '关注':
            print(f"💗 [关注] {name} 关注了主播")
        elif msg_type == '进房':
            member_count = data.get('memberCount', 0)
            print(f"🚪 [进房] {name} 进入直播间 (当前人数: {member_count})")
        elif msg_type == '分享':
            print(f"✈️ [分享] {name} 分享了直播间")
        else:
            print(f"[其他] {msg_type} - {name}")
            
    except json.JSONDecodeError as e:
        print(f"数据解析失败: {e}")

输出效果

复制代码
🚪 [进房] 用户A 进入直播间 (当前人数: 1256)
💬 [弹幕] 用户B: 主播好厉害!
👍 [点赞] 用户C 点了 10 个赞
🎁 [礼物] 用户D 送了 1 个 玫瑰花
💗 [关注] 用户E 关注了主播

为什么用elif而不是多个if?

复制代码
# 推荐:用elif
if msg_type == '弹幕':
    ...
elif msg_type == '礼物':  # 第一个条件满足后,这里不会执行
    ...

# 不推荐:用多个if
if msg_type == '弹幕':
    ...
if msg_type == '礼物':  # 即使第一个满足,这里还会继续判断
    ...
  • elif 效率更高,匹配到就停止
  • 一条消息只有一个msgType,用elif更符合逻辑

平台差异注意

不同平台的数据字段可能有细微差异:

  • 抖音可能有 level(等级)字段
  • TikTok可能没有

使用 get() 方法并提供默认值,可以兼容这些差异。

本集总结

  • ✅ 识别所有常见的消息类型
  • ✅ 为每种类型添加专门的处理逻辑
  • ✅ 提取各类型的特有字段
  • ✅ 添加表情符号,让输出更直观
  • ✅ 理解if-elif-else的使用

下一集:pyautogui基础 - 模拟键盘操作

相关推荐
wangbing11251 小时前
springboot应用关闭时触发动作
java·spring boot·后端
weixin_460443565 小时前
2026年新修订《网络安全法》实施:Java私有化考试系统如何做好SBOM、漏洞治理与安全升级?
java·开发语言·在线考试系统·企业培训考试系统·宏远培训考试系统·国企培训考试系统·国产化培训系统
子兮曰5 小时前
把 649 种文件格式塞进一个网页里:一个「文件不出浏览器」的预览器
前端·javascript·后端
海鸥-w8 小时前
什么是AOP
java
EasyGBS8 小时前
摄像头还在线,画面已经不能用了?国标GB28181视频平台EasyGBS视频质量诊断怎么用
服务器·安全·音视频
Cc.Y8 小时前
Java零基础入门:可变字符串与包装类:StringBuilder、StringBuffer 与 通讯录管理系统实战
java·开发语言·python
程序员-Benothing8 小时前
Vim编辑器从入门到精通:模式、快捷键、配置、插件
linux·运维·服务器
paopaokaka_luck8 小时前
基于springboot+vue的智慧家政管理系统(AI问答、 WebSocket实时沟通、ECharts运营分析、订单规则与服务追踪)
java·javascript·spring boot·数据分析·echarts·mybatis
sm_926787058 小时前
RFID 标签打印的技术实现要点与二次开发实践
java·大数据·前端·c++·编辑器