From 000c5128778b607d69ac30c73359674bdc9417bc Mon Sep 17 00:00:00 2001 From: Guams Date: Wed, 5 Mar 2025 22:40:39 +0100 Subject: [PATCH] initial commit --- .gitignore | 10 ++++++++++ README.md | 3 +++ enums.py | 15 +++++++++++++++ main.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 70 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 enums.py create mode 100644 main.py 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/README.md b/README.md new file mode 100644 index 0000000..69d5c71 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Gambling BOT + +Readme in progress... \ 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..a1d6fbc --- /dev/null +++ b/main.py @@ -0,0 +1,42 @@ +import asyncio +import websockets +import json +from enums import OpCode + +GATEWAY_URL = "wss://gateway.discord.gg/?v=10&encoding=json" +CONFIG = json.load(open('configuration.json', 'r')) +TOKEN = CONFIG["TOKEN"] +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())