command() déclare une commande slash, depuis n’importe quel fichier de src/ ; son name est ce que les gens tapent après le /. Elle prend un objet, CommandConfig, et type run d’après lui. Avec un type, elle déclare à la place une commande de menu, utilisée d’un clic droit sur un message ou une personne.
src/commands/ping.ts
Comment écrire une commande, ses options, ses réponses et ses traductions est dans le guide, et les commandes de menu dans leur propre page. Cette page liste ce qui existe.
command()
src/.
Une commande slash : name est ce que les gens tapent après le / ('mod ban' pour /mod ban). Une commande de menu, avec type : utilisée d’un clic droit sur un message ('message') ou sur une personne ('user'), name étant ce qu’affiche le menu.
Options, Where et Type sont déduits de ce que vous passez : vous ne les écrivez jamais.
CommandDeclaration
command() : une déclaration que le framework trouve dans les exports d’un fichier. Elle garde les options et l’endroit que le fichier a déclarés.
CommandConfig
Ce qu’un fichier de commande donne àcommand() : ce qu’est la commande et ce qu’elle fait.
Ce que les gens tapent après le
/ : 'ping' est /ping. Une sous-commande s’écrit avec ses parents : 'mod ban' est /mod ban, 'mod roles add' est /mod roles add.Ce que fait la commande, affiché sous son nom (1 à 100 caractères). Ici, avec
locales pour ses traductions ; ou laissée de côté, et chaque texte de la commande (description, options, leurs choix, traductions) vient des fichiers de langue du projet. L’un ou l’autre.Ce qu’il faut faire quand quelqu’un utilise la commande.
La commande dans d’autres langues : Discord montre à chaque personne les noms et descriptions de sa langue. Votre code reçoit toujours les noms déclarés ci-dessus, quelle que soit la langue.Documentation de Discord
Les permissions dont un membre a besoin pour utiliser la commande. Les administrateurs d’un serveur peuvent changer qui la voit dans les réglages du serveur.
Où la commande peut être utilisée :
'guild' (sur les serveurs, par défaut), 'dm' (en messages privés avec le bot) ou 'both'. Ce que reçoit run suit.Combien de temps attendre avant que la commande puisse être utilisée à nouveau :
'10s' pour chaque personne, ou { user, channel, guild } pour chaque endroit. Quelqu’un qui l’utilise trop tôt reçoit une réponse privée qui dit quand il pourra.Des suggestions qui viennent de votre bot pendant que la personne tape, pour les options nommées ici (une option
string, integer ou number sans choices) : chaque fonction reçoit ce qu’elle a tapé et renvoie les suggestions. La personne peut quand même taper autre chose.Omis pour une commande slash.
'message' ou 'user' en fait une commande de menu, utilisée d’un clic droit sur un message ou une personne.CommandName
- et _, 32 caractères au plus ('ping'). Une sous-commande s’écrit avec ses parents, séparés par des espaces : 'mod ban' est /mod ban, 'mod roles add' est /mod roles add (Discord n’autorise rien de plus profond).
CommandWhere
'guild'), en messages privés avec le bot ('dm'), ou les deux.
Documentation de Discord
Cooldown
user pour chaque personne, channel pour chaque salon, guild pour chaque serveur (pas pour une commande de messages privés). Quelqu’un qui l’utilise trop tôt reçoit une réponse privée qui dit quand il pourra, et run ne tourne pas.
Duration
s, m, h ou d, comme '30s', '10m', '2h', '1d'. Plusieurs parties s’additionnent : '1h30m'.
Les options
CommandOptions
- et de _, 32 caractères au plus.
CommandOption
La sorte d’option :
'string', 'integer', 'number', 'boolean', 'user', 'role', 'channel', 'mentionable' ou 'attachment'.À quoi sert l’option, affiché sous son nom (1 à 100 caractères). Ici quand la commande a sa
description ici ; sinon dans le fichier de la langue par défaut du projet.StringOption
Un texte que l’utilisateur tape, ou choisit parmi deschoices.
Les seules valeurs que l’utilisateur peut choisir (25 au plus) : une liste, ou un objet dont les clés sont ce que voit l’utilisateur et les valeurs ce que reçoit votre code.
NumberOption
Un nombre entier (integer) ou n’importe quel nombre (number).
Les seules valeurs que l’utilisateur peut choisir (25 au plus) : une liste, ou un objet dont les clés sont ce que voit l’utilisateur et les valeurs ce que reçoit votre code.
'integer', min, max et les choix doivent être des nombres entiers.
ChannelOption
Un salon que l’utilisateur choisit.Les sortes de salons qui peuvent être choisies. Par défaut, toutes. Les valeurs sont celles de
ChannelType.SimpleOption
Vrai ou faux, un utilisateur, un rôle, un utilisateur ou un rôle, ou un fichier.La sorte d’option : ce que l’utilisateur choisit.
OptionValuesOf
undefined. C’est le type de options dans run.
Avec
choices, la valeur est l’union des choix : 'red' | 'green' pour choices: ['red', 'green'], 1 | 2 pour choices: { Small: 1, Large: 2 }.
Autocomplétion
CommandAutocomplete
autocomplete d’une commande : une fonction par option dont les suggestions viennent de votre bot pendant que la personne tape, par le nom de l’option. Seule une option string, integer ou number sans choices peut en avoir une. La fonction renvoie les suggestions (25 au plus, Discord les affiche dans cet ordre), ou une promesse de celles-ci : Discord attend 3 secondes. La personne peut quand même taper autre chose.
Value est string pour une option string, number | undefined pour une option integer ou number dans le contexte, et string ou number dans les suggestions. Quand aucune option ne peut avoir de suggestions, aucune clé n’est acceptée, et l’éditeur dit pourquoi.
Documentation de Discord
AutocompleteContext
autocomplete, chaque fois que la personne tape dans son option. Rien ne peut y être répondu : les suggestions sont ce que renvoie la fonction.
Ce que la personne a tapé jusque-là dans l’option : un texte, peut-être vide, pour une option
string ; pour une option integer ou number, un nombre, ou undefined tant que ce qu’elle a tapé n’en est pas encore un.Les textes du projet dans la langue de la personne, quand le projet a une langue. Voir
Translator.where, comme CommandContext sans son interaction : sur un serveur guild, member et channel (CommandInGuild) ; en messages privés seulement channel (CommandInDm) ; avec 'both', if (guild) dit lequel c’est (CommandInPrivate).
OptionsSoFar
user, role, channel, mentionable ou attachment est son identifiant.
Suggestion
{ name, value } pour afficher un texte (1 à 100 caractères) et recevoir une autre valeur. La valeur est un texte (100 caractères au plus) pour une option string, un nombre pour une option integer ou number.
Ce que reçoit run
CommandContext
run d’une commande. Il suit where : sur un serveur, le serveur, le membre et le salon sont là ; en messages privés, ils n’existent pas ; dans les deux, if (guild) dit lequel c’est, pour tout à la fois.
Quoi que dise where, il a :
Les textes des fichiers de langue, dans la bonne langue. Seulement quand le projet a une langue : voir
TranslationContext.where :
CommandInGuild
Ce que reçoit une commande utilisée sur un serveur à propos de l’endroit où elle a été utilisée.CommandInDm
Ce que reçoit une commande utilisée seulement en messages privés : pas de serveur.CommandInPrivate
Ce que reçoit une commande qui fonctionne aux deux endroits quand elle est utilisée dans un message privé :guild est null, et le vérifier dit le reste.
Les interactions elles-mêmes sont décrites dans Interaction.
Traductions
CommandLocales
Locale : fr, de, es-ES…
CommandTranslation
La traduction d’une commande dans une langue. Tout est facultatif : ce qui n’est pas traduit est affiché tel que déclaré.La traduction de chaque option, par le nom déclaré dans
options.OptionTranslation
La traduction d’une option. Tout est facultatif.Comment s’appelle chaque choix dans cette langue. Les clés sont les choix tels que déclarés : les valeurs d’une liste, ou les clés d’un objet. Chaque valeur fait de 1 à 100 caractères.
Commandes de menu
src/commands/quote.ts
MenuType
'message') ou une personne ('user').
Documentation de Discord
MenuConfig
command() pour une commande de menu : une commande utilisée sur un message ou une personne, depuis le menu d’un clic droit. Elle n’a ni description ni options : ce qu’elle reçoit est ce sur quoi elle a été utilisée.
Ce sur quoi la commande s’utilise :
'message' (un clic droit sur un message) ou 'user' (un clic droit sur une personne).Ce qu’affiche le menu (1 à 32 caractères) : les majuscules et les espaces sont permis, comme
'Signaler le message'.Ce qu’il faut faire quand quelqu’un utilise la commande.
Le nom dans d’autres langues : Discord montre à chaque personne le nom de sa langue.Documentation de Discord
Les permissions qu’un membre doit avoir pour utiliser la commande. Les administrateurs du serveur peuvent changer qui la voit dans les paramètres du serveur.
Où la commande peut être utilisée :
'guild' (sur les serveurs, par défaut), 'dm' (en messages privés avec le bot) ou 'both'. Ce que reçoit run en dépend.Combien de temps attendre avant de pouvoir réutiliser la commande :
'10s' pour chaque personne, ou { user, channel, guild } pour chaque endroit.MenuDeclaration
command() pour une commande de menu.
MenuContext
run d’une commande de menu : ce sur quoi elle a été utilisée (message, ou target et targetMember), qui l’a utilisée, et l’endroit, qui suit where comme celui d’une commande slash (CommandInGuild, CommandInDm, CommandInPrivate).
Avec
type: 'message' : le message sur lequel le menu a été utilisé. Un GuildMessage sur un serveur, un PrivateMessage en message privé pour une commande where: 'both', un DmMessage avec where: 'dm'.Avec
type: 'user', sur un serveur : cette personne en tant que membre du serveur, ou null quand elle n’y est pas (ou plus). null en message privé ; absent avec where: 'dm'.Les textes du projet dans la langue de la personne, quand le projet a une langue. Voir
Translator.MenuLocales
MenuTranslation
La traduction d’une commande de menu dans une langue : son nom.Les limites
Ce que déclare un fichier est vérifié à son chargement, par rapport aux limites de Discord, avec un message qui dit quoi écrire :
Documentation de Discord