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

[FEATURE] Permissions System #3

Closed Kaktushose closed 5 months ago

Kaktushose commented 5 months ago

Beschreibung

Discord erlaubt es Slash Commands an gewisse Permissions zu binden. Dies reicht jedoch nicht aus, da 1. die Berechtigungen jederzeit in der Servereinstellungen editiert werden können und 2. keine genauere Unterscheidung möglich ist. Daher schlage ich vor, dass wir zusätzlich ein eigenes bot side permissions System hinzufügen.

Implementation

Sowohl einzelne User als auch Rollen und damit respektiv alle User mit der Rolle können gewisse Permissions granted bekommen. Es wird implizit von jeder User und jeder Rolle angenommen, dass sie keinerlei Berechtigungen hat. Ein User oder eine Rolle wird nur in der Datenbank gespeichert wenn Berechtigungen hinzugefügt werden.

CREATE TABLE permission_holders (
    snowflake_id BIGINT PRIMARY KEY NOT NULL,
    permissions INT DEFAULT 0
);

Wir speichern sowohl Rollen als auch user in der selben Tabelle, da beides snowflake entities sind. Wenn wir permissions querien gibt es dann 3 szenarien:

  1. entity nicht in der tabelle -> permission denied
  2. permissions < required -> permission denied
  3. permissions >= required -> permissions granted

In der Implementierung gilt es zu beachten, dass nur weil z.b. die user permissions denied werden dennoch die role permisions abgefragt werden und vice versa. Die permissions werden als bit flags gespeichert. Als Implementierungshilfe kann die Umsetzung im neuen NPLAY-Bot genutzt werden

Permissions

Folgende primäre Permissions schlage ich vor, weitere können bei Bedarf ergänzt werden: