Passer au contenu principal
ChapterJS donne à votre code des structures : un serveur, un membre, un salon, un message… Chacune a des propriétés à lire et des méthodes pour agir. Tout est typé, donc votre éditeur complète les noms et souligne les erreurs avant que le bot ne tourne. Vous ne créez jamais une structure : vos commandes, vos événements et vos composants les reçoivent.
Cet onglet liste tout. Comment écrire un bot avec est dans le guide, en commençant par le démarrage rapide.

Les structures

Guild

Un serveur : ses membres, rôles, salons, bannissements.

GuildMember

Un utilisateur dans un serveur : surnom, rôles, permissions, modération.

User

Un compte Discord, le même dans chaque serveur.

Role

Un rôle d’un serveur : permissions, position, membres.

Salons

Salons textuels, vocaux, catégories, forums, fils et salons privés.

Message

Un message : répondre, modifier, réagir, épingler.

Interaction

Quelqu’un a utilisé une commande, un bouton, un menu ou un formulaire, et attend une réponse.

GuildEmoji

Un emoji personnalisé d’un serveur.

Invite

Une invitation vers un serveur.

Webhook

Un moyen de publier dans un salon sous n’importe quel nom.
Ce avec quoi s’écrivent vos fichiers a ses propres pages : command(), event() et chaque événement, button(), select(), modal(), embed(), la mise en page d’un message et task(). Les types partagés ont chacun une page : options des messages, options, données, permissions, énumérations, helpers et erreurs.

Trois règles

1

Une propriété ne coûte jamais rien

guild.name, member.roles, guild.channels… lisent ce dont le bot se souvient. Elles sont instantanées et n’envoient jamais de requête à Discord.
2

Une méthode fetch demande à Discord

Les méthodes qui commencent par fetch renvoient une promesse. Quand elles récupèrent une seule chose par son identifiant, elles regardent d’abord ce dont le bot se souvient et ne demandent à Discord que si elle n’y est pas. Passez { force: true } pour demander à Discord quand même.
3

Les autres méthodes agissent

member.ban(), channel.send(), message.delete()… font quelque chose sur Discord et renvoient une promesse. Mettez toujours await devant.

Les noms sont en camelCase

Discord nomme ses champs comme rate_limit_per_user. Dans ChapterJS, vous lisez et écrivez toujours rateLimitPerUser : le framework traduit dans les deux sens, à l’intérieur des embeds et des options aussi.

Les listes sont des Maps

guild.members, guild.roles, guild.channels, channel.messages… sont des Map JavaScript que vous pouvez seulement lire, avec l’identifiant comme clé :
Ce que contient une Map est ce dont le bot se souvient, ce qui n’est pas toujours tout : voir Mémoire.

Les identifiants

Un identifiant Discord (un Snowflake) est un texte fait de chiffres, comme '175928847299117063'. Ne le stockez jamais sous forme de nombre : il est trop grand et perdrait en précision. Partout où une méthode prend un utilisateur, un rôle, un salon ou un message, vous pouvez passer son identifiant ou la structure elle-même.

La raison

Les actions que les modérateurs peuvent voir dans le journal d’audit du serveur prennent une reason, qui y est affichée :

Les limites sont vérifiées pour vous

Ce que vous passez est vérifié avant d’être envoyé : un message trop long, une taille d’image qui n’existe pas ou une exclusion de plus de 28 jours lève une erreur qui dit quelle est la limite. Les limites de débit de Discord sont gérées par le framework : une requête attend son tour. Quand Discord refuse une action (une permission manquante, quelque chose qui n’existe plus…), la méthode lève une erreur : voir Erreurs.

Afficher dans la console

console.log(guild) affiche le nom de la classe et les données de la structure avec des noms en camelCase. toJSON() renvoie ces données sous forme d’objet simple. Aucun des deux n’affiche de secret : un webhook laisse son token de côté.