Passer au contenu principal
Dans la liste des membres, un bot a une pastille de couleur et parfois une ligne sous son nom : « Regarde over the server », par exemple. C’est sa présence. C’est un seul fichier, src/presence.ts, celui que le modèle vous a donné, et cette page est courte parce que le fichier l’est.

Le fichier

Le modèle affiche un texte libre, « Getting ready ». Remplacez le fichier :
src/presence.ts
Enregistrez-le pendant que le bot tourne, puis changez le name et enregistrez à nouveau :
Pas de reconnexion : le bot donne sa nouvelle présence à Discord immédiatement. Sans ce fichier, le bot est en ligne et n’affiche rien. Les deux champs sont facultatifs.

Le statut

'invisible' sert pour un bot qui travaille en arrière-plan et ne doit pas avoir l’air de quelqu’un à qui parler.

L’activité

type dit comment Discord la formule, name est le texte qui suit : Un usage courant est un indice : { type: 'playing', name: '/help' } dit aux gens par où commencer. C’est tout ce qu’un bot peut régler : Discord laisse une personne afficher bien plus (une chanson, un jeu avec des détails), mais un bot n’a qu’un type, un nom, et une URL pour un stream.

Chacune son tour

Une ligne, c’est peu de place. activities en donne plusieurs, affichées l’une après l’autre : chacune reste pendant son for (30 secondes quand vous l’omettez, 5 secondes au minimum), puis la suivante arrive, et après la dernière, la première revient. Remplacez le fichier :
src/presence.ts
Le second name est une fonction, pas un texte. Le bot l’exécute chaque fois que cette activité revient, et lui donne guilds, le nombre de serveurs où il est : la ligne suit votre bot à mesure qu’il grandit, sans toucher au fichier. Une fonction peut aussi être async et lire un store, et activities lui-même peut être une fonction qui donne toute la liste : le guide montre les deux. Pourquoi for et pas « changer chaque seconde » ? Discord accepte 5 changements de présence par 20 secondes d’un bot. En dessous de 5 secondes, des changements seraient perdus : ChapterJS le refuse au chargement du fichier.

Points d’attention

  • La présence est celle du bot, pas du serveur. Elle est la même dans chaque serveur où se trouve le bot. Raison de plus pour avoir une application de dev séparée : ce que vous essayez ici est affiché partout où est le bot.
  • Discord accepte 5 changements par 20 secondes. Quand vous enregistrez plus vite que cela, seule la dernière présence est envoyée, quand elle peut l’être.
  • Un fichier qui ne se charge pas est signalé avec ce qui ne va pas, et le bot garde la dernière présence qui fonctionnait. Supprimer le fichier remet le bot en ligne sans rien afficher.
  • La présence vient uniquement du fichier. Vos commandes ne la règlent jamais : elles changent les données que lisent ses fonctions (un store, par exemple), et le tour suivant l’affiche.
  • Une fonction qui lève une erreur est signalée une fois, avec sa ligne, et le bot garde le dernier texte qui fonctionnait.

Récapitulatif

  • presence({ status, activity }) se déclare une fois, dans src/presence.ts ; l’enregistrer s’applique immédiatement.
  • status est la pastille ; activity est la ligne sous le nom, avec un type et un name.
  • activities en affiche plusieurs tour à tour, chacune pendant son for ; un name peut être une fonction, exécutée chaque fois que son activité revient.
  • Une seule présence pour tout le bot, dans chaque serveur.

Les messages traduits

Répondre à chaque personne dans sa langue.

Guide : Présence

La même chose, en bref.