Passer au contenu principal
Quand quelqu’un ajoute une réaction à un message, les événements reactionAdd tournent. Ici, une réaction donne un rôle :
src/lib/reaction-roles.ts
src/events/roles.ts
C’est tout. Comme les événements sur les messages, un fichier de réactions ne tourne par défaut que pour les personnes, sur les serveurs : les réactions des bots, le vôtre compris, sont laissées de côté, donc guild, et le channel et le member de la réaction, sont toujours là. Votre fonction reçoit la reaction et le serveur, guild. reaction.emoji est un ReactionEmoji : name est le caractère d’un emoji standard ('👍') ou le nom d’un emoji personnalisé, qui a aussi un id.
Les événements de cette page, avec tout ce qu’ils donnent, sont dans la référence.

Le message lui-même

Une réaction arrive avec l’identifiant de son message, pas avec le message : votre bot ne se souvient d’aucun message, donc message est null. Pour lire ou modifier le message, demandez-le avec fetchMessage() :
src/events/star.ts
Ne le demandez que quand vous en avez besoin, après avoir vérifié l’emoji : une requête par réaction, cela s’accumule vite.

Réactions retirées

reactionRemove tourne quand quelqu’un retire sa réaction. Discord n’envoie pas le membre avec, donc reaction.member n’est là que quand le bot se souvient de cette personne : demandez-le avec fetchMember().
src/events/roles.ts
reaction.user est toujours là : quand Discord ne donne que l’identifiant de quelqu’un que le bot ne connaît pas, il le demande une fois avant que votre fichier tourne. reactionClear tourne quand toutes les réactions d’un message sont retirées d’un coup, ou toutes celles d’un emoji : il donne reactions, dont l’emoji vaut null dans le premier cas et cet emoji dans le second.

Options

Les deux options des événements sur les messages fonctionnent de la même façon ici :
  • where: 'dm' ou 'both' pour écouter aussi en messages privés. Avec 'both', guild vaut null pour une réaction en privé, et un seul if (guild) restreint tout.
  • bots: true (pour reactionAdd et reactionRemove) pour recevoir aussi les réactions des bots, le vôtre compris : un fichier qui réagit aux réactions pourrait sinon répondre aux siennes indéfiniment.
src/events/anywhere.ts

Sondages

pollVoteAdd et pollVoteRemove tournent quand quelqu’un vote dans un sondage, ou retire son vote. Ils donnent le vote et le serveur ; vote.answerId dit pour quelle réponse : Discord les numérote dans l’ordre du sondage, 1 pour la première.
src/events/log.ts
Ils prennent where aussi. Un sondage s’envoie avec un message : voir Envoyer des messages.

Saisie

typingStart tourne quand quelqu’un commence à écrire dans un salon. Il donne typing et le serveur ; typing.startedAt dit quand.
src/events/log.ts
Il prend where. Discord l’envoie souvent : gardez court ce que fait le fichier.

Intents

Chacun de ces événements a son propre intent, pour les serveurs et pour les messages privés, et ChapterJS ne demande que ceux dont vos fichiers ont besoin : un fichier de réactions sans where demande les réactions des serveurs, rien d’autre. Aucun n’est privilégié.

Vocal

Qui rejoint, quitte ou change de salon vocal.

Référence des événements

Chaque champ de chaque événement.