Discord.py modifier une permission
Résolu
Bonjour à tous,
Je code un bot python et je suis confronté à un problème... J'ai cette liste de tuples (qui contient le nom de la permission et sa valeur) :
... et je voudrais la transformer en objet
Quelqu'un peut il m'aider ?
Merci beaucoup
Je code un bot python et je suis confronté à un problème... J'ai cette liste de tuples (qui contient le nom de la permission et sa valeur) :
ls=[("speak", False),("ban_members", True)...]
... et je voudrais la transformer en objet
discord.Permission...
Quelqu'un peut il m'aider ?
Merci beaucoup
A voir également:
- Discord.py modifier une permission
- Modifier dns - Guide
- Modifier liste déroulante excel - Guide
- Modifier une story facebook - Guide
- Modifier extension fichier - Guide
- Vous avez besoin d'une autorisation de la part de système pour modifier ce dossier - Guide
1 réponse
Bonjour,
D'après cette page, les permissions discord sont encodées à l'aide d'un masque, dont chaque bit correspond à une permission (1 si la permission est autorisée, 0 sinon). Par exemple :
Donc ce que tu pourrais faire c'est définir dans ton programme python une variable par permission, puis faire le OU logique (avec
D'après cette page, les permissions discord sont encodées à l'aide d'un masque, dont chaque bit correspond à une permission (1 si la permission est autorisée, 0 sinon). Par exemple :
-
CREATE_INSTANT_INVITE
correspond au 1er bit de poids faible (1 << 0 == 1
). -
KICK_MEMBERS
correspond au 2e bit de poids faible (1 << 1 == 1
). -
BAN_MEMBERS
correspond au 3e bit de poids faible (1 << 2 == 2
). - ...
Donc ce que tu pourrais faire c'est définir dans ton programme python une variable par permission, puis faire le OU logique (avec
|) des permissions à activer en fonction de ta liste.
MAP_PERMISSION_VALUE = { "create_instant_invite" : 1 << 0, "kick_members" : 1 << 1, "ban_members" : 1 << 2, # ... "speak" : 1 << 21, } def make_permission(tuples): ret = 0 for (name, enabled) in tuples: value = MAP_PERMISSION_VALUE[name] if enabled: ret |= value return ret print( make_permission([ ("speak", False), ("ban_members", True) ]) ) print( make_permission([ ("speak", True), ("ban_members", True) ]) )
Effectivement yg_be, d'après la documentation. Le code que tu proposes s'écrit plus naturellement :
Toujours d'après la documentation, tu peux également passer par ses propriétés :
Bonne chance