Add guild info to data

This commit is contained in:
Marsn3 2025-02-25 14:04:57 +01:00
parent 19b69dc548
commit 1f13dffd54
4 changed files with 3266 additions and 7 deletions

View file

@ -6,10 +6,13 @@ from enum import Enum
DISCORD_TOKEN = os.getenv("DISCORD_TOKEN")
PB_TOKEN = os.getenv("PB_TOKEN")
PB_URL = os.getenv("PB_TOKEN")
PB_COLLECTION = os.getenv("PB_TOKEN")
if DISCORD_TOKEN is None or PB_TOKEN is None:
print("Missing Token")
quit()
for env in [DISCORD_TOKEN, PB_TOKEN, PB_URL, PB_COLLECTION]:
if env is None:
print("Missing env var")
quit()
class Events(Enum):
@ -45,11 +48,13 @@ class Member:
class Data:
member: dict
channel: dict
guild: dict
event: str
def __init__(self, member: dict, channel: dict, event: Events) -> None:
def __init__(self, member: dict, channel: dict, guild: dict, event: Events) -> None:
self.member = member
self.channel = channel
self.guild = guild
self.event = event.value
@ -70,6 +75,7 @@ async def on_voice_state_update(
):
member = {"id": user.id, "name": user.name.capitalize(), "avatar": user.avatar.url}
channel = {}
guild = {}
event = None
# User didn't connect or disconnect
if before.channel is not None and after.channel is not None:
@ -78,6 +84,11 @@ async def on_voice_state_update(
if before.channel.id is not after.channel.id:
event = Events("move")
channel = {"id": after.channel.id, "name": after.channel.name}
guild = {
"id": after.channel.guild.id,
"name": after.channel.guild.name,
"icon": after.channel.guild.icon.url,
}
# User didn't move
elif before.channel == after.channel:
# User undeafen
@ -93,18 +104,33 @@ async def on_voice_state_update(
elif not before.self_mute and after.self_mute:
event = Events("mute")
channel = {"id": after.channel.id, "name": after.channel.name}
guild = {
"id": after.channel.guild.id,
"name": after.channel.guild.name,
"icon": after.channel.guild.icon.url,
}
# User connected or disconnected
elif not before.channel or not after.channel:
# User disconnected
if before.channel and not after.channel:
event = Events("leave")
channel = {"id": before.channel.id, "name": before.channel.name}
guild = {
"id": before.channel.guild.id,
"name": before.channel.guild.name,
"icon": before.channel.guild.icon.url,
}
# User connected
elif not before.channel and after.channel:
event = Events("join")
channel = {"id": after.channel.id, "name": after.channel.name}
guild = {
"id": after.channel.guild.id,
"name": after.channel.guild.name,
"icon": after.channel.guild.icon.url,
}
if channel and event:
data = Data(member, channel, event)
data = Data(member, channel, guild, event)
r = requests.post(
f"https://{PB_URL}/api/collections/{PB_COLLECTION}/records",
json=data.__dict__,

View file

@ -14,5 +14,4 @@
containers."bot".startupCommand = config.processes.bot.exec;
containers."bot".registry = "docker://git.m3.fyi/metrik/";
containers."bot".enableLayerDeduplication = true;
#containers."processes".copyToRoot = null;
}

View file

@ -2,6 +2,6 @@
{
languages.javascript.enable = true;
languages.javascript.npm.enable = true;
languages.javascript.pnpm.enable = true;
languages.typescript.enable = true;
}

3234
src/frontend/pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load diff