Discord.py Bot Moderatoren Berechtigungen geben?
Guten Tag!
Ich muss einen Discord Bot für meinen Schul-Discord Server programmieren, nur ich schaffe es irgendwie nicht das Moderatoren den Command "clear" ausführen können.
@bot.command(pass_context=True, name='clear')
@commands.has_permissions(administrator=True)
async def clean(ctx, limit: int):
await ctx.channel.purge(limit=limit)
await ctx.send('Gelöscht von {}'.format(ctx.author.mention))
await ctx.message.delete()
Ich habe zuerst versucht anstatt "administrator", "moderator" zu verwenden. Nur ich bekomme bei "moderator" die Fehlermeldung: "TypeError: Invalid permission(s): moderator". Somit können nur Administratoren mit meinem Bot Nachrichten löschen. Hat jemand eine Ahnung wie ich das beheben kann das auch Moderatoren mit meinem Bot Nachrichten löschen können?
2 Antworten
Nein, du musst die Permissionsflags nutzen... Moderator existiert nicht! Beispiel wäre manage_messages... Damit kann jeder, der über die Berechtigung verfügt, Nachrichten zu verwalten, auch den Command nutzen...
Siehe Alle Permissions (die genannte Website ist für Discord.js, achte jedoch nur auf die Flags, die anscheinend in beiden Versionen gleich sind!)
PS: Wieso Python? Jeder normale Mensch schreibt in Discord.js (ist halt um imensen einfacher!
Okay danke :)
Ich mag Python einfach, aber ich werde mir nachher Discord.js mal ansehen.
Eh ne man kann auch command.check(role.id) nutzen. Ist einfacher und besser definierbar
Nun ja, wenn ich mir so den Code ansehe... Ich weiß ja nicht...
Du musst, wie von Justman schon gesagt, die existierenden Permissions nutzen. "Moderator" ist keine existierende Permission, daher geht das nicht.
https://discordpy.readthedocs.io/en/stable/api.html#permissions
Sonst, wenn "Moderator" eine Rolle ist, kannst du eben überprüfen lassen, ob der Nutzer die entsprechende Rolle besitzt.
Nein, nicht "jeder" ... es gibt Bots in allen Sprachen, für die es entsprechende Wrapper gibt, und ob es wirklich einfacher ist, steht auf einem anderen Blatt. Python ist halt schon eine sehr einfach gehaltene Sprache, die jedoch extrem potent ist