Passer au contenu principal
Les options sont ce que les gens remplissent après le nom d’une commande. Déclarez-les sous forme d’objet, et run reçoit leurs valeurs déjà typées : vous n’écrivez jamais un type.
src/commands/mod/ban.ts
C’est tout : Discord demande target, reason et days dans cet ordre, et votre éditeur sait que options.target est un User et que options.reason peut manquer.
Chaque champ de chaque sorte d’option est dans la référence.

Déclarer une option

La clé est le nom de l’option, la valeur dit ce qu’elle est. Chaque option a un type et une description (de 1 à 100 caractères, affichée sous son nom) : Les noms suivent les règles de Discord : lettres minuscules, chiffres, - et _, 32 caractères au plus. Une commande a 25 options au plus.

Obligatoire ou facultative

Une option est facultative sauf si elle dit required: true. Dans run, une option obligatoire est toujours là ; une facultative peut être undefined, et votre éditeur vous le rappelle :
src/commands/greet.ts
Discord veut les options obligatoires en premier. Vous pouvez les déclarer dans n’importe quel ordre : ChapterJS met les obligatoires en premier pour vous, et garde l’ordre que vous avez écrit pour le reste.

Les choix

Avec choices, la personne choisit dans une liste au lieu de taper, et la valeur est typée comme l’un des choix. Une option string, integer ou number peut avoir entre 1 et 25 choix :
src/commands/color.ts
Les choix d’une option string sont des textes, ceux d’une option integer ou number sont des nombres ; ce qui est affiché fait de 1 à 100 caractères. Le même choix ne peut pas apparaître deux fois.

Autocomplétion

Quand les valeurs ne sont pas connues à l’avance, ou changent (une chanson, un joueur, un ticket), autocomplete les suggère pendant que la personne tape : Discord interroge votre bot toutes les quelques frappes, et affiche ce que renvoie votre fonction sous l’option. La personne peut quand même taper autre chose.
src/commands/play.ts
autocomplete a une fonction par option, par son nom, pour une option string, integer ou number sans choices. Elle reçoit : Elle renvoie les suggestions (ou une promesse de celles-ci) : une valeur, affichée telle quelle, ou { name, value } pour afficher un texte et recevoir une autre valeur. Une option string suggère des textes, une option integer ou number des nombres. Discord en affiche 25 au plus, dans l’ordre où vous les renvoyez, et attend 3 secondes : répondez vite, vos meilleures correspondances d’abord.
Une suggestion est une aide, pas une limite : Discord envoie à votre run ce que la personne a tapé, choisi dans la liste ou non. Vérifiez la valeur, comme dans l’exemple.
Ce que renvoie la fonction est vérifié à l’envoi. Trop de suggestions sont coupées à 25, et un nom de plus de 100 caractères est raccourci, dit une fois avec ⚠. Ce qui ne peut pas être corrigé est une erreur, et rien n’est suggéré :

Limiter ce qui est tapé

Un texte peut recevoir une longueur, un nombre un intervalle : Discord refuse ce qui est en dehors avant même que la commande n’atteigne votre bot. Pour une option integer, min, max et les choix sont des nombres entiers.

Seulement certaines sortes de salons

channelTypes dit quelles sortes de salons peuvent être choisies. Par défaut, toutes :
src/commands/announce.ts
Les valeurs sont celles de ChannelType. Ce que reçoit run est toujours un Channel : vérifiez sa sorte avec isTextBased() ou isVoice() avant d’utiliser ce que seule cette sorte possède.

Ce qui est vérifié

Tout ce que déclare une option est vérifié au chargement du fichier, par rapport aux limites de Discord. Une erreur est expliquée dans votre terminal avant que Discord ne la refuse, avec le fichier devant :
Votre éditeur souligne la plupart de ces erreurs avant même que vous n’enregistriez : les types de command() n’acceptent que ce qui existe.

Répondre

Répondre, différer, modifier, envoyer une suite.

Traductions

Options et choix dans la langue de chaque personne.