You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何在if条件中添加嵌套字典字段含指定词的判断

Python WebSocket事件判断逻辑扩展方案

修改说明

  • 保留原有guild_id、channel_id匹配规则,追加嵌套字段关键词校验
  • 修复原代码笔误:原代码中event('op')是错误的字典取值写法,应使用event['op'],否则心跳检测逻辑永远无法触发
  • 增加边界判断,避免embeds、fields为空时触发索引/键错误
  • 替换裸except为具体异常捕获,避免吞掉所有报错影响问题排查

修改后完整代码

while True:
    event = recieve_json_response(ws)

    try:
        event_data = event['d']
        # 匹配指定服务器和频道
        if event_data['guild_id'] == "699288260479942686" and event_data['channel_id'] == "831878180586389514":
            # 校验第一个embed的第一个field的name字段是否包含session关键词
            first_embed = event_data['embeds'][0]
            if first_embed['fields'] and 'session' in first_embed['fields'][0]['name'].lower():
                print(event_data)
        # 处理心跳响应
        op_code = event['op']
        if op_code == 11:
            print('heartbeat received')
    except (KeyError, IndexError):
        # 仅捕获字段不存在、索引越界类异常,其余错误正常抛出方便排查
        pass

细节说明

  • 关键词匹配加了.lower()做大小写兼容,可匹配Session/SESSION等不同大小写形式,如果需要严格大小写匹配,直接删除.lower()即可
  • first_embed['fields']的判断会自动跳过fields为空列表的情况,避免取[0]时触发索引越界
  • 把重复取值的event['d']提取为变量event_data,减少重复字典取值操作

内容的提问来源于stack exchange,提问作者ArseneCC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 08:24:15