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:
entity nicht in der tabelle -> permission denied
permissions < required -> permission denied
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:
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.
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:
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:
REPORT_READ
1 << 0
REPORT_CREATE
1 << 1
REPORT_DELETE
1 << 2
BAN_APPEAL_MANAGE
1 << 3