* chore: format
* add: buttons and modals
This commit is contained in:
parent
9cb94f5f0a
commit
706713a8fb
1 changed files with 125 additions and 83 deletions
|
@ -1,4 +1,5 @@
|
|||
# Comment contribuer ? <!-- omit in toc -->
|
||||
|
||||
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 <!-- omit in toc -->
|
||||
|
||||
- [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,8 +39,10 @@ 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
|
||||
|
@ -45,6 +53,7 @@ La norme pour les nom dans les fichiers est la suivante :
|
|||
|
||||
É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
|
||||
|
@ -53,6 +62,7 @@ La norme pour les nom dans les fichiers est la suivante :
|
|||
- `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).
|
||||
|
@ -65,14 +75,17 @@ doit être nommé `langue.json` avec `langue` suivant
|
|||
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).
|
||||
> 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
|
||||
|
@ -89,39 +102,48 @@ 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`) ?? '')
|
||||
.setName(filename.toLowerCase())
|
||||
.setDescription(
|
||||
client.locales
|
||||
.get(client.config.default_lang)
|
||||
?.get(`c_${filename}_desc`) ?? ""
|
||||
)
|
||||
.setNameLocalizations(
|
||||
getLocalizations(client, `c_${filename}_name`, true))
|
||||
getLocalizations(client, `c_${filename}_name`, true)
|
||||
)
|
||||
.setDescriptionLocalizations(
|
||||
getLocalizations(client, `c_${filename}_desc`)
|
||||
);
|
||||
},
|
||||
|
||||
interaction: async (interaction: ChatInputCommandInteraction, client: Client) => {
|
||||
interaction: async (
|
||||
interaction: ChatInputCommandInteraction,
|
||||
client: Client
|
||||
) => {
|
||||
const loc = getLocale(client, interaction.locale);
|
||||
|
||||
/* 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.
|
||||
|
||||
## 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,7 +174,22 @@ 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.
|
||||
|
@ -164,6 +204,7 @@ Pour commencer, vous pouvez jeté un oeil aux
|
|||
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
|
||||
|
@ -192,8 +233,9 @@ 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*,
|
||||
- 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
|
||||
|
|
Loading…
Reference in a new issue