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
| Bit | Constante | Signification | Valeur décimale |
|---|---|---|---|
| 0 | ADMINISTRATOR | Administrateur | 1 |
| 1 | VIEW_AUDIT_LOG | Voir le journal d’audit | 2 |
| 2 | MANAGE_GUILD | Gérer la communauté | 4 |
| 3 | MANAGE_ROLES | Gérer les rôles | 8 |
| 4 | MANAGE_CHANNELS | Gérer les salons | 16 |
| 5 | KICK_MEMBERS | Expulser des membres | 32 |
| 6 | BAN_MEMBERS | Bannir des membres | 64 |
| 7 | CREATE_INVITES | Créer des invitations | 128 |
| 8 | CHANGE_NICKNAME | Modifier son pseudo | 256 |
| 9 | MANAGE_NICKNAMES | Gérer les pseudos | 512 |
| 10 | MANAGE_EMOJIS | Gérer les emojis | 1024 |
| 11 | MANAGE_WEBHOOKS | Gérer les webhooks | 2048 |
| 12 | VIEW_GUILD_INSIGHTS | Voir les statistiques | 4096 |
| 13 | MODERATE_MEMBERS | Modérer les membres | 8192 |
| 14 | PROMOTE_TO_UNIVERSE | Promouvoir dans Universe | 16384 |
| 15 | VOTE_IN_POLLS | Voter dans les sondages | 32768 |
| 20 | VIEW_CHANNEL | Voir les salons | 1048576 |
| 21 | SEND_MESSAGES | Envoyer des messages | 2097152 |
| 22 | SEND_TTS_MESSAGES | Envoyer des messages TTS | 4194304 |
| 23 | MANAGE_MESSAGES | Gérer les messages | 8388608 |
| 24 | EMBED_LINKS | Intégrer des liens | 16777216 |
| 25 | ATTACH_FILES | Joindre des fichiers | 33554432 |
| 26 | READ_MESSAGE_HISTORY | Lire l’historique | 67108864 |
| 27 | MENTION_EVERYONE | Mentionner tout le monde | 134217728 |
| 28 | USE_EXTERNAL_EMOJIS | Utiliser des emojis externes | 268435456 |
| 29 | ADD_REACTIONS | Ajouter des réactions | 536870912 |
| 30 | USE_APPLICATION_COMMANDS | Utiliser les commandes | 1073741824 |
| 31 | MANAGE_THREADS | Gérer les fils | 2147483648 |
| 32 | CREATE_PUBLIC_THREADS | Créer des fils publics | 4294967296 |
| 33 | CREATE_PRIVATE_THREADS | Créer des fils privés | 8589934592 |
| 34 | SEND_MESSAGES_IN_THREADS | Écrire dans les fils | 17179869184 |
| 40 | CONNECT | Se connecter | 1099511627776 |
| 41 | SPEAK | Parler | 2199023255552 |
| 42 | MUTE_MEMBERS | Rendre muet | 4398046511104 |
| 43 | DEAFEN_MEMBERS | Rendre sourd | 8796093022208 |
| 44 | MOVE_MEMBERS | Déplacer des membres | 17592186044416 |
| 45 | USE_VOICE_ACTIVITY | Utiliser l’activité vocale | 35184372088832 |
| 46 | PRIORITY_SPEAKER | Orateur prioritaire | 70368744177664 |
| 47 | STREAM | Diffuser | 140737488355328 |
| 48 | START_EMBEDDED_ACTIVITIES | Lancer des activités | 281474976710656 |
| 50 | USE_DRIVE | Utiliser Drive | 1125899906842624 |
| 51 | MANAGE_DRIVE | Gérer Drive | 2251799813685248 |
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()) // 70254592Checklist 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