2017-09-23 4 views
-1

J'ai récemment fait un bot Discord mais le seul inconvénient est que n'importe qui peut exécuter les commandes.Comment faire des commandes sur un bot Discord.py ne fonctionne que pour un certain utilisateur

Par exemple, un nouvel utilisateur peut exécuter /kick @MeIsCool

Mais je wan de faire en sorte qu'un certain rôle ou utilisateur peut exécuter.

J'ai besoin de toute l'aide que je peux obtenir.

Et ceci est un bot python utilisant discord.py

Cordialement,

Impressionnant Minecraft

Mise à jour: 20/1/2018

J'utilise maintenant pour Discord.js mon Discord Bot et je suis plus familliar avec, donc vous n'avez pas vraiment besoin de répondre à cette question plus. Merci pour toute l'aide.

+0

Qu'avez-vous essayé jusqu'à présent? – twoleggedhorse

Répondre

1

Ce que vous devriez chercher est .
Fondamentalement, c'est l'objet d'autorisation, le docs contient ce que les autorisations sont là et comment vous pouvez vérifier si un utilisateur a des autorisations.

Vous pouvez obtenir les autorisations d'un utilisateur en utilisant la fonction User.permissions_in(Channel). (ou Channel.permissions_for(User)). Il retourne essentiellement Permission que vous pouvez comparer avec le type de permission que vous voulez. (Indiqué dans la documentation)

+0

La chose est comment puis-je obtenir l'objet d'autorisation des utilisateurs de toute façon –

+0

@AwesomeMinecraft Lisez ma deuxième partie de la réponse s'il vous plaît. La documentation contient les détails pour eux aussi. Ctrl + F aide beaucoup quand vous cherchez des choses autour de la documentation. Aussi, si vous ne comprenez pas grand chose, alors vous devriez retourner à vos tutoriels en python. Maintenant, 'User' est évidemment votre objet utilisateur et' Channel' est évidemment votre objet channel, et ils contiennent les méthodes que je viens de mentionner dans mes réponses, et ces méthodes retournent l'objet 'Permissions', ce que vous cherchez . – WQYeo

+1

Pointeur sémantique, 'User' fait référence à un utilisateur en dehors d'une guilde et ne couvre donc que le nom, l'avatar, l'id etc. Pour les utilisateurs d'une guilde, vous devez utiliser' Member'. – squaswin

0

Vous pouvez vérifier un rôle, quelque chose comme "BotAdmin", puis travailler à partir de là.

admin = has_role("BotAdmin") rend admin un booléen, donc tout ce que vous avez à faire pour implémenter cela dans votre code est: if ctx.message.content=='!ping' and admin == True:.

Hope this aidé :)

0

Affectez le bot un rôle spécifique et permettre de faire des choses qui rang inférieur rôles ne peuvent pas faire. Pour les utilisateurs que vous n'autorisez pas à avoir accès au bot et/ou pour demander au bot de faire les choses pour lesquelles ils n'ont pas les permissions: Tant qu'ils n'ont pas le rôle assigné à le bot, ou un rôle au-dessus (permissions-sage), alors le bot lancera une permission-based exception et refusera leur accès à lui par défaut.

0
@client.command(pass_context=True) 
@commands.has_role("Admin") 
async def kick(ctx, user: discord.Member): 
    await client.kick(user) 

ce que je fais ..