From 9f507212437816593b6360e724ecf3252019b78f Mon Sep 17 00:00:00 2001 From: Luna Date: Thu, 25 Apr 2019 22:26:45 -0300 Subject: [PATCH] gateway.websocket: fix etf --- litecord/gateway/websocket.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/litecord/gateway/websocket.py b/litecord/gateway/websocket.py index 436001a..04ee7e4 100644 --- a/litecord/gateway/websocket.py +++ b/litecord/gateway/websocket.py @@ -227,6 +227,7 @@ class GatewayWebsocket: payload.get('s'), payload.get('t')) + # treat encoded as bytes if not isinstance(encoded, bytes): encoded = encoded.encode() @@ -237,7 +238,13 @@ class GatewayWebsocket: # should do all? await self.ws.send(zlib.compress(encoded)) else: - await self.ws.send(encoded.decode()) + try: + # assume encoded is string, json based, decoding it + # should give reasonable messages down the websocket + await self.ws.send(encoded.decode()) + except UnicodeDecodeError: + # in here, encoded is ETF, its bytes(), so we send it raw + await self.ws.send(encoded) async def send_op(self, op_code: int, data: Any): """Send a packet but just the OP code information is filled in."""