Développer

Permissions et hiérarchie des rôles

Demandez le minimum nécessaire et respectez la hiérarchie 64 bits des rôles Lyra.

Modèle de permissions

Les permissions d’une communauté forment un champ de bits u64. L’accès effectif combine @everyone, les rôles attribués et les surcharges des salons. Administrateur contourne les vérifications ordinaires ; le propriétaire contourne également la hiérarchie. Un modérateur ne peut ni créer, ni modifier, ni attribuer un rôle égal ou supérieur à son rôle le plus élevé.

Valeurs canoniques des permissions

BitConstanteSignificationValeur décimale
0ADMINISTRATORAdministrateur1
1VIEW_AUDIT_LOGVoir le journal d’audit2
2MANAGE_GUILDGérer la communauté4
3MANAGE_ROLESGérer les rôles8
4MANAGE_CHANNELSGérer les salons16
5KICK_MEMBERSExpulser des membres32
6BAN_MEMBERSBannir des membres64
7CREATE_INVITESCréer des invitations128
8CHANGE_NICKNAMEModifier son pseudo256
9MANAGE_NICKNAMESGérer les pseudos512
10MANAGE_EMOJISGérer les emojis1024
11MANAGE_WEBHOOKSGérer les webhooks2048
12VIEW_GUILD_INSIGHTSVoir les statistiques4096
13MODERATE_MEMBERSModérer les membres8192
14PROMOTE_TO_UNIVERSEPromouvoir dans Universe16384
15VOTE_IN_POLLSVoter dans les sondages32768
20VIEW_CHANNELVoir les salons1048576
21SEND_MESSAGESEnvoyer des messages2097152
22SEND_TTS_MESSAGESEnvoyer des messages TTS4194304
23MANAGE_MESSAGESGérer les messages8388608
24EMBED_LINKSIntégrer des liens16777216
25ATTACH_FILESJoindre des fichiers33554432
26READ_MESSAGE_HISTORYLire l’historique67108864
27MENTION_EVERYONEMentionner tout le monde134217728
28USE_EXTERNAL_EMOJISUtiliser des emojis externes268435456
29ADD_REACTIONSAjouter des réactions536870912
30USE_APPLICATION_COMMANDSUtiliser les commandes1073741824
31MANAGE_THREADSGérer les fils2147483648
32CREATE_PUBLIC_THREADSCréer des fils publics4294967296
33CREATE_PRIVATE_THREADSCréer des fils privés8589934592
34SEND_MESSAGES_IN_THREADSÉcrire dans les fils17179869184
40CONNECTSe connecter1099511627776
41SPEAKParler2199023255552
42MUTE_MEMBERSRendre muet4398046511104
43DEAFEN_MEMBERSRendre sourd8796093022208
44MOVE_MEMBERSDéplacer des membres17592186044416
45USE_VOICE_ACTIVITYUtiliser l’activité vocale35184372088832
46PRIORITY_SPEAKEROrateur prioritaire70368744177664
47STREAMDiffuser140737488355328
48START_EMBEDDED_ACTIVITIESLancer des activités281474976710656
50USE_DRIVEUtiliser Drive1125899906842624
51MANAGE_DRIVEGérer Drive2251799813685248

Calculer les valeurs correctement en JavaScript

Les opérateurs bit à bit sur les number JavaScript tronquent à 32 bits. Utilisez BigInt pour tous les calculs, puis sérialisez le résultat sous forme de chaîne décimale dans le JSON et les invitations.

typescript
const VIEW_CHANNEL = 1n << 20n
const SEND_MESSAGES = 1n << 21n
const READ_MESSAGE_HISTORY = 1n << 26n

const permissions = VIEW_CHANNEL | SEND_MESSAGES | READ_MESSAGE_HISTORY
console.log(permissions.toString()) // 70254592

Checklist du moindre privilège

  • Ne pas demander Administrateur par facilité
  • Séparer les capacités de lecture, publication et modération
  • Expliquer les permissions sensibles sur l’écran de consentement
  • Une réinstallation met à jour le rôle géré sans dupliquer le bot
  • L’installateur ne peut pas accorder une permission qu’il ne possède pas