nplay-team / moderation-bot

A custom moderation bot for the NPLAY community server
https://discord.gg/nplay
MIT License
0 stars 0 forks source link

Init discord.js, discordx and prisma.js #6

Closed SachsenspieltCoding closed 5 months ago

SachsenspieltCoding commented 5 months ago

Mit diesem PR wird discord.js und das Command-Framework discordx grundlegend implementiert. Zusätzlich wird prisma.js als ORM für MySQL hinzugefügt und ein erstes Datenbank-Schema wurde erstellt (ich weiß, da fehlt noch ein bisschen was. ich hab jetzt trotzdem erstmal schonmal ein bisschen basic stuff eingetragen, die kommenden migrations werden für die 1.0 dann einfach zusammengesquasht). Dieses sollte aber vorerst nocheimal diskutiert werden, ob das für alle so in Ordnung geht.

Gerne einmal hier Feedback geben.

[!NOTE] discordx ist ein Command-Framwork ähnlich wie das jda-commands von Kaktushose. Ich habe es für dieses Projekt mal mit reingenommen, um die langfristige Entwicklung zu vereinfachen, gerade wenn man mal nicht 24/7 am Bot coden kann. Sollte es zu einer mehrheitlichen Ablehnung kommen, können wir dieses natürlich auch ohne Probleme durch eine eigene Lösung austauschen.

Glukose1 commented 5 months ago

Schema sieht erstmal recht sinnvoll aus auf der ersten Blick, zum Rest kann ich nur begrenzt viel sagen, mit meinem limitierten wissen sah es aber auch durchaus logisch aus

Glukose1 commented 5 months ago

Wenn ich das richtig verstehe soll im Model Report der User derjenige sein, der reported hat und userid soll auf den verweisen der reported würde. Wenn das so stimmt würde ich das Attribut nicht User nennen sondern reporter oder so, ist für mich eindeutiger,

SachsenspieltCoding commented 5 months ago

Wenn ich das richtig verstehe soll im Model Report der User derjenige sein, der reported hat und userid soll auf den verweisen der reported würde. Wenn das so stimmt würde ich das Attribut nicht User nennen sondern reporter oder so, ist für mich eindeutiger,

user und userId wäre in diesem Fall der Reportete, der Reporter (Moderator) ist der reporter bzw. reporterId

Glukose1 commented 5 months ago

Ok, Dann muss ich sagen finde ich fast ein bisschen overkill User name und user id zu speichern. eigentlich reicht doch auch die User ID als FK oder übersehe ich da was wichtiges?

SachsenspieltCoding commented 5 months ago

Es wird nur die userId in der DB gespeichert. Das user (und reporter) Field ist nur ein higher level feature von prisma, sodass man diese direkt über eine "Query" mit aufrufen kann.

Glukose1 commented 5 months ago

Ahh, ok. Das war mir so nicht bekannt. Danke für die Klarstellung.

SachsenspieltCoding commented 5 months ago

Wir sollten die reports im sinne der Normalisierung in eine eigene Tabelle auslagern und dort speichern, auch ist fraglich, ob wir eine eigene Tabelle für user brauchen, theoretisch reicht uns die snowflake id.

Meinst du dann eine Trennung von Report und Moderativer Aktion (Warn, Ban, Kick, ...)?

Kaktushose commented 5 months ago

Müssen wir die user überhaupt in der datenbank speichern? Gegenwärtig haben wir ja keine Daten die wir user specific speichern. Oder war das nur angedacht für eventuelle zukünftige features?

die delDays müssen wir nicht speichern, die werden ja nur beim bann einmal an discord gesendet und sind danach nicht mehr von nutzen.

Die guildId muss glaube ich auch nicht gespeichert werden, der bot läuft ja nur auf einem server

SachsenspieltCoding commented 5 months ago

Müssen wir die user überhaupt in der datenbank speichern? Gegenwärtig haben wir ja keine Daten die wir user specific speichern. Oder war das nur angedacht für eventuelle zukünftige features?

Ich hab das jetzt einfach mal reingenommen, sollten wir das mal zukünftig benötigen. Ich mein, das braucht ja jetzt nicht ewig viel Speicher, sodass es so denke ich mal angenehmer ist, als im Zweifel später mittels DB Migration das alles zu verknüpfen.

die delDays müssen wir nicht speichern, die werden ja nur beim bann einmal an discord gesendet und sind danach nicht mehr von nutzen.

Ah jo, da hast du natürlich recht. Mein Fehler. Wäre das nicht für die ModLog sinnvoll?

Die guildId muss glaube ich auch nicht gespeichert werden, der bot läuft ja nur auf einem server

Ich hätte den Bot jetzt aufgrund der geringen Komplexität Mutli-Guild fähig ausgelegt. Ist kein großer Mehraufwand und lässt nach oben hin einfach etwas Luft. Kann man natürlich jetzt diskutieren, ob man das braucht

SachsenspieltCoding commented 5 months ago

Achtung, ich hab meine Antwort nochmal bearbeitet!

Kaktushose commented 5 months ago
  1. passt dann so
  2. ja könnte man rein nehmen
  3. ja können wir auch multi guild machen, am ende musst du ja den code schreiben :D kollidiert dann nur beim permissions table solange die id der PK ist, wenn ein user auf mehreren guilds ist und unterschiedliche perms haben soll. role ids sind ja immer unique, da ist das kein problem