瀏覽代碼

Handle weird MQTT exceptions

Tulir Asokan 2 年之前
父節點
當前提交
c7eb916b92
共有 2 個文件被更改,包括 8 次插入4 次删除
  1. 6 2
      mauigpapi/types/mqtt.py
  2. 2 2
      mautrix_instagram/portal.py

+ 6 - 2
mauigpapi/types/mqtt.py

@@ -67,15 +67,19 @@ class CommandResponse(SerializableAttrs):
     status_code: Optional[str] = None
     message: Optional[str] = None
     payload: Optional[CommandResponsePayload] = None
+    exception: Optional[str] = None
+    content: Optional[str] = None
 
     @property
     def error_message(self) -> Optional[str]:
-        if self.status == "ok":
-            return None
         if self.payload and self.payload.message:
             return self.payload.message
         elif self.message:
             return self.message
+        elif self.exception:
+            if self.content:
+                return f"{self.exception}: {self.content}"
+            return self.exception
         else:
             return "unknown response data"
 

+ 2 - 2
mautrix_instagram/portal.py

@@ -558,9 +558,9 @@ class Portal(DBPortal, BasePortal):
             raise NotImplementedError(f"Unknown message type {message.msgtype}")
 
         self.log.trace(f"Got response to message send {request_id}: {resp}")
-        if resp.status != "ok":
+        if resp.status != "ok" or not resp.payload:
             self.log.warning(f"Failed to handle {event_id}: {resp}")
-            raise Exception(f"Failed to handle event. Error: {resp.error_message}")
+            raise Exception(f"Sending message failed: {resp.error_message}")
         else:
             self._msgid_dedup.appendleft(resp.payload.item_id)
             try: