Des permissions sur les émojis ?

Zallom

Zallom

Développeur

Depuis les débuts de Discord, les émojis Twitch de certains streamers sont disponibles sur l'application pour leurs subs uniquement. Tu te doutes bien que cette restriction ne se base pas sur les connexions des utilisateurs, mais bel et bien sur le rôle de sub qui leur est attribué sur le serveur du streamer ...

Comment ça fonctionne ?#

En réalité, ce n'est qu'une simple liste portant la clé roles dans l'objet Emoji que Discord stocke sur ses serveurs. Pour le moment, ces restrictions ne sont pas modifiables via l'interface utilisateur, seule une requête API via un bot permet de modifier cette valeur.

Historiquement, cette fonction a été créée pour gérer les émojis Twitch et n'était pas modifiable même par requête API. Par la suite celle-ci a été rendue publique.

Comment faire ?#

note

Si tu n'as pas encore de bot, tu peux en créer un sur le Portail des Développeurs.

Attention

Assure-toi que ton bot est sur le serveur où tu veux appliquer des restrictions et qu'il y possède la permission Gérer les emojis et stickers (MANAGE_EMOJIS_AND_STICKERS).

Voici un tutoriel détaillé sur la façon de s'y prendre en JavaScript avec le module discord.js.

Attention

Il te faut impérativement posséder Node.JS v16.6.0 (ou plus récent) sur ta machine.

Pour plus d'informations, je t'invite à consulter la documentation de discord.js.

Tout d'abord, crée un dossier et ouvre une invite de commande à l'intérieur.

$ cd ton-dossier

Installe ensuite discord.js sur ton projet.

$ npm install discord.js

Puis, crée un fichier index.js contenant ceci.

index.js
/**
* Importe le Client et les Intents du module discord.js
*/
const { Client, Intents } = require("discord.js");
/**
* Initialisation du Client Websocket.
* Intents.ALL correspond au bitfield de la totalité des Intents existantes.
* Y enlever 256 permet d'utiliser toutes les Intents non privilégiés.
* (Si votre bot les possède vous pouvez enlever "-256")
*/
const client = new Client({
intents: Intents.ALL - 256
});
/**
* Attend que la connexion au Websocket soit établie.
*/
client.once("ready", () => {
/**
* Récupère le serveur.
* guildID correspond à l'ID du serveur où se trouve l'émoji.
*/
const guild = client.guilds.cache.get("guildID");
/**
* Récupère l'émoji
* emojiID correspond à l'ID de l'émoji en question.
*/
const emoji = guild.emojis.cache.get("emojiID");
/**
* Ajoute le rôle à la liste des rôles ayant accès à l'émoji.
* roleID correspond à l'ID du rôle qui doit avoir accès à l'émoji.
*/
emoji.roles.add("roleID");
});
/**
* Authentification au Websocket de Discord.
* token correspond au jeton d'authentification du bot.
* Celui-ci est disponible sur le portail des développeurs.
*/
client.login("token");

emoji.roles correspond à la classe GuildEmojiRoleManager de discord.js.

Enfin, exécute le fichier index.js.

$ node index.js

À quoi ça sert ?#

Nous y voyons plusieurs cas d'utilisation pour ton serveur :

  • Créer des émojis restreints à des boosters, des donateurs ou des rôles de niveaux pour récompenser tes membres de leur contribution.
  • Empêcher les nouveaux membres de ton serveur de télécharger tes émojis et de les réutiliser par la suite. (Sur Discord, tes émojis t'appartiennent, si quelqu'un te les vole, il peut être sanctionné suite à une requête DMCA).

Si tu souhaites être au courant de la sortie de nouvelles fonctionnalités, je t'invite à rejoindre notre serveur Discord et à t'abonner à nos annonces : https://discord.gg/fr.