Passer au contenu principal
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()

Déclare une commande. Exportez le résultat depuis n’importe quel fichier de 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

Ce que renvoie 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<Options, Where>
Ce que le fichier a donné à command(), pas encore vérifié.

CommandConfig

Ce qu’un fichier de commande donne à command() : ce qu’est la commande et ce qu’elle fait.
CommandName
requis
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.
string
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.
(context: CommandContext<Options, Where>) => unknown
requis
Ce qu’il faut faire quand quelqu’un utilise la commande.
CommandOptions
Ce que l’utilisateur peut remplir (25 options au plus).
CommandLocales<Options>
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
readonly PermissionName[]
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.
CommandWhere
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.
boolean
N’afficher la commande que dans les salons soumis à une limite d’âge.
boolean
Rendre les réponses de la commande visibles seulement par qui l’a utilisée.
Cooldown
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.
CommandAutocomplete<Options, Where>
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.
undefined
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

Le nom d’une commande slash : lettres minuscules, chiffres, - 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

Où une commande peut être utilisée : sur les serveurs ('guild'), en messages privés avec le bot ('dm'), ou les deux. Documentation de Discord

Cooldown

Combien de temps attendre avant que la commande puisse être utilisée à nouveau : une durée, pour chaque personne ; ou une par endroit, chacune facultative : 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
Chaque personne attend autant entre deux utilisations, où qu’elle soit.
Duration
Chaque salon attend autant, quel que soit qui l’a utilisée.
Duration
Chaque serveur attend autant, quel que soit qui l’a utilisée, et où.

Duration

Une durée, sous forme d’un nombre et d’une unité : s, m, h ou d, comme '30s', '10m', '2h', '1d'. Plusieurs parties s’additionnent : '1h30m'.

Les options

CommandOptions

Les options d’une commande, par nom. Un nom est fait de lettres minuscules, de chiffres, de - et de _, 32 caractères au plus.

CommandOption

Une option d’une commande. Chaque sorte a ces champs :
string
requis
La sorte d’option : 'string', 'integer', 'number', 'boolean', 'user', 'role', 'channel', 'mentionable' ou 'attachment'.
string
À 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.
boolean
Si l’utilisateur doit la remplir. Par défaut, elle est facultative.

StringOption

Un texte que l’utilisateur tape, ou choisit parmi des choices.
'string'
requis
La sorte d’option : un texte.
readonly string[] | Readonly<Record<string, string>>
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.
number
Le texte le plus court accepté, en caractères (0 à 6000).
number
Le texte le plus long accepté, en caractères (1 à 6000).

NumberOption

Un nombre entier (integer) ou n’importe quel nombre (number).
'integer' | 'number'
requis
La sorte d’option : un nombre entier, ou n’importe quel nombre.
readonly number[] | Readonly<Record<string, 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.
number
La plus petite valeur acceptée.
number
La plus grande valeur acceptée.
Pour une option 'integer', min, max et les choix doivent être des nombres entiers.

ChannelOption

Un salon que l’utilisateur choisit.
'channel'
requis
La sorte d’option : un salon.
readonly ChannelType[]
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.
'boolean' | 'user' | 'role' | 'mentionable' | 'attachment'
requis
La sorte d’option : ce que l’utilisateur choisit.

OptionValuesOf

Les valeurs des options, typées d’après leur déclaration : une option obligatoire est toujours là, une facultative peut être 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

L’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

Ce que reçoit une fonction d’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.
Value
requis
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.
OptionsSoFar<Options>
requis
Ce que la personne a rempli jusque-là, cette option comprise.
User
requis
Qui tape.
Locale
requis
La langue de la personne : suggérez dans celle-ci quand vous le pouvez.
Translator
Les textes du projet dans la langue de la personne, quand le projet a une langue. Voir Translator.
L’endroit suit 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

Les options telles que la personne les a remplies jusque-là, pendant qu’elle tape dans l’une d’elles : chaque option peut manquer, une option user, role, channel, mentionable ou attachment est son identifiant.

Suggestion

