From 23f3d1fc115401b0d648643eea42f34a8e7ef4ca Mon Sep 17 00:00:00 2001
From: John Smith <xfgryujk@126.com>
Date: Wed, 13 Nov 2019 23:26:25 +0800
Subject: [PATCH] =?UTF-8?q?=E5=85=BC=E5=AE=B9B=E7=AB=99=E5=BC=B9=E5=B9=95?=
 =?UTF-8?q?=E5=8D=87=E7=BA=A7=EF=BC=88=E6=9C=89=E4=BA=9B=E6=B6=88=E6=81=AF?=
 =?UTF-8?q?=E6=B2=A1=E6=9C=89cmd=EF=BC=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 blivedm.py | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/blivedm.py b/blivedm.py
index b4d9ce0..9d67ee6 100644
--- a/blivedm.py
+++ b/blivedm.py
@@ -320,7 +320,7 @@ class BLiveClient:
         )
     }
     for cmd in (  # 其他已知命令
-        'ACTIVITY_BANNER_RED_NOTICE_CLOSE', 'ACTIVITY_BANNER_UPDATE_V2', 'ACTIVITY_MATCH_GIFT',
+        '', 'ACTIVITY_BANNER_RED_NOTICE_CLOSE', 'ACTIVITY_BANNER_UPDATE_V2', 'ACTIVITY_MATCH_GIFT',
         'ACTIVITY_RED_PACKET', 'BLOCK', 'CHANGE_ROOM_INFO', 'CLOSE', 'COMBO_END', 'COMBO_SEND',
         'CUT_OFF', 'DAILY_QUEST_NEWDAY', 'END', 'ENTRY_EFFECT', 'GUARD_LOTTERY_START',
         'GUARD_MSG', 'GUIARD_MSG', 'HOUR_RANK_AWARDS', 'LIVE', 'LOL_ACTIVITY',
@@ -336,6 +336,7 @@ class BLiveClient:
         'WARNING', 'WEEK_STAR_CLOCK', 'WELCOME', 'WELCOME_GUARD', 'WIN_ACTIVITY', 'WISH_BOTTLE'
     ):
         _COMMAND_HANDLERS[cmd] = None
+    del cmd
 
     def __init__(self, room_id, uid=0, session: aiohttp.ClientSession=None,
                  heartbeat_interval=30, ssl=True, loop=None):
@@ -603,8 +604,12 @@ class BLiveClient:
                     body = zlib.decompress(body)
                     await self._handle_message(body)
                 else:
-                    body = json.loads(body.decode('utf-8'))
-                    await self._handle_command(body)
+                    try:
+                        body = json.loads(body.decode('utf-8'))
+                        await self._handle_command(body)
+                    except BaseException:
+                        logger.error('body: %s', body)
+                        raise
 
             elif header.operation == Operation.AUTH_REPLY:
                 await self._websocket.send_bytes(self._make_packet({}, Operation.HEARTBEAT))
@@ -622,7 +627,7 @@ class BLiveClient:
                 await self._handle_command(one_command)
             return
 
-        cmd = command['cmd']
+        cmd = command.get('cmd', '')
         pos = cmd.find(':')  # 2019-5-29 B站弹幕升级新增了参数
         if pos != -1:
             cmd = cmd[:pos]