2017-02-05 5 views
0

Ich kodiere einen Discord-Bot mit discord.js/node (ich bin ziemlich neu). Ich habe versucht, ein Berechtigungssystem einzurichten, wo Sie eine bestimmte Rolle benötigen, um eine if-Anweisung als "true" zurückzusetzen und dem Benutzer die Verwendung eines Befehls oder etwas anderes zu ermöglichen. Ich habe versucht, (dies ist nur ein Teil davon):Berechtigungen in Discord.js API?

if(message.author.roles.includes('role_id') { 
    COMMANDS 
    } 

Aber es gibt mir nur Fehler in der Konsole (natürlich)

Wenn jemand von euch wissen, wie man richtig ein Berechtigungssystem einrichten in Ein effizienter Weg, der geschätzt würde!

+0

Discord.js '' message.author'' Objekt tut nicht enthalten ein Mitglied '' Rollen''. Siehe: https://discord.js.org/#/docs/main/stable/class/User – Crowes

+0

Ja, ich habe die Dokumentation noch einmal durchgesehen und ich habe '.member' versucht (was die' GuildMember' Klasse darstellt, die '' hat Rolleneigenschaft) anstelle von '.author'. Es funktioniert aber immer noch nicht. – Meh

+0

Rollen scheinen wie eine Sammlung, also müssen Sie ihre '' .exists() '' Methode verwenden. Ich denke nicht, dass es standardmäßig ein Array ist, aber zitieren Sie mich nicht darauf. https://discord.js.org/#/docs/main/stable/class/Collection?scrollTo=exists – Crowes

Antwort

0

Um dies zu erreichen ein if bedingt mit: if(message.member.roles.has([role_id])) wo [role_id] ein String ist (sonst wird es immer false zurück)

0

Es gibt eine hasRole Methode auf Benutzer: http://discordjs.readthedocs.io/en/8.2.0/docs_user.html

hasRole (Rolle)

Verknüpfung von client.memberHasRole (Mitglied, Rolle)

See client.memberHasRole

Welcher Link dazu: http://discordjs.readthedocs.io/en/8.2.0/docs_client.html#memberhasrole-member-role

memberHasRole (Mitglied, Rolle)

Gibt zurück, wenn ein Benutzer eine Rolle

+0

Das sind nur die Berechtigungen, aber ich suche, ob ein Benutzer die Rollen hat. Wenn es keine Möglichkeit gibt, eine 'if'-Anweisung zu verwenden, um Rollen mit 'hasPermission' zu überprüfen – Meh

+0

@UNOriginalName Was ist mit meinem Update? –

+0

Das funktioniert nicht, es stürzt meinen Bot einfach mit einem Fehler ab. Danke, obwohl. EDIT: Es wurde herausgefunden, wie man es mit Erlaubnis/Rolle macht. – Meh

0

Haben Sie versucht, so etwas wie dies zu tun?

if (!message.member.roles.some(r=>["role_name"].includes(r.name))) 
    return; 

Dadurch werden alle Benutzer verwenden, dass bestimmte Befehl verhindern, wenn sie die angegebene Rolle haben.

Verwandte Themen