Une suggestion pour une option : une valeur, affichée telle quelle, ou { 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.
string
requis
Ce que la personne voit dans la liste (1 à 100 caractères).
Value
requis
Ce que reçoit votre run quand elle la choisit.

Ce que reçoit run

CommandContext

Ce que reçoit la fonction 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 :
OptionValuesOf<Options>
requis
Ce que l’utilisateur a rempli.
User
requis
Qui a utilisé la commande.
Translator
Les textes des fichiers de langue, dans la bonne langue. Seulement quand le projet a une langue : voir TranslationContext.
Et le reste suit where :

CommandInGuild

Ce que reçoit une commande utilisée sur un serveur à propos de l’endroit où elle a été utilisée.
GuildCommandInteraction
requis
L’utilisation de la commande : de quoi répondre.
Guild
requis
Le serveur où la commande a été utilisée.
GuildMember
requis
Qui a utilisé la commande, en tant que membre du serveur.
GuildTextBasedChannel
requis
Le salon où la commande a été utilisée.

CommandInDm

Ce que reçoit une commande utilisée seulement en messages privés : pas de serveur.
DmCommandInteraction
requis
L’utilisation de la commande : de quoi répondre.
DMChannel
requis
La conversation privée où la commande a été utilisée.

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.
PrivateCommandInteraction
requis
L’utilisation de la commande : de quoi répondre.
null
requis
Pas de serveur : la commande a été utilisée dans un message privé.
null
requis
Pas de membre : la personne est user.
DMChannel
requis
La conversation privée où la commande a été utilisée.
Les interactions elles-mêmes sont décrites dans Interaction.

Traductions

CommandLocales

Les traductions d’une commande, par langue. Les clés sont les valeurs de 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é.
string
Le nom de la commande dans cette langue (mêmes règles qu’un nom).
string
La description de la commande dans cette langue (1 à 100 caractères).
{ readonly [Name in keyof Options]?: OptionTranslation }
La traduction de chaque option, par le nom déclaré dans options.

OptionTranslation

La traduction d’une option. Tout est facultatif.
string
Le nom de l’option dans cette langue (mêmes règles qu’un nom).
string
La description de l’option dans cette langue (1 à 100 caractères).
{ readonly [Choice: string]?: string }
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
Ce sur quoi s’utilise une commande de menu, dans le menu que les gens ouvrent d’un clic droit (ou d’un appui long) : un message ('message') ou une personne ('user'). Documentation de Discord
Ce qu’un fichier donne à 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.
Type
requis
Ce sur quoi la commande s’utilise : 'message' (un clic droit sur un message) ou 'user' (un clic droit sur une personne).
string
requis
Ce qu’affiche le menu (1 à 32 caractères) : les majuscules et les espaces sont permis, comme 'Signaler le message'.
(context: MenuContext<Type, Where>) => unknown
requis
Ce qu’il faut faire quand quelqu’un utilise la commande.
MenuLocales
Le nom dans d’autres langues : Discord montre à chaque personne le nom de sa langue.Documentation de Discord
readonly PermissionName[]
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.
CommandWhere
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.
boolean
N’afficher la commande que dans les salons réservés aux adultes.
boolean
Rendre les réponses de la commande visibles seulement par qui l’a utilisée.
Cooldown
Combien de temps attendre avant de pouvoir réutiliser la commande : '10s' pour chaque personne, ou { user, channel, guild } pour chaque endroit.
never
Une commande de menu n’a pas de description : Discord n’affiche que son nom.
never
Une commande de menu n’a pas d’options : elle reçoit ce sur quoi elle a été utilisée.
never
Une commande de menu n’a pas d’options pour lesquelles suggérer des valeurs.
Ce que renvoie command() pour une commande de menu.
MenuConfig<Type, Where>
Ce que le fichier a donné à command(), pas encore vérifié.
Ce que reçoit la fonction 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).
User
requis
Qui a utilisé le menu.
GuildMessage | PrivateMessage | DmMessage
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'.
User
Avec type: 'user' : la personne sur laquelle le menu a été utilisé.
GuildMember | null
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'.
Translator
Les textes du projet dans la langue de la personne, quand le projet a une langue. Voir Translator.
Les traductions d’une commande de menu, par langue. La traduction d’une commande de menu dans une langue : son nom.
string
Le nom affiché dans le menu dans cette langue (1 à 32 caractères).

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