bot-base/src/backends/discord/gateway.py
Louis Chauvet 29d60f3cb9
Some checks failed
Gitsokyo/bot-base/pipeline/head There was a failure building this commit
Début de backend
2020-06-20 11:17:55 +02:00

39 lines
977 B
Python

import asyncio
import json
import traceback
import websockets
class Gateway:
websocket: websockets.WebSocketClientProtocol
def __init__(self, root, version=6, encoding="json", loop=asyncio.get_event_loop()):
self.root = root
self.version = version
self.encoding = encoding
self.loop = loop
self.websocket = None
@property
def url(self):
return f"{self.root}?v={self.version}&encoding={self.encoding}"
async def run(self):
self.websocket = await websockets.connect(self.url)
while True:
message = await self.websocket.recv()
data = json.loads(message)
yield data
async def send(self, content):
try:
if self.websocket is not None:
await self.websocket.send(json.dumps(content))
except Exception:
traceback.print_exc()
@property
def closed(self):
return self.websocket.closed