Basic poll creation
This commit is contained in:
parent
a2cb506737
commit
7b8122a69f
2
enums.py
2
enums.py
@ -15,7 +15,9 @@ class OpCode(int, Enum):
|
|||||||
HEARTBEAT_ACK = 11
|
HEARTBEAT_ACK = 11
|
||||||
REQUEST_SOUNDBOARD_SOUNDS = 31
|
REQUEST_SOUNDBOARD_SOUNDS = 31
|
||||||
|
|
||||||
|
|
||||||
class EventTitle(str, Enum):
|
class EventTitle(str, Enum):
|
||||||
|
INTERACTION_CREATE = "INTERACTION_CREATE"
|
||||||
MESSAGE_CREATE = "MESSAGE_CREATE"
|
MESSAGE_CREATE = "MESSAGE_CREATE"
|
||||||
GUILD_CREATE = "GUILD_CREATE"
|
GUILD_CREATE = "GUILD_CREATE"
|
||||||
READY = "READY"
|
READY = "READY"
|
161
main.py
161
main.py
@ -12,22 +12,100 @@ from enums import OpCode, EventTitle
|
|||||||
with open('configuration.json', 'r') as file:
|
with open('configuration.json', 'r') as file:
|
||||||
CONFIG = json.load(file)
|
CONFIG = json.load(file)
|
||||||
|
|
||||||
|
APPLICATION_ID: int = CONFIG["APPLICATION_ID"]
|
||||||
GATEWAY_URL: str = "wss://gateway.discord.gg/?v=10&encoding=json"
|
GATEWAY_URL: str = "wss://gateway.discord.gg/?v=10&encoding=json"
|
||||||
API_URL: str = "https://discord.com/api/v10"
|
API_URL: str = "https://discord.com/api/v10"
|
||||||
TOKEN: str = CONFIG["TOKEN"]
|
TOKEN: str = CONFIG["TOKEN"]
|
||||||
|
|
||||||
|
|
||||||
async def send_message(channel_id: int, message: str):
|
async def create_command():
|
||||||
body: dict = {
|
body: dict = {
|
||||||
"content": message,
|
"name": "poll",
|
||||||
"tts": False,
|
"type": 1,
|
||||||
"embeds": [{
|
"description": "Des votes sur lesquels gamble !",
|
||||||
"title": "Hello, Embed!",
|
"options": [
|
||||||
"description": "This is an embedded message."
|
{
|
||||||
}]
|
"name": "intitulee",
|
||||||
|
"description": "Intitulé du vote",
|
||||||
|
"type": 3,
|
||||||
|
"required": True
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "vote1",
|
||||||
|
"description": "Première option de vote",
|
||||||
|
"type": 3,
|
||||||
|
"required": True
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "vote2",
|
||||||
|
"description": "Deuxième option de vote",
|
||||||
|
"type": 3,
|
||||||
|
"required": False
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "vote3",
|
||||||
|
"description": "Troisième option de vote",
|
||||||
|
"type": 3,
|
||||||
|
"required": False
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "vote4",
|
||||||
|
"description": "Quatrième option de vote",
|
||||||
|
"type": 3,
|
||||||
|
"required": False
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "vote5",
|
||||||
|
"description": "Cinquième option de vote",
|
||||||
|
"type": 3,
|
||||||
|
"required": False
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
res: Response = requests.post(f"{API_URL}/applications/{APPLICATION_ID}/commands", json=body,
|
||||||
|
headers={"Authorization": f"Bot {TOKEN}"})
|
||||||
|
print(res)
|
||||||
|
|
||||||
|
|
||||||
|
async def init_commands():
|
||||||
|
res = requests.get(f"{API_URL}/applications/{APPLICATION_ID}/commands", headers={"Authorization": f"Bot {TOKEN}"})
|
||||||
|
commands = json.loads(res.content)
|
||||||
|
for command in commands:
|
||||||
|
response = requests.delete(f"{API_URL}/applications/{APPLICATION_ID}/commands/{command['id']}",
|
||||||
|
headers={"Authorization": f"Bot {TOKEN}"})
|
||||||
|
if response.status_code == 204:
|
||||||
|
print("Suppression des commandes: Supprimé avec succès !")
|
||||||
|
else:
|
||||||
|
print("Suppression des commandes: Une erreur est survenue")
|
||||||
|
await create_command()
|
||||||
|
|
||||||
|
|
||||||
|
async def create_poll(channel_id: int, label: str, vote_options: list[dict]):
|
||||||
|
body: dict = {
|
||||||
|
"content": "salut feikrf",
|
||||||
|
"components": [
|
||||||
|
{
|
||||||
|
"type": 1,
|
||||||
|
"components": [
|
||||||
|
{
|
||||||
|
"type": 4,
|
||||||
|
"custom_id": "textinput",
|
||||||
|
"label": "Montant de la somme pariée",
|
||||||
|
"min_length": 1,
|
||||||
|
"required": True,
|
||||||
|
"value": "50",
|
||||||
|
"style": 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
res: Response = requests.post(url=f"{API_URL}/channels/{channel_id}/messages", json=body, headers={"Authorization": f"Bot {TOKEN}"})
|
res: Response = requests.post(url=f"{API_URL}/channels/{channel_id}/messages", json=body,
|
||||||
|
headers={"Authorization": f"Bot {TOKEN}"})
|
||||||
|
if res.status_code == 400:
|
||||||
|
print(res.json())
|
||||||
|
else:
|
||||||
print(res)
|
print(res)
|
||||||
|
|
||||||
|
|
||||||
@ -41,23 +119,80 @@ async def identify(websocket):
|
|||||||
"browser": "gambling",
|
"browser": "gambling",
|
||||||
"device": "gambling"
|
"device": "gambling"
|
||||||
},
|
},
|
||||||
"intents": 65024,
|
"intents": 50364416,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
await websocket.send(json.dumps(payload))
|
await websocket.send(json.dumps(payload))
|
||||||
|
|
||||||
|
|
||||||
|
async def create_interaction_response(interaction_id: int, interaction_token: str):
|
||||||
|
body = {
|
||||||
|
"type": 4,
|
||||||
|
"data": {
|
||||||
|
"embeds": [
|
||||||
|
{
|
||||||
|
"title": "Les paris sont ouvert !",
|
||||||
|
"description": "Vous pouvez parier vos points, ils ne passeront pas en dessous de 50."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"poll": {
|
||||||
|
"question":
|
||||||
|
{
|
||||||
|
"text": "Question du poll"
|
||||||
|
},
|
||||||
|
"answers":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"answer_id": 1,
|
||||||
|
"poll_media":
|
||||||
|
{
|
||||||
|
"text": "vote1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"answer_id": 2,
|
||||||
|
"poll_media":
|
||||||
|
{
|
||||||
|
"text": "vote2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"answer_id": 3,
|
||||||
|
"poll_media":
|
||||||
|
{
|
||||||
|
"text": "vote3"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"allow_multiselect": False,
|
||||||
|
"layout_type": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
res = requests.post(f"{API_URL}/interactions/{interaction_id}/{interaction_token}/callback", json=body,
|
||||||
|
headers={"Authorization": f"Bot {TOKEN}"})
|
||||||
|
print(res)
|
||||||
|
|
||||||
|
|
||||||
async def heartbeat(websocket, interval):
|
async def heartbeat(websocket, interval):
|
||||||
while True:
|
while True:
|
||||||
await asyncio.sleep(interval / 1000)
|
await asyncio.sleep(interval / 1000)
|
||||||
await websocket.send(json.dumps({"op": OpCode.HEARTBEAT, "d": None}))
|
await websocket.send(json.dumps({"op": OpCode.HEARTBEAT, "d": None}))
|
||||||
|
|
||||||
|
|
||||||
async def get_event(response: Any):
|
async def get_event(response: Any):
|
||||||
match response["t"]:
|
match response["t"]:
|
||||||
case EventTitle.MESSAGE_CREATE:
|
case EventTitle.MESSAGE_CREATE:
|
||||||
print(f'{response["d"]["author"]["username"]}: {response["d"]["content"]}')
|
print(f'{response["d"]["author"]["username"]}: {response["d"]["content"]}')
|
||||||
|
case EventTitle.INTERACTION_CREATE:
|
||||||
|
print(response)
|
||||||
|
await create_interaction_response(int(response["d"]["id"]), response["d"]["token"])
|
||||||
|
# poll_data: list = response["d"]["data"]["options"]
|
||||||
|
# channel_id = int(response["d"]["channel_id"])
|
||||||
|
# label = poll_data.pop(0)
|
||||||
|
# await create_poll(channel_id=channel_id, label=label, vote_options=poll_data)
|
||||||
case _:
|
case _:
|
||||||
print("Unknown event")
|
print(response)
|
||||||
|
|
||||||
|
|
||||||
async def connect():
|
async def connect():
|
||||||
@ -71,16 +206,18 @@ async def connect():
|
|||||||
|
|
||||||
while True:
|
while True:
|
||||||
response = json.loads(await websocket.recv())
|
response = json.loads(await websocket.recv())
|
||||||
#print("Received: ", response)
|
|
||||||
match response["op"]:
|
match response["op"]:
|
||||||
case OpCode.DISPATCH:
|
case OpCode.DISPATCH:
|
||||||
await get_event(response)
|
await get_event(response)
|
||||||
case _:
|
case _:
|
||||||
print("osef")
|
print(response)
|
||||||
|
|
||||||
|
|
||||||
async def main():
|
async def main():
|
||||||
gateway_connect = asyncio.create_task(connect())
|
gateway_connect = asyncio.create_task(connect())
|
||||||
|
# await init_commands()
|
||||||
|
# await create_poll(840107060901052426, "f", [])
|
||||||
await gateway_connect
|
await gateway_connect
|
||||||
|
|
||||||
|
|
||||||
asyncio.run(main())
|
asyncio.run(main())
|
Loading…
Reference in New Issue
Block a user