diff --git a/litecord/gateway/websocket.py b/litecord/gateway/websocket.py index e03e12c..6226fe6 100644 --- a/litecord/gateway/websocket.py +++ b/litecord/gateway/websocket.py @@ -414,6 +414,10 @@ class GatewayWebsocket: await self.invalidate_session(False) raise WebsocketClose(4009, 'You are being ratelimited.') + if self._check_ratelimit('session', user_id): + await self.invalidate_session(False) + raise WebsocketClose(4004, 'Websocket Session Ratelimit reached.') + async def handle_2(self, payload: Dict[str, Any]): """Handle the OP 2 Identify packet.""" try: diff --git a/litecord/ratelimits/main.py b/litecord/ratelimits/main.py index ffcc54d..10d219b 100644 --- a/litecord/ratelimits/main.py +++ b/litecord/ratelimits/main.py @@ -35,6 +35,9 @@ RATELIMITS = { '_ws.connect': Ratelimit(1, 5), '_ws.presence': Ratelimit(5, 60), '_ws.messages': Ratelimit(120, 60), + + # 1000 / 4h for new session issuing + '_ws.session': Ratelimit(1000, 14400) } class RatelimitManager: