commit 944ef4e4b0090ba7498c142f0638e67e96887338 Author: Guams Date: Wed Mar 5 22:40:39 2025 +0100 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1e0ec9d --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +configuration.json +.idea/ \ No newline at end of file diff --git a/enums.py b/enums.py new file mode 100644 index 0000000..8e7569c --- /dev/null +++ b/enums.py @@ -0,0 +1,15 @@ +from enum import Enum + +class OpCode(Enum): + DISPATCH = 0 + HEARTBEAT = 1 + IDENTIFY = 2 + PRESENCE_UPDATE = 3 + VOICE_STATE_UPDATE = 4 + RESUME = 6 + RECONNECT = 7 + REQUEST_GUILD_MEMBERS = 8 + INVALID_SESSION = 9 + HELLO = 10 + HEARTBEAT_ACK = 11 + REQUEST_SOUNDBOARD_SOUNDS = 31 \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..c694eca --- /dev/null +++ b/main.py @@ -0,0 +1,42 @@ +import asyncio +import websockets +import json +from enums import OpCode + +TOKEN = "MTM0NjkyMDM5MjQ1MDc2ODk2OA.GUsapQ.LRdsHSQBfdDDMtr11jxkHpdY64-ugAeupLSM4A" +GATEWAY_URL = "wss://gateway.discord.gg/?v=10&encoding=json" + +async def identify(websocket): + payload = { + "op": OpCode.IDENTIFY, # OpCode 2 = Identify + "d": { + "token": TOKEN, + "properties": { + "os": "windows", + "browser": "gambling", + "device": "gambling" + }, + "intents": 513, + } + } + await websocket.send(json.dumps(payload)) + +async def heartbeat(websocket, interval): + while True: + await asyncio.sleep(interval / 1000) + await websocket.send(json.dumps({"op": OpCode.HEARTBEAT, "d": None})) + +async def connect(): + async with websockets.connect(GATEWAY_URL) as websocket: + response = json.loads(await websocket.recv()) + heartbeat_interval = response["d"]["heartbeat_interval"] + + asyncio.create_task(heartbeat(websocket, heartbeat_interval)) + + await identify(websocket) + + while True: + message = json.loads(await websocket.recv()) + print("Received: ", message) + +asyncio.run(connect())