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)
])
)
ls={"speak": False,"ban_members": True} p2=discord.Permissions(**ls)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