From 706713a8fbb7dc6724adcf2def5896855072f0e5 Mon Sep 17 00:00:00 2001 From: Mylloon Date: Tue, 17 Jan 2023 10:46:26 +0100 Subject: [PATCH] * chore: format * add: buttons and modals --- CONTRIBUTING.md | 208 +++++++++++++++++++++++++++++------------------- 1 file changed, 125 insertions(+), 83 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 68538c8..afc94ec 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,4 +1,5 @@ # Comment contribuer ? + Ce guide contient méthodes et conseils sur comment aider le projet. Lisez attentivement si vous êtes un nouveau contributeur. @@ -9,6 +10,7 @@ d'un [ticket](https://git.kennel.ml/ConfrerieDuKassoulait/Botanique/issues) ou une [Pull Request](https://git.kennel.ml/ConfrerieDuKassoulait/Botanique/pulls). ## Sommaire + - [Recevoir de l'aide](#recevoir-de-laide) - [Langues](#langues) - [Ajouter une langue](#ajouter-une-langue) @@ -16,15 +18,19 @@ une [Pull Request](https://git.kennel.ml/ConfrerieDuKassoulait/Botanique/pulls). - [Projet](#projet) - [Ajouter une commande](#ajouter-une-commande) - [Ajouter un évènement](#ajouter-un-évènement) +- [Modèles](#modèles) +- [Boutons](#boutons) - [Modifier du code](#modifier-du-code) - [Soumettre ses modifications](#soumettre-ses-modifications) - [Gestion du dépôt](#gestion-du-dépôt) ## Recevoir de l'aide + Si tu as besoin d'aide, tu peux poser ta question sur le [Discord](https://discord.gg/Z5ePxH4). ## Langues + La langue par défaut est définie dans [`src/utils/client.ts`](src/utils/client.ts) dans `client.config.default_lang`. @@ -33,95 +39,111 @@ traduction est incomplète. On part donc du postulat que la langue par défaut contient toujours toutes les chaînes de caractère dont le bot a besoin. La norme pour les nom dans les fichiers est la suivante : -- Chaîne de charactère des commandes : - `c` est utilisé pour `C`ommande. - - `c_NOM-COMMANDE_name` : Nom de la commande - - `c_NOM-COMMANDE_desc` : Description de la commande - - `c_NOM-COMMANDE_optX_name` : Nom de l'option X - - `c_NOM-COMMANDE_optX_desc` : Description de l'option X - - `c_NOM-COMMANDE_subX_name` : Nom de la sous-commande X - - `c_NOM-COMMANDE_subX_desc` : Description de la sous-commande X - - `c_NOM-COMMANDEX` : `X` le numéro de la chaîne de caractère - Évidemment ça peut s'additionner, - par exemple : `c_NOM-COMMANDE_subX_optX_desc`. -- Chaîne de charactère des évènements : - `e` est utilisé pour `E`vènements. - - `e_NOM-EVENEMENT_N` : `N` le nom de la chaîne de caractère -- Chaîne de charactère des utils : - `u` est utilisé pour `U`tilitaires. - - `u_NOM-FICHIER-UTILS_N` : `N` le nom de la chaîne de caractère +- Chaîne de charactère des commandes : + `c` est utilisé pour `C`ommande. + + - `c_NOM-COMMANDE_name` : Nom de la commande + - `c_NOM-COMMANDE_desc` : Description de la commande + - `c_NOM-COMMANDE_optX_name` : Nom de l'option X + - `c_NOM-COMMANDE_optX_desc` : Description de l'option X + - `c_NOM-COMMANDE_subX_name` : Nom de la sous-commande X + - `c_NOM-COMMANDE_subX_desc` : Description de la sous-commande X + - `c_NOM-COMMANDEX` : `X` le numéro de la chaîne de caractère + + Évidemment ça peut s'additionner, + par exemple : `c_NOM-COMMANDE_subX_optX_desc`. + +- Chaîne de charactère des évènements : + `e` est utilisé pour `E`vènements. + - `e_NOM-EVENEMENT_N` : `N` le nom de la chaîne de caractère +- Chaîne de charactère des utils : + `u` est utilisé pour `U`tilitaires. + - `u_NOM-FICHIER-UTILS_N` : `N` le nom de la chaîne de caractère ### Ajouter une langue + 1. Créer un nouveau fichier dans [src/locales/](./src/locales/), le fichier -doit être nommé `langue.json` avec `langue` suivant -[cette liste](https://discord.com/developers/docs/reference#locales). + doit être nommé `langue.json` avec `langue` suivant + [cette liste](https://discord.com/developers/docs/reference#locales). 2. Le contenu du fichier peut être copié du fichier de la langue par défaut, -[cf. au dessus](#langues). + [cf. au dessus](#langues). 3. Ce sont les valeurs des clés (le texte à gauche des `:`) qui doivent -être traduits. Merci par avance ! - > Ne vous forcez pas à tout traduire. Même une contribution avec - > une seule variable de modifiée compte ! + être traduits. Merci par avance ! + > Ne vous forcez pas à tout traduire. Même une contribution avec + > une seule variable de modifiée compte ! 4. Une fois terminée, [ouvrez une Pull Request](#soumettre-ses-modifications). ### Mettre à jour une langue + 1. Rechercher la langue dans le dossier [src/locales/](./src/locales/). 2. Modifier/Ajouter des traductions comme -[expliquer au dessus](#ajouter-une-langue) (à partir du `3.`). - > Pensez à vérifier si de nouvelles valeurs n'ont pas été ajouté dans - le fichier langue par défaut, [cf. au dessus](#langues). + [expliquer au dessus](#ajouter-une-langue) (à partir du `3.`). + > Pensez à vérifier si de nouvelles valeurs n'ont pas été ajouté dans + > le fichier langue par défaut, [cf. au dessus](#langues). ## Projet + Le code se trouve dans le dosier [src/](./src/). Dans ce dossier il y a : -- [commands/](./src/commands/) qui contient toutes les commandes, rangés par -catégories -- [events/](./src/events/) qui contient tous les évènements, rangés par -catégories -- [locales/](./src/locales/) qui contient tous les fichiers de langue -- [modules/](./src/modules/) qui contient les extensions utilisé, - par exemple, pour utiliser la fonction `capitalize()` d'un string, il faut - importer le fichier `string.ts` qui se trouve dans le dossier -- [utils/](./src/utils/) qui contient toutes les fonctions utilitaires, rangés -par fichiers + +- [commands/](./src/commands/) qui contient toutes les commandes, rangés par + catégories +- [events/](./src/events/) qui contient tous les évènements, rangés par + catégories +- [locales/](./src/locales/) qui contient tous les fichiers de langue +- [modules/](./src/modules/) qui contient les extensions utilisé, + par exemple, pour utiliser la fonction `capitalize()` d'un string, il faut + importer le fichier `string.ts` qui se trouve dans le dossier +- [utils/](./src/utils/) qui contient toutes les fonctions utilitaires, rangés + par fichiers Les dossiers [commands/](./src/commands/) et [events/](./src/events/) contiennent chaquin un fichier `loader.js` qui charge respectivement les commandes et les évènements dans le bot. ## Ajouter une commande + Pour ajouter une commande au bot, créez un fichier `nom-de-la-commande.ts` dans un sous dossier de [`src/commands/`](./src/commands/). Vous pouvez créer une nouvelle catégorie si votre commande n'entre dans aucune qui existe déjà. Le contenu du fichier doit commencer comme suit : + ```typescript -import { SlashCommandBuilder } from '@discordjs/builders'; -import { Client, ChatInputCommandInteraction } from 'discord.js'; -import { getLocale, getLocalizations } from '../../utils/locales'; -import { getFilename } from '../../utils/misc'; +import { SlashCommandBuilder } from "@discordjs/builders"; +import { Client, ChatInputCommandInteraction } from "discord.js"; +import { getLocale, getLocalizations } from "../../utils/locales"; +import { getFilename } from "../../utils/misc"; export default { - data: (client: Client) => { - const filename = getFilename(__filename); - return new SlashCommandBuilder() - .setName( - filename.toLowerCase()) - .setDescription(client.locales.get(client.config.default_lang) - ?.get(`c_${filename}_desc`) ?? '') - .setNameLocalizations( - getLocalizations(client, `c_${filename}_name`, true)) - .setDescriptionLocalizations( - getLocalizations(client, `c_${filename}_desc`) - ); - }, + data: (client: Client) => { + const filename = getFilename(__filename); + return new SlashCommandBuilder() + .setName(filename.toLowerCase()) + .setDescription( + client.locales + .get(client.config.default_lang) + ?.get(`c_${filename}_desc`) ?? "" + ) + .setNameLocalizations( + getLocalizations(client, `c_${filename}_name`, true) + ) + .setDescriptionLocalizations( + getLocalizations(client, `c_${filename}_desc`) + ); + }, - interaction: async (interaction: ChatInputCommandInteraction, client: Client) => { - const loc = getLocale(client, interaction.locale); + interaction: async ( + interaction: ChatInputCommandInteraction, + client: Client + ) => { + const loc = getLocale(client, interaction.locale); - /* Votre code ici */ - }, + /* Votre code ici */ + }, }; ``` + Ce template vous permet de commencé rapidement votre commande car il contient déjà tout ce qu'il faut pour le support des langues. Pensez bien à ne pas écrire directement vos chaînes de caractères ici mais bien dans @@ -129,18 +151,21 @@ les [fichiers de langues](./src/locales/), c'est à ça que la variable `loc` sert. Vous devez aussi ajouter **obligatoirement** : -- `"c_COMMANDE_name": "NOM"` au fichier de langue, avec `COMMANDE` le nom de -la commande et `NOM` le nom de votre commande. -- `"c_COMMANDE_desc": "DESCRIPTION"` au fichier de langue, avec `COMMANDE` -le nom de la commande et `DESCRIPTION` la description de votre commande. + +- `"c_COMMANDE_name": "NOM"` au fichier de langue, avec `COMMANDE` le nom de + la commande et `NOM` le nom de votre commande. +- `"c_COMMANDE_desc": "DESCRIPTION"` au fichier de langue, avec `COMMANDE` + le nom de la commande et `DESCRIPTION` la description de votre commande. ## Ajouter un évènement + Pour ajouter le support d'un évènement au bot, créez un fichier `nom-evenement.ts` dans un sous dossier de [`src/events/`](./src/events/). Vous pouvez créer une nouvelle catégorie si votre commande n'entre dans aucune qui existe déjà. Vous pouvez préciser que l'évènement ne sera déclenché qu'une seule fois avec + ```typescript export const once = true; ``` @@ -149,39 +174,55 @@ De préférence, merci de mettre un lien en commentaire vers la documentation de discord.js de l'évènement ([exemple ici pour l'évènement `ready`](./src/events/client/ready.ts#L3)) +## Modèles + +Les modèles sont gérés [en dehors séparément du reste](./src/modals/). + +## Boutons + +Les boutons sont gérés [en dehors séparément du reste](./src/buttons/) + +Chaque bouton à une implémentation séparée des autres, même si ils sont dans le +même message. + +Contrairement aux autres éléments, les boutons doivent se faire collecter via +la fonction [`collect`](./src/buttons/loader.ts#L46) juste après leur déclaration. + ## Modifier du code + Quand vous modifiez quelque chose, pensez à mettre-à-jour les langues. Si vous ne savez pas traduire dans une langue, ne vous forcez pas, supprimer simplement la traduction. -- [Créez un fork](https://git.kennel.ml/repo/fork/76) et poussez -vos modifications dans ce dernier. +- [Créez un fork](https://git.kennel.ml/repo/fork/76) et poussez + vos modifications dans ce dernier. Pour commencer, vous pouvez jeté un oeil aux [tickets facilement résolvable](https://git.kennel.ml/ConfrerieDuKassoulait/Botanique/issues?state=open&labels=82). -- De préférences, les fonctions, méthodes et variables seront écrites -en anglais, ainsi que les commits afin que chacun puisse contribuer. +- De préférences, les fonctions, méthodes et variables seront écrites + en anglais, ainsi que les commits afin que chacun puisse contribuer. ## Soumettre ses modifications + 1. Pensez à bien commenter votre code (en anglais) pour que n'importe qui -comprennent vos modifications. Vérifier bien dans tout les fichiers si ce que -vous avez modifié n'est pas référencer ailleurs (exemple : si vous modifier -une variable d'environnement, il faut penser à mettre à jour le -[`README`](./README.md#variables-denvironnements)). + comprennent vos modifications. Vérifier bien dans tout les fichiers si ce que + vous avez modifié n'est pas référencer ailleurs (exemple : si vous modifier + une variable d'environnement, il faut penser à mettre à jour le + [`README`](./README.md#variables-denvironnements)). 2. N'oubliez pas d'utiliser [les fichiers de langues](./src/locales/) pour vos -chaînes de caractère, [cf. cette partie](#langues) pour plus de précisions. + chaînes de caractère, [cf. cette partie](#langues) pour plus de précisions. 3. Veuillez tester vos modifications avant de les soumettre. **Attention**, ce -n'est pas parce que vos modifications fonctionnent avec `npm run debug` qu'elles -fonctionneront avec `npm run main`, ainsi que dans l'image Docker. + n'est pas parce que vos modifications fonctionnent avec `npm run debug` qu'elles + fonctionneront avec `npm run main`, ainsi que dans l'image Docker. 4. Lorsque vous vous sentez confiant dans vos modifications, ouvrez -une [Pull Request](https://git.kennel.ml/ConfrerieDuKassoulait/Botanique/pulls) -afin que votre code puisse être revu et fusionné. Vous pouvez suivre cette -[condition de nommage](https://gist.github.com/joshbuchea/6f47e86d2510bce28f8e7f42ae84c716#example), -ça aide à s'y retrouver plus rapidement. + une [Pull Request](https://git.kennel.ml/ConfrerieDuKassoulait/Botanique/pulls) + afin que votre code puisse être revu et fusionné. Vous pouvez suivre cette + [condition de nommage](https://gist.github.com/joshbuchea/6f47e86d2510bce28f8e7f42ae84c716#example), + ça aide à s'y retrouver plus rapidement. > **Explication** > @@ -192,10 +233,11 @@ afin que votre code puisse être revu et fusionné. Vous pouvez suivre cette > supprimé. ## Gestion du dépôt -- On ne push jamais directement sur la branche `main`. -- Quand on merge des modifications vers `main`, on fait un *squash*, -l'historique des modifications reste disponible dans -[le graph](https://git.kennel.ml/ConfrerieDuKassoulait/Botanique/graph). -- De préférences, suivre les indications de -[ce post](https://gist.github.com/revett/88ee5abf5a9a097b4c88) (c'est un peu la -même que dans le `4.` de [la partie précédente](#soumettre-ses-modifications)). + +- On ne push jamais directement sur la branche `main`. +- Quand on merge des modifications vers `main`, on fait un _squash_, + l'historique des modifications reste disponible dans + [le graph](https://git.kennel.ml/ConfrerieDuKassoulait/Botanique/graph). +- De préférences, suivre les indications de + [ce post](https://gist.github.com/revett/88ee5abf5a9a097b4c88) (c'est un peu la + même que dans le `4.` de [la partie précédente](#soumettre-ses-modifications)).