Send and receive messages

This commit is contained in:
guams 2025-03-06 09:29:25 +01:00
parent c3591f5c51
commit a606aa46ec
2 changed files with 39 additions and 13 deletions

View File

@ -14,3 +14,8 @@ class OpCode(int, Enum):
HELLO = 10
HEARTBEAT_ACK = 11
REQUEST_SOUNDBOARD_SOUNDS = 31
class EventTitle(str, Enum):
MESSAGE_CREATE = "MESSAGE_CREATE"
GUILD_CREATE = "GUILD_CREATE"
READY = "READY"

47
main.py
View File

@ -1,19 +1,24 @@
import asyncio
from typing import Any
import requests
import websockets
import json
from enums import OpCode
from websockets import Response
from enums import OpCode, EventTitle
with open('configuration.json', 'r') as file:
CONFIG = json.load(file)
GATEWAY_URL = "wss://gateway.discord.gg/?v=10&encoding=json"
API_URL = "https://discord.com/api/v10"
TOKEN = CONFIG["TOKEN"]
GATEWAY_URL: str = "wss://gateway.discord.gg/?v=10&encoding=json"
API_URL: str = "https://discord.com/api/v10"
TOKEN: str = CONFIG["TOKEN"]
async def send_message(channel_id: int, message: str):
body = {
body: dict= {
"content": message,
"tts": False,
"embeds": [{
@ -22,21 +27,21 @@ async def send_message(channel_id: int, message: str):
}]
}
res = await requests.post(url=f"{API_URL}/channels/{channel_id}/messages", json=body)
res: Response = requests.post(url=f"{API_URL}/channels/{channel_id}/messages", json=body, headers={"Authorization": f"Bot {TOKEN}"})
print(res)
async def identify(websocket):
payload = {
payload: dict = {
"op": OpCode.IDENTIFY,
"d": {
"token": TOKEN,
"properties": {
"os": "windows",
"os": "linux",
"browser": "gambling",
"device": "gambling"
},
"intents": 513,
"intents": 65024,
}
}
await websocket.send(json.dumps(payload))
@ -47,6 +52,13 @@ async def heartbeat(websocket, interval):
await asyncio.sleep(interval / 1000)
await websocket.send(json.dumps({"op": OpCode.HEARTBEAT, "d": None}))
async def get_event(response: Any):
match response["t"]:
case EventTitle.MESSAGE_CREATE:
print(f'{response["d"]["author"]["username"]}: {response["d"]["content"]}')
case _:
print("Unknown event")
async def connect():
async with websockets.connect(GATEWAY_URL) as websocket:
@ -58,9 +70,18 @@ async def connect():
await identify(websocket)
while True:
message = json.loads(await websocket.recv())
print("Received: ", message)
response = json.loads(await websocket.recv())
#print("Received: ", response)
match response["op"]:
case OpCode.DISPATCH:
await get_event(response)
case _:
print("osef")
asyncio.run(connect())
# send_message(channel_id=840107060901052426, message="Salut")
async def main():
gateway_connect = asyncio.create_task(connect())
await send_message(channel_id=840107060901052426, message="Salut")
await gateway_connect
asyncio.run(main())