diff --git a/.claude/skills/traduire/SKILL.md b/.claude/skills/traduire/SKILL.md new file mode 100644 index 000000000..7337b1315 --- /dev/null +++ b/.claude/skills/traduire/SKILL.md @@ -0,0 +1,142 @@ +--- +name: traduire +description: Traduit ou met à jour les pages anglaises de la documentation DraftBot à partir des sources françaises. Prend en argument une liste de chemins de fichiers français, séparés par des espaces. +allowed-tools: Read, Write, Edit, Glob, Grep, Bash(git:*), Bash(gh pr create:*), Bash(node scripts/check-translations.mjs:*), Bash(node scripts/check-links.mjs:*), Bash(node scripts/content-hash.mjs:*) +--- + +Tu mets à jour la documentation anglaise de DraftBot à partir de la version +française, qui fait autorité. + +## Ce que tu reçois + +Une liste de chemins relatifs à `docs/fr/`. Pour chacun, la page anglaise +correspondante est au même chemin sous `docs/en/` : les noms de fichiers et +de dossiers sont identiques entre les deux locales, seul le segment de +locale change. + +Si la page anglaise existe déjà, mets-la à jour plutôt que de la réécrire : +compare la version française actuelle à celle qu'elle traduisait +(`git show :docs/fr/`, d'après le frontmatter) et ne +touche qu'aux passages correspondant aux changements. Une page anglaise +relue par un humain ne doit pas être régénérée pour une virgule ajoutée +côté français. + +## Terminologie + +`glossaire.json` à la racine fait autorité sur tout terme d'interface : +noms de commandes, options du panel, libellés de boutons. Il est extrait des +traductions officielles du bot et du panel — n'invente jamais la traduction +d'un terme qui s'y trouve. Si un terme d'interface est absent du glossaire, +traduis-le au mieux et signale-le dans la description de la pull request, +pour qu'un relecteur confirme la forme retenue. + +Le fichier est court (un peu moins de 500 termes, environ 490 lignes) et peut +être lu en entier. `Grep` reste le moyen le plus direct de cibler un terme +précis : + +``` +Grep pattern="\"Rôles automatiques\"" path=glossaire.json +Grep pattern="(?i)\"arrivées & départs\"" path=glossaire.json # toutes les casses +``` + +Cherche chaque terme au moment où tu en as besoin. Une absence de résultat est +une information : le terme n'est pas au glossaire, traduis-le et signale-le. + +Une entrée du glossaire vaut soit une chaîne, soit un tableau : + +```json +"Rôles automatiques": "Automatic roles", +"Tickets : modérateurs": ["Tickets: moderators", "Tickets: staff"] +``` + +Un tableau signale que plusieurs traductions officielles coexistent dans le +produit. N'essaie pas de deviner laquelle vient du bot et laquelle du panel : +l'ordre du tableau ne l'indique pas de façon fiable. Retiens une forme, +tiens-t'y dans toute la page et dans les pages voisines, et signale ce choix +dans la description de la pull request pour qu'un relecteur tranche. + +Une entrée dont les deux formes sont identiques n'est pas un doublon : elle +signale un nom de commande ou d'option que le bot ne traduit pas. + +```json +"config": "config", +"couple": "couple" +``` + +Reprends-la telle quelle. Le nom du fichier source du bot n'est pas le nom +de la commande : `/couple` vit dans `love.json`, `/chifumi` dans `rps.json`. +Écrire `/love` documenterait une commande qui n'existe pas. + +Le glossaire distingue les termes par leur casse, et des variantes voisines +peuvent porter des traductions différentes : + +```json +"Arrivées & départs": "Welcome & goodbye", +"Arrivées & Départs": "Joins & Leaves" +``` + +Avant de retenir une traduction, regarde les entrées qui l'entourent dans le +fichier trié — `Grep` avec `-C 3` les rend sans ouvrir le fichier. Une entrée +isolée peut cacher une contradiction située une ligne plus haut. + +## Règles de rédaction + +`docs/fr/9.appendices/1.contribute.md` définit le style attendu. Le français +vouvoie ; l'anglais n'a pas cette distinction, mais garde le même registre : +informatif, neutre, sans « simply », « just » ni « obviously », qui +minimisent la difficulté pour le lecteur. + +## Ce qui ne se traduit pas + +- Les blocs MDC (`::hint`, `::tabs`, `::card`, `::collapse`) : la syntaxe et + les noms de propriétés restent identiques. Leurs **valeurs** se traduisent : + `label="Depuis le panel"` devient `label="From the panel"`. +- Les noms de commandes Discord (`/config`, `/premium activer`) : utilise la + forme anglaise réelle du bot, vérifiée dans le glossaire. +- Les émojis personnalisés (`<:icon_premium:1096140508625125417>`). +- Les chemins d'assets : reprends ceux du fichier français, sauf si une + capture anglaise existe au même chemin sous le dossier `assets/` de la + catégorie anglaise. + +## Frontmatter + +- `slug` : le chemin d'URL anglais. Il doit commencer par le `slug` du + `_dir.yml` du dossier parent, privé de son suffixe `/_dir`. +- `sourceHash` : le SHA-256 du fichier français traduit. L'obtenir par + `node scripts/content-hash.mjs docs/fr/`. +- `sourceCommit` : le SHA du commit courant (`git rev-parse HEAD`). +- Reprends `navigation.icon`, `noindex`, `redactors` et `contributors` tels + quels depuis la version française. +- Ne reprends **pas** `translate`. Cette clé, posée sur une page française, + l'exclut de la traduction — le changelog la porte. Une page qui te parvient + malgré elle est une anomalie : ne la traduis pas, signale-le. + +## Liens internes + +Un lien `/docs/engagement/niveaux` pointe vers un slug français. Dans la page +anglaise, remplace-le par le `slug` déclaré dans le frontmatter de la page +anglaise correspondante. Si cette page n'est pas encore traduite, garde le +lien français : il reste valide grâce au repli par page. + +## Pour finir + +**Crée une branche avant tout commit.** Ne commite jamais sur `main` : un push +sur `main` déclenche le déploiement en production sans relecture, et c'est +cette relecture que la pull request existe pour obtenir. + +```bash +git switch -c traduction/ # ex. traduction/joins-and-leaves +``` + +Le nom dérive des pages traduites — le dernier segment du chemin d'une page, +ou un thème commun quand le lot en compte plusieurs. Vérifie que tu n'es plus +sur `main` (`git branch --show-current`) avant de committer, puis pousse cette +branche et ouvre la pull request depuis elle. + +Lance `node scripts/check-translations.mjs` puis `node scripts/check-links.mjs` +et vérifie que les deux passent, puis ouvre une pull request vers `main`. + +Dans la description de la pull request, liste pour chaque page ce qui a +changé côté français et ce que tu as répercuté. Signale explicitement tout +passage où tu as hésité sur la terminologie — un relecteur doit pouvoir +vérifier tes choix sans relire l'intégralité du diff. diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml new file mode 100644 index 000000000..6969a8451 --- /dev/null +++ b/.github/workflows/checks.yml @@ -0,0 +1,18 @@ +name: Vérifications + +on: + pull_request: + paths: ['docs/**', 'scripts/**', '.github/workflows/**'] + workflow_dispatch: + +jobs: + check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-node@v4 + with: + node-version: '24' + - run: node --test 'scripts/lib/*.test.mjs' + - run: node scripts/check-translations.mjs + - run: node scripts/check-links.mjs diff --git a/.github/workflows/translations.yml b/.github/workflows/translations.yml new file mode 100644 index 000000000..b169d8370 --- /dev/null +++ b/.github/workflows/translations.yml @@ -0,0 +1,47 @@ +name: Synchronisation des traductions + +on: + push: + branches: [main] + paths: ['docs/fr/**'] + workflow_dispatch: + +concurrency: + group: translations + # Annuler une traduction en cours laisserait une branche orpheline a mi-chemin. + cancel-in-progress: false + +jobs: + sync: + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + # Requis meme sans github_token : l'action s'authentifie comme la Claude GitHub App. + id-token: write + steps: + - uses: actions/checkout@v6 + with: + # Sans cela, checkout laisse le jeton automatique dans .git/config et + # le push partirait sous l'identite github-actions[bot] : GitHub ne + # declenche aucun workflow sur ces commits, donc checks.yml ne + # tournerait pas sur la pull request produite ici. + persist-credentials: false + - uses: actions/setup-node@v4 + with: + node-version: '24' + + - id: stale + run: node scripts/check-translations.mjs --github-output + + - if: steps.stale.outputs.pages != '' + # Ne pas ajouter github_token : GitHub ne declenche aucun workflow sur les + # commits signes par GITHUB_TOKEN, donc checks.yml ne tournerait pas sur la + # pull request produite ici. + uses: anthropics/claude-code-action@v1 + with: + claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} + prompt: "/traduire ${{ steps.stale.outputs.pages }}" + claude_args: | + --model claude-opus-5 + --max-turns 40 diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..568852540 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +# Espace de travail des sessions d'implémentation assistée +.superpowers/ +plans/ +specs/ + +# Preferences locales de Claude Code, propres a chaque poste +.claude/settings.local.json diff --git a/README.md b/README.md index fea86c87d..810206f7d 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,19 @@ # Documentation communautaire de DraftBot -Ce dépôt contient la documentation de DraftBot accesible depuis le site [draftbot.fr/docs](https://www.draftbot.fr/docs). +Ce dépôt contient la documentation de DraftBot, accessible depuis +[draftbot.fr/docs](https://www.draftbot.fr/docs) en français et +[draftbot.gg/docs](https://www.draftbot.gg/docs) en anglais. + +Le français fait autorité : les pages sont écrites sous `docs/fr/`, et leurs +traductions anglaises sous `docs/en/` sont produites puis relues en pull +request. ## Contribuer à la documentation -Toute aide est la bienvenue, si vous souhaitez nous aider à améliorer la documentation, n'hésitez pas à nous contacter sur le [support Discord](https://discord.gg/draftbot). +Toute aide est la bienvenue. La page de référence pour la rédaction se trouve +dans [`docs/fr/9.appendices/1.contribute.md`](docs/fr/9.appendices/1.contribute.md). +Si vous souhaitez nous aider, n'hésitez pas à nous contacter sur le +[support Discord](https://discord.gg/draftbot). ### Licence diff --git a/changelog/2024-09-30_interactions.md b/changelog/2024-09-30_interactions.md deleted file mode 100644 index 17071a73a..000000000 --- a/changelog/2024-09-30_interactions.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Découvrez les interactions de messages ! -date: 2024-08-18 -version: 5.6.0 -slug: /messages -image: interactions.png ---- - -La page "Embeds" devient "Messages", plus simple et plus claire ! Le système d'interactions de rôles a aussi été complètement repensé, avec un sélecteur beaucoup plus intuitif. - -Et ce n’est pas tout ! Vous pouvez désormais sauvegarder encore plus de messages : 5 pour les utilisateurs gratuits et 100 pour les utilisateurs Premium. Un bon boost pour vos créations ! - -Les **brouillons** et la **duplication** de messages ont également été améliorés pour vous rendre la vie encore plus facile. - -**📩 Actions de Messages** : Vous pouvez désormais ajouter des actions interactives à vos messages. Ça veut dire quoi ? Par exemple, vous pouvez créer des messages éphémères (qui disparaissent après avoir été vus), ouvrir des tickets avec des motifs prédéfinis ou personnalisés, attribuer plusieurs rôles à la fois, et même vendre des articles de votre boutique économique directement via des boutons. - -Vous pouvez aussi ajouter des **conditions de participation**, comme le niveau d’XP, les montants d’argent, les rôles requis, ou encore les objets en inventaire nécessaires. diff --git a/changelog/2024-12-03_stats.md b/changelog/2024-12-03_stats.md deleted file mode 100644 index 5bc8539e5..000000000 --- a/changelog/2024-12-03_stats.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Refonte des statistiques ! -date: 2024-11-25 -version: 5.7.0 -slug: /community -image: stats.png ---- - -Le système de **salons de statistiques** a subi une transformation incroyable ! Auparavant, nous avions seulement un compteur de membres, mais désormais, vous pouvez découvrir une multitude de statistiques variées dans des salons vocaux ou des catégories. - -Parmi les nouvelles fonctionnalités, vous trouverez des **catégories de salons** qui vous permettent de voir combien de salons sont regroupés dans une même catégorie. Pour les utilisateurs Premium, une **API personnalisée** a été intégrée, offrant la possibilité d'afficher des statistiques numériques en temps réel, directement à partir d'une API publique. - -Et la cerise sur le gâteau, c'est que tout est maintenant configurable via un **panel** très intuitif, avec un **système de formatage** qui vous permet de personnaliser l'affichage des statistiques selon vos envies ! diff --git a/changelog/2025-01-21_suggests.md b/changelog/2025-01-21_suggests.md deleted file mode 100644 index c70afae87..000000000 --- a/changelog/2025-01-21_suggests.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Nouveautés pour les suggestions ! -date: 2024-11-25 -version: 5.7.0 -slug: /suggestions -image: suggests.png ---- - -Le système de **suggestions** a aussi eu un joli lifting ! Désormais, vous pouvez explorer les suggestions par **mots-clés** (pour les utilisateurs Premium) et trier les idées selon les **votes** ou les **mots-clés**. C'est vraiment pratique pour dénicher les meilleures idées rapidement. - -De plus, les suggestions sont maintenant **indexées automatiquement**, ce qui veut dire qu'elles se mettent à jour en temps réel. Pas de souci à se faire ! diff --git a/changelog/2025-05-11_anglais.md b/changelog/2025-05-11_anglais.md deleted file mode 100644 index 42fd79469..000000000 --- a/changelog/2025-05-11_anglais.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: DraftBot en anglais ! -date: 2025-05-11 -version: 6.0.0 -image: anglais.png ---- - -Welcome to our English-speaking users ! - -Nous sommes heureux d’annoncer que DraftBot parle couramment anglais, rendant le bot accessible à une communauté internationale beaucoup plus large. - -Cette évolution marque une étape importante dans l’ouverture de DraftBot à de nouvelles communautés à travers le monde. -Les messages, commandes et interactions ont été traduits avec soin pour garantir une expérience utilisateur fluide et naturelle. \ No newline at end of file diff --git a/changelog/assets/anglais.png b/changelog/assets/anglais.png deleted file mode 100644 index 470d71ebc..000000000 Binary files a/changelog/assets/anglais.png and /dev/null differ diff --git a/changelog/assets/interactions.png b/changelog/assets/interactions.png deleted file mode 100644 index 1fc44c4ed..000000000 Binary files a/changelog/assets/interactions.png and /dev/null differ diff --git a/changelog/assets/stats.png b/changelog/assets/stats.png deleted file mode 100644 index f9fb35dd1..000000000 Binary files a/changelog/assets/stats.png and /dev/null differ diff --git a/changelog/assets/suggests.png b/changelog/assets/suggests.png deleted file mode 100644 index 61a49a00d..000000000 Binary files a/changelog/assets/suggests.png and /dev/null differ diff --git a/docs/8.autres/_dir.yml b/docs/8.autres/_dir.yml deleted file mode 100644 index c4d36d7a6..000000000 --- a/docs/8.autres/_dir.yml +++ /dev/null @@ -1 +0,0 @@ -title: Autres diff --git a/docs/9.annexes/_dir.yml b/docs/9.annexes/_dir.yml deleted file mode 100644 index ce3e0c176..000000000 --- a/docs/9.annexes/_dir.yml +++ /dev/null @@ -1 +0,0 @@ -title: Annexes diff --git a/docs/assets/readme/banner.png b/docs/assets/readme/banner.png deleted file mode 100644 index 60666d424..000000000 Binary files a/docs/assets/readme/banner.png and /dev/null differ diff --git a/docs/en/0.home.md b/docs/en/0.home.md new file mode 100644 index 000000000..20f363350 --- /dev/null +++ b/docs/en/0.home.md @@ -0,0 +1,18 @@ +--- +slug: /home +title: Home +description: Welcome to the DraftBot documentation. Here you will find tips, tutorials and answers to your questions. +navigation.icon: 'twemoji:round-pushpin' +sourceHash: 02d1db648953b017c8ae9115dd93bc0492f91dfb4d2a8136c08bb5e0bdc82ffc +sourceCommit: 26d5c1c130aed68c757ff49ef9ac7c175ae7e59f +--- + +So that your discovery of **DraftBot** through our documentation goes as smoothly as possible, here are a few details about how it is written: + +The documentation groups **commands** and features by **module**, so you can get to know the bot clearly and intuitively. + +If you want to go straight to a specific feature, you can use the **search bar**. + +::hint{ type="info" } + If you would like to contact **Support**, find us on Discord by [**`clicking here`**](https://discord.gg/draftbot). +:: diff --git a/docs/en/1.installation.md b/docs/en/1.installation.md new file mode 100644 index 000000000..7056e7e01 --- /dev/null +++ b/docs/en/1.installation.md @@ -0,0 +1,75 @@ +--- +slug: /installation +title: Installation and settings +description: Here is the process for inviting and installing DraftBot. +navigation.icon: 'twemoji:gear' +contributors: ['ls62', 'sagipierre', 'imroxxor', 'rababio4579'] +updatedAt: '2025-07-31' +sourceHash: 41c9766341a9a03820fd056da4a936d7680e5d75c7aac234815422d7cec87437 +sourceCommit: 51972c2686adbcf5e90fce49c0fb3a6d854c3b34 +--- + +## Inviting DraftBot + +Let's start by inviting **DraftBot** to the server by [`clicking here`](/invite). + +![Log in if needed, then choose your server. Finally, click "Authorize".](./assets/installation/add.jpg) + +::hint{ type="success" } + Congratulations, 𝗗𝗿𝗮𝗳𝘁𝗕𝗼𝘁 is now added to your server! +:: + +## Installing DraftBot + +Once **DraftBot** has been added to your server, you need to give it the permissions it requires. To do so, open your server settings and go to the Roles section. + +::hint{ type="warning" } + The **Administrator** permission is **strongly recommended** for **DraftBot**. + + Without it, you must make sure to grant it the [permissions](#draftbot-permission-guidelines) it needs in its other roles and in every channel where it has to act. +:: + +If you want **DraftBot** to be able to assign roles, make sure those roles sit lower in the server hierarchy. You can change the order by dragging roles up and down: + +![DraftBot is positioned above the Administrator role in the role hierarchy.](./assets/installation/role.png) + +::hint{ type="info" } + In our example, **DraftBot** will be able to assign the second, third, fourth and fifth roles, but will not be able to grant the first one. +:: + +### DraftBot permission guidelines + +| Essential | Strongly recommended | +|-----------|----------------------| +| View Channels | **Administrator** | +| Manage Webhooks | Manage Channels | +| Send Messages | Manage Roles | +| Send Messages in Threads | Manage Expressions | +| Embed Links | View Audit Log | +| Attach Files | Manage Nicknames | +| Add Reactions | Kick Members | +| Use External Emoji | Timeout Members | +| Manage Messages | Mute Members | +| Read Message History | Deafen Members | +| | Move Members | + +::hint{ type="success" } + With this installation done, and if you chose to trust **DraftBot** by leaving it as Administrator, you should not run into any problem. The initial setup is now complete. +:: + + +## Configuring commands +DraftBot uses Discord slash commands. This lets users run commands easily by typing `/`. You can configure them and restrict them to certain **roles**, **channels** and **members**. + +To configure DraftBot's commands, go to **your server** settings on Discord, then to the **Integrations** section. You will find every bot on your server there, including DraftBot. Click **DraftBot** to display all of its commands and configure their permissions. + +![Overview of the Integrations page](./assets/installation/preview_integrations.png) + +::hint{ type="info" } + Command permissions can currently only be configured from Discord on desktop or Discord in a browser. +:: + +::hint{ type="danger" } + Pay close attention to how you configure your slash commands: wrong permissions given to the wrong people could compromise your server's security. +:: + diff --git a/docs/en/2.member-welcome/0.joins-and-leaves.md b/docs/en/2.member-welcome/0.joins-and-leaves.md new file mode 100644 index 000000000..7a2435adb --- /dev/null +++ b/docs/en/2.member-welcome/0.joins-and-leaves.md @@ -0,0 +1,181 @@ +--- +slug: /member-welcome/joins-and-leaves +title: Joins & Leaves +description: Set up messages that are sent when a member joins or leaves your server. +navigation.icon: 'twemoji:waving-hand' +redactors: ['draftproducts'] +contributors: ['bariboo', 'theorik', 'thecreatorn3ant', 'imroxxor', 'rababio4579', 'elbaguetto', 'react3778'] +updatedAt: '2025-05-26' +sourceHash: ee874b0a3e522801fbe95c30dd8da096d321e1d9a91f6f8d2e203249b1ae2c5b +sourceCommit: a09e8090228f73e6f2c89abcc412680a538c9749 +--- + +## Welcome messages + +Welcome messages are sent when a member joins your server. They let you greet a newcomer and give them information about your server. + +![Example of a welcome message](./assets/joins-and-leaves/bot_welcome.png) + +### Configuration + +::tabs + ::tab{ label="From the panel" } + + [⫸ Open the **DraftBot** panel](/dashboard/first/welcome) + + You then need to enable the system by clicking the module's activation button. To disable it, click that same button again. + + ![Enable the welcome system](./assets/joins-and-leaves/panel_welcome_enable.png) + + ::hint{type="warning"} + Once you are done, remember to save your changes with the "Save" button at the bottom of the page. + :: + + ![Configuration menu](./assets/joins-and-leaves/panel_welcome.png) + :: + + ::tab{ label="Using the /config command" } + Start by opening the \ command ➜ 👋 + Welcome & goodbye ➜ "Welcome message". + + Here are the different buttons and what they do: + - "Enable the system" ➜ Enables or disables the system. + - "Sending channel" ➜ Sets the channel where the welcome message is sent. + - "Custom message" ➜ Sets the message that is sent in the welcome message (1,200 characters maximum). + + ::collapse{ label="Variables" } + Variables are pieces of text that change depending on the person, the server, the channel or the time. Here are the ones you can use in DraftBot's welcome messages. + + - `{user}` ➜ Member mention + - `{user.id}` ➜ Member ID + - `{user.username}` ➜ Member username + - `{user.nickname}` ➜ Member nickname or username + - `{server}` ➜ Server name + - `{server.id}` ➜ Server ID + - `{server.name}` ➜ Server name + - `{server.membercount}` ➜ Number of members on the server + - `{server.humancount}` ➜ Number of humans on the server + - `{channel}` ➜ Channel mention + - `{channel.id}` ➜ Channel ID + - `{channel.name}` ➜ Channel name + - `{date}` ➜ Current date (DD/MM/YYYY) + - `{time}` ➜ Current time (HH:MM) + - `{timestamp}` ➜ Current timestamp in seconds + :: + + - "Mention the member" ➜ Once this option is enabled, the member is mentioned in the welcome message. + - "Background color" ➜ Changes the background color of the welcome message. + + ::hint{ type="info" } + You can choose between three colors as well as the default one, which makes the image transparent (with the "None" button). + + If you want a custom color, you need to subscribe to a [premium](/premium) <:icon_premium:1096140508625125417> plan. + + ![Background color selection menu](./assets/joins-and-leaves/config_welcome_color.png) + :: + + - "Color" ➜ Sets the color of the sidebar of your welcome message. (<:icon_premium:1096140508625125417>) + - "Image" ➜ Adds a background image to your welcome message. (<:icon_premium:1096140508625125417>) + + ::hint{ type="info" } + Features marked with the <:icon_premium:1096140508625125417> symbol are reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. + :: + + ::hint{ type="info" } + The optimal image dimensions are 1,000 x 300 pixels. + :: + + ![Welcome system configuration menu](./assets/joins-and-leaves/config_welcome.png) + :: +:: + +::hint{ type="warning" } + Welcome messages are only sent once the **onboarding process** is complete and the **server rules** set through Discord have been accepted. +:: + +## Goodbye messages + +Goodbye messages are sent when a member leaves your server. They let the community know that a member has left and wish them well. + +![Example of a goodbye message](./assets/joins-and-leaves/bot_goodbye.png) + +### Configuration + +::tabs + ::tab{ label="From the panel" } + + [⫸ Open the **DraftBot** panel](/dashboard/first/welcome) + + You first need to enable the system by clicking the module's activation button. To disable it, click that same button again. + + ![Enable the goodbye message system](./assets/joins-and-leaves/panel_goodbye_enable.png) + + ::hint{type="warning"} + Once you are done, remember to save your changes with the "Save" button at the bottom of the page. + :: + + ![Configuration menu](./assets/joins-and-leaves/panel_goodbye.png) + :: + + ::tab{ label="Using the /config command" } + Start by opening the \ command ➜ 👋 + Welcome & goodbye ➜ "Goodbye message". + + Here are the different buttons and what they do: + - "Enable the system" ➜ Enables or disables the system. + - "Sending channel" ➜ Sets the channel where the goodbye message is sent. + + - "Custom message" ➜ Sets the message that is sent in the goodbye message. + + ::collapse{ label="Variables" } + Variables are pieces of text that change depending on the person, the server, the channel or the time. Here are the ones you can use in DraftBot's goodbye messages. + + - `{user}` ➜ Member mention + - `{user.id}` ➜ Member ID + - `{user.username}` ➜ Member username + - `{user.nickname}` ➜ Member nickname or username + - `{user.tag}` ➜ Member tag _(Username#0000)_ + - `{server}` ➜ Server name + - `{server.id}` ➜ Server ID + - `{server.name}` ➜ Server name + - `{server.membercount}` ➜ Number of members on the server + - `{server.humancount}` ➜ Number of humans on the server + - `{channel}` ➜ Channel mention + - `{channel.id}` ➜ Channel ID + - `{channel.name}` ➜ Channel name + - `{date}` ➜ Current date (DD/MM/YYYY) + - `{time}` ➜ Current time (HH:MM) + - `{timestamp}` ➜ Current timestamp in seconds + :: + + ::hint{ type="warning" } + Your message must be 1,200 characters at most. + :: + + - "Background color" ➜ Changes the background color of the goodbye message. + + ::hint{ type="info" } + You can choose between three colors as well as the default one (with the "None" button). + + If you want a custom color, you need to subscribe to a [premium](/premium) <:icon_premium:1096140508625125417> plan. + + ![Background color configuration menu](./assets/joins-and-leaves/config_goodbye_color.png) + :: + + - "Color" ➜ Sets the color of the sidebar of your goodbye message. (<:icon_premium:1096140508625125417>) + - "Image" ➜ Adds a background image to your goodbye message. (<:icon_premium:1096140508625125417>) + + ::hint{ type="info" } + Features marked with the <:icon_premium:1096140508625125417> symbol are reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. + :: + + ::hint{ type="info" } + The optimal image dimensions are 1,000 x 300 pixels. + :: + + ![Goodbye system configuration menu](./assets/joins-and-leaves/config_goodbye.png) + :: +:: + + + diff --git a/docs/en/2.member-welcome/1.automatic-roles.md b/docs/en/2.member-welcome/1.automatic-roles.md new file mode 100644 index 000000000..c57577e63 --- /dev/null +++ b/docs/en/2.member-welcome/1.automatic-roles.md @@ -0,0 +1,126 @@ +--- +slug: /member-welcome/automatic-roles +title: Role management +description: Decide which actions grant a specific role to your users, or add roles in bulk to the members of your server. +navigation.icon: 'twemoji:label' +redactors: ['ls62'] +contributors: ['titoto289', 'bariboo', 'iibey', 'theorik', 'imroxxor', 'draftproducts', 'rababio4579', 'erwangit', 'kazotka'] +updatedAt: '2026-04-17' +sourceHash: 6431d03f0efbf21756ecbcff80ec1026846e86088811dd14a165343f4a4ed666 +sourceCommit: 289a436653dad53ba7087a20ec37001d6e81d7bd +--- + +## Automatic roles + +### On join + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/autoroles) + + Then select the role you want to grant automatically when a new member joins. + + ::hint{ type="warning" } + Some roles may appear in red for one of the following reasons: + + - DraftBot does not have permission to manage roles. + + - DraftBot's role is below the roles you want to assign. + + - The user's role is below the roles they want to assign. + + - The role is managed by a bot or by Discord. + :: + + ![Configuring automatic roles on join from the panel](./assets/automatic-roles/panel_join.png) + :: + + ::tab{ label="Using the /config command" } + Start by opening \ ➜ 🏷️ Automatic roles ➜ "On join". + + To add an automatic role granted when a member joins your server, click "Add". + + To remove a role from this list, click "Remove". + + To remove **all** automatic roles, click "Reset". + + ::hint{ type="info" } + You can create up to 3 automatic roles. [Premium](/premium) <:icon_premium:1096140508625125417> servers can create up to 10. + :: + + ![Home menu of the automatic roles on join configuration](./assets/automatic-roles/config_join.png) + :: +:: + +### In voice + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/autoroles) + + Then select the role you want to grant automatically when a member joins a voice channel. + + ::hint{ type="warning" } + Some roles may appear in red for one of the following reasons: + + - DraftBot does not have permission to manage roles. + + - DraftBot's role is below the roles you want to assign. + + - The user's role is below the roles they want to assign. + + - The role is managed by a bot or by Discord. + :: + + ![Configuring automatic voice roles from the panel](./assets/automatic-roles/panel_voice.png) + :: + + ::tab{ label="Using the /config command" } + Start by opening \ ➜ 🏷️ Automatic roles ➜ "In voice". + + To grant an automatic role to a member in voice, click **"Configure"**. + + ::hint{ type="info" } + You can either select an existing role or create one directly. + :: + + To remove an automatic voice role, click **"Edit"**. + + ::hint{ type="info" } + You can delete the role from the server once the system is disabled. + :: + + ### Restricting channels to members in voice + + To restrict channels to members in voice, click **"Restrict channels to members in voice"**, then select the channel in question. Only members holding this role will be able to see it. + + ![Home menu of the automatic voice roles configuration](./assets/automatic-roles/config_voice.png) + :: +:: + + + +## Assigning roles in bulk + +::tabs + ::tab{ label="/role all" } + The \ command gives a specified role to every member of the server. + ![Example of the command](./assets/automatic-roles/config_roles_all.png) + Choose the action to perform (add or remove), then select the role concerned. You also need to choose whether every member is affected (humans + bots) or only one of the two. + + Once the command is launched, the roles are assigned and a message keeps you informed of its progress[^1]. + ![Task tracking](./assets/automatic-roles/config_roles_progress.png) + [^1]:The more members there are, the longer the task takes. + :: + + ::tab{ label="/role for" } + The \ command adds a role in bulk, but lets you set a condition for granting the role. + + Choose the action to perform (add or remove), select the role that determines whether the role is granted, then select the role you want to add. You also need to choose whether every member is affected (humans + bots) or only one of the two. + ![Example of the command](./assets/automatic-roles/config_roles_to.png) + Here, role A is given to every member holding role B. + + Once the command is launched, the roles are assigned and a message keeps you informed of its progress[^1]. + ![Task tracking](./assets/automatic-roles/config_roles_progress.png) + :: +:: diff --git a/docs/en/2.member-welcome/2.rules.md b/docs/en/2.member-welcome/2.rules.md new file mode 100644 index 000000000..a34923f81 --- /dev/null +++ b/docs/en/2.member-welcome/2.rules.md @@ -0,0 +1,67 @@ +--- +slug: /member-welcome/rules +title: 'Rules' +description: The rules system with validation grants a role to newcomers once they have read and accepted the server rules. +navigation.icon: 'twemoji:memo' +contributors: ['draftproducts', 'iibey', 'theorik', 'ls62', 'rababio4579', 'imroxxor', 'kicoulapic314'] +updatedAt: '2023-12-15' +sourceHash: 04e3e08f762eae3949412cc6376de6162717bf7ff828c901aa4f4a90fd4d5bd1 +sourceCommit: 289a436653dad53ba7087a20ec37001d6e81d7bd +--- + +## Creating the rules message + +To begin, run the \ command. **DraftBot** will then let you **add the role** you want to assign to members, as well as **lock** that role to stop them from removing it themselves. + +Members receive this role once they have read the rules and clicked the `Accept the rules` button. + +![Result of the /rules create command](./assets/rules/bot_rules_1.png) + +## Adding rules + +Now that the rules message has been created, it does not contain any rule yet: it is up to you to add them one by one. + +To do so, use the \ command. DraftBot will ask you for three pieces of information: the rules message, the title of your rule and its description. + +![Overview of the /rules add command](./assets/rules/config_rules_add.png) + +::hint{ type="warning" } + The "rules message" field expects **the ID** of the rules message you have just created. + To find out how to obtain it, see the [Finding an ID](/docs/misc/finding-an-id#message-id) page. +:: + +![Result of adding a rule](./assets/rules/bot_rules_2.png) + +::hint{ type="info" } + Once a rule has been added, **DraftBot** offers two choices: add another rule or come back to it later. +:: + +::hint{ type="warning" } + The title is limited to **256** characters, while the description is limited to **1024** characters. +:: + +## Editing a rule + +You can edit your rules at any time, whether to make a correction or to make them look the way you want. You will need the \ command. + +The procedure is not very different from the \ command, except that one extra field appears: `rule`. + +This field lets you select **the rule** you want to edit. + +![Overview of the /rules edit command](./assets/rules/config_rules_edit.png) + +![Result of editing a rule](./assets/rules/bot_rules_3.png) + +::hint{ type="info" } + You can edit the rules from the panel in the [Messages](/dashboard/first/messages) section. The embed is named **"Server rules"**. + + ![Overview of the panel in the Messages section](./assets/rules/panel_messages.png) +:: + +## Removing a rule + +If you are not happy with a rule and want to remove it, you can use the \ command. You only need to obtain **the ID** of the rules message and select the **rule**. + +![Overview of the /rules remove command](./assets/rules/config_rules_remove.png) + + diff --git a/docs/en/2.member-welcome/3.captcha.md b/docs/en/2.member-welcome/3.captcha.md new file mode 100644 index 000000000..13d8703fd --- /dev/null +++ b/docs/en/2.member-welcome/3.captcha.md @@ -0,0 +1,54 @@ +--- +slug: /member-welcome/captcha +title: Captcha +description: The captcha system protects your server from bot attacks it might face. +navigation.icon: 'twemoji:locked' +contributors: ['hugo-broc', 'theorik', 'elvhira', 'draftproducts', 'rababio4579', 'mrpraingle', 'sagipierre'] +updatedAt: '2026-08-12' +sourceHash: 2dc6e99a6173f5129ba00a503004be48c3fa79a7e4cf4353d78f22589b1fb17d +sourceCommit: 289a436653dad53ba7087a20ec37001d6e81d7bd +--- + +::hint{ type="info" } + **Before enabling the captcha**, note that Discord already offers ways to filter arrivals: the server's **verification level** (email address, phone number, account age) and, in Community mode, the **rules screen** and **onboarding**. These settings add no extra step for your members and are enough for most servers. + + DraftBot's captcha remains useful if your server is not in Community mode, or if you want an additional barrier on top of these protections. +:: + +::hint{ type="warning" } + If your server uses **Discord's native rules screen** (the one new members must accept before accessing the server, enabled through Community mode), DraftBot's captcha will only appear once those rules have been accepted. +:: + +## Configuration + +You can configure the captcha system on your server with the \ command, then going to the "Captcha" tab of the selector. + +You will then be able to: + +- **Enable or disable** the captcha +- **Choose** one of the 4 security levels (easy, medium, complex and very complex) +- **Create or select** the verification channel where captchas are sent +- **Create or select** a role assigned to members who have not completed the captcha yet +- **Select** (optional) a role assigned to members who have completed the captcha + +![Captcha configuration](./assets/captcha/config_view.png) + +::hint{ type="info" } + Configuring the captcha system is not available on the **DraftBot** panel yet. +:: + +## Using the captcha + +When a new member joins your Discord server, a message appears in the channel you have set for the captcha. + +The member then has to type the characters shown on the image meant for them in order to access the server. + +![Message sent in the channel dedicated to the captcha when a member joins the server](./assets/captcha/bot_captcha.png) + +::hint{ type="info" } + The join message is only sent after the Discord community rules and DraftBot's captcha have both been validated. +:: + +::hint{ type="warning" } + If the member does not answer within 2 minutes, or fails the captcha more than 3 times, they will be kicked automatically! +:: diff --git a/docs/en/2.member-welcome/_dir.yml b/docs/en/2.member-welcome/_dir.yml new file mode 100644 index 000000000..70a8bcb6d --- /dev/null +++ b/docs/en/2.member-welcome/_dir.yml @@ -0,0 +1,4 @@ +slug: /member-welcome/_dir +title: Member welcome +description: Everything that supports a member from the moment they join your server to their first steps. +navigation.icon: 'twemoji:waving-hand' diff --git a/docs/assets/roles-automatiques/config_join.png b/docs/en/2.member-welcome/assets/automatic-roles/config_join.png similarity index 100% rename from docs/assets/roles-automatiques/config_join.png rename to docs/en/2.member-welcome/assets/automatic-roles/config_join.png diff --git a/docs/assets/roles-automatiques/config_roles_all.png b/docs/en/2.member-welcome/assets/automatic-roles/config_roles_all.png similarity index 100% rename from docs/assets/roles-automatiques/config_roles_all.png rename to docs/en/2.member-welcome/assets/automatic-roles/config_roles_all.png diff --git a/docs/assets/roles-automatiques/config_roles_progress.png b/docs/en/2.member-welcome/assets/automatic-roles/config_roles_progress.png similarity index 100% rename from docs/assets/roles-automatiques/config_roles_progress.png rename to docs/en/2.member-welcome/assets/automatic-roles/config_roles_progress.png diff --git a/docs/assets/roles-automatiques/config_roles_to.png b/docs/en/2.member-welcome/assets/automatic-roles/config_roles_to.png similarity index 100% rename from docs/assets/roles-automatiques/config_roles_to.png rename to docs/en/2.member-welcome/assets/automatic-roles/config_roles_to.png diff --git a/docs/assets/roles-automatiques/config_voice.png b/docs/en/2.member-welcome/assets/automatic-roles/config_voice.png similarity index 100% rename from docs/assets/roles-automatiques/config_voice.png rename to docs/en/2.member-welcome/assets/automatic-roles/config_voice.png diff --git a/docs/assets/roles-automatiques/panel_join.png b/docs/en/2.member-welcome/assets/automatic-roles/panel_join.png similarity index 100% rename from docs/assets/roles-automatiques/panel_join.png rename to docs/en/2.member-welcome/assets/automatic-roles/panel_join.png diff --git a/docs/assets/roles-automatiques/panel_voice.png b/docs/en/2.member-welcome/assets/automatic-roles/panel_voice.png similarity index 100% rename from docs/assets/roles-automatiques/panel_voice.png rename to docs/en/2.member-welcome/assets/automatic-roles/panel_voice.png diff --git a/docs/assets/captcha/bot_captcha.png b/docs/en/2.member-welcome/assets/captcha/bot_captcha.png similarity index 100% rename from docs/assets/captcha/bot_captcha.png rename to docs/en/2.member-welcome/assets/captcha/bot_captcha.png diff --git a/docs/assets/captcha/config_view.png b/docs/en/2.member-welcome/assets/captcha/config_view.png similarity index 100% rename from docs/assets/captcha/config_view.png rename to docs/en/2.member-welcome/assets/captcha/config_view.png diff --git a/docs/assets/arrivees-et-departs/bot_goodbye.png b/docs/en/2.member-welcome/assets/joins-and-leaves/bot_goodbye.png similarity index 100% rename from docs/assets/arrivees-et-departs/bot_goodbye.png rename to docs/en/2.member-welcome/assets/joins-and-leaves/bot_goodbye.png diff --git a/docs/assets/arrivees-et-departs/bot_welcome.png b/docs/en/2.member-welcome/assets/joins-and-leaves/bot_welcome.png similarity index 100% rename from docs/assets/arrivees-et-departs/bot_welcome.png rename to docs/en/2.member-welcome/assets/joins-and-leaves/bot_welcome.png diff --git a/docs/assets/arrivees-et-departs/config_goodbye.png b/docs/en/2.member-welcome/assets/joins-and-leaves/config_goodbye.png similarity index 100% rename from docs/assets/arrivees-et-departs/config_goodbye.png rename to docs/en/2.member-welcome/assets/joins-and-leaves/config_goodbye.png diff --git a/docs/assets/arrivees-et-departs/config_goodbye_color.png b/docs/en/2.member-welcome/assets/joins-and-leaves/config_goodbye_color.png similarity index 100% rename from docs/assets/arrivees-et-departs/config_goodbye_color.png rename to docs/en/2.member-welcome/assets/joins-and-leaves/config_goodbye_color.png diff --git a/docs/assets/arrivees-et-departs/config_welcome.png b/docs/en/2.member-welcome/assets/joins-and-leaves/config_welcome.png similarity index 100% rename from docs/assets/arrivees-et-departs/config_welcome.png rename to docs/en/2.member-welcome/assets/joins-and-leaves/config_welcome.png diff --git a/docs/assets/arrivees-et-departs/config_welcome_color.png b/docs/en/2.member-welcome/assets/joins-and-leaves/config_welcome_color.png similarity index 100% rename from docs/assets/arrivees-et-departs/config_welcome_color.png rename to docs/en/2.member-welcome/assets/joins-and-leaves/config_welcome_color.png diff --git a/docs/assets/arrivees-et-departs/panel_goodbye.png b/docs/en/2.member-welcome/assets/joins-and-leaves/panel_goodbye.png similarity index 100% rename from docs/assets/arrivees-et-departs/panel_goodbye.png rename to docs/en/2.member-welcome/assets/joins-and-leaves/panel_goodbye.png diff --git a/docs/assets/arrivees-et-departs/panel_goodbye_enable.png b/docs/en/2.member-welcome/assets/joins-and-leaves/panel_goodbye_enable.png similarity index 100% rename from docs/assets/arrivees-et-departs/panel_goodbye_enable.png rename to docs/en/2.member-welcome/assets/joins-and-leaves/panel_goodbye_enable.png diff --git a/docs/assets/arrivees-et-departs/panel_welcome.png b/docs/en/2.member-welcome/assets/joins-and-leaves/panel_welcome.png similarity index 100% rename from docs/assets/arrivees-et-departs/panel_welcome.png rename to docs/en/2.member-welcome/assets/joins-and-leaves/panel_welcome.png diff --git a/docs/assets/arrivees-et-departs/panel_welcome_enable.png b/docs/en/2.member-welcome/assets/joins-and-leaves/panel_welcome_enable.png similarity index 100% rename from docs/assets/arrivees-et-departs/panel_welcome_enable.png rename to docs/en/2.member-welcome/assets/joins-and-leaves/panel_welcome_enable.png diff --git a/docs/assets/reglement/bot_rules_1.png b/docs/en/2.member-welcome/assets/rules/bot_rules_1.png similarity index 100% rename from docs/assets/reglement/bot_rules_1.png rename to docs/en/2.member-welcome/assets/rules/bot_rules_1.png diff --git a/docs/assets/reglement/bot_rules_2.png b/docs/en/2.member-welcome/assets/rules/bot_rules_2.png similarity index 100% rename from docs/assets/reglement/bot_rules_2.png rename to docs/en/2.member-welcome/assets/rules/bot_rules_2.png diff --git a/docs/assets/reglement/bot_rules_3.png b/docs/en/2.member-welcome/assets/rules/bot_rules_3.png similarity index 100% rename from docs/assets/reglement/bot_rules_3.png rename to docs/en/2.member-welcome/assets/rules/bot_rules_3.png diff --git a/docs/assets/reglement/config_rules_add.png b/docs/en/2.member-welcome/assets/rules/config_rules_add.png similarity index 100% rename from docs/assets/reglement/config_rules_add.png rename to docs/en/2.member-welcome/assets/rules/config_rules_add.png diff --git a/docs/assets/reglement/config_rules_edit.png b/docs/en/2.member-welcome/assets/rules/config_rules_edit.png similarity index 100% rename from docs/assets/reglement/config_rules_edit.png rename to docs/en/2.member-welcome/assets/rules/config_rules_edit.png diff --git a/docs/assets/reglement/config_rules_remove.png b/docs/en/2.member-welcome/assets/rules/config_rules_remove.png similarity index 100% rename from docs/assets/reglement/config_rules_remove.png rename to docs/en/2.member-welcome/assets/rules/config_rules_remove.png diff --git a/docs/assets/reglement/panel_messages.png b/docs/en/2.member-welcome/assets/rules/panel_messages.png similarity index 100% rename from docs/assets/reglement/panel_messages.png rename to docs/en/2.member-welcome/assets/rules/panel_messages.png diff --git a/docs/en/3.engagement/0.levels.md b/docs/en/3.engagement/0.levels.md new file mode 100644 index 000000000..fc1155df7 --- /dev/null +++ b/docs/en/3.engagement/0.levels.md @@ -0,0 +1,529 @@ +--- +slug: /engagement/levels +title: Levels +description: Find out how to track your server members' progress with the levels feature. +navigation.icon: 'twemoji:chart-increasing' +redactors: ['clement669', 'draftproducts'] +contributors: ['hugo-broc', 'wernouxe', 'rababio4579', 'theorik', 'ls62', 'imroxxor', 'iibey','lyvendev'] +updatedAt: '2026-05-23' +sourceHash: 86ef804d31c084c17d152f0c905364d43c5a751ecbcbffa4cbcc4034f8d0c18c +sourceCommit: 51972c2686adbcf5e90fce49c0fb3a6d854c3b34 +--- + +## Checking your level + +To check your own progress, use the \ command. + +![Card returned by the /level command](./assets/levels/bot_level_card.png) + +::hint{ type="info" } + To check another member's progress, add their mention as an argument to the \ command. +:: + +## Level rewards + +Motivate your members by offering them rewards when they reach certain levels! To see the rewards available on your server, use the \ command. + +| Type | Description | Example | +|------|-------------|---------| +| **Permanent role** | Grants a Discord role for good | "Active" role at level 10 | +| **Temporary role** | Grants a role for a limited time | "VIP 7 days" role at level 20 | +| **Money** | Money from the [economy system](/docs/engagement/economy) | 5000 coins at level 15 | +| **Inventory item** | One or more [inventory items](/docs/engagement/inventory) | 3x "Boost potion" at level 25 | +| **Custom reward** | A reward you hand out yourself | Promo code, goodies, etc. | + +![Level rewards](./assets/levels/bot_rewards.png) + +::hint{ type="info" } + You can create up to **10 rewards** for free. [Premium](/premium) <:icon_premium:1096140508625125417> servers have **no limit**! +:: + +## Member leaderboard + +You can display the member leaderboard, from the highest to the lowest level, in three ways: + +### The /toplevel command + +You can display the leaderboard with the \ command. + +![Result of the /toplevel command](./assets/levels/bot_toplevel.png) + +::hint{ type="success" } + If you want to display a specific number of rows (only the top 3, for example), you can add that number as an argument to the \ command. +:: + +::hint{ type="info" } + If the **"Allow viewing other members' experience"** option is disabled, members can only check their own progress with \, but the leaderboards (\ and the online leaderboard) **remain accessible** to everyone. +:: + +### Online leaderboard + +If you have enabled the **online leaderboard**, you can open it from the **"View the whole leaderboard"** button of the \ command. + +![Online leaderboard](./assets/levels/panel_leaderboard.png) + +::hint{ type="info" } + If you are a server administrator, you can also reach it from the [**panel**](/dashboard/first/levels), in the **Levels** module, through the **"Access to the leaderboard"** button. +:: + +### Real-time leaderboard + +[Premium](/premium) <:icon_premium:1096140508625125417> servers can set up a member leaderboard in a dedicated channel, updated automatically in real time. + +![Automatic Discord leaderboard](./assets/levels/bot_leaderboard_auto.png) + +::hint{ type="success" } + The advantage of this feature is that the message displaying the leaderboard can show up to 25 members and is refreshed automatically every 10 minutes, unless nothing has changed! +:: + +## Managing members' levels + +As an administrator, you have several commands to manage members' experience: + +| Command | Description | +|----------|-------------| +| \ | Creates a message with a button: the **first member** to click wins the experience. You can set a time limit (**10 minutes** maximum). | +| \ | Adds experience to a specific member. | +| \ | Adds experience to **every member** of the server (asynchronous operation). | +| \ | Adds experience to every member holding a **specific role** (asynchronous operation). | +| \ | Removes experience from a member. **Warning**: this can cause the loss of levels and of the associated reward roles. | +| \ | Removes experience from **every member** of the server (asynchronous operation). | +| \ | Removes experience from every member holding a **specific role** (asynchronous operation). | +| \ | Sets a member's XP to an exact amount (replaces their current XP). | +| \ | Transfers experience from one member to another (the giver loses the transferred XP). | +| \ | **Resets every level on the server**. This action cannot be undone! | + +::hint{ type="info" } + Admin commands can only be used by members of your server holding the **administrator permission**. +:: + +::hint{ type="info" } + **Bulk operations**: commands targeting "every member" or "a role" run **asynchronously**. + A progress message is displayed and updates automatically. You can cancel the operation at any time with the button provided. +:: + +::hint{ type="warning" } + When you **remove XP** or **set** a lower XP amount, members may lose levels. In that case, their **reward roles** are removed automatically. +:: + +## Earning experience + +### Experience per message + +The main way to earn experience is **written participation** on the server. Each message grants a **random** amount of experience, between two configurable bounds (**15 to 25 XP** by default). + +::hint{ type="info" } + A **cooldown** (30 seconds by default, configurable) applies between each XP gain for the same member. This prevents spam and encourages quality conversations. +:: + +::hint{ type="info" } + [Premium](/premium) <:icon_premium:1096140508625125417> servers can **customize this interval** independently of the voice one. +:: + +### Experience in voice + +[Premium](/premium) <:icon_premium:1096140508625125417> servers can enable experience gain based on **voice activity**. Each member active in voice earns a **random** amount of experience (15 to 25 XP by default, configurable), at a **regular interval** (every 2 minutes by default, configurable). + +::hint{ type="success" } + This interval is also **customizable** independently of the message one. +:: + +::hint{ type="info" } + **Requirements** to earn XP in voice: + - The user must **not be muted** or **deafened** (neither self-deafened nor server-deafened). + - The channel must **not be a stage channel** or set as the **AFK channel** (in the Discord settings). + - **At least 2 human users** must be present and active (not muted/deafened) in the same channel. + + If these conditions are no longer met, the member stops earning XP until they are met again. +:: + +### Other ways to earn experience + +Thanks to DraftBot's **ecosystem**, you can grant experience through other features: + +| Feature | Description | +|----------------|-------------| +| **Giveaways** | Offer XP as a reward | +| **Economy shop** | Sell XP for server money | +| **Birthday gifts** | Offer XP automatically | +| **Experience drop** (\) | Create interactive events | +| **Advent calendar** | Daily rewards in December | + +### Threads and forums + +The level system distinguishes between two types of discussion spaces: + +| Type of space | Description | +|---------------|-------------| +| **Threads** | Created in text or announcement channels. Their XP gain can be enabled or disabled through the **"Enable xp gain in threads"** option | +| **Forum posts** | Messages published in forum channels. Their XP gain is controlled by the **"Enable xp gain in forum posts"** option | + +::hint{ type="info" } + Threads and forum posts **automatically inherit** their parent channel's settings regarding allow/deny lists and multipliers. +:: + +To manage your server with precision, you can block or boost experience gain based on the member's role or the channel used, as detailed below. + +### Allow and deny lists + +The **role** and **channel** lists let you control precisely who can earn XP and where: + +| Mode | Description | +|------|-------------| +| **With** | Only the listed members/channels can earn XP. For roles, a member only needs **at least one** allowed role to earn XP, even if they hold other unlisted roles | +| **Without** | The listed members/channels **cannot** earn XP. If a member holds at least one forbidden role, they will not earn XP | + +### Experience multipliers + +You can apply **multipliers** (x1.5, x2, x2.5, x3) to certain roles or channels to boost XP gain. + +::hint{ type="info" } + [Premium](/premium) <:icon_premium:1096140508625125417> servers can use custom values ranging from x0.1 to x10. +:: + +- If a member holds several boosted roles, **only the highest boost** is applied. +- If a channel inherits its category's boost **and** has its own boost, **only the channel's boost** is applied. +- Role boosts and channel boosts, however, **stack** with each other (multiplication). + +::hint{ type="info" } + **Example**: a member holding an x2 role who writes in an x1.5 channel earns x3 (2 × 1.5). Conversely, if they hold two boosted roles (x2 and x1.5), only the x2 is applied. +:: + +### Additional options + +Other advanced options are available to fine-tune the system: + +| Option | Description | | +|--------|-------------|--| +| **XP gain per message in voice channels** | Three modes are available for text messages sent in voice channels: **Everyone** (any message grants XP, whether or not the author is connected to voice), **Only if voice-connected** (XP is only granted if the member is also connected to the voice channel), or **Disabled** (no text message in voice channels grants XP) | | +| **Long messages count double** | Messages of 250 characters or more (threshold configurable between 100 and 1500) grant double XP | | +| **Allow viewing other members' experience** | If disabled, members can only check their own level through \, and the reply becomes ephemeral (visible only to the person who ran it). Administrators can still check every member's level | | +| **Reset XP when leaving the server** | If enabled, members who leave the server lose their progress for good. If they come back, they start from zero | | +| **Reset XP on ban** | If enabled, banned members lose their progress for good | | +| **Color customization** | Change the color of level embeds and cards | <:icon_premium:1096140508625125417> | + +::hint{ type="info" } + Features marked with the <:icon_premium:1096140508625125417> symbol are reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. +:: + +::hint{ type="info" } + Below is the amount of XP needed to reach the next level with the default curve. + + ![Level table](./assets/levels/bot_experience_table.png) +:: + +### Customizable experience curve + +You can change the **experience curve** to adjust how hard it is to progress through levels. Four predefined curves are available: + +| Curve | Difficulty | Description | | +|--------|------------|-------------|--| +| **Constant** | Fixed | Every level requires exactly the same amount of XP | | +| **Linear** | Moderate increase | Each level requires progressively more XP, in a linear way | | +| **Exponential** | Fast increase | Difficulty grows exponentially, high levels are much harder to reach (default) | | +| **Custom** | Your choice | Define your own progression formula | <:icon_premium:1096140508625125417> | + +::hint{ type="success" } + **Curve multiplier**: you can apply a global multiplier (x0.5, x1, x2, etc.) to the selected curve to adjust difficulty without changing the progression style. +:: + +::hint{ type="warning" } + **Important**: when you change the XP curve, every member's level is **recalculated automatically** based on their total XP. If you make levels harder to reach, some members may lose levels and their associated rewards! +:: + +### Maximum level + +[Premium](/premium) <:icon_premium:1096140508625125417> servers can set a **maximum level** to cap progression. Once that level is reached, members **stop earning any experience** until the cap is raised or removed. + +::hint{ type="info" } + XP earned during that period is not counted retroactively. +:: + +## Level announcements + +No milestone should go unnoticed, which is why you can set up announcements when a user levels up. + +### Level-up announcements + +You can configure level-up announcements with **three options**: + +- **Disabled**: no announcement is sent +- **In the current channel**: the announcement appears in the channel where the member earned the level +- **In a dedicated channel**: the announcement is sent to a specific channel of your choice + +::hint{ type="info" } + **Minimum level**: set a threshold (level 10, for instance) to avoid spamming for low levels. + + **Custom color** <:icon_premium:1096140508625125417>: premium servers can change the color of the announcement embed. +:: + +::hint{ type="warning" } + **Required permissions**: to send announcements, DraftBot needs the following permissions in the chosen channel: **View Channel**, **Send Messages**, **Embed Links** and **Attach Files**. If these permissions are removed, announcements are disabled automatically. +:: + +::hint{ type="info" } + The level-up announcement is triggered **whatever the source of the XP** that caused the level-up: messages, voice, \, \, birthday gift, bingo, giveaway, Counter, or any other command or feature granting experience. +:: + +#### Customizing the message + +The announcement message is **fully customizable** with dynamic variables: + +| Variable | Description | Example | +|----------|-------------|---------| +| `{user}` | Member mention | @DraftBot | +| `{user.id}` | Member ID | 689210436019716137 | +| `{user.username}` | Username | DraftBot | +| `{user.nickname}` | Nickname on the server | Draft | +| `{user.globalname}` | Discord global name | DraftBot Official | +| `{level}` | Level reached | 25 | +| `{server}` / `{server.name}` | Server name | My Great Server | +| `{server.id}` | Server ID | 382341865001844737 | +| `{server.membercount}` | Number of members | 15000 | +| `{channel}` | Channel mention | #general | +| `{channel.id}` | Channel ID | 923456789012345678 | +| `{channel.name}` | Channel name | general | +| `{date}` | Current date | 15/01/2025 | +| `{time}` | Current time | 14:30 | +| `{timestamp}` | Dynamic Discord timestamp | | + +### Reward announcements + +Set up **separate** announcements for level rewards. They use the same options and variables, with `{reward}` added to display the reward obtained. + +![Announcement of a new level](./assets/levels/bot_new_level_notif.png) + +## Configuring the level system + +::tabs + ::tab{ label="From the panel" } + + [⫸ Open the **DraftBot** panel](/dashboard/first/levels) + + To enable the module, the first step is to click the button in the top right corner: + + ![Enabling the level system from the panel](./assets/levels/panel_enable.png) + + Every feature then appears: + + ![Levels module enabled on the panel](./assets/levels/panel_home.png) + + ::hint{type="warning"} + Once your changes are done, remember to save them with the "Save" button at the bottom of the page! + :: + :: + + ::tab{ label="Using the /config command" } + + If you would rather do the whole setup from Discord, you can use the \ command, then go to the "Levels" tab. The menu then looks like this: + + ![Levels module through the /config command](./assets/levels/config_home.png) + + The body of the **message** lets you see the **current state** of your level system at a glance, while the **buttons** below let you **change its configuration**. + + ::collapse{ label="Status" } + This menu lets you: + - Enable / disable the level system + - Enable / disable the online leaderboard + - Enable / disable the leaderboard on Discord (<:icon_premium:1096140508625125417>) + + ![The "Status" menu through the /config command](./assets/levels/config_status.png) + + ::hint{ type="success" } + When you enable the leaderboard on Discord, you can either use an existing channel or let DraftBot create one for you. You can even set how many leaderboard rows to display! + :: + :: + + ::collapse{ label="Experience" } + This menu lets you: + - Enable / disable / adjust the experience granted per message + - Enable / disable / adjust the experience granted in voice (<:icon_premium:1096140508625125417>) + - Enable / disable experience gain in threads + - Enable / disable experience gain per message in voice channels + - Enable / disable / adjust double XP for long messages + - Choose whether the level of members leaving the server is reset to 0 + + ![The "Experience" menu through the /config command](./assets/levels/config_experience.png) + :: + + ::collapse{ label="Level rewards" } + This menu lets you configure level rewards, so you can: + - Create / edit / delete a [reward](#level-rewards) + - Reset the rewards. + + ![The "Level rewards" menu through the /config command](./assets/levels/config_rewards.png) + :: + + ::collapse{ label="Announcements" } + This menu configures level-up and reward announcements. You can: + - Configure level-up announcements: + - Enable / disable announcements + - Choose the channel where announcements are sent + - Set a minimum level for announcements + - Customize the announcement message + - Configure reward announcements: + - Enable / disable announcements + - Choose the channel where announcements are sent + - Customize the announcement message + + ![The "Announcements" menu through the /config command](./assets/levels/config_notifs.png) + :: + + ::collapse{ label="Limitations & boosts" } + This menu configures different gains depending on a member's role or the channel they post in. You can set: + - which roles have XP gain enabled or disabled, + - which channels have XP gain enabled or disabled, + - which roles get a multiplier (x1.5, x2, x2.5, x3), + - which channels get a multiplier (x1.5, x2, x2.5, x3). + + ![The "Limitations & boosts" menu through the /config command](./assets/levels/config_limits_boosts.png) + :: + + ::collapse{ label="Customization" } + This menu offers exclusive customizations reserved for [premium servers](/premium) <:icon_premium:1096140508625125417>: + - Set a maximum level + - Customize the color of the levels interface (orange by default) + + ![The "Customization" menu through the /config command](./assets/levels/config_customization.png) + :: + :: +:: + +### Configuring rewards + +The basic reward setup goes like this: + +::tabs + ::tab{ label="From the panel" } + + [⫸ Open the **DraftBot** panel](/dashboard/first/levels) + + Two sections are available: + + ![Rewards menu from the DraftBot panel](./assets/levels/panel_rewards.png) + + 1. **Create a reward**: this option lets you create rewards and assign them to the level-ups of your choice. *(Learn how to [create a reward](#creating-a-reward)!)* + + 2. **Configure announcements**: you can enable or disable announcements, choose the channel they appear in, and even customize the message! + + ::collapse{ label="See how to configure announcements:" } + You can: + - Choose whether the announcement is sent in the active channel or in a dedicated one + - Create or select a dedicated channel + - Customize the announcement message + + ![Announcement configuration from the panel](./assets/levels/panel_rewards_notifs.png) + :: + + ::hint{ type="success" } + If you have already set up [shop articles](/docs/engagement/economy#creating-a-shop-article), they appear at the bottom of the screen, where you can edit or delete them. + :: + :: + + ::tab{ label="Using the /config command" } + Through the \ command, click the "Level rewards" button. A menu for configuring rewards is then displayed, letting you: + + - Create / edit / delete a [reward](#creating-a-reward) + - Reset the rewards + + ![The "Rewards" menu through the /config command](./assets/levels/config_rewards.png) + :: +:: + +### Creating a reward + +DraftBot lets you reward your members' activity through items of various types: + +![Reward creation menu, from the panel](./assets/levels/panel_create_reward.png) + +::tabs + ::tab{ label="Role" } + You can let your members obtain roles (temporary or permanent) when they reach a given level. To add a role to the rewards, select the reward type **"role"** or **"temporary role"**. + + Then choose: + - The required level + - The role to assign + - The stacking mode: **Cumulative** or **Evolving** + - The duration of the role *(for a temporary role)* + + ::hint{ type="info" } + **Cumulative role**: the member keeps every reward role they have obtained (level 5, 10, 15, etc.). + + **Evolving role**: only the role of the latest level reached is kept. Previous evolving reward roles are removed automatically on the next XP gain. + :: + + ::hint{ type="success" } + In the \ command, a **🔹** marker is displayed next to role rewards set to **Evolving** mode, making them easy to spot. + :: + + ::hint{ type="warning" } + The selected role must have been created on your server beforehand, and must be accessible to DraftBot (so it must not sit higher than DraftBot's highest role). + :: + + **Specific behaviors:** + + - **Skipping levels**: if a member skips several levels at once (through \), they receive **every reward** from the intermediate levels they have not obtained yet. For example, if a member goes straight from level 5 to level 25, they will receive the rewards of levels 10, 15, 20 and 25. For **evolving** roles, only the role of the highest level is kept. + - **Losing levels**: if a member drops below the required level (through \ or a change to the XP curve), the reward roles are **removed automatically**. Money, item and custom rewards are not taken back. + :: + + ::tab{ label="Money" } + If the [economy system](/docs/engagement/economy) is enabled, you can reward your members with the server's virtual money. + + Choose: + - The required level + - The amount of money to grant + + ::hint{ type="warning" } + The economy system must be **enabled** on your server to use this reward type. If you disable it, a warning is displayed during configuration. + :: + + ::hint{ type="info" } + Unlike roles, money that has been granted **cannot be taken back automatically** if the member loses their level. + :: + :: + + ::tab{ label="Inventory item" } + Reward your members with custom, fictional [inventory items](/docs/engagement/inventory). + + Choose: + - The required level + - The item to grant (among the existing ones, or create a new one) + - The quantity of that item (up to 1 million) + + ::hint{ type="info" } + Like money, items that have been granted **cannot be taken back automatically** if the member loses their level. + :: + :: + + ::tab{ label="Custom item" } + Offer rewards **outside Discord**: promotional codes, game keys, physical goodies, subscriptions, etc. + + Choose: + - The required level + - The name/description of the item (up to 250 characters) + + ::hint{ type="success" } + **How does it work?** When a member obtains this reward, **you receive a direct message notification from DraftBot** with the member's details. You can then hand the reward over in person, however you like. + :: + + ::hint{ type="info" } + Ideal for one-off rewards: access to a private channel, a coaching session, custom goodies, etc. + :: + :: +:: + +::hint{ type="info" } + You can set up to 10 level rewards. [Premium](/premium) <:icon_premium:1096140508625125417> servers have no limit! +:: + +## Migrating from MEE6 + +If you were already using a level system through MEE6, you can import your members' progress into DraftBot's level system! + +![Level import button](./assets/levels/config_import.png) + +After clicking **Import MEE6** and confirming that you want to proceed with the import, DraftBot automatically retrieves all of the members' level information. + +::hint{ type="warning" } + Make sure MEE6 is present on your server and that its leaderboard is publicly accessible! +:: diff --git a/docs/en/3.engagement/1.economy.md b/docs/en/3.engagement/1.economy.md new file mode 100644 index 000000000..6f8519423 --- /dev/null +++ b/docs/en/3.engagement/1.economy.md @@ -0,0 +1,513 @@ +--- +slug: /engagement/economy +title: Economy +description: Create a virtual economy on your Discord server with DraftBot! Let your members earn money, buy items in custom shops and check their wealth in the leaderboards. +navigation.icon: 'twemoji:money-bag' +redactors: ['clement669', 'draftproducts'] +contributors: ['bariboo', 'theorik', 'ls62', 'rababio4579', 'imroxxor', 'erwangit', 'kicoulapic314', 'lyvendev'] +updatedAt: '2026-05-23' +sourceHash: 1cc17caac8e4fca2fa342d33a445ed6917504ef5a193ff76be73e3a885827fe1 +sourceCommit: a809dd1571737769e8f6f89b0ab8c61c3a1b4a36 +--- + +## Checking your money + +To check your own balance, use the \ command. + +![Card returned by the /money command](./assets/economy/bot_money.png) + +::hint{ type="info" } + To check another member's balance, add their mention as an argument to the \ command. +:: + +## Commands + +Several handy commands make the economy system as smooth as possible for you. + +| Command | Description | +|----------|-------------| +| \ | Claims your daily amount. | +| \ | Displays how much money you, or another member, have. | +| \ | Gives some of your money to the targeted member. | +| \ | Displays the [server shop](#shop). | +| \ | Displays the member [leaderboard](#leaderboard). | +| \ | Creates a message that grants an amount of money to the first person who clicks the button. | + +::hint{ type="info" } + Administrators also have the \ commands to manage members' money. See the [Managing members' money](#managing-members-money) section. +:: + +## Shop + +The shop, accessible through the \ command, lets your members buy articles you have set up! + +![Shop interface](./assets/economy/bot_shops.png) + +- **Pagination**: articles are displayed in pages of up to 5 articles +- **Article sorting**: 5 sorting options are available (creation date, ascending price, descending price, alphabetical name, type) +- **Shop selection**: if several shops exist, a selection menu is displayed automatically +- **Secure purchase**: confirmation is required before every purchase + +| Type | Description | Example | +|------|-------------|---------| +| **Role** | Grants a Discord role | "VIP" role for 5000 💰 | +| **Temporary role** | Grants a role for a limited time | "Boost 7 days" role for 2000 💰 | +| **Experience** | XP points from the [level system](/docs/engagement/levels) | 1000 XP for 500 💰 | +| **Inventory item** | One or more [inventory items](/docs/engagement/inventory) | 3x "Luck potion" for 1500 💰 | +| **Custom article** | A reward you hand out yourself | Promo code, physical goodies, etc. | + +::hint{ type="info" } + You can have 1 shop containing up to **10 articles**. [Premium](/premium) <:icon_premium:1096140508625125417> servers can have 5 shops with 500 articles in each. +:: + +::hint{ type="success" } + If you have set up several shops, your members can switch between them easily through the dropdown menu at the bottom of the interface! +:: + +## Earning money + +Money can be earned in various ways on your server. You have full control over how and where your members build up their wealth. + +### Money per message + +The main way to earn money is **written participation** on the server. Each message grants a **random** amount of money between two values you configure (**15 to 25 💰** by default). + +::hint{ type="info" } + A **cooldown** (30 seconds by default, configurable) applies between each money gain for the same member, to prevent spamming very short messages. +:: + +::hint{ type="info" } + [Premium](/premium) <:icon_premium:1096140508625125417> servers can **customize this interval** independently of the voice one. +:: + +### Money in voice + +[Premium](/premium) <:icon_premium:1096140508625125417> servers can enable money gain based on **voice activity**. Each member active in voice earns a **random** amount of money (15 to 25 💰 by default, configurable), at a **regular interval** (every 2 minutes by default, configurable). + +::hint{ type="info" } + This interval is also **customizable** independently of the message one. +:: + +::hint{ type="info" } + **Requirements** to earn money in voice: + - The user must **not have muted their microphone** or **their sound (deafened)**, whether self-deafened or server-deafened. + - The channel must **not be a stage channel** or set as the **AFK channel** (in the Discord settings). + - **At least 2 human members in total** (including the beneficiary) must be present and active (not muted/deafened) in the same channel. + + If these conditions are no longer met, the member stops earning money until they are met again. +:: + +### Other ways to earn money + +Thanks to DraftBot's **ecosystem**, you can grant money through other features: + +| Features | Description | +|-----------------|-------------| +| **Giveaways** | Offer money as a reward | +| **Starting money** | Set an amount given to new members | +| **Daily** | Daily reward claimable through \ | +| **Birthday gifts** | Offer money automatically | +| **Money drop** (\) | Create interactive events where the first to click wins | +| **Advent calendar** | Daily rewards in December | +| **Custom commands** | Create all kinds of commands tied to the economy | + +### Threads and forums + +The economy system distinguishes between two types of discussion spaces: + +| Type | Description | +|------|-------------| +| **Threads** | Created in text or announcement channels. Their money gain can be enabled or disabled through the **"Enable money gain in threads"** option. | +| **Forum posts** | Messages published in forum channels. Their money gain is controlled by the **"Enable money gain in forum posts"** option. | + +::hint{ type="info" } + Threads and forum posts **automatically inherit** their parent channel's settings regarding allow/deny lists and multipliers. +:: + +### Allow and deny lists + +The **role** and **channel** lists let you control precisely who can earn money and where: + +| Mode | Description | +|------|-------------| +| **With** | Only the listed members/channels can earn money. For roles, a member earns as soon as they hold **at least one** role from the list, whatever their other roles. | +| **Without** | The listed members/channels **cannot** earn money. For roles, a single forbidden role is enough to block the gain. | + +### Money multipliers + +You can apply **multipliers** (x1.5, x2, x2.5, x3) to certain roles or channels to boost money gain. + +::hint{ type="info" } + [Premium](/premium) <:icon_premium:1096140508625125417> servers can use custom values ranging from x0.1 to x10. +:: + +- If a member holds several boosted roles, **only the highest boost** is applied. +- If a channel inherits its category's boost **and** has its own boost, **only the channel's boost** is applied. +- Role boosts and channel boosts, however, **stack** with each other (multiplication). + +::hint{ type="info" } + **Example**: a member holding an x2 role who posts in an x1.5 channel earns x3 (2 × 1.5). Conversely, if they hold two boosted roles (x2 and x1.5), only the x2 is applied. +:: + +### Additional options + +Other advanced options are available to fine-tune the system: + +| Option | Description | | +|--------|-------------|--| +| **Money gain per message in voice channels** | Determines whether text messages sent in voice channels grant money, following **three modes**: **Everyone** (any message grants money, whether or not the author is connected to voice), **Only if voice-connected** (money is only granted if the member is also connected to the voice channel), or **Disabled** (no text message in voice channels grants money). | | +| **Long messages count double** | Messages of 250 characters or more (threshold configurable between 100 and 1500) grant double money. | | +| **Allow viewing other members' money** | If disabled, members only see their own balance through \ and the \ command becomes unavailable. In that case, the command becomes ephemeral (visible only to the user who ran it). Administrators can still check every member's money. | | +| **Reset money when leaving the server** | If enabled, members who leave the server lose their money for good. If they come back, they start from zero. | | +| **Reset money on ban** | If enabled, banned members lose their money for good. | | +| **Starting money** | Set an amount of money given automatically to new members joining the server. | | +| **Daily money** | Configure the amount claimable every day through the \ command. | | +| **Currency customization** | Change the emoji of your currency. | <:icon_premium:1096140508625125417> | +| **Color customization** | Change the color of economy embeds and cards. | <:icon_premium:1096140508625125417> | + +::hint{ type="info" } + Features marked with the <:icon_premium:1096140508625125417> symbol are reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. +:: + +## Leaderboard + +You can display the member leaderboard, from the wealthiest to the poorest, in three ways: + +### The /topmoney command + +![Result of the /topmoney command](./assets/economy/bot_topargent.png) + +::hint{ type="success" } + To display a specific number of rows (only the top 3, for instance), pass that number as an argument: \ `number:3`. +:: + +::hint{ type="info" } + If the **"Allow viewing other members' money"** option is disabled, members can only check their own balance with \, and the \ command becomes unavailable to non-administrators. To disable the online leaderboard as well, see the [Online leaderboard](#online-leaderboard) section below. +:: + +### Online leaderboard + +You can open it from the **"View the whole leaderboard"** button of the \ command. + +![Online leaderboard](./assets/economy/panel_classement_web.png) + +::hint{ type="info" } + If you are a server administrator, you can also reach it from the [**panel**](/dashboard/first/economy), in the **Economy** module, through the **"Access to the leaderboard"** button. +:: + +::hint{ type="info" } + If you want to disable the online leaderboard, an option is provided for that on [the panel](/dashboard/first/economy#economy_leaderboards) or through \. +:: + +### Real-time leaderboard + +[Premium](/premium) <:icon_premium:1096140508625125417> servers can set up an automatic member leaderboard in a dedicated channel. + +![Automatic Discord leaderboard](./assets/economy/bot_classement_discord_auto.png) + +::hint{ type="success" } + The message displays up to 25 members and is updated automatically every 10 minutes, only if the leaderboard has changed. +:: + +## Configuring the economy system + +::tabs + ::tab{ label="From the panel" } + + [⫸ Open the **DraftBot** panel](/dashboard/first/economy) + + To enable the module, the first step is to click the button in the top right corner: + + ![Enabling the economy system from the panel](./assets/economy/panel_economy_enable.png) + + Every feature then appears: + + ![Economy module enabled on the panel](./assets/economy/panel_all.png) + + ::hint{type="warning"} + Once your changes are done, remember to save them with the "Save" button at the bottom of the page! + :: + :: + + ::tab{ label="Using the /config command" } + + If you would rather do the whole setup from Discord, you can use the \ command, then go to the "Economy" tab. The menu then looks like this: + + ![Economy module through the /config command](./assets/economy/config_home.png) + + The body of the **message** lets you see the **current state** of your economy system at a glance, while the **buttons** below let you **change its configuration**. + + ::collapse{ label="Status" } + This menu lets you: + - Enable / disable the economy system + - Enable / disable the online leaderboard + - Enable / disable the leaderboard on Discord (<:icon_premium:1096140508625125417>) + + ![The "Status" menu through the /config command](./assets/economy/config_status.png) + + ::hint{ type="success" } + When you enable the leaderboard on Discord, you can either use an existing channel or let DraftBot create one for you. You can even set how many leaderboard rows to display! + :: + :: + + ::collapse{ label="Money" } + This menu lets you: + - Enable / disable / adjust the amount granted per message + - Enable / disable / adjust the amount granted in voice (<:icon_premium:1096140508625125417>) + - Configure the amount claimable every day through the \ command + - Configure the starting money given to new members + - Enable / disable money gain in threads + - Enable / disable money gain in forum posts + - Enable / disable money gain per message in voice channels + - Enable / disable / adjust x2 gains for long messages + - Choose whether the money of members leaving the server is reset to 0 + - Choose whether the money of banned members is reset to 0 + + ![The "Money" menu through the /config command](./assets/economy/config_money.png) + :: + + ::collapse{ label="Limitations & boosts" } + This menu configures different gains depending on a member's role or the channel they post in. You can set: + - which roles have money gain enabled or disabled, + - which channels have money gain enabled or disabled, + - which roles get a multiplier (from x1.5 to x3), + - which channels get a multiplier (from x1.5 to x3). + + ![The "Limitations & boosts" menu through the /config command](./assets/economy/config_limits_boosts.png) + :: + + ::collapse{ label="Customization" } + - Customize the emoji of your currency + - Customize the color of the economy interface (green by default) + + ![The "Customization" menu through the /config command](./assets/economy/config_custom.png) + + ::hint{ type="success" } + When customizing the currency, you can even use your server's custom emojis! + ![Example of a custom currency](./assets/economy/panel_custom_currency.png) + :: + + ::hint{ type="info" } + These features are reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. + :: + :: + :: +:: + +## Configuring shops + +::tabs + ::tab{ label="From the panel" } + + [⫸ Open the **DraftBot** panel](/dashboard/first/economy) + + To create a shop from the [**panel**](/dashboard/first/economy), click the **"Create shop"** button in the "Shop configuration" section: + + ![Shop creation button on the panel](./assets/economy/panel_create_shop.png) + + A window opens to configure your new shop: + + ![Shop creation menu](./assets/economy/panel_shops.png) + + **Shop settings:** + - **Name**: the name of your shop (50 characters maximum) + - **Description**: a description of the shop (500 characters maximum) + - **Style**: choose between **Classic** (a neutral look, suitable for any theme) or **Black Market** (a dark styling with a mysterious tone, ideal for roleplay servers or rare item shops) + + ::hint{ type="info" } + If your server already has shops, they appear at the bottom of the screen, where you can edit or delete them. + :: + :: + + ::tab{ label="Using the /config command" } + Through the \ command, open the "Economy" menu, then "Shop". You will then be able to create, edit or delete shops. + + ![Shop selection menu](./assets/economy/config_shops.png) + + ![The "Shop" menu through the /config command](./assets/economy/config_shop.png) + :: +:: + +::hint{ type="info" } + [Premium](/premium) <:icon_premium:1096140508625125417> servers can create up to 5 shops. +:: + +### Customizing your shop + +Once your shop is created, you can customize it further: + +| Setting | Description | | +|-----------|-------------|--| +| **Emoji** | Add an emoji displayed next to the shop's name | | +| **Description** | Choose a description to build your shop's story | | +| **Style** | Choose between **Classic** or **Black Market** (see the description above) | | +| **Default sorting** | Set the default sort order of the articles | | +| **Access conditions** | Restrict access to the shop: required or forbidden roles, minimum level, etc. | | +| **Color** | Customize the color of the shop interface | <:icon_premium:1096140508625125417> | +| **Banner** | Add a banner image at the top of the shop (800x137px recommended) (10MB max) | <:icon_premium:1096140508625125417> | + +::hint{ type="info" } + Features marked with the <:icon_premium:1096140508625125417> symbol are reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. +:: + +### Creating a shop article + +To add articles to your shop: + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/economy#shops) + + 1. Click the **"Edit"** button of the shop concerned + 2. Click **"Create an article"** + + ![Article creation menu](./assets/economy/panel_create_article.png) + :: + + ::tab{ label="Using the /config command" } + Through the \ command, open the "Economy" menu > "Shop" > "Create / edit / delete an article". + + ![Article management menu through the /config command](./assets/economy/config_articles.png) + :: +:: + +**Information common to every article type:** +- **Type**: the article type (role, temporary role, experience, item, custom) +- **Price**: the cost of the article in server money +- **Description**: a description of the article (1000 characters maximum) +- **Stock**: quantity available (see the [Stock of an article](#stock-of-an-article) section) + +::tabs + ::tab{ label="Role" } + You can let your members obtain roles (temporary or permanent) in exchange for currency. To add a role to the shop, select the article type **"role"** or **"temporary role"** in the article creation menu. + + Then choose: + - The price of the article + - The role to assign + - The description of the article + - The duration of the role *(for a temporary role)* + + ![Role selling menu, temporary (left) and standard (right)](./assets/economy/panel_article_roles.png) + + ::hint{ type="warning" } + The selected role must have been created on your server beforehand, and must be accessible to DraftBot (so it must not sit higher than DraftBot's highest role). + :: + + ::hint{ type="info" } + If a member tries to buy a role they already have, the purchase is refused with an explicit error message. + :: + :: + + ::tab{ label="Experience" } + If the [level system](/docs/engagement/levels) is enabled, you can let your members buy experience points in exchange for currency. To add an amount of XP to the shop, select the article type **"Experience"** in the article creation menu. + + Then choose: + - The price of the article + - The amount of experience to grant + - The description of the article + + ![Experience point selling menu](./assets/economy/panel_article_xp.png) + + ::hint{ type="warning" } + The level system must be **enabled** on your server to use this article type. If you disable it, a warning is displayed at purchase time. + :: + + **Specific behaviors:** + + - **Levelling up**: if buying XP makes the member level up, they automatically receive the configured level rewards and an announcement is sent (if enabled). + - **Level cap**: if a maximum level is set ([premium](/premium) <:icon_premium:1096140508625125417> servers), members who have reached that level can no longer buy XP. + :: + + ::tab{ label="Inventory item" } + You can create fictional items to add to the inventory. To offer inventory items for sale in your shop, select the article type **"An inventory item"** in the article creation menu. + + Then choose: + - The price of the article + - The item to sell + - The number of items granted per purchase + - The description of the article + + ![Inventory item selling menu](./assets/economy/panel_article_item.png) + + ::hint{ type="info" } + If you are not using the inventory yet, discover the feature in the [inventory documentation](/docs/engagement/inventory). + :: + :: + + ::tab{ label="Custom article" } + If you want to let your members buy other articles, such as promotional codes, activation keys, or "real" objects, DraftBot has the answer! + + To add a custom article to the shop, select the article type **"A custom article"** in the article creation menu. + + Then choose: + - The price of the article + - The name of the article + - The description of the article + + ![Custom article selling menu](./assets/economy/panel_article_custom.png) + + ::hint{ type="success" } + **How does it work?** When a member buys this article, **you receive a direct message notification from DraftBot** with the member's details. You can then hand the reward over in person, however you like. + :: + + ::hint{ type="warning" } + Make sure your direct messages are open so you can receive purchase notifications! If your DMs are closed, the member receives an error message at purchase time. + :: + :: +:: + +### Stock of an article + +An article has an unlimited quantity by default. By expanding the "Advanced" menu, [premium](/premium) <:icon_premium:1096140508625125417> servers can set a **limited stock** for each article. Once it runs out, the article can no longer be bought until you restock it manually. + +::hint{ type="info" } + Stock is managed article by article. You can have some articles with unlimited stock and others with a limited quantity in the same shop. +:: + +![Stock configuration option](./assets/economy/panel_stock.png) + +## Managing members' money + +As an administrator, you have several commands to manage members' money: + +| Command | Description | +|----------|-------------| +| \ | Creates a message with a button: the **first member** to click wins the money. You can set a time limit (**10 minutes** maximum). | +| \ | Adds money to a specific member. | +| \ | Adds money to **every member** of the server (asynchronous operation). | +| \ | Adds money to every member holding a **specific role** (asynchronous operation). | +| \ | Removes money from a member. | +| \ | Removes money from **every member** of the server (asynchronous operation). | +| \ | Removes money from every member holding a **specific role** (asynchronous operation). | +| \ | Sets a member's money to an exact amount (replaces their current money). | +| \ | Transfers money from one member to another (the giver loses the transferred money). | +| \ | **Resets all the money on the server**. This action cannot be undone! | + +::hint{ type="info" } + Admin commands can only be used by members of your server holding the **administrator permission**. +:: + +::hint{ type="info" } + **Bulk operations**: commands targeting "every member" or "a role" run **asynchronously**. + A progress message is displayed and updates automatically. You can cancel the operation at any time with the button provided. +:: + +![Using the /dropmoney command](./assets/economy/bot_dropmoney.png) + +## Migrating from UnbelievaBoat + +If you were already using an economy system through UnbelievaBoat, you can import your members' money into DraftBot's economy system! + +The feature is available through the \ command, in the "Economy" tab. + +![Economy import button](./assets/economy/config_import.png) + +After clicking **Import UnbelievaBoat** and confirming that you want to proceed with the import, DraftBot automatically retrieves all of the members' money information. The imported money **replaces** the members' current money in DraftBot. + +::hint{ type="warning" } + Make sure UnbelievaBoat is present on your server at the time of the import! +:: + +::hint{ type="info" } + The import can be run again later if needed, but it will overwrite the DraftBot balances again with the UnbelievaBoat values of the moment. +:: diff --git a/docs/en/3.engagement/2.inventory.md b/docs/en/3.engagement/2.inventory.md new file mode 100644 index 000000000..b11f50a4e --- /dev/null +++ b/docs/en/3.engagement/2.inventory.md @@ -0,0 +1,100 @@ +--- +slug: /engagement/inventory +title: Items & inventories +description: Obtain items through DraftBot's various systems and show them off to other members! +navigation.icon: 'twemoji:magnifying-glass-tilted-right' +contributors: ['draftproducts', 'iibey', 'lepirateytb', 'theorik', 'hunterdivin30', 'rababio4579', 'imroxxor', 'kicoulapic314', 'titoto289'] +updatedAt: '2025-05-26' +sourceHash: 2ca9dccbca691d032e32ce08c6f4b90c01587f3ee142441cc49a03d959bab35e +sourceCommit: a809dd1571737769e8f6f89b0ab8c61c3a1b4a36 +--- + +## Obtaining an item + +There are several ways to obtain an item: + +| Reward | Description | +|------------|-------------| +| **Level rewards** | Configurable through the \ command ➜ "[Levels](/docs/engagement/levels)" or through the web panel | +| **Buying in the shop** | Configurable through the \ command ➜ "[Economy](/docs/engagement/economy)" or through the web panel | +| **Birthday gifts** | Configurable through the \ command ➜ "[Birthdays](/docs/engagement/birthdays)" or through the web panel | +| **Giveaways** | When using the \ command | +| **Trades between members** | With the \ command | +| **The \ and \ commands** | They generate a message where you have to be the fastest to grab the item | + +After choosing the item, two additional optional settings are available: + +- `time` ➜ To set a drop duration between 1 and 10 minutes. +- `channel` ➜ To set the channel where you want to send the drop. + +## Managing a member's inventory + +With the \ command, you can, as an **administrator**, manage the inventory of a member of your Discord server. + +Several options are available: + +| Command | Description | +|----------|-------------| +| \ | Adds an item to a member's inventory | +| \ | Adds an item to **every member** of the server (asynchronous operation) | +| \ | Adds an item to every member holding a **specific role** (asynchronous operation) | +| \ | Deletes an item from the server for good | +| \ | Renames an item in every inventory on the server | +| \ | Merges two inventory items into one | +| \ | Transfers an item, a quantity of an item or a member's whole inventory to another member | +| \ | Removes an item from a member's inventory | +| \ | Removes an item from **every member** of the server (asynchronous operation) | +| \ | Removes an item from every member holding a **specific role** (asynchronous operation) | +| \ | Empties a member's inventory entirely | +| \ | Resets the inventory of every member of the server | + +::hint{ type="info" } + **\**: when adding an item to a member, you can choose between adding an **existing item** or **creating one**. +:: + +::hint{ type="info" } + **Bulk operations**: commands targeting "every member" or "a role" run **asynchronously**. + A progress message is displayed and updates automatically. You can cancel the operation at any time with the button provided. +:: + +## Displaying your inventory + +Server members can access **their own inventory** at any time using the \ command. If the member owns items, they are displayed, and they can also see the money they hold thanks to DraftBot's [economy](/docs/engagement/economy) system. + +![Overview of a member's inventory](./assets/inventory/bot_inventory.png) + +::hint{ type="info" } + You can view another member's inventory by **mentioning** them or by using their **username** after the command. For example: `/inventory member:@Username`. +:: + +## Trading an item + +There are a few ways to trade an item with another member through the \ command, **selecting** the member you want to trade with: + +| Command | Description | +|----------|-------------| +| \ | Gives an item to a member | +| \ | Sells an item to a member | +| \ | Exchanges an item with a member | + +## The /dropitem and /item drop commands + +The \ and \ commands generate a message and grant the item to the first person who clicks the button (**"Recover!"** for \, **"Claim!"** for \) within a set time between 1 and 10 minutes[^1]. +[^1]:By default the drop lasts one minute. + +**What is the difference between the two, though?** + +- \ ➜ Generates a new item to start the drop. +- \ ➜ Gives away an item taken from a member's inventory. + +![Overview of the /item drop command](./assets/inventory/bot_dropitem.png) + +::hint{ type="info" } + In both cases, you can choose the channel where the drop is started and how long it lasts. +:: + +## Checking the server's inventory items + +You can check the items existing on the server with the \ command. A selector at the bottom of the message lets you pick an item and see who owns it and in what quantity. + +![Overview of the /topitems command](./assets/inventory/bot_topitems.png) diff --git a/docs/en/3.engagement/3.birthdays.md b/docs/en/3.engagement/3.birthdays.md new file mode 100644 index 000000000..6a41830c2 --- /dev/null +++ b/docs/en/3.engagement/3.birthdays.md @@ -0,0 +1,213 @@ +--- +slug: /engagement/birthdays +title: Birthdays +description: With DraftBot, you can enter your birth date and offer rewards to the members of your server celebrating their birthday! +navigation.icon: 'twemoji:birthday-cake' +redactors: ['titoto289'] +contributors: ['kazotka', 'theorik', 'elbaguetto', 'imroxxor', 'rababio4579'] +updatedAt: '2025-04-07' +sourceHash: 9eb460cb786ffde8566de07ee622d833ca67f217a281a21d5a38b08660f1d6bf +sourceCommit: a809dd1571737769e8f6f89b0ab8c61c3a1b4a36 +--- + +## Overview + +The birthday system lets members share their birthday easily. With it, you can give them special attention to celebrate that day. +![Example of a birthday announcement](./assets/birthdays/bot_announce.png) + +## Your birthday + +You can set your birthday through [the **DraftBot** panel](/dashboard/user/profil) or with the \ command. Put your birth date in the `Date` argument. + +![Example of the birthday command](./assets/birthdays/bot_birthday_set.png) + +You can also see the list of the next ten birthdays set on the server with the \ command. + +::hint{ type="warning" } + Note that changing the day or the month of your birth date triggers a progressive waiting time before the next change. + + - 1st change: 1 day + - 2nd: 2 days + - 3rd: 6 months + - 4th and beyond: 1 year +:: + +## Changing the visibility of your birthday + +With the \ and \ commands, you can turn the visibility of your birthday on or off, **server by server**. You can also change these settings from the panel, in the [profile](/dashboard/user/profil) section. + +![Confirmation message of the /birthday enable command](./assets/birthdays/bot_birthday_confirm.png) + +::hint{ type="info" } + You can disable the visibility of your birthday on every server with the \ command. +:: + +## Configuration + +### Birthday mode + +Before setting up birthdays on your server, you have to choose the mode you want to use. + +| Public mode | Private mode | +|-------------|------------| +| Birthdays are the same as those in the global database | The birthdays that are set are only available on your server | +| Requires a single setup for the user | Lets the user set a birth date only on your server | +| You cannot control members' birthdays | You can delete, edit or add a member's birthday on your server | +| More reliable for granting rewards | Better suited to a roleplay server where dates are fictional | + +Once your mode is selected, you can start configuring the system. + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/birthdays) + + ![You can choose the mode at the top of the panel's birthday page](./assets/birthdays/panel_mode.png) + :: + + ::tab{ label="Using the /config command" } + ![You can choose the mode by pressing the "Birthday mode" button, then picking the mode](./assets/birthdays/config_mode.png) + :: +:: + +### Announcement messages + +When one of your members has their birthday, you can send an announcement in a chosen channel. + +You need to set the following: +- **Sending channel:** choose the text channel where the announcement is sent +- **Sending time:** choose the time at which the message is sent +- **Role to mention:** you can choose a role to mention in the announcement +- **Allowed / forbidden roles:** you can decide which roles can trigger the announcement +- **Custom message:** you can write a custom message for the announcement. + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/birthdays) + + ![Configure all of these settings on the panel by enabling the announcement message](./assets/birthdays/panel_announces.png) + :: + + ::tab{ label="Using the /config command" } + ![Configure all of these settings by pressing the announcement button once the config command has been run](./assets/birthdays/config_announces.png) + :: +:: + +You can customize your message with several variables: + +| Variable | Description | Example | +|----------|-------------|---------| +| `{user}` | Member(s) celebrating their birthday | @John, @Jane | +| `{role}` | Temporary birthday role | @Birthday | +| `{gifts}` | Rewards granted | 500 💰, VIP role | + +*In addition to the [other variables](/docs/misc/variables) already available globally!* + +### Temporary role + +You can choose to grant a role, for the day, to the member celebrating their birthday. To do so, select the role to grant. You can also set which roles can or cannot receive the **temporary role**. + +::hint{ type="info" } + If you do not want any restriction, do not select any role and check that the word `forbidden` is in bold +:: + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/birthdays) + + ![Set here the role to grant to members celebrating their birthday](./assets/birthdays/panel_birthday_role.png) + :: + + ::tab{ label="Using the /config command" } + ![Set here the role to grant to members celebrating their birthday by pressing the role button once the config command has been run](./assets/birthdays/config_birthday_role.png) + :: +:: + +### Birthday gift + +You can choose a gift to grant to members celebrating their birthday. Here are the gifts you can offer: + +::tabs + ::tab{ label="Role" } + You can offer roles to your members. To add a role to the gifts, select the **"Role"** type. + + Then choose the role to offer. + + ::hint{ type="warning" } + The selected role must have been created on your server beforehand, and must be accessible to DraftBot (so it must not sit higher than DraftBot's highest role). + :: + :: + + ::tab{ label="Experience"} + If the [level system](/docs/engagement/levels) is enabled, you can offer experience to your members. To add experience to the gifts, select the **"Experience"** type. + + Then choose the amount of experience to offer. + :: + + ::tab{ label="Money" } + If the [economy system](/docs/engagement/economy) is enabled, you can add a fictional amount of money to the gifts. To add an amount of money to the gifts, select the **"Money"** type. + + Then choose the amount of money to offer. + :: + + ::tab{ label="Inventory item" } + You can offer fictional items to your members. To offer inventory items as gifts, select the **"Inventory item"** type. + + Then choose: + - The item to offer + - The number of items to grant + :: + + ::tab{ label="Custom gift" } + If you want to offer your members something else, such as promotional codes, digital activation keys, or "real" objects, DraftBot has the answer! + + To add a custom gift, select the **"Custom gift"** type. + + Then choose the name of the article. + + ::hint{ type="success" } + When a member receives this gift, DraftBot notifies you in your direct messages, so you can hand it over in person. + :: + :: +:: + +::hint{ type="info" } + You can offer up to 2 birthday gifts. [Premium](/premium) <:icon_premium:1096140508625125417> servers can go up to 5. +:: + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/birthdays) + + ![Create your gifts by clicking "Create a gift"](./assets/birthdays/panel_gifts.png) + :: + + ::tab{ label="Using the /config command" } + ![Create your gifts by clicking the "Gifts" button once the config command has been run](./assets/birthdays/config_gifts.png) + :: +:: + +### Targeted birthday messages + +You can also set a more personal message for certain roles or members. +In the `Custom announcements` section, choose the role or member concerned as well as the sending channel. You can then write your message. You can also choose whether the members concerned by this announcement will be able to see it in advance if they have the Administrator permission. + +::hint{ type="info" } + The sending time is the same as for the other announcements +:: + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/birthdays) + + ![Configure your custom announcements at the bottom of the birthday page](./assets/birthdays/panel_targets_announces.png) + :: + + ::tab{ label="Using the /config command" } + ![Configure your custom announcements by pressing the custom announcements button once the config command has been run](./assets/birthdays/config_targets_announces.png) + :: +:: + +::hint{ type="info" } + This feature is reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. +:: + diff --git a/docs/en/3.engagement/4.word-reactions.md b/docs/en/3.engagement/4.word-reactions.md new file mode 100644 index 000000000..8da6ec296 --- /dev/null +++ b/docs/en/3.engagement/4.word-reactions.md @@ -0,0 +1,118 @@ +--- +slug: /engagement/word-reactions +title: Word reactions +description: Have DraftBot react to your messages so you never feel alone again. +navigation.icon: 'twemoji:eyes' +contributors: ['titoto289', 'tellvex', 'wapiti13', 'theorik', 'kicoulapic314', 'rababio4579', 'clement669'] +updatedAt: '2025-03-23' +sourceHash: 3a2309accaa6a272b41b1f60d2fc18474890f17078c00ca5faf0f5493e67e860 +sourceCommit: a809dd1571737769e8f6f89b0ab8c61c3a1b4a36 +--- + +## What is it for? + +The word reactions system lets **DraftBot** react to messages beginning with a predefined word, using one or more chosen reactions. Here is a preview of the message: + +![Overview of the system](./assets/word-reactions/bot_example.png) + +::hint{ type="info" } + The bot only reacts when the word is at the **beginning of the sentence**. +:: + +## Configuration + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/words-reactions) + + ![Overview of the panel](./assets/word-reactions/panel_view.png) + + ### Enabling / disabling the system + + You can enable or disable the word reactions system with a button in the top right corner of the page. + + ### Adding a word reaction + + You can add a word reaction by putting an **emoji** in the emoji field and the word concerned in the "Please enter a sentence beginning" field. You can then "Add" the word reaction. + + ::hint{ type="warning" } + You cannot add an emoji coming from another server. + :: + + ::hint{ type="info" } + You can set up a reaction for 10 words. [Premium](/premium) <:icon_premium:1096140508625125417> servers can have up to 5 reactions for the same word, and have no limit on the number of words. + :: + + ### Editing a word reaction + + To edit a word reaction, click the "Edit" button of the word reaction concerned. The fields at the top are pre-filled: you can change the emoji and the word there. Click "Replace" for the change to be applied. + + ### Restricting reactions + + ![Role restriction](./assets/word-reactions/panel_roles_restrict.png) + You can decide which roles and/or channels DraftBot will not react to. + + ::hint{ type="info" } + You can also choose to let only certain roles trigger the bot's reactions. + :: + + ### Deleting a word reaction + + To delete a word reaction, click the "Delete" button of the word reaction concerned. + + ::hint{ type="info" } + Deletion cannot be undone, but a confirmation is requested. + > The message in question: "Warning, you have unsaved changes!". + :: + :: + + ::tab{ label="Using the /config command" } + > Below is the word reactions configuration through the \ command. + + ### Enabling the word reactions system + + ![Configuration through /config](./assets/word-reactions/config_view.png) + + To enable the word reactions system, go to the "👀 Word reactions" system, then click "Enable the system". + + ::hint{ type="info" } + To disable the system, follow the same steps: click the "Enable the system" button, which will have become "Disable the system". + :: + + ### Adding word reactions + + To add a reaction to a word, click the "Add" button. You will then get the message below: + + ![Overview of the message](./assets/word-reactions/config_creation_question.png) + + ::hint{ type="warning" } + You cannot add an emoji coming from another server. + :: + + ::hint{ type="info" } + You can set up a reaction for 10 words. [Premium](/premium) <:icon_premium:1096140508625125417> servers can have up to 5 reactions for the same word, and have no limit on the number of words. + :: + + ### Deleting word reactions + + If you want to delete a specific reaction, click the "Remove" button. A selector is displayed, letting you choose the word reaction to delete. + + ### Listing word reactions + + You can see the word reactions on your server from the word reactions configuration tab. You will then get a list with all of your word reactions. + + ### Restricting reactions + + You can decide which roles and/or channels DraftBot will not react to. + + ### Resetting the system + + If you want to delete **every** word reaction, click the "Reset" button. + + ::hint{ type="danger" } + A reset cannot be undone! Once done, it restores the three default word reactions, namely "hey", "coucou" and "salut" with the "👋" reaction. + :: + :: +:: + + diff --git a/docs/en/3.engagement/_dir.yml b/docs/en/3.engagement/_dir.yml new file mode 100644 index 000000000..00f069f4d --- /dev/null +++ b/docs/en/3.engagement/_dir.yml @@ -0,0 +1,4 @@ +slug: /engagement/_dir +title: Engagement +description: The systems that reward your members' participation over time. +navigation.icon: 'twemoji:chart-increasing' diff --git a/docs/assets/anniversaires/bot_announce.png b/docs/en/3.engagement/assets/birthdays/bot_announce.png similarity index 100% rename from docs/assets/anniversaires/bot_announce.png rename to docs/en/3.engagement/assets/birthdays/bot_announce.png diff --git a/docs/assets/anniversaires/bot_birthday_confirm.png b/docs/en/3.engagement/assets/birthdays/bot_birthday_confirm.png similarity index 100% rename from docs/assets/anniversaires/bot_birthday_confirm.png rename to docs/en/3.engagement/assets/birthdays/bot_birthday_confirm.png diff --git a/docs/assets/anniversaires/bot_birthday_set.png b/docs/en/3.engagement/assets/birthdays/bot_birthday_set.png similarity index 100% rename from docs/assets/anniversaires/bot_birthday_set.png rename to docs/en/3.engagement/assets/birthdays/bot_birthday_set.png diff --git a/docs/assets/anniversaires/config_announces.png b/docs/en/3.engagement/assets/birthdays/config_announces.png similarity index 100% rename from docs/assets/anniversaires/config_announces.png rename to docs/en/3.engagement/assets/birthdays/config_announces.png diff --git a/docs/assets/anniversaires/config_birthday_role.png b/docs/en/3.engagement/assets/birthdays/config_birthday_role.png similarity index 100% rename from docs/assets/anniversaires/config_birthday_role.png rename to docs/en/3.engagement/assets/birthdays/config_birthday_role.png diff --git a/docs/assets/anniversaires/config_gifts.png b/docs/en/3.engagement/assets/birthdays/config_gifts.png similarity index 100% rename from docs/assets/anniversaires/config_gifts.png rename to docs/en/3.engagement/assets/birthdays/config_gifts.png diff --git a/docs/assets/anniversaires/config_mode.png b/docs/en/3.engagement/assets/birthdays/config_mode.png similarity index 100% rename from docs/assets/anniversaires/config_mode.png rename to docs/en/3.engagement/assets/birthdays/config_mode.png diff --git a/docs/assets/anniversaires/config_targets_announces.png b/docs/en/3.engagement/assets/birthdays/config_targets_announces.png similarity index 100% rename from docs/assets/anniversaires/config_targets_announces.png rename to docs/en/3.engagement/assets/birthdays/config_targets_announces.png diff --git a/docs/assets/anniversaires/panel_announces.png b/docs/en/3.engagement/assets/birthdays/panel_announces.png similarity index 100% rename from docs/assets/anniversaires/panel_announces.png rename to docs/en/3.engagement/assets/birthdays/panel_announces.png diff --git a/docs/assets/anniversaires/panel_birthday_role.png b/docs/en/3.engagement/assets/birthdays/panel_birthday_role.png similarity index 100% rename from docs/assets/anniversaires/panel_birthday_role.png rename to docs/en/3.engagement/assets/birthdays/panel_birthday_role.png diff --git a/docs/assets/anniversaires/panel_gifts.png b/docs/en/3.engagement/assets/birthdays/panel_gifts.png similarity index 100% rename from docs/assets/anniversaires/panel_gifts.png rename to docs/en/3.engagement/assets/birthdays/panel_gifts.png diff --git a/docs/assets/anniversaires/panel_mode.png b/docs/en/3.engagement/assets/birthdays/panel_mode.png similarity index 100% rename from docs/assets/anniversaires/panel_mode.png rename to docs/en/3.engagement/assets/birthdays/panel_mode.png diff --git a/docs/assets/anniversaires/panel_targets_announces.png b/docs/en/3.engagement/assets/birthdays/panel_targets_announces.png similarity index 100% rename from docs/assets/anniversaires/panel_targets_announces.png rename to docs/en/3.engagement/assets/birthdays/panel_targets_announces.png diff --git a/docs/assets/economie/bot_classement_discord_auto.png b/docs/en/3.engagement/assets/economy/bot_classement_discord_auto.png similarity index 100% rename from docs/assets/economie/bot_classement_discord_auto.png rename to docs/en/3.engagement/assets/economy/bot_classement_discord_auto.png diff --git a/docs/assets/economie/bot_dropmoney.png b/docs/en/3.engagement/assets/economy/bot_dropmoney.png similarity index 100% rename from docs/assets/economie/bot_dropmoney.png rename to docs/en/3.engagement/assets/economy/bot_dropmoney.png diff --git a/docs/assets/economie/bot_money.png b/docs/en/3.engagement/assets/economy/bot_money.png similarity index 100% rename from docs/assets/economie/bot_money.png rename to docs/en/3.engagement/assets/economy/bot_money.png diff --git a/docs/assets/economie/bot_shops.png b/docs/en/3.engagement/assets/economy/bot_shops.png similarity index 100% rename from docs/assets/economie/bot_shops.png rename to docs/en/3.engagement/assets/economy/bot_shops.png diff --git a/docs/assets/economie/bot_topargent.png b/docs/en/3.engagement/assets/economy/bot_topargent.png similarity index 100% rename from docs/assets/economie/bot_topargent.png rename to docs/en/3.engagement/assets/economy/bot_topargent.png diff --git a/docs/assets/economie/config_articles.png b/docs/en/3.engagement/assets/economy/config_articles.png similarity index 100% rename from docs/assets/economie/config_articles.png rename to docs/en/3.engagement/assets/economy/config_articles.png diff --git a/docs/assets/economie/config_custom.png b/docs/en/3.engagement/assets/economy/config_custom.png similarity index 100% rename from docs/assets/economie/config_custom.png rename to docs/en/3.engagement/assets/economy/config_custom.png diff --git a/docs/assets/economie/config_home.png b/docs/en/3.engagement/assets/economy/config_home.png similarity index 100% rename from docs/assets/economie/config_home.png rename to docs/en/3.engagement/assets/economy/config_home.png diff --git a/docs/assets/economie/config_import.png b/docs/en/3.engagement/assets/economy/config_import.png similarity index 100% rename from docs/assets/economie/config_import.png rename to docs/en/3.engagement/assets/economy/config_import.png diff --git a/docs/assets/economie/config_limits_boosts.png b/docs/en/3.engagement/assets/economy/config_limits_boosts.png similarity index 100% rename from docs/assets/economie/config_limits_boosts.png rename to docs/en/3.engagement/assets/economy/config_limits_boosts.png diff --git a/docs/assets/economie/config_money.png b/docs/en/3.engagement/assets/economy/config_money.png similarity index 100% rename from docs/assets/economie/config_money.png rename to docs/en/3.engagement/assets/economy/config_money.png diff --git a/docs/assets/economie/config_shop.png b/docs/en/3.engagement/assets/economy/config_shop.png similarity index 100% rename from docs/assets/economie/config_shop.png rename to docs/en/3.engagement/assets/economy/config_shop.png diff --git a/docs/assets/economie/config_shops.png b/docs/en/3.engagement/assets/economy/config_shops.png similarity index 100% rename from docs/assets/economie/config_shops.png rename to docs/en/3.engagement/assets/economy/config_shops.png diff --git a/docs/assets/economie/config_status.png b/docs/en/3.engagement/assets/economy/config_status.png similarity index 100% rename from docs/assets/economie/config_status.png rename to docs/en/3.engagement/assets/economy/config_status.png diff --git a/docs/assets/economie/panel_all.png b/docs/en/3.engagement/assets/economy/panel_all.png similarity index 100% rename from docs/assets/economie/panel_all.png rename to docs/en/3.engagement/assets/economy/panel_all.png diff --git a/docs/assets/economie/panel_article_custom.png b/docs/en/3.engagement/assets/economy/panel_article_custom.png similarity index 100% rename from docs/assets/economie/panel_article_custom.png rename to docs/en/3.engagement/assets/economy/panel_article_custom.png diff --git a/docs/assets/economie/panel_article_item.png b/docs/en/3.engagement/assets/economy/panel_article_item.png similarity index 100% rename from docs/assets/economie/panel_article_item.png rename to docs/en/3.engagement/assets/economy/panel_article_item.png diff --git a/docs/assets/economie/panel_article_roles.png b/docs/en/3.engagement/assets/economy/panel_article_roles.png similarity index 100% rename from docs/assets/economie/panel_article_roles.png rename to docs/en/3.engagement/assets/economy/panel_article_roles.png diff --git a/docs/assets/economie/panel_article_xp.png b/docs/en/3.engagement/assets/economy/panel_article_xp.png similarity index 100% rename from docs/assets/economie/panel_article_xp.png rename to docs/en/3.engagement/assets/economy/panel_article_xp.png diff --git a/docs/assets/economie/panel_classement_web.png b/docs/en/3.engagement/assets/economy/panel_classement_web.png similarity index 100% rename from docs/assets/economie/panel_classement_web.png rename to docs/en/3.engagement/assets/economy/panel_classement_web.png diff --git a/docs/assets/economie/panel_create_article.png b/docs/en/3.engagement/assets/economy/panel_create_article.png similarity index 100% rename from docs/assets/economie/panel_create_article.png rename to docs/en/3.engagement/assets/economy/panel_create_article.png diff --git a/docs/assets/economie/panel_create_shop.png b/docs/en/3.engagement/assets/economy/panel_create_shop.png similarity index 100% rename from docs/assets/economie/panel_create_shop.png rename to docs/en/3.engagement/assets/economy/panel_create_shop.png diff --git a/docs/assets/economie/panel_custom_currency.png b/docs/en/3.engagement/assets/economy/panel_custom_currency.png similarity index 100% rename from docs/assets/economie/panel_custom_currency.png rename to docs/en/3.engagement/assets/economy/panel_custom_currency.png diff --git a/docs/assets/economie/panel_economy_enable.png b/docs/en/3.engagement/assets/economy/panel_economy_enable.png similarity index 100% rename from docs/assets/economie/panel_economy_enable.png rename to docs/en/3.engagement/assets/economy/panel_economy_enable.png diff --git a/docs/assets/economie/panel_shops.png b/docs/en/3.engagement/assets/economy/panel_shops.png similarity index 100% rename from docs/assets/economie/panel_shops.png rename to docs/en/3.engagement/assets/economy/panel_shops.png diff --git a/docs/assets/economie/panel_stock.png b/docs/en/3.engagement/assets/economy/panel_stock.png similarity index 100% rename from docs/assets/economie/panel_stock.png rename to docs/en/3.engagement/assets/economy/panel_stock.png diff --git a/docs/assets/inventaire/bot_dropitem.png b/docs/en/3.engagement/assets/inventory/bot_dropitem.png similarity index 100% rename from docs/assets/inventaire/bot_dropitem.png rename to docs/en/3.engagement/assets/inventory/bot_dropitem.png diff --git a/docs/assets/inventaire/bot_inventory.png b/docs/en/3.engagement/assets/inventory/bot_inventory.png similarity index 100% rename from docs/assets/inventaire/bot_inventory.png rename to docs/en/3.engagement/assets/inventory/bot_inventory.png diff --git a/docs/assets/inventaire/bot_topitems.png b/docs/en/3.engagement/assets/inventory/bot_topitems.png similarity index 100% rename from docs/assets/inventaire/bot_topitems.png rename to docs/en/3.engagement/assets/inventory/bot_topitems.png diff --git a/docs/assets/niveaux/bot_experience_table.png b/docs/en/3.engagement/assets/levels/bot_experience_table.png similarity index 100% rename from docs/assets/niveaux/bot_experience_table.png rename to docs/en/3.engagement/assets/levels/bot_experience_table.png diff --git a/docs/assets/niveaux/bot_leaderboard_auto.png b/docs/en/3.engagement/assets/levels/bot_leaderboard_auto.png similarity index 100% rename from docs/assets/niveaux/bot_leaderboard_auto.png rename to docs/en/3.engagement/assets/levels/bot_leaderboard_auto.png diff --git a/docs/assets/niveaux/bot_level_card.png b/docs/en/3.engagement/assets/levels/bot_level_card.png similarity index 100% rename from docs/assets/niveaux/bot_level_card.png rename to docs/en/3.engagement/assets/levels/bot_level_card.png diff --git a/docs/assets/niveaux/bot_new_level_notif.png b/docs/en/3.engagement/assets/levels/bot_new_level_notif.png similarity index 100% rename from docs/assets/niveaux/bot_new_level_notif.png rename to docs/en/3.engagement/assets/levels/bot_new_level_notif.png diff --git a/docs/assets/niveaux/bot_rewards.png b/docs/en/3.engagement/assets/levels/bot_rewards.png similarity index 100% rename from docs/assets/niveaux/bot_rewards.png rename to docs/en/3.engagement/assets/levels/bot_rewards.png diff --git a/docs/assets/niveaux/bot_toplevel.png b/docs/en/3.engagement/assets/levels/bot_toplevel.png similarity index 100% rename from docs/assets/niveaux/bot_toplevel.png rename to docs/en/3.engagement/assets/levels/bot_toplevel.png diff --git a/docs/assets/niveaux/config_customization.png b/docs/en/3.engagement/assets/levels/config_customization.png similarity index 100% rename from docs/assets/niveaux/config_customization.png rename to docs/en/3.engagement/assets/levels/config_customization.png diff --git a/docs/assets/niveaux/config_experience.png b/docs/en/3.engagement/assets/levels/config_experience.png similarity index 100% rename from docs/assets/niveaux/config_experience.png rename to docs/en/3.engagement/assets/levels/config_experience.png diff --git a/docs/assets/niveaux/config_home.png b/docs/en/3.engagement/assets/levels/config_home.png similarity index 100% rename from docs/assets/niveaux/config_home.png rename to docs/en/3.engagement/assets/levels/config_home.png diff --git a/docs/assets/niveaux/config_import.png b/docs/en/3.engagement/assets/levels/config_import.png similarity index 100% rename from docs/assets/niveaux/config_import.png rename to docs/en/3.engagement/assets/levels/config_import.png diff --git a/docs/assets/niveaux/config_limits_boosts.png b/docs/en/3.engagement/assets/levels/config_limits_boosts.png similarity index 100% rename from docs/assets/niveaux/config_limits_boosts.png rename to docs/en/3.engagement/assets/levels/config_limits_boosts.png diff --git a/docs/assets/niveaux/config_notifs.png b/docs/en/3.engagement/assets/levels/config_notifs.png similarity index 100% rename from docs/assets/niveaux/config_notifs.png rename to docs/en/3.engagement/assets/levels/config_notifs.png diff --git a/docs/assets/niveaux/config_rewards.png b/docs/en/3.engagement/assets/levels/config_rewards.png similarity index 100% rename from docs/assets/niveaux/config_rewards.png rename to docs/en/3.engagement/assets/levels/config_rewards.png diff --git a/docs/assets/niveaux/config_status.png b/docs/en/3.engagement/assets/levels/config_status.png similarity index 100% rename from docs/assets/niveaux/config_status.png rename to docs/en/3.engagement/assets/levels/config_status.png diff --git a/docs/assets/niveaux/panel_create_reward.png b/docs/en/3.engagement/assets/levels/panel_create_reward.png similarity index 100% rename from docs/assets/niveaux/panel_create_reward.png rename to docs/en/3.engagement/assets/levels/panel_create_reward.png diff --git a/docs/assets/niveaux/panel_enable.png b/docs/en/3.engagement/assets/levels/panel_enable.png similarity index 100% rename from docs/assets/niveaux/panel_enable.png rename to docs/en/3.engagement/assets/levels/panel_enable.png diff --git a/docs/assets/niveaux/panel_home.png b/docs/en/3.engagement/assets/levels/panel_home.png similarity index 100% rename from docs/assets/niveaux/panel_home.png rename to docs/en/3.engagement/assets/levels/panel_home.png diff --git a/docs/assets/niveaux/panel_leaderboard.png b/docs/en/3.engagement/assets/levels/panel_leaderboard.png similarity index 100% rename from docs/assets/niveaux/panel_leaderboard.png rename to docs/en/3.engagement/assets/levels/panel_leaderboard.png diff --git a/docs/assets/niveaux/panel_rewards.png b/docs/en/3.engagement/assets/levels/panel_rewards.png similarity index 100% rename from docs/assets/niveaux/panel_rewards.png rename to docs/en/3.engagement/assets/levels/panel_rewards.png diff --git a/docs/assets/niveaux/panel_rewards_notifs.png b/docs/en/3.engagement/assets/levels/panel_rewards_notifs.png similarity index 100% rename from docs/assets/niveaux/panel_rewards_notifs.png rename to docs/en/3.engagement/assets/levels/panel_rewards_notifs.png diff --git a/docs/assets/reactions-de-mots/bot_example.png b/docs/en/3.engagement/assets/word-reactions/bot_example.png similarity index 100% rename from docs/assets/reactions-de-mots/bot_example.png rename to docs/en/3.engagement/assets/word-reactions/bot_example.png diff --git a/docs/assets/reactions-de-mots/config_creation_question.png b/docs/en/3.engagement/assets/word-reactions/config_creation_question.png similarity index 100% rename from docs/assets/reactions-de-mots/config_creation_question.png rename to docs/en/3.engagement/assets/word-reactions/config_creation_question.png diff --git a/docs/assets/reactions-de-mots/config_view.png b/docs/en/3.engagement/assets/word-reactions/config_view.png similarity index 100% rename from docs/assets/reactions-de-mots/config_view.png rename to docs/en/3.engagement/assets/word-reactions/config_view.png diff --git a/docs/assets/reactions-de-mots/panel_roles_restrict.png b/docs/en/3.engagement/assets/word-reactions/panel_roles_restrict.png similarity index 100% rename from docs/assets/reactions-de-mots/panel_roles_restrict.png rename to docs/en/3.engagement/assets/word-reactions/panel_roles_restrict.png diff --git a/docs/assets/reactions-de-mots/panel_view.png b/docs/en/3.engagement/assets/word-reactions/panel_view.png similarity index 100% rename from docs/assets/reactions-de-mots/panel_view.png rename to docs/en/3.engagement/assets/word-reactions/panel_view.png diff --git a/docs/en/4.games-and-events/0.giveaways.md b/docs/en/4.games-and-events/0.giveaways.md new file mode 100644 index 000000000..29fcb3fa6 --- /dev/null +++ b/docs/en/4.games-and-events/0.giveaways.md @@ -0,0 +1,295 @@ +--- +slug: /games-and-events/giveaways +title: Giveaways +description: Run giveaways to let your members win great rewards! +navigation.icon: 'twemoji:party-popper' +redactors: ['erwangit'] +contributors: ['kicoulapic314', 'imroxxor', 'draftproducts', 'rababio4579'] +updatedAt: '2026-01-18' +sourceHash: 78a2d595228026286c1a4e11761f943290b4cdd8139f682578f8b0802675a6ce +sourceCommit: ccbf4bc22357d1e23a47428ad4776ecacf5c2143 +--- + +## Overview + +The giveaways feature lets you run prize draws and offer rewards to the members of your server who take part. + +![Example of a giveaway with a custom reward](./assets/giveaways/preview_giveaway.png) + +For each giveaway, you can offer one of these rewards: +- Experience in the [levels](/docs/engagement/levels) system. +- Money in the [economy](/docs/engagement/economy) system. +- An item from the [inventory](/docs/engagement/inventory) system. +- A role (temporary or not). +- A custom reward. + +## Interacting with a giveaway + +### Entering + +You can enter an ongoing giveaway by clicking the "**Enter**" button below its details. + +![Example of an ongoing giveaway](./assets/giveaways/simple_giveaway.png) + +Your entry is then counted for the draw at the end of the giveaway. + +::hint{ type="info" } + We do not currently offer any feature letting a member enter a giveaway several times. + + Every participant in a giveaway therefore has the same chance of winning. +:: + +### Leaving + +If you have joined a giveaway but no longer want to take part before it ends, you can click the "**Enter**" button again. + +A confirmation is then requested: click the "**Leave**" button to confirm. + +![Leaving confirmation request](./assets/giveaways/confirm_desinscription.png) + +::hint{ type="warning" } + If a collection condition (role, money or item) is set on the giveaway and you decide to leave, the collected element is not given back to you. +:: + +### Viewing the participants + +If the giveaway's creator allowed it, you can see the list of participants by clicking the giveaway's "**Participants**" button. + +![Interface showing the participants of a giveaway](./assets/giveaways/giveaway_participants_member.png) + +The interface is split into pages depending on the number of participants. You can then click the "**Previous**" or "**Next**" buttons, or choose the page number with the "**Page**" button. + +::hint{ type="info" } + If you are an administrator, you also have access to the "**Remove**" button, which deletes a member's entry. More information in the [dedicated section](#removing-a-participant). +:: + +## Access to the /giveaway command + +The \ command requires the **Administrator** permission by default. + +You can, however, open this command to certain roles or members, regardless of their permissions on the server. + +To do so, you can find more information on this documentation page: + +::card +--- +title: Managing command permissions +icon: material-symbols:build +to: /docs/installation#configuring-commands +target: _blank +color: '#cd6e57' +--- + Configure slash command permissions on your server. +:: + +## Creating a giveaway + +You can create a giveaway using the \ command, filling in the command's options: + +| Option | Description | Required | +|--------|-------------|-------------| +| `type` | The [type of reward](#overview). | ✅ Yes | +| `duration` | The duration of the giveaway, between one minute and one month (e.g. 2h, 7d) or a date (e.g. tomorrow at 5pm). | ✅ Yes | +| `winners` | The number of winners, between 1 and 10 (up to 50 for [premium](/premium) <:icon_premium:1096140508625125417> servers). | ✅ Yes | +| `title` | The title of the giveaway. | ❌ No | +| `channel` | The text channel where the giveaway is sent. | ❌ No (the command's channel by default) | + +::hint{ type="info" } + You can run up to 3 giveaways at the same time. [Premium](/premium) <:icon_premium:1096140508625125417> servers have no limit. +:: + +Once the \ command has been run, you are asked for the giveaway's reward: + +![Input form for a role reward](./assets/giveaways/modal_reward_role.png) + +### Previewing the giveaway + +Once the reward has been set, a preview of the giveaway is displayed. It lets you configure and edit it before publishing. + +![Preview and configuration interface of a giveaway](./assets/giveaways/giveaway_config.png) + +### Configuring the options + +From the preview interface, you can configure options with the buttons available as well as the "Configure advanced options…" selector. + +Every option is detailed in the [dedicated section](#giveaway-options). + +### Publishing the giveaway + +When you want to publish it, click the "**Launch the giveaway**" button. + +::hint{ type="info" } + Once the giveaway is over, the creator receives a direct message from <@DraftBot> telling them who won and reminding them of the reward. +:: + +## Giveaway options + +### Title and description + +You can set a title that is used in the giveaway message as well as in the messages sent to team members (end message, logs, etc.). + +::hint{ type="info" } + If no title is set, the name of the reward is used to name the giveaway. +:: + +You can also set a description to describe your reward to the participants. + +![Giveaway with a custom title and description](./assets/giveaways/giveaway_description_title.png) + +### Duration + +The duration is the **time given to members** to enter a giveaway. + +You can specify: +- either a duration, such as `1h`, `7 days` or `2 weeks` +- or a date, such as `tomorrow at 8pm` or `20/01 at 10am`. + +::hint{ type="info" } + The duration of the giveaway must be between one minute and one month. +:: + +### Reward + +You can select **one of these rewards** for a giveaway: + +- Experience in the [levels](/docs/engagement/levels) system. +- Money in the [economy](/docs/engagement/economy) system. +- An item from the [inventory](/docs/engagement/inventory) system. +- A role (temporary or not). +- A custom reward. + +### Winners + +You have to set the number of winners for your reward. + +::hint{ type="info" } + You can choose up to 10 winners. [Premium](/premium) <:icon_premium:1096140508625125417> servers can go up to 50 winners. +:: + +### Channel + +You have to set a text channel to send the giveaway to. You can either use an existing channel or create a dedicated one. + +::hint{ type="info" } + By default, the channel used is the one where the \ command is run. +:: + +#### Selecting an existing channel + +You can select an existing channel with the channel selector. + +![Selecting an existing channel](./assets/giveaways/exist_channel_choose.png) + +::hint{ type="warning" } + The giveaway's creator and <@DraftBot> must have the **Send Messages** and **View Channel** permissions. <@DraftBot> must also have the **Embed Links** permission. +:: + +#### Creating a channel at publication time + +::hint{ type="warning" } + You need the **Manage Channels** permission to create a channel this way. +:: + +You can ask <@DraftBot> to create a dedicated channel at publication time by clicking the "New dedicated channel" button. You can then set a custom name and its category. + +![Creating a channel when publishing the giveaway](./assets/giveaways/create_new_channel.png) + +### Host + +The host tells participants which member is offering the reward. + +![Giveaway with a host set](./assets/giveaways/giveaway_with_host.png) + +::hint{ type="warning" } + The host must be present on the server at configuration time to be selected. +:: + +::hint{ type="info" } + The host's username is only displayed on the message and has no other effect on the giveaway. +:: + +### Condition + +You can set an access condition to enter the giveaway: + +| Condition | Description | +|-----------|-------------| +| [Item](/docs/engagement/inventory) | Owning an item, which can optionally be taken away. | +| [Level](/docs/engagement/levels) | Minimum or maximum level required. | +| [Money](/docs/engagement/economy) | Minimum or maximum amount of money required, which can optionally be charged. | +| Roles | Holding (or not) one or more roles, which can optionally be taken away. | + +::hint{ type="warning" } + If an element (item, level or roles) is taken away to enter, it is not given back if the member [leaves](#leaving) or does not win the giveaway. +:: + +### Images + +You can add a thumbnail as well as a main image to your giveaway to brighten it up. + +![Giveaway with an image and a thumbnail (top right) set](./assets/giveaways/giveaway_image_thumbnail.png) + +### Mentions + +You can set roles to be notified when the giveaway is published. + +![Giveaway with two mentioned roles](./assets/giveaways/giveaway_with_mentions.png) + +::hint{ type="info" } + - You can set up to **10** mentioned roles. + - Without the **Mention @everyone, @here and All Roles** permission, you can only mention roles that every member is allowed to mention. +:: + +### Color + +::hint{ type="info" } + This option is reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. +:: + +You can set the sidebar color of the embed to match your server's or the reward's style. + +![Giveaway with a custom color](./assets/giveaways/giveaway_custom_color.png) + +### Participants button + +The "**Participants**" button, enabled by default, lets members [see the list of participants](#viewing-the-participants). + +![Giveaway with the Participants button enabled](./assets/giveaways/simple_giveaway.png) + +You can remove this button. Members will then only see the total number of participants. + +![Giveaway without the Participants button](./assets/giveaways/giveaway_no_participants_button.png) + +::hint{ type="info" } + Server administrators can always see the list of participants with the \ command. +:: + +## Managing an existing giveaway + +### Ending a giveaway + +You can end a giveaway before its original end time with the \ command, giving the [ID](/docs/misc/finding-an-id#message-id) or the link of the message. + +The draw then takes place immediately and the winner or winners are announced in the giveaway's channel. + +### Rerolling a giveaway + +To designate a new winner on a finished giveaway, you can use the \ command, giving the [ID](/docs/misc/finding-an-id#message-id) or the link of the giveaway message. + +::hint{ type="info" } + You can replace a specific winner using the command's `winner` option. +:: + +::hint{ type="warning" } + Rewards that have already been handed out are not taken back from the previous winners automatically. +:: + +### Removing a participant + +You can remove a participant from a giveaway with the \ command or the "**Participants**" button (if enabled), then click "**Remove a participant**". + +![Participant management interface for administrators](./assets/giveaways/giveaway_participants_admin.png) + +::hint{ type="info" } + The member who is removed receives **no notification**, but they can still **enter again** before the draw ends. +:: diff --git a/docs/en/4.games-and-events/1.advent-calendar.md b/docs/en/4.games-and-events/1.advent-calendar.md new file mode 100644 index 000000000..7543119d3 --- /dev/null +++ b/docs/en/4.games-and-events/1.advent-calendar.md @@ -0,0 +1,218 @@ +--- +slug: /games-and-events/advent-calendar +title: Advent calendar +description: Give your members a unique festive experience with DraftBot's Advent calendar! Create custom daily surprises and reward your most regular members with the consecutive openings system. +navigation.icon: 'twemoji:christmas-tree' +redactors: ['draftproducts'] +contributors: ['elbaguetto', 'imroxxor', 'rababio4579'] +updatedAt: '2025-11-23' +sourceHash: 1f28e9b91858bc304d070d2281cdadb97c5e8f597806be2ea089af848e74bc5c +sourceCommit: ccbf4bc22357d1e23a47428ad4776ecacf5c2143 +--- + +::hint{ type="info" } + The Advent calendar can be configured from 25 November to 24 December. +:: + +## Opening a calendar box + +To open your box of the day, use the \ command during December. + +![Example of the calendar](./assets/advent-calendar/bot_calendar.png) + +::hint{ type="success" } + Each member can open **one box per day**, matching the current date. Opened boxes stay open, while missed ones are marked with a cross. +:: + +## Daily surprises + +The Advent calendar lets you offer different types of surprises to your members: + +::tabs + ::tab{ label="Role" } + You can let your members obtain roles (temporary or permanent) when they open a calendar box. + + Choose: + - The calendar day (1 to 24) + - The role to assign + - The stacking mode: **Cumulative** or **Evolving** + - The duration of the role *(for a temporary role)* + + ::hint{ type="info" } + **Cumulative role:** cumulative roles are kept when the member receives a new role. + + **Evolving role**: evolving roles follow one another, each new role replacing the previous one. + :: + + ::hint{ type="warning" } + **Required permissions**: to assign roles, DraftBot needs: + - The **"Manage Roles"** permission + - A role **higher** in the hierarchy than the roles to assign + + The selected role must have been created on your server beforehand. If these conditions are not met, the member is notified but does not receive the role. + :: + :: + + ::tab{ label="Experience" } + If the [level system](/docs/engagement/levels) is enabled on your server, you can reward your members with experience. + + Choose: + - The calendar day (1 to 24) + - The amount of experience to grant + + ::hint{ type="warning" } + The level system must be **enabled** on your server to use this type of surprise. + :: + + ::hint{ type="success" } + Ideal for boosting the progress of your most active members over the Christmas period! + :: + :: + + ::tab{ label="Money" } + If the [economy system](/docs/engagement/economy) is enabled, you can reward your members with the server's virtual money. + + Choose: + - The calendar day (1 to 24) + - The amount of money to grant + + ::hint{ type="warning" } + The economy system must be **enabled** on your server to use this type of surprise. + :: + :: + + ::tab{ label="Inventory item" } + Reward your members with custom [inventory items](/docs/engagement/inventory). + + Choose: + - The calendar day (1 to 24) + - The item to grant (among the existing ones, or create a new one) + - The quantity of that item + + ::hint{ type="warning" } + Members cannot exceed the limit of **1,000,000 copies** of the same item. If that limit is reached, the item cannot be added. + :: + :: + + ::tab{ label="Custom surprise" } + Offer rewards **outside Discord**: promotional codes, game keys, physical goodies, subscriptions, etc. + + Choose: + - The calendar day (1 to 24) + - The name/description of the surprise + + ::hint{ type="success" } + **How does it work?** When a member obtains this surprise, **you receive a direct message notification from DraftBot** with the member's details (username, ID, server). You can then hand the reward over however you like. + :: + + ::hint{ type="warning" } + Make sure your direct messages are open so you can receive notifications! If your DMs are closed or if you have left the server, the reward cannot be handed over and the member receives nothing. + :: + + ::hint{ type="info" } + Ideal for one-off rewards: access to a private channel, a coaching session, custom goodies, etc. + :: + :: +:: + +::hint{ type="success" } + You can add **2 surprises per box**, and DraftBot picks one **at random**. [Premium](/premium) <:icon_premium:1096140508625125417> servers can add up to **25 per box**! +:: + +## Consecutive openings + +Reward your members' regularity with the consecutive openings system! Members who open their box every day without a break can receive bonus rewards. + +The streak is calculated as follows: + +- Every day a member opens their box **without a break**, their streak increases by 1 +- If a member **skips a day**, their streak resets to 1 +- The streak can carry on **from one year to the next** (the 24 December box followed by the 1 December box of the following year keeps the streak going) + +**Example:** +- Opening the boxes of 1, 2, 3 and 4 December → streak of 4 +- No opening on 5 December +- Opening the 6 December box → streak of 1 (reset) + +::hint{ type="info" } + The bonus is announced in a hidden message, so nobody knows the reward in advance. +:: + +### Granting modes + +Two granting modes are available for each reward: + +| Mode | Description | Example | +|------|-------------|---------| +| **Unique mode** | The reward is obtained only once, when the target is reached | "Loyal" role at 7 consecutive openings | +| **Multiple mode** | The reward is obtained every time the target is reached again | 100 coins every 5 consecutive openings | + +::hint{ type="info" } + **Repeatable**: for rewards in unique mode, you can enable the "repeatable" option to let members earn the reward again if they break their streak and then reach the target once more. +:: + +### Counting the openings + +You can choose how consecutive openings are counted: + +- **All years combined**: openings from previous years are counted +- **Current year only**: only this year's openings count (useful for targets of 24 days or fewer) + +::hint{ type="warning" } + The consecutive openings streak resets if a member **misses a day**. For example, if they open the boxes of 1, 2 and 4 December (without opening the one of 3 December), their streak restarts at 1. +:: + +::hint{ type="success" } + Servers can create up to **3 consecutive openings rewards**. [Premium](/premium) <:icon_premium:1096140508625125417> servers can create up to **10**! +:: + +## Customization + +### Custom message + +You can customize the message displayed when a member opens a calendar box. The following variables are available: + +| Variable | Description | Example | +|----------|-------------|---------| +| `{day}` | Day number of the opened box | 15 | +| `{gift}` | Gift received in the opened box | 10,000 💰 | +| `{streak.count}` | Current number of consecutive openings | 7 | +| `{streak.record}` | The member's consecutive openings record | 15 | + +*In addition to the [other variables](/docs/misc/variables) already available globally!* + +### Consecutive openings message + +A separate message can be set for consecutive openings rewards, with the following additional variables: + +| Variable | Description | Example | +|----------|-------------|---------| +| `{day}` | Day number of the opened box | 15 | +| `{streak.count}` | Current number of consecutive openings | 7 | +| `{streak.record}` | The member's consecutive openings record | 15 | +| `{streak.reward}` | Name of the reward obtained | "Loyal" role | + +*In addition to the [other variables](/docs/misc/variables) already available globally!* + +### Custom background image + +[Premium](/premium) <:icon_premium:1096140508625125417> servers can set a custom background image (10 MB maximum). + +::hint{ type="success" } + **Recommended dimensions**: 1740 x 1260 pixels. You can also add a semi-transparent grey filter to improve readability. +:: + +## Configuring the Advent calendar + +::tabs + ::tab{ label="From the panel" } + + [⫸ Open the **DraftBot** panel](/dashboard/first/advent-calendar) + + Click the button in the top right corner to enable the Advent calendar. + :: + + ::tab{ label="Using the /config command" } + If you would rather do the whole setup from Discord, you can use the \ command, then go to the **"Advent calendar"** tab. + :: +:: diff --git a/docs/en/4.games-and-events/2.infinite-road.md b/docs/en/4.games-and-events/2.infinite-road.md new file mode 100644 index 000000000..47f10a37c --- /dev/null +++ b/docs/en/4.games-and-events/2.infinite-road.md @@ -0,0 +1,551 @@ +--- +slug: /games-and-events/counter +title: Counter +description: Create a collaborative counting challenge on your server! Members count together towards infinity, following the rules you set. +navigation.icon: 'twemoji:infinity' +redactors: ['draftproducts'] +contributors: ['imroxxor', 'rababio4579', 'deluccaromuald-ops', 'lyvendev'] +updatedAt: '2025-11-14' +sourceHash: 31a151eff25e1ab5afd6b2ef705c7de7e1ea313b3660690d2a663dc540531186 +sourceCommit: ccbf4bc22357d1e23a47428ad4776ecacf5c2143 +--- + +## What is the Counter? + +The Counter is a collaborative counting system: your members send numbers in a dedicated channel, following an unbroken numeric sequence. + +Each member has to send the number following the previous one. If an error is detected (wrong number, consecutive messages, invalid format), **DraftBot** automatically applies the rules configured by the administrators. + +Counting is handled entirely by **DraftBot**, which analyses every message sent in the configured channel. + +> ***DraftBot** watches the channel continuously. On every message, it checks the number, the author, the format and the active rules before accepting or rejecting the count.* + +## Taking part in the Counter + +The Counter is a collaborative counting game where the members of your server count together from **1 towards infinity**. The principle is simple: each member sends the next number in the dedicated channel. + +- **Sequential counting**: send the number immediately following the previous one (1, 2, 3, 4...) +- **Mandatory alternation**: you cannot send two consecutive numbers. Another member has to count between your two messages, unless your server allows [consecutive messages](#consecutive-messages) +- **Message format**: send only the expected number (unless discussions are allowed) + +::hint{ type="info" } + The current number and the Counter statistics can be viewed through the \ command. +:: + +![Example](./assets/infinite-road/message_counting.png) + +### Discussions allowed + +Counting is good, but counting while chatting is even better! + +If your server allows discussions (enabled by default), you can add text after the number: + +![Example with a discussion](./assets/infinite-road/message_counting_discussion.png) + +::hint{ type="info" } + Discussions can be configured to allow or forbid line breaks in your messages. By default, line breaks are **forbidden**. +:: + +## Checking the leaderboard + +To check your progress and the server leaderboard, use the \ command. + +![The Counter interface](./assets/infinite-road/bot_infiniteroad_command.png) + +The command displays: +- The next number to send +- The rewards available (if configured) +- The leaderboard of the best participants +- Your position in the leaderboard + +::hint{ type="info" } + You can sort the leaderboard by **number of correct answers** or **number of errors** using the command's `sort` option. +:: + +## Rewards + +### Reward types + +Motivate your members by offering them rewards when they reach certain numbers! Rewards are visible in the \ command. + +- **Specific number**: the reward is granted once, at a precise number (for example at number 1000) +- **Multiple**: the reward is granted at every multiple of a number (for example every 100, so at 100, 200, 300, etc.) + +| Type | Description | Example | +|------|-------------|---------| +| **Permanent role** | Grants a Discord role for good | "Expert Counter" role at number 1000 | +| **Temporary role** | Grants a role for a limited time | "Temporary Champion" role at every multiple of 500 | +| **Money** | Money from the [economy system](/docs/engagement/economy) | 5000 coins at number 100 | +| **Experience** | XP points from the [level system](/docs/engagement/levels) | 1000 XP at number 250 | +| **Inventory item** | One or more [inventory items](/docs/engagement/inventory) | 3x "Badge of honour" at number 500 | +| **Custom reward** | A reward you hand out yourself | Promo code, special mention, etc. | + +::hint{ type="info" } + When a reward is based on the server's [economy system money](/docs/engagement/economy), it can come: + - **From creation**: the money is created for the occasion + - **From the server bank**: the money comes from the money collected through errors (see [Error handling](#error-handling)) +:: + +::hint{ type="info" } + You can create up to **3 rewards**. [Premium](/premium) <:icon_premium:1096140508625125417> servers can create up to **10 rewards**! +:: + +### Limiting repeated wins + +On a reward whose target is a **multiple**, you can prevent a single member from taking every tier: + +| Option | Description | +|--------|-------------| +| **Not twice in a row** | If the same member triggers the tier twice in a row, the reward is not granted again. They can win it again at the following tier | +| **Win limit** | A member can only win this reward a set number of times, from **1 to 1000** | + +In both cases, the member concerned is warned by a message in the [reward announcement channel](#reward-announcements), if it is configured. + +::hint{ type="info" } + In the \ command, these two options are called **"Consecutive wins"** and **"Win limit"** respectively. +:: + +::hint{ type="info" } + These options are reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers, and are only offered **on rewards of the "Multiple" type**. +:: + +### Mystery rewards + +To keep an element of surprise, you can hide part of a reward in the \ command: + +| Hidden element | Effect | +|----------------|-------| +| **Hide the reward** | The content of the reward is replaced by "🎁 Mystery reward", but the tier stays visible | +| **Hide the target number** | The tier becomes "At a certain number" or "At regular intervals", but the reward stays visible | + +You can hide one of the two elements, or both. + +![Display of a mystery reward through the /counter command](./assets/infinite-road/bot_mystery_gift.png) + +::hint{ type="info" } + Unlike the options above, hiding is available on **every server**, and for both target types (specific number or multiple). +:: + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/infinite-road) + + When creating or editing a reward, the **"Hide in /counter"** part appears as soon as you have chosen the reward type. Enable the elements you want to hide from your members. + + ![Hiding options in a reward's configuration on the panel](./assets/infinite-road/panel_hide_elements.png) + + ::hint{ type="warning" } + Remember to confirm with the "Create" (or "Edit") button, then to save your changes with the "Save" button at the bottom of the page! + :: + :: + + ::tab{ label="Using the /counter command" } + If you are a Counter animator or an administrator, the \ command displays a **"Manage rewards"** button. It lets you: + + - Create, edit or delete a reward + - Reset **every** reward + + When editing a reward, the **"Hidden elements"** button lets you select what you want to hide. + + !["Hidden elements" button when editing a reward](./assets/infinite-road/config_hide_elements.png) + :: +:: + +## Triggers + +Triggers automate special actions when certain numbers are reached. Unlike rewards, triggers do not grant anything to members but create events in the channel. + +| Action | Description | +|--------|-------------| +| **Temporary message** | Sends a customizable message that is deleted automatically after 8 seconds | +| **Reaction** | Automatically adds a reaction to the number's message | +| **Pinning** | Automatically pins the message in the channel | + +::hint{ type="info" } + You can create up to **3 triggers** for free. [Premium](/premium) <:icon_premium:1096140508625125417> servers can create up to **10 triggers**! +:: + +## Animator roles + +Animators have special permissions to manage the Counter without penalties: + +- **Invalid messages tolerated**: they can send messages containing no number without triggering an error +- **Editing the number**: they can correct the current number in case of a mistake, through interactive buttons +- **Reward management**: direct access to the reward configuration through \ + +::hint{ type="info" } + Members with the **Administrator** permission automatically have all of these privileges without needing an animator role. +:: + +### Interactive buttons for animators + +When an animator makes a mistake, buttons appear to handle the situation: + +- **"I made a mistake"**: applies the normal penalties, as if they were an ordinary member +- **"Edit the current number"**: changes the current number to the one you sent +- **"Delete this message"**: simply deletes your mistaken message + +## Error handling + +The system automatically detects four types of errors. You then choose **which ones** trigger an additional action (reset, money removal, temporary role). + +| Targeted error | Description | +|---------------|-------------| +| **Invalid number** | The member sends an incorrect number (43 instead of 42, for example) | +| **Invalid message** | The message contains no number, or does not follow the discussion rules | +| **Consecutive messages** | The member sends more numbers in a row than the [Consecutive messages](#consecutive-messages) option allows, without another member counting in between | +| **Command sent** | The member runs a command in the counting channel | + +### Resetting the counter + +If enabled, the counter restarts from **1** and a message explains who caused the reset. + +::hint{ type="info" } + By default, resetting on error is **disabled**. Even if you enable it, it only applies to the error types you have selected in the configuration. +:: + +#### Reset message + +The message sent on reset is customizable (**1000 characters maximum**) with the following variables: + +| Variable | Description | Example | +|----------|-------------|---------| +| `{infiniteroad.number}` | The next number expected after the reset | 1 | +| `{infiniteroad.error_type}` | The type of error that caused the reset | an **incorrect number** | + +*In addition to the [other variables](/docs/misc/variables) already available globally!* + +**Default message**: `❌ {user} ruined the Counter by sending {infiniteroad.error_type}! The counter has been reset, the next number is **{infiniteroad.number}**.` + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/infinite-road) + + Enable the "Enable reset on error" option: the "Custom reset message" part then appears right below. + + ![Reset message configuration on the panel](./assets/infinite-road/panel_reset_message.png) + :: + + ::tab{ label="Using the /config command" } + Open the \ command, then the "Counter" tab. Then press the "Errors" button, followed by "Reset message". + + ![DraftBot's reply after pressing the "Reset message" button](./assets/infinite-road/bot_reset_message.png) + :: +:: + +::hint{ type="info" } + Markdown is allowed in this message. +:: + +### Money removal + +If the [economy system](/docs/engagement/economy) is enabled, you can take money away from members who make certain errors (disabled by default). Two modes are available: + +- **Definitive**: the money is destroyed and disappears for good (default mode) +- **Collect**: the money is transferred to the **server bank** (DraftBot's money) and can be redistributed through rewards + +::hint{ type="info" } + By default, if you enable this option, **200 coins** are removed **definitively**. The removal only applies to the error types you have selected. +:: + +::hint{ type="warning" } + If the economy system is disabled while money removal is enabled, this option is disabled automatically and you receive a notification. +:: + +### Temporary punishment role + +You can automatically assign a temporary role to members who make certain errors (a "Naughty corner" role for 10 minutes, for example). As with the other actions, the role is only assigned for the error types you have selected. + +## Display modes + +The Counter offers three modes for displaying messages in the dedicated channel: + +| Mode | How it works | Advantages | +|------|----------------|-----------| +| **Classic** | The member's message stays as it is | Authenticity, possibility of adding a validation reaction | +| **DraftBot** | The message is deleted then sent again by DraftBot | Prevents later editing, uniform format | +| **Webhook** | The message is deleted then sent again with the member's identity | Prevents later editing, keeps the member's visual identity | + +::hint{ type="info" } + The **DraftBot** and **Webhook** modes stop members from editing their message after sending it, guaranteeing the integrity of the count. +:: + +### Message formats + +When you use the **DraftBot** or **Webhook** modes, two display formats are available: + +- **Message** (default): plain text display, customizable with variables +- **Embed**: display in a Discord embed with or without color, customizable with variables + +#### Customization variables + +The message format is fully customizable with dynamic variables: + +- `{number}`: the current number +- `{discussion}`: the discussion text (if allowed) + +**Default format**: `{user}: {number} {discussion}` + +::hint{ type="info" } + Format customization is reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. +:: + +### System color + +The system color applies both to the messages resent in the **Embed** format and to the display of the \ command. By default, it is **#CD6E57** (orange). + +::hint{ type="info" } + Color customization is reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. +:: + +### Validation reaction + +In **Classic** mode, you can configure a reaction that is added automatically to every message containing a valid number (disabled by default). Use a standard emoji (✅, ⭐) or a custom emoji from your server. + +::hint{ type="warning" } + If the configured emoji is deleted or becomes unavailable, the reaction is disabled automatically and you receive a notification. +:: + +## Discussions + +You can allow members to add text after the number: + +- **Allow discussions**: enables or disables the possibility of writing after the number (enabled by default) +- **Allow line breaks**: allows line breaks in discussions (disabled by default) +- **Ignore messages without numbers**: if enabled, messages containing no number are simply ignored instead of triggering an error (disabled by default) + +### Consecutive messages + +By default, the same member cannot send two numbers in a row: another member has to count between their two messages. You can lift this rule from that same **Discussions** part: + +- **Allow consecutive messages**: lets the same member send several numbers in a row (disabled by default) +- **Number of consecutive messages allowed**: how many numbers the same member can send in a row, **from 2 to 20** + +Beyond that limit, the **Consecutive messages** error is triggered as usual. + +## Configuring the Counter + +::tabs + ::tab{ label="From the panel" } + + [⫸ Open the **DraftBot** panel](/dashboard/first/infinite-road) + + To enable the module, the first step is to click "Set up in a few seconds" and go through the quick setup: + + ![Setting up the Counter from the panel](./assets/infinite-road/panel_setup.png) + + A configuration assistant then guides you through the setup steps: + + 1. **Choosing the channel**: create a new channel or use an existing one + 2. **Animator roles**: set the roles with special permissions (optional) + 3. **Display mode**: choose between Classic, DraftBot or Webhook + 4. **Format**: select Message or Embed + + Once configured, every feature appears: + + ![Counter module enabled on the panel](./assets/infinite-road/panel_home.png) + + ::hint{type="warning"} + Once your changes are done, remember to save them with the "Save" button at the bottom of the page! + :: + :: + + ::tab{ label="Using the /config command" } + + If you would rather do the whole setup from Discord, you can use the \ command, then go to the "Counter" tab. The menu then looks like this: + + ![Counter module through the /config command](./assets/infinite-road/config_home.png) + + The body of the **message** lets you see the **current state** of your Counter at a glance, while the **buttons** below let you **change its configuration**. + + ::collapse{ label="Animators" } + Configure the roles with special permissions to manage the Counter. Members with these roles can: + - Edit the current number. + - Manage rewards (roles, money, items, etc.). + - Send invalid messages without having their message deleted or receiving a penalty. + :: + + ::collapse{ label="Discussions" } + Manage the options related to discussions: + - Allow or forbid discussions after the number + - Allow or forbid line breaks in discussions + - Ignore or penalize messages without numbers + - Allow several consecutive messages from the same member, and set how many + + ![The "Discussions" menu through the /config command](./assets/infinite-road/config_discussions.png) + :: + + ::collapse{ label="Errors" } + Configure error handling: + - **Error types**: choose which errors trigger actions + - **Reset**: set the counter back to 1 on error + - Custom reset message + - **Money removal**: take money away from the members at fault + - Withdrawal type: Definitive or Collect + - Amount withdrawn per error + - **Temporary role**: assign a temporary punishment role + + ![The "Errors" menu through the /config command](./assets/infinite-road/config_errors.png) + :: + + ::collapse{ label="Triggers" } + Create, edit or delete triggers: + - Set a condition (specific number or multiple) + - Choose the actions (temporary message, reaction, pinning) + - Customize the message with variables + + ![The "Triggers" menu through the /config command](./assets/infinite-road/config_triggers.png) + :: + + ::collapse{ label="Rewards" } + Manage the Counter's rewards: + - Create, edit or delete rewards + - Hide the tier or the reward in \ + - Configure reward announcements + - Customize the announcement message + + ![The "Rewards" menu through the /config command](./assets/infinite-road/config_rewards.png) + :: + + ::hint{ type="info" } + Features marked with the <:icon_premium:1096140508625125417> symbol are reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. + :: + :: +:: + +### Reward announcements + +Configure where and how to announce that a reward has been obtained (disabled by default): + +- **Dedicated channel**: choose a specific channel for the announcements +- **Custom message**: customize the announcement message with `{number}`, `{reward}` to display the reward obtained, as well as the [other variables](/docs/misc/variables) available globally + +**Default message**: `{user}, here is your reward for sending the number **{number}** on the Counter!` + +::hint{ type="info" } + By default, reward announcements are **disabled**. Remember to enable them and to choose a channel so that your members are notified! +:: + +::hint{ type="warning" } + **Required permissions**: to send announcements, DraftBot needs the following permissions in the chosen channel: **View Channel**, **Send Messages**, **Embed Links** and **Attach Files**. If these permissions are removed, announcements are disabled automatically. +:: + +### Creating a reward + +1. **Target type**: specific number or multiple +2. **Target value**: the number or multiple that triggers it +3. **Reward type**: role, money, XP, item, or custom +4. **Specific settings** depending on the type chosen +5. **Elements to hide** in \ (see [Mystery rewards](#mystery-rewards)) + +::tabs + ::tab{ label="From the panel" } + + [⫸ Open the **DraftBot** panel](/dashboard/first/infinite-road) + + In the "Rewards" section, click **"Create a reward"**: + + ![Creating a reward from the panel](./assets/infinite-road/panel_rewards.png) + :: + + ::tab{ label="Using the /config command" } + Through the \ command, open the "Counter" menu > "Rewards" > "Create a reward", then follow the configuration steps. + + ![Creating a reward through /config](./assets/infinite-road/config_rewards.png) + :: +:: + +::tabs + ::tab{ label="Role" } + Assign a permanent or temporary role to the member who reaches the target. + + **Settings:** + - The role to assign + - Duration (for a temporary role only) + + ::hint{ type="warning" } + The selected role must have been created beforehand and must be accessible to DraftBot (it must not sit higher than DraftBot's highest role). + :: + + ::hint{ type="info" } + Unlike level rewards, roles are **never removed** automatically if the counter is reset. + :: + :: + + ::tab{ label="Money" } + Give money from the [economy system](/docs/engagement/economy) to the member. + + **Settings:** + - Amount to grant + - Source: creation or server bank + + **Server bank:** + If you choose the server bank, the money comes from DraftBot's money (collected through errors). If the bank does not hold enough money, the maximum amount available is granted. + + ::hint{ type="warning" } + The economy system must be **enabled** on your server to use this reward type. + :: + :: + + ::tab{ label="Experience" } + Give experience points from the [level system](/docs/engagement/levels). + + **Settings:** + - Amount of XP to grant + + ::hint{ type="warning" } + The level system must be **enabled** on your server to use this reward type. + :: + + ::hint{ type="success" } + If the XP gain makes the member level up, they automatically receive the level rewards and an announcement is sent (if configured). + :: + :: + + ::tab{ label="Inventory item" } + Give one or more [inventory items](/docs/engagement/inventory) to the member. + + **Settings:** + - The item to grant + - The quantity (up to 1 million) + + ::hint{ type="info" } + If you have not created any item yet, you first need to [set up your inventory](/docs/engagement/inventory) from the panel's Inventory module. + :: + :: + + ::tab{ label="Custom reward" } + Offer a reward **outside Discord**: promotional codes, physical goodies, special mentions, etc. + + **Settings:** + - Name/description of the reward (up to 250 characters) + + ::hint{ type="success" } + **How does it work?** When a member obtains this reward, **you receive a direct message notification from DraftBot** with the member's details. You can then hand the reward over yourself. + :: + + ::hint{ type="warning" } + Make sure your direct messages are open so you can receive notifications! + :: + :: +:: + +## Migrating from Countr + +If you were already running the Counter through Countr, you can import your members' counting data into DraftBot! + +![Countr import button](./assets/infinite-road/config_import.png) + +1. On your Discord server, use the Countr command: \ +2. Countr sends you a JSON file containing all of the data +3. In DraftBot, click **"Import Countr"** through \ or the panel +4. Send the JSON file received from Countr +5. Confirm the import + +::hint{ type="warning" } + **Important**: the existing data in the Counter is **replaced** by the imported data. This action cannot be undone. +:: + +::hint{ type="info" } + Make sure Countr is still present on your server when exporting the data. +:: diff --git a/docs/en/4.games-and-events/3.bingo.md b/docs/en/4.games-and-events/3.bingo.md new file mode 100644 index 000000000..7ae988c82 --- /dev/null +++ b/docs/en/4.games-and-events/3.bingo.md @@ -0,0 +1,254 @@ +--- +slug: /games-and-events/bingo +title: Bingo +description: Run gripping bingo games where your members have to guess a secret number! +navigation.icon: 'twemoji:bullseye' +redactors: ['draftproducts'] +contributors: ['imroxxor', 'rababio4579'] +updatedAt: '2026-02-01' +sourceHash: e97d91e5c0062b3ea4d3b24f357b90478667dd9a1fe657868a39997dacf4c7c7 +sourceCommit: ccbf4bc22357d1e23a47428ad4776ecacf5c2143 +--- + +## What is Bingo? + +**Bingo** is a competitive guessing game where players have to find a **secret number** chosen by DraftBot. Every attempt brings you closer to the mystery number thanks to the hints given by the bot! + +::hint{ type="success" } + Be the **first to guess** the secret number to win and appear in the game's statistics! +:: + +### Joining a game + +When a bingo game is started in a channel, an announcement message appears with: +- The **number range** the secret number is in +- The **game mode** (Normal or Timed) +- The **duration** (in Timed mode) +- A potential **reward** (optional) + +![Bingo game in progress](./assets/bingo/bot_start.png) + +### Making an attempt + +To take part, **send a number** in the channel where the game is taking place. + +::hint{ type="info" } + Bingo is a **deduction game**! The bot does **NOT** tell you whether your attempt is too high or too low. You have to work out the secret number by watching the other players' attempts and the hints given. +:: + +::hint{ type="info" } + Every attempt is recorded and used to calculate your **performance statistics**: number of tries, time elapsed, efficiency, and how close you got to the number. +:: + +### Proximity reactions + +If **reaction hints** are enabled, DraftBot can react with emojis when you are **very close** to the secret number: + +| Emoji | Meaning | Proximity | +|-------|---------------|-----------| +| 🔥 | **Burning!** | You are extremely close (≤0.5% of the range) | +| ♨️ | **Very hot!** | You are very close (≤1.5% of the range) | +| 🌡️ | **Hot!** | You are close (≤5% of the range) | +| ❄️ | **Lukewarm** | You are in the zone (≤10% of the range) | + +::hint{ type="warning" } + Proximity reactions only appear if **at least 30 seconds** have passed since the last reaction. They are not given on every attempt! +:: + +### Winning the game + +The **first player to guess** the secret number wins the game! A victory message celebrates your success. + +![Victory message](./assets/bingo/bot_victory.png) + +::hint{ type="warning" } + People with access to the **admin dashboard** (the creator and administrators) **cannot take part** in the game once they have seen the secret number. +:: + +## Dynamic hints + +During the game, **hints** can be given **manually by the host** through the [admin dashboard](#admin-dashboard) to help players get closer to the secret number. + +![Dynamic hints in the dashboard](./assets/bingo/bot_dashboard_hints.png) + +| Hint type | Description | Example | +|---------------|-------------|---------| +| **Parity** | Indicates whether the number is even or odd | "The number is **even**" | +| **Median comparison** | Compares the number to the median of the range | "The number is **below 500**" | +| **Number of digits** | Reveals how many digits make up the number | "The number has **3** digits" | +| **Value range** | Gives a narrowed range | "The number is between **400** and **600**" | +| **Digit sum** | Reveals the sum of all digits | "The sum of the digits is **15**" | +| **Contained digit** | Reveals one or more digits present | "The number contains the digit **7**" | +| **Divisibility** | Indicates which numbers it is divisible by | "The number is divisible by **5**" | +| **Closest player** | Shows who got the closest | "@Player got the closest with **523**" | +| **Digit position** | Reveals the position of a specific digit | "The digit **5** is at position **2**" | +| **Repeated digits** | Indicates whether any digits repeat | "All the digits are **different**" | +| **Collective wisdom** | Analysis of attempts around the median | "**70%** of players tried above 500 - they were right!" | + +::hint{ type="info" } + Hints are sent as **messages in the channel** by the host. They are visible to every player and help them collectively get closer to the secret number. +:: + +## Game modes + +Bingo offers two game modes to suit what you are after: + +### Normal Mode + +The game carries on until a player finds the number or until there is **no activity for 5 minutes**. + +- ⏰ Unlimited duration (as long as there is activity) +- 🔄 The inactivity timer resets on every attempt +- 🎯 Ideal for relaxed games + +### Timed Mode ⏱️ + +Players have a **limited time** (configurable from 1 to 120 minutes) to find the number. + +- ⏳ Visible countdown +- 🏃 Time pressure to build suspense +- 🎲 Strategy required to make the most of your attempts + +::hint{ type="success" } + **Timed Mode** is perfect for creating urgency and giving the game some pace! +:: + +## End-of-game statistics + +At the end of each game, detailed statistics are displayed for every player: + +![Victory message with statistics](./assets/bingo/bot_victory.png) + +## Running a game + +To run a bingo game on your server, use the \ command. + +![Bingo configuration interface](./assets/bingo/config_home.png) + +::hint{ type="warning" } + Bingo is **not compatible** with the **Counter**. You cannot start a bingo game in a channel used for the [Counter](/docs/games-and-events/counter). +:: + +::hint{ type="info" } + A server can only run one game at a time. [Premium](/premium) <:icon_premium:1096140508625125417> servers can run up to 5 games at the same time. +:: + +### Number range + +Set the **minimum number** and the **maximum number** the secret number is chosen between. + +::hint{ type="info" } + - **Allowed range**: from **-10,000,000** to **10,000,000** + - The minimum number must be lower than the maximum number + - **Negative numbers** are accepted! +:: + +::hint{ type="success" } + For a quick, approachable game, use a range of **1 to 100**. For a tougher challenge, go up to **1 to 1000** or more! +:: + +### Game mode + +Choose between: +- **Normal Mode**: unlimited game, stopping after 5 minutes of inactivity +- **Timed Mode**: configurable time limit (1 to 120 minutes) + +### Proximity reactions + +Enable **proximity reactions** so that DraftBot reacts with temperature emojis on players' messages when they get close to the secret number. + +::hint{ type="info" } + Proximity reactions (🔥 ♨️ 🌡️ ❄️) help players know when they are in the right zone, without revealing the number directly! They only appear if the player is within 10% of the range, and at most every 30 seconds. +:: + +### Reward + +Set an optional reward to motivate your members! Several types are available: + +| Type | Description | Distribution | +|------|-------------|--------------| +| **Role** | Grants a Discord role | Automatic | +| **Temporary role** | Role with a limited duration (1 min to 1 month) | Automatic | +| **Money** | DraftBot currency | Automatic | +| **Experience** | XP points for the level system | Automatic | +| **Item** | Added to the winner's inventory | Automatic | +| **Custom** | Free text (an in-real-life gift, for example) | The creator receives a DM | + +::hint{ type="info" } + With the **custom** reward, you receive a direct message from DraftBot with the winner's details so that you can hand the reward over yourself. +:: + +### Target channel + +Choose where your game takes place: + +**Option 1: select an existing channel** +- The game is started in a channel of your choice +- You need the required permissions in that channel + +**Option 2: new dedicated channel** +- DraftBot automatically creates a new channel +- Choose the category and customize the name +- The channel is created when the game starts + +::hint{ type="info" } + To create a new channel, you need the **Manage Channels** permission. +:: + +::hint{ type="success" } + If you choose a category, DraftBot automatically suggests a sensible channel name based on the names of the existing channels in that category! +:: + +### Channel lock + +For very active servers, enable the **channel lock**, which is triggered automatically at the end of the game: + +**Features:** +- 🔒 **Automatic locking**: the channel is locked to prevent new messages +- ⏱️ **Unlocking delay**: configurable between **5 and 300 seconds** (20s by default) +- 💬 **Thread creation**: an option to automatically create a thread after the victory so that members can react to the bingo result. + +::hint{ type="info" } + The **channel lock** requires the **Manage Permissions** permission in the target channel. The game's creator always keeps the ability to write in the locked channel. +:: + +## Admin dashboard + +The game's creator and the server administrators have access to an **admin dashboard** by using \ while a game is in progress. + +![Admin dashboard](./assets/bingo/config_dashboard.png) + +::hint{ type="info" } + The dashboard **refreshes automatically every 3 seconds** to display real-time data. +:: + +::hint{ type="info" } + If a game is already in progress in the current channel and you are its creator or have the **Administrator** permission, you go straight to the **admin dashboard**. +:: + +### Advanced statistics + +Administrators can access even more detailed statistics through the **"Number and advanced stats"** button: + +**Player engagement:** +- Recently active players (5 minutes before the game) +- Players active at launch +- Overall engagement rate +- Effectiveness of the hints given +- Number of players making progress + +**Proximity to the secret number:** +- Very close players (≤10 difference) +- Players with excellent accuracy (80%+) +- Players with good accuracy (50-80%) +- Struggling players (<50%) + +**Performance records:** +- Player closest to the number +- Most active player +- Best efficiency ratio +- Longest streak of improvements + +::hint{ type="warning" } + This feature is **disabled if a reward is set**, to prevent cheating. Only **server administrators** can access it. +:: diff --git a/docs/en/4.games-and-events/4.game-stats.md b/docs/en/4.games-and-events/4.game-stats.md new file mode 100644 index 000000000..b57803119 --- /dev/null +++ b/docs/en/4.games-and-events/4.game-stats.md @@ -0,0 +1,222 @@ +--- +slug: /games-and-events/game-stats +title: Game statistics +description: Do you know your game statistics? With these commands, you will! +navigation.icon: 'twemoji:memo' +redactors: ['ls62'] +contributors: ['theorik', 'rababio4579', 'imroxxor'] +updatedAt: '2025-03-18' +sourceHash: f0b2031247d101d62a543143ce68187ffc5a7317c503eaac93281520e61900f8 +sourceCommit: ccbf4bc22357d1e23a47428ad4776ecacf5c2143 +--- + + +## Game profile + +The \ command displays your profile and the game usernames you have linked to it. To check someone else's, name them in the `member` option. +![Overview of the /profile command](./assets/game-stats/apercu_profil.png) + + +## Linking your usernames to DraftBot + +For your game usernames to appear on your profile, you first have to link them to it. + +Here are the two ways of doing so. + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/user/profil) + + To link your game to your Discord profile, go to the configuration page of your [profile](/dashboard/user/profil). + + Then scroll down and you will be able to link your different games. + + ![Overview of the panel](./assets/game-stats/panel_jeux.png) + :: + + ::tab{ label="Using the /gameprofile command" } + To link your game to your Discord profile, run the \ command, then select your `game`, your `username` and the `platform`. + + ![Overview of the command](./assets/game-stats/apercu_profiljeux.png) + :: +:: + + +## The different types of identifier + +Some games do not identify players by a username, but by a **TAG** or an **identifier** specific to the game: + +- Clash of Clans: `TAG` (e.g. #ABC123) +- Clash Royale: `TAG` (e.g. #J8UOYV92C) +- Brawl Stars: `TAG` (e.g. #GYCLLP0PU) +- CS:GO: `TAG` (e.g. #AHKMX-F8TA) +- Brawlhalla: `ID` (e.g. draftman_dev) +- Valorant: `TAG` (e.g. ls62#0069) + +::collapse{ label="How to find your identifier on Brawlhalla" } + To find your tag on Brawlhalla, follow these steps: + + 1. Launch Steam. + 2. Go to your Steam profile. + 3. Click "Edit". + 4. Add your username in the `CUSTOM URL` section. +:: + +## Game statistics + + +### /stats brawlhalla +To get your Brawlhalla statistics, run the \ command and enter the user's TAG or mention them. + +- **Clan**: the name of the clan the player belongs to. + +- **Level**: the player's overall level. + +- **Rank**: the player's ranking in competitive modes. + +- **Playtime**: the total time spent playing Brawlhalla. + +- **Your games**: the total number of games played by the player. + +- **Best legend**: the legend (character) the player performs best with, or uses most often. + +- **Best weapon**: the weapon the player has had the most success with, or prefers to use. + +![Overview of the /stats brawlhalla command](./assets/game-stats/apercu_brawlhalla.png) + + +### /stats brawlstars +To get your Brawl Stars statistics, run the \ command and enter the user's TAG or mention them. + +- **All the brawlers**: the full list of playable characters (brawlers) the player owns, with their levels, rarities and special abilities. + +- **Club**: the name of the club the player belongs to. + +- **Number of trophies**: the total trophies collected by the player. + +- **Number of blings**: an in-game currency used to buy skins and other cosmetic items to customize brawlers. + +![Overview of the /stats brawlstars command](./assets/game-stats/apercu_brawlstars.png) + + +### /stats clashofclans +To get your Clash of Clans statistics, run the \ command and enter the user's TAG or mention them. + +- **Village level**: the overall level of your village, which grows as you upgrade your buildings and troops. + +- **Player tag**: the player's identifier. + +- **Clan**: the name of the clan the player belongs to. + +- **Capital contributions**: how many resources or how much effort the player has contributed to building or upgrading the clan capital. + +- **Clan war preferences**: indicates whether the player takes part in clan wars. + +- **War stars**: the total number of stars the player has earned in clan wars. + +- **Troops donated**: the number of troops the player has given to their clan mates. + +- **Troops received**: the number of troops the player has received from their clan mates. + +- **Town Hall**: the player's current Town Hall level. + +- **Builder huts**: the number of builder huts available. + +- **Heroes**: the heroes. + +- **Troops**: the different troops available for attack and defence. + +- **Super Troops**: the upgraded versions of the normal troops. + +- **Builder base troops**: the troops specific to the builder base. + +- **Spells**: the different spells. + +![Overview of the /stats clashofclans command](./assets/game-stats/stat_clashofclans.png) + + +### /stats clashroyale +To get your Clash Royale statistics, run the \ command and enter the user's TAG or mention them. + +- **Level**: your account's overall level. +- **Tag**: the player's tag. +- **Arena**: the area you fight in. +- **Clan**: the player's clan. +- **Troops donated**: the total number of cards you have given to your clan mates. +- **Troops received**: how many cards you have received from the members of your clan. +- **Clan cards collected**: the total cards earned during clan wars. +- **Number of trophies**: the number of trophies currently held. +- **Best trophies**: the player's trophy record. +- **Number of wins**: counts every one of your victories in battle. +- **Losses**: the number of matches lost. +- **Draws**: the number of matches ending without a winner. + +![Overview of the /stats clashroyale command](./assets/game-stats/stat_clashroyale.png) + + +### /stats osu +To get your osu! statistics, run the \ command and enter the user's username or mention them. + +- **Number of games played**: the total number of games you have played. +- **Ranked score**: the score accumulated in ranked maps only. +- **Accuracy**: a percentage calculated from how precise your hits are compared with the perfect timing of the notes. +- **Performance points**: your overall skill level. +- **Rank counts**: how many times you have reached each rank (SS, S, A, etc.) in your games. +- **Total playtime**: the total time you have spent playing. +- **Registration date**: the date you created your account. + +![Overview of the /stats osu command](./assets/game-stats/stat_osu.png) + + +### /stats paladins +To get your Paladins statistics, run the \ command and enter the user's username or mention them. + +- **Level**: the experience level reached. +- **Title**: a rank or honorary distinction earned from in-game achievements or performance. +- **Number of achievements**: counts the total achievements unlocked. +- **Number of masteries**: how many skills or abilities the Paladin has fully mastered. +- **Number of games**: the total number of games played. +- **Number of wins**: the number of games won. +- **Number of losses**: the number of games lost. +- **Number of leaves**: counts how many times the player left a game before it ended. +- **Ratio**: usually calculated by dividing the number of wins by the number of losses, this ratio measures overall performance. +- **Platform**: the device or system used to play. +- **Hours in game**: the total time spent playing. +- **Account creation**: the date the account was created. + +![Overview of the /stats paladins command](./assets/game-stats/apercu_paladins.png) + + +### /stats wolfy +To get your Wolfy statistics, run the \ command and enter the user's username or mention them. + +- **Level**: reflects your progress and the experience you have accumulated. +- **Number of games won**: shows your strategic effectiveness and your victories. +- **Kills**: shows the total number of kills carried out. +- **Average deaths per game**: measures your ability to survive during games. +- **Favourite role**: highlights the role you prefer, or the one you get the best results with. +- **Game history**: gives a detailed overview of your past performance so you can track your progress. + +![Overview of the /stats wolfy command](./assets/game-stats/apercu_wolfy.png) + + +### /stats chess +To get your Chess.com statistics, run the \ command and enter the user's username or mention them. + +- **League**: the user's current league. +- **Rapid mode**: the ELO rating in rapid games (10 - 30 minutes). +- **Blitz**: the ELO rating in Blitz games (3 - 5 minutes). +- **Bullet**: the ELO rating in Bullet games (1 minute). +- **Puzzles**: statistics about the puzzles solved by the member. + +![Overview of the /chess command](./assets/game-stats/apercu_chess.png) + + + + + + + + + + diff --git a/docs/en/4.games-and-events/5.fun-commands.md b/docs/en/4.games-and-events/5.fun-commands.md new file mode 100644 index 000000000..d0d7b712e --- /dev/null +++ b/docs/en/4.games-and-events/5.fun-commands.md @@ -0,0 +1,242 @@ +--- +slug: /games-and-events/fun-commands +title: Game & fun commands +description: Discover every command available to have fun with the members of your server. +navigation.icon: 'twemoji:game-die' +contributors: ['iibey', 'lepirateytb', 'theorik', 'thecreatorn3ant', 'imroxxor', 'rababio4579', 'draftproducts'] +updatedAt: '2023-08-23' +sourceHash: 585cb558aadea42483f665ff4ec3a948eb98c8307ae256a2c99e51ab466fa2fe +sourceCommit: ccbf4bc22357d1e23a47428ad4776ecacf5c2143 +--- + +## Games + +### /bingo + +::card +--- +title: Bingo +icon: twemoji:bullseye +to: /docs/games-and-events/bingo +target: _blank +color: '#dd2e44' +--- + Run gripping bingo games where your members have to guess a secret number! +:: + +### /chifumi + +The \ command gives you access to this **two-player** game. It is an adaptation of the classic **Rock-Paper-Scissors**: a head-to-head where each player picks one of these three moves. + +How the game works: + +- **Rock** beats **scissors** (by blunting them). +- **Scissors** beat **paper** (by cutting it). +- **Paper** beats **rock** (by wrapping it). + +You can play this game with the person of **your choice**, at **random**, or against **DraftBot**. + +![Overview of the "Chifumi" game](./assets/fun-commands/chifumi.png) + +::hint{ type="info" } + You can choose the difficulty mode: "Easy", "Normal" or "Hard". Depending on your choice, DraftBot will be harder to beat. +:: + +::hint{ type="info" } + You can also choose how many rounds you want (1 to 7 rounds). +:: + +### /tictactoe + +The \ command gives you access to this **two-player** game. It is a thinking game where you have to line up **3 identical symbols** before your opponent, horizontally, vertically or diagonally. Each player has their own symbol, a cross for one, a circle for the other. + +You can play this game with the person of **your choice**, at **random**, or against **DraftBot**. + +![Overview of the "Tic-tac-toe" game in "Normal" mode](./assets/fun-commands/morpion.png) + +::hint{ type="info" } + You can choose the difficulty mode: "Easy", "Normal" or "Hard". Depending on your choice, DraftBot will be harder to beat. +:: + +### /hangman + +The \ command gives you access to this **single-player** thinking game. The goal is to guess which letters make up the **secret word**. + +On every mistake, **a little figure** is drawn step by step, and if it is completed, you are hanged and you have lost. + +![Overview of the "Hangman" game](./assets/fun-commands/pendu.png) + +::hint{ type="info" } + Even though the game is for a single player, other members can help you find the secret word. +:: + +### /connect4 + +The \ command gives you access to this **two-player** game. It is a strategy game where you have to line up **4 tokens in a row** of the same color on a grid of 6 rows and 7 columns. Taking turns, both players drop a token in the column of their choice. + +You can play this game with the member of **your choice**, at **random**, or against **DraftBot**. + +![Overview of the "Connect 4" game between two users](./assets/fun-commands/puissance4.png) + +::hint{ type="info" } + You can choose the difficulty mode: "Easy", "Normal" or "Hard". Depending on your choice, DraftBot will be harder to beat. +:: + +### /minesweeper + +The \ command gives you access to this **single-player** thinking game. The goal is to locate mines hidden in a grid representing a virtual minefield. + +The game gives clues based on **the number** of mines present in the neighbouring cells. + +![Overview of the "Minesweeper" game in "Easy" mode](./assets/fun-commands/demineur.png) + +::hint{ type="info" } + You can choose the difficulty mode: "Easy", "Normal" or "Hard". Depending on your choice, the grid gets bigger. +:: + +### /colormind + +The \ command gives you access to this logic game for **a single player**. It is the equivalent of **Mastermind**: the goal is to find the right color combination. + +![Overview of the "ColorMind" game in "Hard" mode](./assets/fun-commands/colormind.png) + +::hint{ type="info" } + You can choose the difficulty mode: "Easy", "Normal" or "Hard". Depending on your choice, the number of colors to find increases. +:: + +::hint{ type="info" } + The same color may appear several times in a combination. +:: + +## Utilities + +### /survey + +There are three commands available with \: + +- \ ➜ Create and start a survey. +- \ ➜ See the results of a survey. +- \ ➜ End a survey. + +When creating the survey with the \ command, you have to set **the question** of the survey as well as the **different answers** (10 answers max). To enter the answers, you have to put them between **quotation marks** if they contain spaces. + +::hint{ type="info" } + You can, if you want, set the duration of the survey and choose the channel where it is started. +:: + +![Overview of the /survey create command](./assets/fun-commands/command-survey.png) + +![Overview of the result of the /survey create command](./assets/fun-commands/command-survey2.png) + +### /event + +There are three commands available with \: + +- \ ➜ Create and start an event. +- \ ➜ Restart an event. +- \ ➜ End an event. + +With the \ command, you need to set **a name** for your event, the **maximum number** of participants, as well as **the time** at which the event starts. + +To take part, members have to click **the reaction** that appears. + +::hint{ type="info" } + You can, if you want, set a role that your members receive at the end of the event to prove they took part, and choose the channel where the event is started. +:: + +![Overview of the /event command](./assets/fun-commands/event.png) + +### /couple + +The \ command simply lets you **create a couple** on your server. DraftBot retrieves the avatars of the chosen **"Romeo"** and **"Juliet"**, and at the same time gives the couple a name. + +![Overview of the /couple command](./assets/fun-commands/couple.png) + +### /joke + +The \ command gives you access to various **jokes** provided by [Blagues API](https://www.blagues-api.fr/). The punchlines are hidden; clicking on them reveals them. + +Three subcommands are available: + +- \ ➜ Display a random joke. +- \ ➜ Display a joke of a specific type. +- \ ➜ Display your favourite jokes. + +The different joke types are: General, Dark humor, Developer, 18+, Redneck, Blondes. + +![Overview of the /joke command](./assets/fun-commands/blague.png) + +::hint{ type="info" } + Every joke displayed has a 🤍 button to add it to your **favourites**. Click the ❤️ button again to remove it. You can save up to **200 favourite jokes** and view them at any time through \. +:: + +::hint{ type="warning" } + The **Dark humor** and **18+** types are disabled by default. Members with the **Administrator** permission can enable or disable each joke type on their server through a button available from any of the joke commands. +:: + +::hint{ type="info" } + When a joke type is disabled by the server administrators, the favourite jokes of that type are automatically hidden in \. +:: + +::hint{ type="info" } + The jokes come from the community project [Blagues API](https://www.blagues-api.fr/), where jokes are added automatically from community votes. Feel free to contribute your own jokes! +:: + +### /rolldice + +The \ command lets you roll dice. Give the number of dice (X) and the number of sides (Y), separated by the letter "d" (e.g. XdY ➜ 1d10). + +- You can add a modifier (Z) (`+`, `-` or `x`) (e.g. 1d10 **+5**). +- You can add options: `-H` to keep only the highest or `-L` for the lowest (e.g. 3d10+5 **-L**). + +![Overview of the /rolldice command](./assets/fun-commands/lancer-des.png) + +::hint{ type="info" } + The number of dice cannot exceed 100. +:: + +### /tv + +The \ command gives you information about **a film or a series** available on [The Movie Database](https://www.themoviedb.org/) (TMDB). All you have to do is give the name of the film or series you are looking for after the command. + +You will receive the following information: + +- The title of the film or series. +- The synopsis. +- The genre(s). +- The release date. +- The average rating given by users. + +![Overview of the /tv command](./assets/fun-commands/tv.png) + +### /interact + +The \ command lets you react with various reactions handled by DraftBot. + +::collapse{ label="See the predefined reactions" } + - **baka:** Call someone a baka. + - **blow-kiss:** Blow a kiss to someone. + - **bonk:** Bonk someone. + - **cuddle:** Cuddle up to someone. + - **kick:** Kick someone. + - **hug:** Send a hug to someone. + - **pat:** Pat someone. + - **yeet:** Yeet someone. + - **tickle:** Tickle someone. + - **wink:** Wink at someone. + - **dance:** Dance with someone. + - **kiss:** Send kisses to someone. + - **stare:** Stare at someone. + - **punch:** Punch someone. + - **slap:** Slap someone. + - **bite:** Bite someone. + - **feed:** Feed someone. + - **poke:** Poke someone. + - **carry:** Carry someone. + - **laugh:** Laugh with someone. + - **wave:** Wave at someone. + - **handshake:** Shake someone's hand. + - **hold-hands:** Hold someone's hand. + - **shoot:** Shoot at someone. + - **high-five:** High-five someone. +:: diff --git a/docs/en/4.games-and-events/_dir.yml b/docs/en/4.games-and-events/_dir.yml new file mode 100644 index 000000000..0bc8e2b02 --- /dev/null +++ b/docs/en/4.games-and-events/_dir.yml @@ -0,0 +1,4 @@ +slug: /games-and-events/_dir +title: Games & events +description: The games, activities and events DraftBot brings to your server. +navigation.icon: 'twemoji:game-die' diff --git a/docs/assets/calendrier-de-l-avent/bot_calendar.png b/docs/en/4.games-and-events/assets/advent-calendar/bot_calendar.png similarity index 100% rename from docs/assets/calendrier-de-l-avent/bot_calendar.png rename to docs/en/4.games-and-events/assets/advent-calendar/bot_calendar.png diff --git a/docs/assets/bingo/bot_dashboard_hints.png b/docs/en/4.games-and-events/assets/bingo/bot_dashboard_hints.png similarity index 100% rename from docs/assets/bingo/bot_dashboard_hints.png rename to docs/en/4.games-and-events/assets/bingo/bot_dashboard_hints.png diff --git a/docs/assets/bingo/bot_start.png b/docs/en/4.games-and-events/assets/bingo/bot_start.png similarity index 100% rename from docs/assets/bingo/bot_start.png rename to docs/en/4.games-and-events/assets/bingo/bot_start.png diff --git a/docs/assets/bingo/bot_victory.png b/docs/en/4.games-and-events/assets/bingo/bot_victory.png similarity index 100% rename from docs/assets/bingo/bot_victory.png rename to docs/en/4.games-and-events/assets/bingo/bot_victory.png diff --git a/docs/assets/bingo/config_dashboard.png b/docs/en/4.games-and-events/assets/bingo/config_dashboard.png similarity index 100% rename from docs/assets/bingo/config_dashboard.png rename to docs/en/4.games-and-events/assets/bingo/config_dashboard.png diff --git a/docs/assets/bingo/config_home.png b/docs/en/4.games-and-events/assets/bingo/config_home.png similarity index 100% rename from docs/assets/bingo/config_home.png rename to docs/en/4.games-and-events/assets/bingo/config_home.png diff --git a/docs/assets/commandes-jeux-fun/blague.png b/docs/en/4.games-and-events/assets/fun-commands/blague.png similarity index 100% rename from docs/assets/commandes-jeux-fun/blague.png rename to docs/en/4.games-and-events/assets/fun-commands/blague.png diff --git a/docs/assets/commandes-jeux-fun/chifumi.png b/docs/en/4.games-and-events/assets/fun-commands/chifumi.png similarity index 100% rename from docs/assets/commandes-jeux-fun/chifumi.png rename to docs/en/4.games-and-events/assets/fun-commands/chifumi.png diff --git a/docs/assets/commandes-jeux-fun/colormind.png b/docs/en/4.games-and-events/assets/fun-commands/colormind.png similarity index 100% rename from docs/assets/commandes-jeux-fun/colormind.png rename to docs/en/4.games-and-events/assets/fun-commands/colormind.png diff --git a/docs/assets/commandes-jeux-fun/command-survey.png b/docs/en/4.games-and-events/assets/fun-commands/command-survey.png similarity index 100% rename from docs/assets/commandes-jeux-fun/command-survey.png rename to docs/en/4.games-and-events/assets/fun-commands/command-survey.png diff --git a/docs/assets/commandes-jeux-fun/command-survey2.png b/docs/en/4.games-and-events/assets/fun-commands/command-survey2.png similarity index 100% rename from docs/assets/commandes-jeux-fun/command-survey2.png rename to docs/en/4.games-and-events/assets/fun-commands/command-survey2.png diff --git a/docs/assets/commandes-jeux-fun/couple.png b/docs/en/4.games-and-events/assets/fun-commands/couple.png similarity index 100% rename from docs/assets/commandes-jeux-fun/couple.png rename to docs/en/4.games-and-events/assets/fun-commands/couple.png diff --git a/docs/assets/commandes-jeux-fun/demineur.png b/docs/en/4.games-and-events/assets/fun-commands/demineur.png similarity index 100% rename from docs/assets/commandes-jeux-fun/demineur.png rename to docs/en/4.games-and-events/assets/fun-commands/demineur.png diff --git a/docs/assets/commandes-jeux-fun/event.png b/docs/en/4.games-and-events/assets/fun-commands/event.png similarity index 100% rename from docs/assets/commandes-jeux-fun/event.png rename to docs/en/4.games-and-events/assets/fun-commands/event.png diff --git a/docs/assets/commandes-jeux-fun/lancer-des.png b/docs/en/4.games-and-events/assets/fun-commands/lancer-des.png similarity index 100% rename from docs/assets/commandes-jeux-fun/lancer-des.png rename to docs/en/4.games-and-events/assets/fun-commands/lancer-des.png diff --git a/docs/assets/commandes-jeux-fun/morpion.png b/docs/en/4.games-and-events/assets/fun-commands/morpion.png similarity index 100% rename from docs/assets/commandes-jeux-fun/morpion.png rename to docs/en/4.games-and-events/assets/fun-commands/morpion.png diff --git a/docs/assets/commandes-jeux-fun/pendu.png b/docs/en/4.games-and-events/assets/fun-commands/pendu.png similarity index 100% rename from docs/assets/commandes-jeux-fun/pendu.png rename to docs/en/4.games-and-events/assets/fun-commands/pendu.png diff --git a/docs/assets/commandes-jeux-fun/puissance4.png b/docs/en/4.games-and-events/assets/fun-commands/puissance4.png similarity index 100% rename from docs/assets/commandes-jeux-fun/puissance4.png rename to docs/en/4.games-and-events/assets/fun-commands/puissance4.png diff --git a/docs/assets/commandes-jeux-fun/tv.png b/docs/en/4.games-and-events/assets/fun-commands/tv.png similarity index 100% rename from docs/assets/commandes-jeux-fun/tv.png rename to docs/en/4.games-and-events/assets/fun-commands/tv.png diff --git a/docs/assets/stats-de-jeux/apercu_brawlhalla.png b/docs/en/4.games-and-events/assets/game-stats/apercu_brawlhalla.png similarity index 100% rename from docs/assets/stats-de-jeux/apercu_brawlhalla.png rename to docs/en/4.games-and-events/assets/game-stats/apercu_brawlhalla.png diff --git a/docs/assets/stats-de-jeux/apercu_brawlstars.png b/docs/en/4.games-and-events/assets/game-stats/apercu_brawlstars.png similarity index 100% rename from docs/assets/stats-de-jeux/apercu_brawlstars.png rename to docs/en/4.games-and-events/assets/game-stats/apercu_brawlstars.png diff --git a/docs/assets/stats-de-jeux/apercu_chess.png b/docs/en/4.games-and-events/assets/game-stats/apercu_chess.png similarity index 100% rename from docs/assets/stats-de-jeux/apercu_chess.png rename to docs/en/4.games-and-events/assets/game-stats/apercu_chess.png diff --git a/docs/assets/stats-de-jeux/apercu_paladins.png b/docs/en/4.games-and-events/assets/game-stats/apercu_paladins.png similarity index 100% rename from docs/assets/stats-de-jeux/apercu_paladins.png rename to docs/en/4.games-and-events/assets/game-stats/apercu_paladins.png diff --git a/docs/assets/stats-de-jeux/apercu_profil.png b/docs/en/4.games-and-events/assets/game-stats/apercu_profil.png similarity index 100% rename from docs/assets/stats-de-jeux/apercu_profil.png rename to docs/en/4.games-and-events/assets/game-stats/apercu_profil.png diff --git a/docs/assets/stats-de-jeux/apercu_profiljeux.png b/docs/en/4.games-and-events/assets/game-stats/apercu_profiljeux.png similarity index 100% rename from docs/assets/stats-de-jeux/apercu_profiljeux.png rename to docs/en/4.games-and-events/assets/game-stats/apercu_profiljeux.png diff --git a/docs/assets/stats-de-jeux/apercu_wolfy.png b/docs/en/4.games-and-events/assets/game-stats/apercu_wolfy.png similarity index 100% rename from docs/assets/stats-de-jeux/apercu_wolfy.png rename to docs/en/4.games-and-events/assets/game-stats/apercu_wolfy.png diff --git a/docs/assets/stats-de-jeux/panel_jeux.png b/docs/en/4.games-and-events/assets/game-stats/panel_jeux.png similarity index 100% rename from docs/assets/stats-de-jeux/panel_jeux.png rename to docs/en/4.games-and-events/assets/game-stats/panel_jeux.png diff --git a/docs/assets/stats-de-jeux/stat_clashofclans.png b/docs/en/4.games-and-events/assets/game-stats/stat_clashofclans.png similarity index 100% rename from docs/assets/stats-de-jeux/stat_clashofclans.png rename to docs/en/4.games-and-events/assets/game-stats/stat_clashofclans.png diff --git a/docs/assets/stats-de-jeux/stat_clashroyale.png b/docs/en/4.games-and-events/assets/game-stats/stat_clashroyale.png similarity index 100% rename from docs/assets/stats-de-jeux/stat_clashroyale.png rename to docs/en/4.games-and-events/assets/game-stats/stat_clashroyale.png diff --git a/docs/assets/stats-de-jeux/stat_osu.png b/docs/en/4.games-and-events/assets/game-stats/stat_osu.png similarity index 100% rename from docs/assets/stats-de-jeux/stat_osu.png rename to docs/en/4.games-and-events/assets/game-stats/stat_osu.png diff --git a/docs/assets/giveaways/confirm_desinscription.png b/docs/en/4.games-and-events/assets/giveaways/confirm_desinscription.png similarity index 100% rename from docs/assets/giveaways/confirm_desinscription.png rename to docs/en/4.games-and-events/assets/giveaways/confirm_desinscription.png diff --git a/docs/assets/giveaways/create_new_channel.png b/docs/en/4.games-and-events/assets/giveaways/create_new_channel.png similarity index 100% rename from docs/assets/giveaways/create_new_channel.png rename to docs/en/4.games-and-events/assets/giveaways/create_new_channel.png diff --git a/docs/assets/giveaways/exist_channel_choose.png b/docs/en/4.games-and-events/assets/giveaways/exist_channel_choose.png similarity index 100% rename from docs/assets/giveaways/exist_channel_choose.png rename to docs/en/4.games-and-events/assets/giveaways/exist_channel_choose.png diff --git a/docs/assets/giveaways/giveaway_config.png b/docs/en/4.games-and-events/assets/giveaways/giveaway_config.png similarity index 100% rename from docs/assets/giveaways/giveaway_config.png rename to docs/en/4.games-and-events/assets/giveaways/giveaway_config.png diff --git a/docs/assets/giveaways/giveaway_custom_color.png b/docs/en/4.games-and-events/assets/giveaways/giveaway_custom_color.png similarity index 100% rename from docs/assets/giveaways/giveaway_custom_color.png rename to docs/en/4.games-and-events/assets/giveaways/giveaway_custom_color.png diff --git a/docs/assets/giveaways/giveaway_description_title.png b/docs/en/4.games-and-events/assets/giveaways/giveaway_description_title.png similarity index 100% rename from docs/assets/giveaways/giveaway_description_title.png rename to docs/en/4.games-and-events/assets/giveaways/giveaway_description_title.png diff --git a/docs/assets/giveaways/giveaway_image_thumbnail.png b/docs/en/4.games-and-events/assets/giveaways/giveaway_image_thumbnail.png similarity index 100% rename from docs/assets/giveaways/giveaway_image_thumbnail.png rename to docs/en/4.games-and-events/assets/giveaways/giveaway_image_thumbnail.png diff --git a/docs/assets/giveaways/giveaway_no_participants_button.png b/docs/en/4.games-and-events/assets/giveaways/giveaway_no_participants_button.png similarity index 100% rename from docs/assets/giveaways/giveaway_no_participants_button.png rename to docs/en/4.games-and-events/assets/giveaways/giveaway_no_participants_button.png diff --git a/docs/assets/giveaways/giveaway_participants_admin.png b/docs/en/4.games-and-events/assets/giveaways/giveaway_participants_admin.png similarity index 100% rename from docs/assets/giveaways/giveaway_participants_admin.png rename to docs/en/4.games-and-events/assets/giveaways/giveaway_participants_admin.png diff --git a/docs/assets/giveaways/giveaway_participants_member.png b/docs/en/4.games-and-events/assets/giveaways/giveaway_participants_member.png similarity index 100% rename from docs/assets/giveaways/giveaway_participants_member.png rename to docs/en/4.games-and-events/assets/giveaways/giveaway_participants_member.png diff --git a/docs/assets/giveaways/giveaway_with_host.png b/docs/en/4.games-and-events/assets/giveaways/giveaway_with_host.png similarity index 100% rename from docs/assets/giveaways/giveaway_with_host.png rename to docs/en/4.games-and-events/assets/giveaways/giveaway_with_host.png diff --git a/docs/assets/giveaways/giveaway_with_mentions.png b/docs/en/4.games-and-events/assets/giveaways/giveaway_with_mentions.png similarity index 100% rename from docs/assets/giveaways/giveaway_with_mentions.png rename to docs/en/4.games-and-events/assets/giveaways/giveaway_with_mentions.png diff --git a/docs/assets/giveaways/modal_reward_role.png b/docs/en/4.games-and-events/assets/giveaways/modal_reward_role.png similarity index 100% rename from docs/assets/giveaways/modal_reward_role.png rename to docs/en/4.games-and-events/assets/giveaways/modal_reward_role.png diff --git a/docs/assets/giveaways/preview_giveaway.png b/docs/en/4.games-and-events/assets/giveaways/preview_giveaway.png similarity index 100% rename from docs/assets/giveaways/preview_giveaway.png rename to docs/en/4.games-and-events/assets/giveaways/preview_giveaway.png diff --git a/docs/assets/giveaways/simple_giveaway.png b/docs/en/4.games-and-events/assets/giveaways/simple_giveaway.png similarity index 100% rename from docs/assets/giveaways/simple_giveaway.png rename to docs/en/4.games-and-events/assets/giveaways/simple_giveaway.png diff --git a/docs/assets/route-infini/bot_infiniteroad_command.png b/docs/en/4.games-and-events/assets/infinite-road/bot_infiniteroad_command.png similarity index 100% rename from docs/assets/route-infini/bot_infiniteroad_command.png rename to docs/en/4.games-and-events/assets/infinite-road/bot_infiniteroad_command.png diff --git a/docs/assets/route-infini/bot_mystery_gift.png b/docs/en/4.games-and-events/assets/infinite-road/bot_mystery_gift.png similarity index 100% rename from docs/assets/route-infini/bot_mystery_gift.png rename to docs/en/4.games-and-events/assets/infinite-road/bot_mystery_gift.png diff --git a/docs/assets/route-infini/bot_reset_message.png b/docs/en/4.games-and-events/assets/infinite-road/bot_reset_message.png similarity index 100% rename from docs/assets/route-infini/bot_reset_message.png rename to docs/en/4.games-and-events/assets/infinite-road/bot_reset_message.png diff --git a/docs/assets/route-infini/config_discussions.png b/docs/en/4.games-and-events/assets/infinite-road/config_discussions.png similarity index 100% rename from docs/assets/route-infini/config_discussions.png rename to docs/en/4.games-and-events/assets/infinite-road/config_discussions.png diff --git a/docs/assets/route-infini/config_errors.png b/docs/en/4.games-and-events/assets/infinite-road/config_errors.png similarity index 100% rename from docs/assets/route-infini/config_errors.png rename to docs/en/4.games-and-events/assets/infinite-road/config_errors.png diff --git a/docs/assets/route-infini/config_hide_elements.png b/docs/en/4.games-and-events/assets/infinite-road/config_hide_elements.png similarity index 100% rename from docs/assets/route-infini/config_hide_elements.png rename to docs/en/4.games-and-events/assets/infinite-road/config_hide_elements.png diff --git a/docs/assets/route-infini/config_home.png b/docs/en/4.games-and-events/assets/infinite-road/config_home.png similarity index 100% rename from docs/assets/route-infini/config_home.png rename to docs/en/4.games-and-events/assets/infinite-road/config_home.png diff --git a/docs/assets/route-infini/config_import.png b/docs/en/4.games-and-events/assets/infinite-road/config_import.png similarity index 100% rename from docs/assets/route-infini/config_import.png rename to docs/en/4.games-and-events/assets/infinite-road/config_import.png diff --git a/docs/assets/route-infini/config_rewards.png b/docs/en/4.games-and-events/assets/infinite-road/config_rewards.png similarity index 100% rename from docs/assets/route-infini/config_rewards.png rename to docs/en/4.games-and-events/assets/infinite-road/config_rewards.png diff --git a/docs/assets/route-infini/config_triggers.png b/docs/en/4.games-and-events/assets/infinite-road/config_triggers.png similarity index 100% rename from docs/assets/route-infini/config_triggers.png rename to docs/en/4.games-and-events/assets/infinite-road/config_triggers.png diff --git a/docs/assets/route-infini/message_counting.png b/docs/en/4.games-and-events/assets/infinite-road/message_counting.png similarity index 100% rename from docs/assets/route-infini/message_counting.png rename to docs/en/4.games-and-events/assets/infinite-road/message_counting.png diff --git a/docs/assets/route-infini/message_counting_discussion.png b/docs/en/4.games-and-events/assets/infinite-road/message_counting_discussion.png similarity index 100% rename from docs/assets/route-infini/message_counting_discussion.png rename to docs/en/4.games-and-events/assets/infinite-road/message_counting_discussion.png diff --git a/docs/assets/route-infini/panel_hide_elements.png b/docs/en/4.games-and-events/assets/infinite-road/panel_hide_elements.png similarity index 100% rename from docs/assets/route-infini/panel_hide_elements.png rename to docs/en/4.games-and-events/assets/infinite-road/panel_hide_elements.png diff --git a/docs/assets/route-infini/panel_home.png b/docs/en/4.games-and-events/assets/infinite-road/panel_home.png similarity index 100% rename from docs/assets/route-infini/panel_home.png rename to docs/en/4.games-and-events/assets/infinite-road/panel_home.png diff --git a/docs/assets/route-infini/panel_reset_message.png b/docs/en/4.games-and-events/assets/infinite-road/panel_reset_message.png similarity index 100% rename from docs/assets/route-infini/panel_reset_message.png rename to docs/en/4.games-and-events/assets/infinite-road/panel_reset_message.png diff --git a/docs/assets/route-infini/panel_rewards.png b/docs/en/4.games-and-events/assets/infinite-road/panel_rewards.png similarity index 100% rename from docs/assets/route-infini/panel_rewards.png rename to docs/en/4.games-and-events/assets/infinite-road/panel_rewards.png diff --git a/docs/assets/route-infini/panel_setup.png b/docs/en/4.games-and-events/assets/infinite-road/panel_setup.png similarity index 100% rename from docs/assets/route-infini/panel_setup.png rename to docs/en/4.games-and-events/assets/infinite-road/panel_setup.png diff --git a/docs/en/5.community/0.suggestions.md b/docs/en/5.community/0.suggestions.md new file mode 100644 index 000000000..bbcee044a --- /dev/null +++ b/docs/en/5.community/0.suggestions.md @@ -0,0 +1,651 @@ +--- +slug: /community/suggestions +title: Suggestions +description: Collect your members' suggestions and feedback easily with DraftBot! +navigation.icon: 'twemoji:light-bulb' +redactors: ['clement669', 'imroxxor', 'draftproducts', 'theorik'] +contributors: ['rababio4579', 'bariboo', 'elbaguetto'] +updatedAt: '2026-08-05' +sourceHash: 35011b26ebe9bf0410aacb7b4ddd8bfe46b4402dfef1daa9a3d8c8c8d4d99b88 +sourceCommit: cf7dd6baad2b658d0f53030171ba9ce91adbbf8b +--- + +The **Suggestions** module lets your members put forward ideas the community can vote on, and that moderators can then accept, refuse or plan. It comes with a reward system to recognize contributors. + +## Usage + +### Submitting a suggestion + +Open the [suggestions menu](#the-suggestions-menu) with the \ command, then click the "New suggestion" button. + +**DraftBot** then opens a pop-up where you can fill in: + +- Title ➜ The title to give your suggestion. It is also used to reference it in the [suggestions menu](#the-suggestions-menu). +- Description ➜ The body of your suggestion, where you can go into detail to explain it better to the other members. + +![Suggestion creation menu](./assets/suggestions/bot_new_suggest_modal.png) + +::hint{ type="info" } + Once your suggestion is written, DraftBot displays a confirmation message. At that point, you can edit your submission, [add an image](#adding-an-image) to it, confirm it, or cancel it: + + ![Suggestion confirmation menu](./assets/suggestions/bot_new_suggest_confirm.png) +:: + +::hint{ type="success" } + Want to add more to your suggestion? No problem: DraftBot lets you include a [comment](#commenting-on-a-suggestion), and even an [illustration](#adding-an-image)! + + ![Suggestion with a comment, an illustration and custom vote icons](./assets/suggestions/bot_suggest_comment.png) +:: + +### The suggestions menu + +To open the suggestions menu, run the \ command. + +A menu then opens. It lets you: +- submit new suggestions, +- comment on one of your suggestions, +- [delete](#deleting-a-suggestion) one of your pending suggestions (if the option is [enabled](#members)), +- open one of your suggestions (by clicking its title), or +- check the state of your suggestions (number of votes, status). + +You can also decide whether to be notified when the [status](#managing-suggestions) of one of your suggestions changes (if the "Enable notifications" option is [enabled](#moderation)). + +::hint{ type="info" } + To avoid cluttering your channels, the command runs discreetly: the message that ran the command is deleted immediately, and DraftBot's reply is only visible to the person who ran it! +:: + +![The suggestions menu](./assets/suggestions/bot_suggest_menu.png) + +### Adding an image + +You can attach an image to your suggestion by dropping the file in the area provided, or by clicking the "`browse`" button in DraftBot's "`Send a suggestion`" window (image below). + +![DraftBot's suggestion panel](./assets/suggestions/bot_upload_panel.png) + +### Commenting on a suggestion + +Did you forget something when sending your suggestion? + +**DraftBot** lets you comment on your suggestions by clicking "Comment" in the [suggestions menu](#the-suggestions-menu). + +![Comment creation menu](./assets/suggestions/bot_comment_modal.png) + +Once the comment has been added, it appears at the bottom of your suggestion message: + +![Commented suggestion](./assets/suggestions/bot_suggest_commented.png) + +### Deleting a suggestion + +Changed your mind? If the administrator has [enabled the option](#members), the "Delete" button of the [suggestions menu](#the-suggestions-menu) lets you remove one of your **pending** suggestions yourself, without going through a moderator. + +Select the suggestion concerned, then confirm: **DraftBot** deletes its message in the reception channel, as well as the [thread](#automatic-discussion-threads) that may have been attached to it. + +![Suggestion deletion panel](./assets/suggestions/bot_suggest_delete.png) + +::hint{ type="warning" } + Deletion is **permanent**. Once accepted, refused or planned, a suggestion can no longer be deleted by its author. +:: + +### Managing suggestions + +As a moderator, you can **accept**, **refuse** or **plan** a suggestion in two clicks or through a command. + +::hint{ type="warning" } + You need the "Manage Messages" permission to accept, refuse or plan a suggestion. +:: + +::collapse{ label="Accepting a suggestion"} + Has a suggestion received enough votes, and/or caught your eye? You can accept it, which stops the vote and validates the suggestion. There are two ways of doing so: + + ::tabs + ::tab{ label="Quick access" } + On desktop, right-click (on mobile, long-press) the suggestion you want to accept, then open the "Apps" line. You will then be able to accept the suggestion. + + ![Accepting a suggestion](./assets/suggestions/bot_accept_suggest.png) + :: + + ::tab{ label="Command" } + The \ command also lets you accept a suggestion. To do so, you need to enter the [ID](/docs/misc/finding-an-id#message-id) of the message of the suggestion to accept. + :: + :: + Whichever method you use, you can add a reason for accepting if you want to. + + ::hint{ type="info" } + If you have enabled the "Set the thread of accepted suggestions" option, the suggestion is automatically moved to the thread you defined. + :: +:: + +::collapse{ label="Refusing a suggestion"} + Has a suggestion received a lot of negative votes, or is it simply not feasible? You can refuse it, which stops the vote and invalidates the suggestion. There are two ways of doing so: + + ::tabs + ::tab{ label="Quick access" } + On desktop, right-click (on mobile, long-press) the suggestion you want to refuse, then open the "Apps" line. You will then be able to refuse the suggestion. + + ![Refusing a suggestion](./assets/suggestions/bot_suggest_refuse.png) + :: + + ::tab{ label="Command" } + The \ command also lets you refuse a suggestion. To do so, you need to enter the [ID](/docs/misc/finding-an-id#message-id) of the message of the suggestion to refuse. + :: + :: + Whichever method you use, you must give a reason for the refusal to go through. + + ::hint{ type="info" } + If you have enabled the "Set the thread of refused suggestions" option, the suggestion is automatically moved to the thread you defined. + :: +:: + +::collapse{ label="Planning a suggestion"} + Has a suggestion been retained and is its implementation planned? You can mark it as "planned", which stops the vote. This status can be given directly to an ongoing suggestion, or to a suggestion that has already been accepted. There are two ways of doing so: + + ::tabs + ::tab{ label="Quick access" } + On desktop, right-click (on mobile, long-press) the suggestion you want to plan, then open the "Apps" line. You will then be able to mark the suggestion as "planned". + + ![Planning a suggestion](./assets/suggestions/bot_suggest_planned.png) + :: + + ::tab{ label="Command" } + The \ command also lets you plan a suggestion. To do so, you need to enter the [ID](/docs/misc/finding-an-id#message-id) of the message of the planned suggestion. Finally, you can give a reason to explain this choice, or provide details about it. + :: + :: +:: + +::hint{ type="info" } + The status of a suggestion can be changed **at any time**, by right-click or by command, even after it has been processed. To reopen the vote, set the suggestion back to pending through \. +:: + +::hint{ type="success" } + Whenever the state of a suggestion changes, the member who sent it is notified by DraftBot through direct messages, if they have [enabled notifications](#the-suggestions-menu) in their suggestions menu. +:: + +## Suggestion leaderboard + +::hint{ type="info" } + This feature is reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. +:: + +The \ command displays a leaderboard of suggestions, according to the following criteria: + +- Order by: + - number of positive votes + - number of negative votes + - ratio (relation between positive and negative votes) + +- Filter: sorts suggestions by a keyword. + +![Display of pending suggestions sorted by descending score](./assets/suggestions/bot_suggests_list.png) + +## Keyword search + +The \ command lets you search for suggestions from their title. ([premium](/premium) <:icon_premium:1096140508625125417>) + +![Searching for suggestions by keyword](./assets/suggestions/bot_suggestmod_search.png) + +## Configuration + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/suggestions) + + To enable the module, click the button in the top right corner. Every configuration option then appears and stays a few clicks away. + + ![View of the module through the web panel](./assets/suggestions/panel_home.png) + + ::hint{ type="warning" } + Once your changes are done, remember to save them with the "Save" button at the bottom of the page! + :: + :: + + ::tab{ label="Using the /config command" } + ::hint{ type="info" } + To go straight to this module's configuration, without going through the main menu, you can run the \ command! + :: + + Once the command has been run, DraftBot displays a message containing: + - **information** about the current state of the module, + - **action buttons** to change each part of the configuration (detailed in the sections below). + + ![Configuration menu of the 💡Suggestions module, through the /config command](./assets/suggestions/config_home.png) + :: +:: + +::hint{ type="warning" } + **Required permissions** in the suggestion reception channel: **View Channel**, **Send Messages**, **Embed Links**, **Add Reactions** and **Manage Messages** (for moderation). Without these permissions, the module cannot work properly. +:: + +### Reception channel + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/suggestions) + + To change the \<#channel> where the suggestions sent by members are posted, choose it in the panel's selector. + + ![Choosing the suggestion reception channel from the panel](./assets/suggestions/panel_channel.png) + + ::hint{ type="info" } + If you cannot find the channel in the list, remember to refresh the page! + :: + :: + + ::tab{ label="Using the /config command" } + Click the "Suggests channel" button, then enter the \<#channel> you want: + + !["Suggests channel" button through the /config command](./assets/suggestions/config_buttons_channel.png) + :: +:: + +::hint{ type="info" } + You can set this channel to read-only, so that suggestions always stay easy to find! +:: + +### Mention + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/suggestions) + + Select the role to mention when a new suggestion is published. + + ![Choosing the role to mention, from the panel](./assets/suggestions/panel_mention.png) + :: + + ::tab{ label="Using the /config command" } + Click the "Mention" button to set the role to mention. The selected role receives a notification whenever a new suggestion is posted. + + !["Mention" button through the /config command](./assets/suggestions/config_buttons_mention.png) + :: +:: + +### Delay between suggestions + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/suggestions) + + **DraftBot** lets you set a **number of suggestions** allowed over a given period (1 suggestion every 30 minutes, or 3 per day, for example), as well as exempt roles, which are not affected by this restriction. + + ![Configuration on the panel](./assets/suggestions/panel_delai.png) + :: + + ::tab{ label="Using the /config command" } + Click the "Members" button to open the member management menu. + + You can choose between: + - Setting a delay between two suggestions + - Setting roles exempt from that delay + + ![The "Members" menu, through the /config command](./assets/suggestions/config_membres.png) + :: +:: + +### Color based on votes + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/suggestions) + + **DraftBot** can automatically vary the color of a suggestion depending on the ratio of positive / neutral / negative votes. + + ![Managing color variations, from the panel](./assets/suggestions/panel_colors.png) + + ::hint{ type="info" } + [Premium](/premium) <:icon_premium:1096140508625125417> servers can customize the gradient used to show how popular a suggestion is. + :: + :: + + ::tab{ label="Using the /config command" } + Click the "Color based on votes" button to open the color management menu. + + !["Color based on votes" button through the /config command](./assets/suggestions/config_buttons_colors.png) + + From this menu, you can: + - Enable / disable the automatic gradient of suggestions + - Change the colors <:icon_premium:1096140508625125417> + + ![The "Color based on votes" menu, through the /config command](./assets/suggestions/config_votes_color.png) + :: +:: + +::hint{ type="info" } + By default, DraftBot gradually varies the color of the suggestion, from red (more negative votes than positive ones) to green (more positive votes than negative ones), depending on the gap between the votes. +:: + +### Reactions + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/suggestions) + + Choose the emojis that represent the members' votes. + + ![Managing the reactions used for suggestions, from the panel](./assets/suggestions/panel_reactions.png) + + You can also decide to hide the suggestion's reactions once it has been processed. + + ![Enabling / disabling the withdrawal of reactions, from the panel](./assets/suggestions/panel_delete_reactions.png) + :: + + ::tab{ label="Using the /config command" } + Click the "Reactions" button to open the configuration menu. + + !["Reactions" button through the /config command](./assets/suggestions/config_buttons_reactions.png) + + From this menu, you can: + - Enable / disable the removal of reactions after processing + - Set the emojis used for favourable, neutral and unfavourable votes + + ![Reaction configuration, through the /config command](./assets/suggestions/config_reactions.png) + :: +:: + +::hint{ type="success" } + As well as Discord emojis, you can use your server's custom emojis, and even its animated emojis if you have [set some up](https://support.discord.com/hc/en-us/articles/360041139231-Adding-Emojis)! +:: + +### Confirmation + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/suggestions) + + From this menu, you can: + - Choose whether the author of a suggestion has to confirm it *before* sending + - Customize the confirmation message sent to the member *after* their suggestion has been published + + ![Managing confirmations for suggestions, from the panel](./assets/suggestions/panel_confirmation.png) + :: + + ::tab{ label="Using the /config command" } + Click the "Confirmation" button to open the configuration menu. + + !["Confirmation" button through the /config command](./assets/suggestions/config_buttons_confirmation.png) + + From this menu, you can: + - Choose whether the author of a suggestion has to confirm it *before* sending + - Customize the confirmation message sent to the member *after* their suggestion has been published + + ![The "Confirmation" menu, through the /config command](./assets/suggestions/config_confirmation.png) + :: +:: + +You can customize the confirmation message with several variables: + +| Variable | Description | Example | +|----------|-------------|---------| +| `{title}` | Title of the suggestion | Questionnaire system | +| `{count}` | Number of ongoing suggestions for the member | 3 | +| `{max}` | Maximum number of suggestions allowed at the same time | 5 | + +*In addition to the [other variables](/docs/misc/variables) already available globally!* + +### Moderation + +This section lets you: +- Set whether suggestions can be processed (Suggestions sorting) +- Set whether the moderator who changes a suggestion's status is anonymized +- Set the default state of notifications, or disable them globally +- Set a thread to file every accepted suggestion in +- Set a thread to file every refused suggestion in + +::hint{ type="warning" } + If you disable suggestions sorting, **you will no longer be able to accept/refuse/plan suggestions**. +:: + +::hint{ type="info" } + For notifications, you can choose between: disabled by default, enabled by default, or completely disabled. +:: + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/suggestions) + + ![Managing suggestion moderation, from the panel](./assets/suggestions/panel_moderation.png) + :: + + ::tab{ label="Using the /config command" } + Click the "Moderation" button to open the configuration menu. + + !["Moderation" button through the /config command](./assets/suggestions/config_buttons_moderation.png) + + ![The "Moderation" menu, through the /config command](./assets/suggestions/config_moderation.png) + :: +:: + +### Members + +This section lets you: +- Limit how many pending suggestions a member can have (unlimited by default) +- Set whether the author of a suggestion can add a [comment](#commenting-on-a-suggestion) to it +- Set whether the author of a suggestion can [delete](#deleting-a-suggestion) it themselves while it is pending (disabled by default) + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/suggestions) + + Set the limit you want by moving the slider, and enable or disable the "Enable self-deletion of suggestions" option. + + ![Managing the general restrictions on suggestions, from the panel](./assets/suggestions/panel_membres.png) + + ::hint{ type="success" } + By default, the number of pending suggestions per member at the same time is unlimited! + :: + :: + + ::tab{ label="Using the /config command" } + Click the "Members" button to open the configuration menu. + + !["Members" button, through the /config command](./assets/suggestions/config_buttons_membres.png) + + ![The "Members" menu, through the /config command](./assets/suggestions/config_membres.png) + :: +:: + +### Automatic discussion threads + +::hint{ type="info" } + This feature is reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. +:: + +DraftBot can automatically create a thread attached to each suggestion, letting the author and the moderators interact together. You can enable or disable this feature and customize how the threads are named. + +The thread name can be customized with the following variable: + +| Variable | Description | Example | +|----------|-------------|---------| +| `{title}` | Title of the suggestion | Questionnaire system | + +*In addition to the [other variables](/docs/misc/variables) already available globally!* + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/suggestions) + + ![Managing automatic threads, from the panel](./assets/suggestions/panel_threads_auto.png) + :: + + ::tab{ label="Using the /config command" } + !["Automatic discussion threads" button, through the /config command](./assets/suggestions/config_buttons_threads_auto.png) + + ![The "Automatic discussion threads" menu, through the /config command](./assets/suggestions/config_threads_auto.png) + :: +:: + +### Limit per role + +::hint{ type="info" } + This feature is reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. +:: + +This feature lets you set different limits on simultaneous pending suggestions depending on the roles members hold. + +::hint{ type="success" } + To favour your most active members, use this option together with roles granted by the [level system](/docs/engagement/levels#creating-a-reward) 😉 +:: + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/suggestions) + + ![Managing limits per role, from the panel](./assets/suggestions/panel_suggests_limits_per_roles.png) + :: + + ::tab{ label="Using the /config command" } + !["Limit per role" button, through the /config command](./assets/suggestions/config_buttons_limits_per_roles.png) + + ![The "Limit per role" menu, through the /config command](./assets/suggestions/config_limits_per_roles.png) + :: +:: + +### Sorting and search + +::hint{ type="info" } + This feature is reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. +:: + +This option enables the indexing of suggestions, which makes [advanced search](#keyword-search) and suggestion sorting possible. + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/suggestions) + + !["Sorting and search" button, from the panel](./assets/suggestions/panel_sort_and_search.png) + :: + + ::tab{ label="Using the /config command" } + !["Sorting and search" button, through the /config command](./assets/suggestions/config_buttons_sort_and_search.png) + :: +:: + +## Rewards + +DraftBot can automatically reward the author of a suggestion when they reach a certain number of accepted, refused, pending or planned suggestions. + +### Creating a reward + +When creating one, you set: + +1. **Suggestion status**: accepted, pending, refused or planned +2. **Number of suggestions**: the threshold that triggers it +3. **Reward type**: role, money, experience, inventory item or custom +4. **Specific settings** depending on the type chosen + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/suggestions) + + In the "Rewards" section, click "Create a reward": + + ![Creating a reward from the panel](./assets/suggestions/panel_create_reward.png) + :: + + ::tab{ label="Using the /config command" } + Open the "Suggestions" menu > "Rewards" > "Create a reward", then follow the configuration steps. + + ![Creating a reward through /config](./assets/suggestions/config_buttons_rewards.png) + :: +:: + +::tabs + ::tab{ label="Role" } + Assign a role to the member who reaches the target. You can choose a **permanent** or **temporary** role at creation time. + + **Settings:** + - The role to assign + - The duration (for a temporary role only) + + ::hint{ type="warning" } + The selected role must have been created beforehand and must be accessible to DraftBot (it must not sit higher than DraftBot's highest role). + :: + + ::hint{ type="info" } + Unlike level rewards, roles are **never removed** automatically if the suggestion's status changes later. + :: + :: + + ::tab{ label="Money" } + Give money from the [economy system](/docs/engagement/economy) to the member. + + **Settings:** + - Amount to grant + + ::hint{ type="warning" } + The economy system must be **enabled** on your server to use this reward type. + :: + :: + + ::tab{ label="Experience" } + Give experience points from the [level system](/docs/engagement/levels). + + **Settings:** + - Amount of XP to grant + + ::hint{ type="warning" } + The level system must be **enabled** on your server to use this reward type. + :: + + ::hint{ type="success" } + If the XP gain makes the member level up, they automatically receive the level rewards and an announcement is sent (if configured). + :: + :: + + ::tab{ label="Inventory item" } + Give one or more [inventory items](/docs/engagement/inventory) to the member. + + **Settings:** + - The item to grant + - The quantity (up to 1 million) + + ::hint{ type="info" } + If you have not created any item yet, you first need to [set up your inventory](/docs/engagement/inventory) from the panel's Inventory module. + :: + :: + + ::tab{ label="Custom reward" } + Offer a reward **outside Discord**: promotional codes, physical goodies, special mentions, etc. + + **Settings:** + - Name/description of the reward (up to 250 characters) + + ::hint{ type="success" } + **How does it work?** When a member obtains this reward, **you receive a direct message notification from DraftBot** with the member's details. You can then hand the reward over yourself. + :: + + ::hint{ type="warning" } + Make sure your direct messages are open so you can receive notifications! + :: + :: +:: + +### Reward announcements + +Once your rewards have been created, configure where and how to announce that they have been obtained. + +![Announcement of a suggestion reward](./assets/suggestions/bot_reward_announce.png) + +- **Dedicated channel**: choose a specific channel for the announcements. +- **Custom message**: customize the message with the [variables available globally](/docs/misc/variables), as well as `{reward}`, `{target.count}` and `{target.type}` to display the reward obtained. + +**Default message**: `{user}, here is your reward for reaching **{target.count} {target.type}**!` + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/suggestions) + + In the "Rewards" section: + + ![Announcement configuration from the panel](./assets/suggestions/panel_rewards_announces.png) + :: + + ::tab{ label="Using the /config command" } + Open the "Suggestions" menu > "Rewards" > "Rewards announcements". + + ![Announcement configuration through /config](./assets/suggestions/config_rewards_announces.png) + :: +:: + +::hint{ type="warning" } + **Required permissions**: to send announcements, DraftBot needs the following permissions in the chosen channel: **View Channel**, **Send Messages**, **Embed Links** and **Attach Files**. If these permissions are removed, announcements are disabled automatically. +:: diff --git a/docs/en/5.community/1.tickets.md b/docs/en/5.community/1.tickets.md new file mode 100644 index 000000000..e1e893151 --- /dev/null +++ b/docs/en/5.community/1.tickets.md @@ -0,0 +1,116 @@ +--- +slug: /community/tickets +title: Tickets +description: Give your members the ability to create tickets so they can have a private conversation with your server's team. +navigation.icon: 'twemoji:admission-tickets' +redactors: ['clement669'] +contributors: ['toutouille-db', 'imroxxor', 'rababio4579'] +updatedAt: '2023-06-16' +sourceHash: d617cc113598848aaaf40e027e494a0ea98149702a6d9b3ad72ffd6a855342ab +sourceCommit: cf7dd6baad2b658d0f53030171ba9ce91adbbf8b +--- + +![Configuration menu](./assets/tickets/config_menu.png) + +### Creating a ticket + +You can create or request the creation of a ticket using the \ command. + +::hint{ type="info" } + The `reason` variable, although optional, can be made mandatory by the server managers. It is best to always fill it in. +:: + +### Ticket moderation + +Administrators and ticket moderators have the following commands, giving them additional control over ticket access: + +- \ ➜ Opens a ticket for a member. +- \ ➜ Grants a third member access to the ticket. +- \ ➜ Removes a member's access to the ticket. + +### Reception channel + +The ticket reception channel receives members' ticket requests, whether they are made through the \ command or through an **opening message**. + +::hint{ type="info" } + Receiving ticket requests in this channel requires opening requests to be set to **Manual** mode. +:: + +## Configuration + +::tabs + ::tab{ label="From the panel" } + + [⫸ Open the **DraftBot** panel](/dashboard/first/tickets) + + ![Configuration menu](./assets/tickets/panel_config.png) + + On the panel, in the **Community** category, the **Tickets** part offers the same configuration options as the slash commands on Discord. The opening message will be configurable on the panel soon. + + > ⚠️ Once your changes are done, remember to save them with the "Save" button at the bottom of the page. + + - **Ticket category** ➜ Sets the category tickets are created in. The category has to have been created beforehand. Remember to refresh the panel page if you have created a category in the meantime. + + - **Mention moderators** ➜ Enables the automatic mention of moderators when a ticket is opened. + + - **Ticket moderator roles** ➜ Adds or removes roles without the Administrator permission that will have access to tickets. Several roles can be added. + + - **Auto delete (admin)** ➜ When this option is enabled, tickets are deleted straight away if an administrator closes a ticket. + + - **Ticket validation** ➜ When validation is enabled, ticket requests are forwarded to the **reception channel** and have to be accepted or refused by the **ticket moderators** or administrators. + + - **Opening reason** ➜ Sets whether members have to give a reason for opening the ticket when using \. Enabling it is recommended to avoid ticket-creation abuse or requests with no particular reason. + :: + + ::tab{ label="Using the /config command" } + To configure the ticket system, you can use the \ command and then click the "Tickets" section. + + ::hint{ type="warning" } + If the system is not configured, a single "Configure the system" button is visible. Click it to start the configuration. + :: + + ![Initial configuration menu](./assets/tickets/menu_config.png) + + > **Category** ➜ Sets the category tickets are created in. You can ask DraftBot to create it automatically for you, or use an existing one. + + > **Reception channel** ➜ Sets the channel that receives ticket opening requests. If validation is in **Automatic** mode, only the history of ticket closures and deletions is displayed in this channel. You can ask DraftBot to create the channel automatically, or use an existing one. + + ::hint{ type="info" } + The ticket reception channel is by default in the category you specified, but it can be moved to another category. + :: + + > **Delete the system** ➜ Resets the system and brings back the "Configure the system" button. + + ::hint{ type="warning" } + This action cannot be undone, the whole configuration will be lost. + :: + + > **Confirmation request** ➜ Changes the confirmation message displayed when a ticket is requested (only editable if ticket validation is in **Manual** mode). You can choose DraftBot's "Default" presentation or your own custom text by clicking "Edit". + + > **Opening reason request** ➜ Requires members to give a reason for opening the ticket. The reason given appears in the ticket's welcome message as well as in the opening request if ticket validation is in **Manual** mode. + + > **Welcome message** ➜ Changes the description of a ticket's welcome message **only** when it has been opened through the \ command. When a ticket is opened through the \ command, the welcome message description contains the reason given by the member. + + > **Moderator roles** ➜ Adds or removes roles without the "Administrator" permission that will have access to tickets. Several roles can be added. + + > **Mention moderators** ➜ Enables or disables the automatic mention of the roles set as moderator roles whenever a new ticket is opened. If this option is enabled, every moderator role is mentioned. It is currently not possible to choose which specific roles to mention among the list of moderator roles. + + > **Admin delete** ➜ Tickets are deleted straight away if a server administrator closes a ticket. + :: +:: + +### Opening message + +![Opening message configuration](./assets/tickets/config_reason.png) + +The opening message lets members select a predefined opening reason from a button or a selector to request a ticket. It can be used as an alternative or a complement to the \ command. +When configuring it for the first time, through the \ command in the **Tickets** section and then clicking "Opening message", you have to select the type of opening message you want: + +- **Button** ➜ This mode lets you configure a single opening reason, displayed as the button's text. + +- **Selector** ➜ This mode lets you add several ticket opening reasons. By following the bot's instructions and questions, you can customize the name of the reasons, their associated emojis and descriptions. + +::hint{ type="info" } + You can use a message created beforehand in the [Embed Creator](/dashboard/first/embeds) on the panel by clicking "Existing message" on the question asked after selecting the type of opening message, to customize the presentation embed however you like, or through the \ command. +:: + diff --git a/docs/en/5.community/2.starboards.md b/docs/en/5.community/2.starboards.md new file mode 100644 index 000000000..74e1ce63c --- /dev/null +++ b/docs/en/5.community/2.starboards.md @@ -0,0 +1,124 @@ +--- +slug: /community/starboards +title: Starboards +description: Highlight the best messages of your server in a dedicated channel by interacting with a reaction. +navigation.icon: 'twemoji:star' +redactors: ['kazotka', 'wapiti13', 'rababio4579'] +contributors: ['draftproducts', 'imroxxor', 'elbaguetto', 'thecreatorn3ant'] +updatedAt: '2024-09-30' +sourceHash: 6ca55362e430a6c0f5864843d74d67a92a7c937e645c253adbfa56b37d06283f +sourceCommit: cf7dd6baad2b658d0f53030171ba9ce91adbbf8b +--- + +## How does it work? + +The starboard system highlights messages receiving a certain number of `⭐` reactions, which DraftBot then displays in a dedicated channel, chosen or created during the configuration. + +::hint{ type="info" } + **Polls**, **stickers** and **forwarded messages** appear in the highlighted messages, even if the author is no longer part of the server. +:: + +## Configuring the system + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/community) + + Scroll down the list of systems and you will find the section dedicated to starboards. + + ![Configuration through the panel](./assets/starboards/panel_view.png) + + ### Creating a starboard + + To create a starboard, scroll down to the part dedicated to starboards and click "Create a hub". DraftBot then offers you a configuration menu to set up your first starboard. + + ![Creation menu](./assets/starboards/panel_create.png) + + ::hint{ type="info" } + You can then edit or delete the existing starboards through the "Edit" and "Delete" buttons. + + You can also disable your starboard while keeping it, by unticking the box to the left of the "Edit" button. + ![Configuration through the panel](./assets/starboards/panel_hub_line.png) + :: + :: + + ::tab{ label="Using the /config command" } + + ### Creating a starboard + + To configure the starboard directly on Discord, use the \ command, then select the "Starboard" tab. After clicking the "Create" button, let the questions guide you to set up the starboard in your server's image. + + You can in particular set the starboard's channel as well as its name. + Customizing the emoji is reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. + + ![Configuration through the /config command](./assets/starboards/config_example.png) + + ::hint{ type="info" } + You can then edit or delete the existing starboards through the "Edit" and "Delete" buttons. + :: + :: +:: + +## Available options + +### Channel + +- **Conditions per channel**: changes how many reactions are needed to publish a message, individually per channel. + +- **Channels that can be highlighted**: chooses the channels whose messages can appear in the starboard. + +### Reaction + +- **Emoji**: changes the starboard's default emoji (<:icon_premium:1096140508625125417>) + +- **Minimum reactions**: sets a minimum number of reactions (between 1 and 25). + +- **Withdrawal of one's own reactions**: removes the starboard emoji reaction left by authors on their own messages. + +- **Ignore messages from bots**: prevents bots' messages from being highlighted. + +::hint{ type="info" } + Features marked with the <:icon_premium:1096140508625125417> symbol are reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. +:: + +### Roles + +- **Roles that can be highlighted**: sets which roles' messages can appear in the starboard. + +- **Roles that can vote**: sets which roles' reactions are counted before a message is highlighted. + +### Customization + +- Changes the content of the message, and chooses whether it is sent in an **embed** or not. + +- If the embed is enabled, its color can be changed. (<:icon_premium:1096140508625125417>) + +::hint{ type="info" } + Features marked with the <:icon_premium:1096140508625125417> symbol are reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. +:: + +You can customize the message sent in the configured channel with several variables: + +| Variable | Description | Example | +|----------|-------------|---------| +| `{emoji}` | Starboard emoji | ⭐ | +| `{emoji.count}` | Number of reactions | 15 | +| `{message.url}` | Link to the message | https://discord.com/... | + +*In addition to the [other variables](/docs/misc/variables) already available globally!* + +## The different formats + +::tabs + ::tab{ label="Message with an embed" } + ![Message with an embed](./assets/starboards/bot_message.png) + :: + + ::tab{ label="Message without an embed" } + ![Message without an embed](./assets/starboards/bot_message_2.png) + :: +:: + + + + diff --git a/docs/en/5.community/3.reaction-roles.md b/docs/en/5.community/3.reaction-roles.md new file mode 100644 index 000000000..a333a5487 --- /dev/null +++ b/docs/en/5.community/3.reaction-roles.md @@ -0,0 +1,148 @@ +--- +slug: /community/reaction-roles +title: Reaction-Roles +description: With the reaction-roles system, your members can easily pick roles from reactions. +navigation.icon: 'twemoji:radio-button' +redactors: ['draftproducts'] +contributors: ['bariboo', 'theorik', 'imroxxor', 'rababio4579', 'clement669', 'iibey'] +updatedAt: '2023-10-08' +sourceHash: 67acffc61c9f4cd80f7ff7231f2892d5d0d4ed1a00051f9fa1bcd189d56fa50f +sourceCommit: cf7dd6baad2b658d0f53030171ba9ce91adbbf8b +--- + +## Overview + +A message with reaction-roles lets you give your users a message accompanied by reactions they can use to assign roles to themselves. + +![Example of a reaction-role](./assets/reaction-roles/bot_view.png) + +## Creating a reaction-role + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/roles-reactions) + + To configure the reaction-roles system, open the configuration page and select the server you want. + + First, select the channel the reaction-role message is sent to, using the selector above the Embed Creator. + + Here are the different ways of setting the message members interact with to receive a role: + + - By creating a new message and/or an embed with the Embed Creator in the middle of the page. + - By using a **DraftBot** message created beforehand. To retrieve it, click the "`Retrieve a message`" button in the top right corner of the page. Then give the channel the message is in, as well as the [ID of the message](/docs/misc/finding-an-id#message-id) to retrieve. Then click "Retrieve". + + Then add your emoji and role pairings. You can add up to 10 per message. + + ::hint{ type="info" } + Premium doubles the limit and lets you add up to 20 reaction-roles per message. + :: + + You can change the message's reaction-role mode with the selector just below the Embed Creator. + + ::hint{ type="info" } + You can name your reaction-roles. To do so, go to the list of existing reaction-roles, then change the name of the reaction-role by clicking "UNNAMED". + + ![Text area of a reaction-role's box](./assets/reaction-roles/panel_rename.png) + :: + + ![Panel for creating a new reaction-role](./assets/reaction-roles/panel_view.png) + :: + + ::tab{ label="Using the /config command" } + To create a reaction-role, open \, then the "🧿 Reaction-Roles" section (*in the selector*). Then click "Create a new reaction-role". + + ![Reaction-role configuration through /config](./assets/reaction-roles/config_view.png) + + Once that is done, several choices are available: + + - **New message** ➜ **DraftBot** creates an embed with a custom title. + - **Existing message from DraftBot** ➜ The bot retrieves a **DraftBot** message that has already been sent. + + ::hint{ type="warning" } + To create a reaction-role from a message that has already been sent, you need to obtain its [ID](/docs/misc/finding-an-id#message-id). + :: + + ::hint{ type="info" } + If you want to create a message for your reaction-role, here are the different options: + + - **Through the \ command**: sends a simple message under **DraftBot**'s identity. + - **Through the Embed Creator on the [panel](/dashboard/first/messages)**: allows the complete and easy creation of a fully customizable message or embed. + :: + + ![Message for creating a new reaction-role](./assets/reaction-roles/config_target_message.png) + + ::hint{ type="warning" } + Reaction-roles can only be added to messages sent by **DraftBot**. + :: + + The whole creation is then guided by **DraftBot**. It asks you for the role to be added when someone interacts with the message, and for the reaction-role's format. + + ::hint{ type="info" } + A role can be granted temporarily by choosing buttons as the format. + :: + + ::hint{ type="success" } + Congratulations! The reaction-role is now created. We can now add other roles to it and carry on customizing it. + :: + :: +:: + +## Managing a reaction-role + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/roles-reactions) + + To manage an existing reaction-role, first open the panel through the link above, then the "Reaction-Roles" section. + + On the right of the page, you will find the list of every reaction-role existing on the server. To edit one, click "Edit". + + You can then edit reaction-roles in different ways: + + - By editing the reaction-role's message with the Embed Creator in the middle of the page. + - By changing the reaction-role's mode with the selector just below the Embed Creator. + - By adding, editing or deleting a reaction-role in the section below the mode selector. + + ::hint{ type="success" } + Finally, click "Edit": your reaction-role is updated! + :: + + ![Editing a reaction-role](./assets/reaction-roles/panel_edit.png) + :: + + ::tab{ label="Using the /config command" } + To manage your reaction-role, open \, then the "🧿 Reaction-Roles" section (*in the selector*). Then click "Manage an existing reaction-role". + + ::hint{ type="info" } + To open the reaction-role, you have to give the [ID](/docs/misc/finding-an-id#message-id) of the message containing it. + :: + + ### Adding or removing a role from your reaction-role + + To add a new role to your reaction-role, click "Add". **DraftBot** then asks you for the role to add as well as the format. + + To remove a role from its reaction-role, click "Delete". The bot then asks for the role to remove. + + ### Editing a reaction-role + + If you want to change the role a member receives when interacting with a button, a reaction or a role option in a selector, click "Edit". **DraftBot** invites you to select the role to change and the one you want to replace it with. + + ### The different modes + + Modes change the way your members can select roles and the way they keep them. + To change a reaction-role's mode, click "Mode". + + The only mode available for every format is the *Normal* mode (the role is added or removed when interacting with the message). + + - **Reversed**: the role is removed when the reaction is added, and added when the reaction is removed. + - **Simple**: the role is added or removed when the reaction is added, and the reaction is removed immediately. + - **Addition of the definitive role**: the user's reaction is removed when the role is added, and the role cannot be removed. + - **Withdrawal of the definitive role**: the user's reaction is removed when the role is removed, and the role cannot be taken back. + + ![Reaction-role management message](./assets/reaction-roles/config_manage.png) + + ::hint{ type="success" } + You now know how to manage your reaction-role! + :: + :: +:: diff --git a/docs/en/5.community/4.interserver.md b/docs/en/5.community/4.interserver.md new file mode 100644 index 000000000..085938814 --- /dev/null +++ b/docs/en/5.community/4.interserver.md @@ -0,0 +1,86 @@ +--- +slug: /community/interserver +title: Interserver +description: Interserver channels let two servers talk to each other; DraftBot takes on the user's appearance and forwards the messages. +navigation.icon: 'twemoji:clockwise-vertical-arrows' +contributors: ['imroxxor', 'wernouxe', 'elvhira', 'draftproducts', 'rababio4579'] +updatedAt: '2023-06-22' +sourceHash: f9288620d55d91667f9c1d9d7b7cdcf341d2d01a22afe7e00d6ace34774c6785 +sourceCommit: cf7dd6baad2b658d0f53030171ba9ce91adbbf8b +--- + +## The principle + +An interserver links **two channels belonging to different servers**: every message written in one is automatically copied into the other by DraftBot, under its author's identity. Your members can therefore talk with the members of another server without having to join it. + +The link relies on a **frequency**: a unique code generated in the first channel, which you then enter in the second one to connect them. + +## Available commands + +DraftBot gives you **three commands** to manage your interservers. + +### /interserver generate + +The \ command [creates a **unique frequency**](#creating-a-frequency) for your channel. + +::hint{ type="info" } + Each frequency belongs to one channel and cannot be duplicated. +:: + +![DraftBot's reply when generating](./assets/interserver/config_generate.png) + +### /interserver link + +Once the frequency has been created, use \ in the **second channel** you want to link to the first one. + +::hint{ type="info" } + The messages sent in one channel are automatically replicated in the other one through DraftBot. +:: + +![Example of the command to run when linking the two channels](./assets/interserver/config_link.png) + +### /interserver manage + +The \ command lets you **check the frequency** of a channel or change its existing link. + +::hint{ type="info" } + This command is useful for checking your configurations or finding an existing frequency. +:: + +## Setting up an interserver + +Here is the step-by-step process for linking two separate channels. + +### Creating a frequency + +- Use \ in the **first channel**. +- A unique frequency is created and displayed by DraftBot. + +::hint{ type="success" } + **Congratulations!** The frequency is ready, you can now link a second channel! +:: + +### Linking a second channel + +- In the channel you want to connect, use \. +- Give the **frequency of the first channel** to establish the link. + +### Checking or managing the link + +- Use \ to check the frequency or change the connection. +- Every piece of information about the link is displayed. + +::hint{ type="success" } + **Congratulations!** The interserver is now set up on your server! +:: + +## Additional information + +- You cannot link two channels of the **same server**. +- You can set up **1** interserver. [Premium](/premium) <:icon_premium:1096140508625125417> servers have no limit. +- Messages from bots and webhooks are ignored. +- A channel cannot be linked to more than one frequency. + +::hint{ type="warning" } + A cooldown applies to sending messages; it is there as a safety measure to prevent abuse. +:: diff --git a/docs/en/5.community/5.temporary-voice-channels.md b/docs/en/5.community/5.temporary-voice-channels.md new file mode 100644 index 000000000..861237f0e --- /dev/null +++ b/docs/en/5.community/5.temporary-voice-channels.md @@ -0,0 +1,643 @@ +--- +slug: /community/temporary-voice-channels +title: Temporary voice channels +description: Temporary voice channels let your members create channels they can customize and configure to their taste. +navigation.icon: 'twemoji:speaker-high-volume' +redactors: ['tellvex', 'kazotka', 'ls62', 'draftproducts'] +contributors: ['rababio4579', 'theorik', 'elbaguetto', 'thecreatorn3ant', 'imroxxor'] +updatedAt: '2026-08-05' +sourceHash: c0ea9d269c250fcc7cf5e9a49dde06ba8a073164f62d236a794fe42058fda35d +sourceCommit: cf7dd6baad2b658d0f53030171ba9ce91adbbf8b +--- + +## Using temporary channels + +To get your voice channel, you have to join the **hub**: a slightly special voice channel, which is not there for talking but for creating your own channel. As soon as you join it, DraftBot automatically moves you to a new channel of your own. By default it is named `➕ Create your channel`. + +When you create a temporary voice channel, you can configure it through a [message](#using-the-settings-embed) *(this option can be disabled)*. + +When the last member present in the channel disconnects, the temporary channel is deleted automatically by **DraftBot**. + +![Demonstration of the system](./assets/temporary-voice-channels/view_guide.gif) + +## Using the settings embed + +When you create a voice channel, an embed appears in the **voice channel's text chat**. It contains every moderation permission tied to the voice channel. + +![Illustration of the settings panel's buttons](./assets/temporary-voice-channels/view_button.png) + +- **Open**: this option opens the channel to every member, except those on the **blacklist** and the default overrides. + +::hint{ type="info" } + In open mode, the users on the whitelist have the microphone, video and soundboard permissions. +:: + +- **Closed**: this option locks the channel to every member, except those on the **whitelist** and the default overrides. + +- **Private**: this option locks and hides the channel from every member, except those on the **whitelist** and the default overrides. + +- **Whitelist**: this option adds members who are **allowed to join** the channel whatever the mode (Open, Closed, Private) and who receive every microphone, video and soundboard permission. + +- **Blacklist**: this option adds members who **cannot join** the voice channel. + +::hint{ type="info" } + When a member or a role is added to a temporary channel's blacklist, the people concerned are disconnected automatically. +:: + +- **Temporary Exclude**: this option **temporarily excludes** a member from the voice channel. The excluded member is disconnected immediately and cannot join the channel until the next session. This button is only available when a **save is active**. See the [Configuration saves](#configuration-saves) section for more details. + +- **Purge**: purging disconnects every member present in the channel except those on the whitelist, the channel's owner, the moderators and the administrators. A confirmation with the list of members concerned is displayed before the action. +- **Microphone**: this option enables or disables the microphone for every participant in the voice channel. +- **Video**: as with the previous option, it allows or denies the permission to use the camera or screen sharing for every participant in the voice channel. +- **Soundboard**: this option enables or disables the use of soundboards for every participant in the voice channel. +- **Status**: this option allows or denies participants the ability to set the voice channel's status. + +::hint{ type="info" } + After every change, **DraftBot** confirms the new permission in a message only you can see. That message also lists the members who are not affected by it, because a role, the **Administrator** permission or a channel override already grants (or denies) them that permission elsewhere. For the **Microphone**, it also reminds you that members already connected will have to reconnect, as Discord does not allow anything else. +:: + +- **Settings**: this option opens a form for changing the voice channel's **name**, its **member limit** (from 0 to 99, where 0 means no limit) and its **voice region**. The options present in the form depend on the configuration chosen by the administrator (see [Settings options](#settings-options)). This lets members customize their channel **without needing the "Edit the channel" permission** in the creator's permissions, nor the **2FA** Discord requires on community servers. + +::hint{ type="warning" } + Discord limits channel changes to **2 times every 10 minutes**. **DraftBot** displays how many changes are left and a waiting time if the limit is reached. +:: + +- **Transfer**: this option transfers the voice channel's management rights to someone else. + +::hint{ type="info" } + If the owner leaves the voice channel and **channel requisition** has been enabled by an administrator, any user can take over ownership by pressing the **Transfer** button. +:: + +::hint{ type="danger" } + Transferring ownership in a voice channel is permanent. + You will lose access to the **voice channel**'s configuration embed. +:: + +- **Saves** <:icon_premium:1096140508625125417>: this option lets you **save** and **load** complete voice channel configurations. See the [Configuration saves](#configuration-saves) section for more details. + +## Configuring the system + + +### Creating a hub +The temporary voice channel system can be configured through the \ command or through the web panel. + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/community) + + Go to the panel, then to the [Community](/dashboard/first/community) category. + + ![Overview of the panel](./assets/temporary-voice-channels/panel_hub.png) + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Voice channels` ➔ `Create a hub` from the dropdown menu. + + ![Overview of the /config command](./assets/temporary-voice-channels/config_hub.png) + :: +:: + +::hint{ type="info" } + By default, you can only create one hub. [Premium](/premium) <:icon_premium:1096140508625125417> servers have no limit. +:: + +::hint{ type="success" } + **Congratulations, you have just created your hub!** +:: + + +## Managing your hub +Now that your hub is set up, you can configure it in more advanced ways. + + +### Enabling / disabling a hub +A hub can be enabled and disabled to choose whether users are allowed to create voice channels. + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/community) + + In the list of hubs, an enable/disable button is available to the left of the `Edit` button. + + ::hint{ type="info" } + If the module is enabled, clicking this button disables it. Conversely, if it is disabled, clicking it enables the module. + :: + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Voice channels` ➔ `Edit a hub` from the dropdown menu. + + After clicking the button, you will see that your hub is enabled thanks to the green button named `System enabled`. + + ::hint{ type="info" } + If the module is enabled, clicking this button disables it. Conversely, if it is disabled, clicking it enables the module. + :: + :: +:: + +::hint{ type="warning" } + Even if the module is disabled, the voice channel that served as the hub does not disappear. It simply becomes an ordinary voice channel. +:: + +### Category +To keep your server organized, you can change the category DraftBot creates members' voice channels in. + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/community) + + Go to the panel, then to the [Community](/dashboard/first/community) category. Then click `Temporary voice channels (privateroom)` and finally the `Edit` button. + + Several options are available in the category section. + + - **Create**: DraftBot sets up a new category for you. + - **Select**: you designate an existing category, by its name or its [ID](/docs/misc/finding-an-id). + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Voice channels` ➔ `Edit a hub` ➔ `Category` from the dropdown menu. + + After clicking the button, a confirmation message appears. Click `Yes` if you want to apply the change. + + You can choose between: + + - **New category**: DraftBot sets up a new category for you. + - **Use an existing category**: you enter the name or ID of the category. + :: +:: + + +### Changing the hub +You can change the voice channel that serves as the hub, that is, the one that triggers the creation of a temporary channel when a member joins it. + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/community) + + Go to the panel, then to the [Community](/dashboard/first/community) category. Then click `Temporary voice channels (privateroom)` and finally the `Edit` button. + + Several options are available in the "creation channel" section. + + - **Create**: DraftBot sets up a new creation voice channel for you. + - **Select**: you designate an existing voice channel, by its name or its [ID](/docs/misc/finding-an-id). + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Voice channels` ➔ `Edit a hub` ➔ `Hub (channel)` from the dropdown menu. + + After clicking the button, a confirmation message appears. Click `Yes` if you want to apply the change. + + You can choose between: + + - **New channel**: DraftBot sets up a new creation voice channel for you. + - **Use an existing channel**: you enter the name or ID of the voice channel to use. + :: +:: + +### Voice channel name format + +To make voice channels look better, you can customize the format of temporary voice channel names by adding words, emojis and variables. + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/community) + + Go to the panel, then to the [Community](/dashboard/first/community) category. Then click `Temporary voice channels (privateroom)` and finally the `Edit` button. + + You can use variables from the list below: + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Voice channels` ➔ `Edit a hub` ➔ `Channel names` from the dropdown menu. + + You will be able to choose several variables among those listed below. + :: +:: + +::collapse{ label="List of variables" } + + - `{user}` to display the member's nickname on the server. + - `{user.username}` to display the member's Discord name. + - `{user.tag}` to display the nickname with the member's tag (Username#0000). + - `{index}` to number the channel. + - `{random-word}` to assign a random word from a list of **DraftBot** words. + - `{custom-word}` to assign a random word from a customizable list. + + ::hint{ type="info" } + The `{custom-word}` variable has to be configured from the panel. + :: +:: + +::hint{ type="info" } + This feature is reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. +:: + + +### Default permissions +You can set the default permissions applied to temporary voice channels. + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/community) + + Go to the panel, then to the [Community](/dashboard/first/community) category. Then click `Temporary voice channels (privateroom)` and finally the `Edit` button. + + Several options are available in the channel permissions section. + + - **Those of the category**: DraftBot takes the category's permissions and applies them to the user's temporary voice channel. + + - **Those of the creation channel**: DraftBot takes the hub's permissions and applies them to the user's temporary voice channel. + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Voice channels` ➔ `Edit a hub` ➔ `Default permissions` from the dropdown menu. + + You can choose between two options: + + - **Those of the category**: DraftBot takes the category's permissions and applies them to the user's temporary voice channel. + + - **Those of the creation channel**: DraftBot takes the hub's permissions and applies them to the user's temporary voice channel. + :: +:: + + +### Creator's permissions +DraftBot gives your users a high level of customization for their temporary voice channels, while letting you, as an administrator, define precisely which customization options they have at their disposal. + +- **Create an invitation**: lets the creator create invitations for the voice channel. +- **Edit the channel**: grants permission to change the channel's settings. +- **Change permissions**: allows every channel setting to be changed. The creator will be able to create overrides and grant or deny permissions to the members and roles of their choice. +- **Priority speaker**: the sound of every participant is lowered when the channel's creator speaks. +- **Set voice channel status**: the creator will be able to set the voice channel's status. +- **Use soundboards**: gives the ability to use soundboards. + +::hint{ type="info" } + To use `priority speaker`, the microphone activation has to be in "[Push-to-Talk](https://support.discord.com/hc/en-us/articles/211376518-Voice-Input-Modes-101-Push-to-Talk-Voice-Activity)" mode. +:: + +::hint{ type="danger" } + **If you grant the `Change permissions` permission, creators will be able to give themselves permissions, which could compromise your server's security. We recommend granting this permission only if you are sure you know what you are doing!** +:: + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/community) + + Go to the panel, then to the [Community](/dashboard/first/community) category. Then click `Temporary voice channels (privateroom)` and finally the `Edit` button. + + Several options are available in the "channel creator's permissions" section. + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Voice channels` ➔ `Edit a hub` ➔ `Creator's permissions` from the dropdown menu. + + The list of the different permissions then appears. + :: +:: + + +### Member limit +You can set the limit of members allowed to join a user's temporary voice channel. + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/community) + + Go to the panel, then to the [Community](/dashboard/first/community) category. Then click `Temporary voice channels (privateroom)` and finally the `Edit` button. + + You will be able to set the limit in the "user limit" section. + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Voice channels` ➔ `Edit a hub` ➔ `Members limit` from the dropdown menu. + + You will be able to choose any value between **0** and **99**. + + ::hint{ type="info" } + If you want no limit at all, enter 0. + :: + :: +:: + + +### Permanent channels +Permanent channels are channels that stay even after the user has left a voice channel. This feature stops DraftBot from deleting the voice channel. It is often used by server owners who want to create a voice channel without using the system. + +::hint{ type="info" } + Note that DraftBot adds it to the permanent channels automatically through the \ command. +:: + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/community) + + Go to the panel, then to the [Community](/dashboard/first/community) category. Then click `Temporary voice channels (privateroom)` and finally the `Edit` button. + + You will be able to add or remove permanent channels in the "permanent channels" section. + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Voice channels` ➔ `Edit a hub` ➔ `Permanent channel` from the dropdown menu. + + A menu for adding or removing permanent channels appears. + :: +:: + + +## Settings embed +Users can configure their voice channels directly through an interface located in the text chat of their temporary voice channel. + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/community) + + Go to the panel, then to the [Community](/dashboard/first/community) category. Then click `Temporary voice channels (privateroom)` and finally the `Edit` button. + + You will be able to configure it in the "Channel configuration" section. + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Voice channels` ➔ `Edit a hub` ➔ `Settings embed enabled` from the dropdown menu. + + After clicking the button, you will see that your hub is enabled thanks to the green button named `System enabled`. + + ::hint{ type="info" } + If the module is enabled, clicking this button disables it. Conversely, if it is disabled, clicking it enables the module. + :: + :: +:: + + +### Access roles +This option allows one or more roles to join temporary voice channels by default. It is these roles' permissions that are changed when the owner changes their channel's visibility (`Open`, `Closed`, `Private`). + +::hint{ type="info" } + You can select up to **5 access roles**, which cannot be added to the whitelist or the blacklist by the channel's owner. +:: + +::hint{ type="info" } + By default, **@everyone** has access to temporary voice channels. +:: + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/community) + + Go to the panel, then to the [Community](/dashboard/first/community) category. Then click `Temporary voice channels (privateroom)` and finally the `Edit` button. + + You will be able to configure it in the "Access roles for temporary channels" section, by selecting **@everyone** or up to **5 roles**. + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Voice channels` ➔ `Edit a hub` ➔ `Access roles` from the dropdown menu. + + You can choose between two options. + + - **@everyone**: by default, everyone can join a temporary voice channel. (unless the owner sets the voice channel to `Closed` or `Private`) + - **Custom roles**: choose up to **5 roles** you have already set up. If **@everyone** does not have access to the category or to the creation channel, **DraftBot** offers you the roles that do have access straight away. + :: +:: + + +### Settings access roles +Roles can be configured so that they can or cannot change the settings embed, even if they are the channel's creator. + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/community) + + Go to the panel, then to the [Community](/dashboard/first/community) category. Then click `Temporary voice channels (privateroom)` and finally the `Edit` button. + + You will be able to configure it in the "Roles with/without access to the configuration menu" section. + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Voice channels` ➔ `Edit a hub` ➔ `Settings access roles` from the dropdown menu. + + You will be able to add or remove allowed or disallowed roles. + :: +:: + + +### Moderator roles +Members holding a moderator role **automatically have access to every temporary voice channel** and **cannot be added to the blacklist** by the channel's creator. They can also **rename** any temporary voice channel, regardless of the [settings options](#settings-options) configured by the administrator. + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/community) + + Go to the panel, then to the [Community](/dashboard/first/community) category. Then click `Temporary voice channels (privateroom)` and finally the `Edit` button. + + You will be able to configure it in the "Moderator roles" section. + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Voice channels` ➔ `Edit a hub` ➔ `Moderator roles` from the dropdown menu. + + You will be able to add or remove moderator roles. + :: +:: + + +### Untouchable roles +Members holding an untouchable role **cannot be added to the whitelist or the blacklist** by the channel's creator. Unlike moderator roles, they do not automatically have access to the channels. + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/community) + + Go to the panel, then to the [Community](/dashboard/first/community) category. Then click `Temporary voice channels (privateroom)` and finally the `Edit` button. + + You will be able to configure it in the "Untouchable roles" section. + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Voice channels` ➔ `Edit a hub` ➔ `Untouchable roles` from the dropdown menu. + + You will be able to add or remove untouchable roles. + :: +:: + + +### Whitelisted member permissions +This option lets you decide whether the members on the whitelist can access the following four permissions. + +- <:micro:1146811975280627783> **Microphone** +- <:video:1146811983870558298> **Video** +- <:soundboard:1146811981504970762> **Soundboards** +- <:status:1391998728415477771> **Status** + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/community) + + Go to the panel, then to the [Community](/dashboard/first/community) category. Then click `Temporary voice channels (privateroom)` and finally the `Edit` button. + + You will be able to configure it in the "Whitelisted member permissions" section. + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Voice channels` ➔ `Edit a hub` ➔ `Whitelisted member permissions` from the dropdown menu. + + You will be able to add or remove the four permissions. + :: +:: + + +### Customizing the settings buttons +You can customize the embed's settings buttons. This lets you disable settings buttons so that your members do not use them. + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/community) + + Go to the panel, then to the [Community](/dashboard/first/community) category. Then click `Temporary voice channels (privateroom)` and finally the `Edit` button. + + You will be able to configure it in the "Configuration menu buttons enabled" section. + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Voice channels` ➔ `Edit a hub` ➔ `Customize settings buttons` from the dropdown menu. + + You will be able to enable or disable the buttons of your choice. + :: +:: + +### Settings options + +You can choose precisely which options your members can change through the embed's **Settings** button. The three options available are: + +- **Channel name** +- **User limit** +- **Voice region** + +::hint{ type="info" } + Unticking an option removes it from the settings form: members will no longer be able to change it themselves. +:: + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/community) + + Go to the panel, then to the [Community](/dashboard/first/community) category. Then click `Temporary voice channels (privateroom)` and finally the `Edit` button. + + You will find the **Settings options** option, which lets you select the fields displayed in the settings modal. + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Voice channels` ➔ `Edit a hub` ➔ `Settings options` from the dropdown menu. + + You will be able to tick or untick each of the options displayed in the settings modal. + :: +:: + +### Channel requisition + +When this option is enabled, the members present in a temporary voice channel can **take over ownership** of the channel if the owner has left it, by clicking the **Transfer** button. The member who requisitions it becomes the channel's new owner. + +::hint{ type="info" } + If this option is disabled, members cannot take over a channel whose owner has left. +:: + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/community) + + Go to the panel, then to the [Community](/dashboard/first/community) category. Then click `Temporary voice channels (privateroom)` and finally the `Edit` button. + + You will find the **Requisition** option, which lets members take over an inactive temporary voice channel. + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Voice channels` ➔ `Edit a hub` ➔ `Channel requisition enabled` from the dropdown menu. + + The button toggles between enabled and disabled. + :: +:: + + +### Saves +This option enables or disables the **configuration saves** system for temporary voice channels. + +![Menu of a save](./assets/temporary-voice-channels/saves.png) + +::hint{ type="info" } + This feature is reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. +:: + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/community) + + Go to the panel, then to the [Community](/dashboard/first/community) category. Then click `Temporary voice channels (privateroom)` and finally the `Edit` button. + + You will find the **Saves** option, which lets members save the configuration of their temporary voice channel. + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Voice channels` ➔ `Edit a hub` ➔ `Saves` from the dropdown menu. + + The button toggles between enabled and disabled. + :: +:: + +## Configuration saves + +::hint{ type="info" } + This feature is reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers and has to be enabled by an administrator in the hub's configuration. +:: + +Saves let members **save** and **load** complete configurations of their temporary voice channel. This includes: + +- The channel's **visibility** (open, closed, private) +- The **member limit** +- The **channel name** +- The **whitelist and blacklist** (members and roles), automatically updated in the default save on every addition or removal +- The **permissions** (microphone, video, soundboard, status) + +Each member can have up to **5 saves** per hub. + +::hint{ type="info" } + The **Temporary Exclude** button temporarily excludes a member from the voice channel without affecting the saves. Unlike the blacklist, the exclusion is not kept in the saves and ends with the next session. +:: + + +### Creating a save +By clicking the **Saves** button and then **New save**, you have two options: + +- **Current configuration**: records your channel's current configuration (visibility, permissions, lists, limit, name). +- **Blank configuration**: creates a save with the server's default settings. + +A preview of the configuration is displayed before confirmation. + + +### Loading a save +Select a save in the dropdown menu, then click **Load** to apply that configuration to your current voice channel. Every permission, list and setting of the save is applied. + + +### Default save +You can set a save as the **default** one. It is then loaded automatically every time you create a new temporary voice channel. + +::hint{ type="info" } + When a default save is set, every change to the channel is kept from one channel to the next (change of visibility, of permissions, etc.). +:: + + +### Managing saves +From the interface, you can: + +- **Change the name** of a save +- **Delete** a save (with confirmation) +- **Set as default** a save + +### Importing a save + +You can **import a save from another hub or another server** where you have existing saves. The process takes several steps: + +1. Select the source **server** +2. Select the source **hub** +3. Select the **save** to import + +::hint{ type="warning" } + When importing from another server, the **roles** present in the whitelist/blacklist are not imported (they belong to the original server). Only the **members** are kept, if they are present on the destination server. +:: diff --git a/docs/en/5.community/6.messages.md b/docs/en/5.community/6.messages.md new file mode 100644 index 000000000..8cc0cc32d --- /dev/null +++ b/docs/en/5.community/6.messages.md @@ -0,0 +1,390 @@ +--- +slug: /community/messages +title: Messages +description: Create interactive messages, with a custom identity and configurable actions! +navigation.icon: 'twemoji:pen' +redactors: ['titoto289', 'draftproducts', 'lyvendev', 'imroxxor'] +contributors: ['imroxxor', 'theorik', 'draftproducts', 'brad-drft', 'rababio4579', 'ls62'] +updatedAt: '2026-06-26' +sourceHash: 6b7b3a2313e629b97bdd3d7efb3970bb53041df7848676e09eec692b0d97dda3 +sourceCommit: cf7dd6baad2b658d0f53030171ba9ce91adbbf8b +--- + +## Creating a message + +You can create a message on the panel by [**`clicking here`**](/dashboard/first/messages). + +The panel lets you create and send messages that are 100% customizable to your needs. + +![Starting menu for writing your message](./assets/messages/panel_view.png) + +At the top of the editor, you first choose the **format** of your message: +- **Embeds:** the classic format, described below. You compose your message with content, embeds, images, buttons and selectors. +- **Advanced:** a more flexible format, based on Discord's V2 components, detailed in the [Advanced mode](#advanced-mode) section. + +::hint{ type="warning" } + Switching format resets the content you are writing. This action cannot be undone; a confirmation is requested as soon as there is content to lose. +:: + +For the **Embeds** format, you add text, images or content using the `Content`, `Image` and `Embed` buttons. + +::hint{ type="info"} + The `Button` and `Selector` buttons let you create an interactive experience for your members. To learn more about how they work, see the [interactions](#interactions) section! +:: + + +### Content +By pressing the **Content** button, you can write a classic message with **DraftBot**. You can include native emojis or those of your Discord server. + +You can generate dynamic times ([timestamps](/docs/misc/timestamps)) easily with the <:editor_timestamp:1520828760524591154> button. These times automatically adapt to the time zones of your server's users. + +![Compare the difference between the editing view and the final rendering here](./assets/messages/panel_content.png) + +::hint{ type="info" } + Because of restrictions imposed by Discord, the content is limited to 2000 characters. +:: + +### Richer autocompletion + +By typing a trigger character in any text field, **DraftBot** offers you a smart list: +- `#` your **channels**. +- `@` your **roles** and your **members**. +- `/` the bot's **commands**, inserted as a clickable mention. +- `:` the **emojis**, both custom server ones and native ones. +- `{` the dynamic **variables**. + +::hint{ type="info" } + Autocompletion works in every text field of the panel: Content, Embed, Text. +:: + +### Adding an image + +By pressing the **Image** button, you can add an image directly to your message. Clicking it lets you choose whether to import an image from your device or from a link. + +![The image selector with the description and spoiler options](./assets/messages/panel_image_options.png) + +Two options are available for each image: +- **Description (alt text):** a text describing the image. It improves accessibility (screen readers) and is displayed if the image cannot be loaded. The description is limited to `1024` characters. +- **Spoiler:** hides the image behind a veil. Your members have to click it to reveal it. + +You can also group several images in a **gallery**, up to `10` images: Discord then displays them side by side as a grid. + +::hint{ type="info" } + The supported image types are: `png`, `jpg`, `jpeg`, `gif`, `webp`. +:: + +### Embed + +By pressing the **Embed** button, you can write a detailed message gathering several pieces of information. + +![Compare the difference between the editing view and the final rendering here](./assets/messages/panel_embed.png) + +Here is what each text area means: +- **Author name:** you can put text here to introduce the author, your username or the name of your server. +- **Title:** you can enter your embed's title. You can also add a link easily with the <:title_link:1389707183377088572> button that appears when you write. +- **Description:** this is where you put the body of your message. [Discord Markdown](/docs/misc/markdown) (**bold**, *italic*, etc.) can be used in this area. + +::hint{ type="info" } + You can put up to `4096` characters in the description. +:: +- **Fields:** you can insert several organized text areas here (title and content). "Field" blocks are separated from each other by a larger line spacing. + - **Field name:** the text in this area appears in **bold**. + - **Field value:** this is a text area, you can fill it however you like. + + ::hint{ type="info" } + The number of fields is limited to `25` per embed. The "Value" part of a field can contain up to `1024` characters. + + You can also reorder your fields and change their alignment (vertical or horizontal) by clicking the <:inline:1389707180994990172> button that appears when you fill in a field. + :: +- **Footer:** you can add a text to close your message. It is displayed very small, at the bottom of your embed. +- **Timestamp:** by pressing the <:timestamp_eye:1389707185088499712> button, you can choose whether the message's sending time appears at the bottom of the embed. +- **Images:** the orange boxes are areas where you can insert an image. Clicking them lets you choose whether to import an image from your device or from a link. An embed can display up to `4` images as a gallery. + +::hint{ type="danger" } + Your message as a whole cannot contain more than `6,000` characters. +:: +Several buttons sit to the right and left of the embed editor: +- <:editor_color:1520826844495085760>: lets you change the color of the bar to the left of the embed. You can also choose **No color**: in that case, Discord automatically applies a color suited to the theme (light or dark) of each person reading the message. +- <:editor_duplicate:1520826881530790059>: lets you duplicate your embed easily. The copy created appears just below the first one. +- <:editor_delete:1520826862459420774>: lets you delete the associated embed. + +::hint{ type="warning" } + Deleting an embed cannot be undone. +:: + +### Mentions + +When your message contains mentions (a member, a role, `@everyone` or `@here`), the **Mentions** button lets you control precisely who is actually notified. This is handy for writing a mention without sending a notification to everyone. + +![Configuration menu for the message's mentions](./assets/messages/panel_mentions.png) + +::hint{ type="info" } + Only the mentions already present in your message's text appear in this menu. This setting is not there to add mentions, but to decide which ones trigger a notification. +:: + +For roles as for members, you can choose between three modes: +- **None:** the mention is displayed but notifies nobody. +- **All:** every mention of that type notifies the people concerned. +- **Selected:** you pick precisely which roles or members are notified. + +Two options are also available: +- **Allow `@everyone` and `@here`:** enable this if you want these global mentions to notify members. +- **Silent message:** the message is sent without notification (no sound, no push notification). Members only see an unread message badge, even if they are mentioned. + +::hint{ type="info" } + Mentions placed in an embed never trigger a notification, whatever this setting. +:: + +### Sending your message + +To send your message after writing it on the panel, choose a sending channel at the top of the page, then click the `Send` button. + +Your message has been sent according to your settings. + +::hint{ type="info" } + You can edit your message if you have forgotten something. +:: + +### Retrieving a message + +You can retrieve a message by pressing the orange `Retrieve a message` button in the top right corner of the page. A menu then appears to find the message through the message ID and its original channel. You can also find the message through the message link. +![Menu for retrieving a message sent with DraftBot](./assets/messages/panel_fetch_message.png) + +::hint{ type="warning" } + You cannot retrieve a message that has been deleted from the channel. +:: + +A message sent in the **Advanced** format reopens directly in the **Advanced** editor: if the editor is in Embeds mode at retrieval time, it switches automatically. You will be able to edit it, but Discord does not allow it to be converted back to the Embeds format. + +Once your message has been retrieved, you can edit it however you like. + +## Advanced mode + +**Advanced** mode (based on Discord's V2 components) is a message format available from the [panel's editor](/dashboard/first/messages). Instead of the fixed structure of embeds, it offers a system of **blocks** you assemble and reorder freely: you stack text, images, separators, buttons and selectors in the order of your choice, and you can group them in colored containers. + +This format is well suited when the Embeds format holds you back: for a free layout, several image galleries, or blocks pairing a text with a thumbnail or a button. + +To enable it, use the format selector at the top of the editor and choose **Advanced**. + +![The message editor in Advanced mode](./assets/messages/panel_advanced_editor.png) + +::hint{ type="warning" } + Switching between **Embeds** and **Advanced** resets the content in progress: this action cannot be undone. A confirmation is requested as soon as there is content to lose. +:: + +::hint{ type="danger" } + Discord does not allow a message already sent in **Advanced** mode to be converted back to the classic format. In practice: + - a message sent in **Embeds** and then edited in **Advanced** is converted for good: you will not be able to switch it back to Embeds; + - a message sent in **Advanced** can only be edited in **Advanced**. If you switch the editor back to **Embeds**, sending creates a new message instead of editing the old one. +:: + +As in the Embeds format, the **Mentions** button remains available in Advanced mode: you control who is notified and you can send a silent message (see [Mentions](#mentions)). + +A button bar lets you add the following blocks to your message: + +![The block bar of Advanced mode](./assets/messages/panel_advanced_blocks.png) + +::hint{ type="info" } + Every block can be reordered by drag and drop (including into or out of a container) and can be duplicated or deleted. A message cannot exceed `40` components. +:: + +### Text + +A simple text block. [Discord Markdown](/docs/misc/markdown) (**bold**, *italic*, etc.), emojis and [timestamps](/docs/misc/timestamps) can be used there. You can add several text blocks to the same message. + +From a text block, you can also add an **image** (as a thumbnail) or a **button** to its right. + +### Images + +Adds one or more images as a **gallery**, arranged automatically in a grid. A gallery can contain up to `10` images. As in Embeds mode, each image can be given a **description** (alt text, `1024` characters maximum) and marked as a **spoiler**. + +![View of an image gallery](./assets/messages/panel_advanced_images.png) + +### Separator + +Inserts a space between two blocks to give your message room to breathe. You can: +- show or hide the separating **line**; +- choose **large** or **compact** spacing. + +### Container + +The container (**Container** button) groups several blocks (text, images, separators, buttons, etc.) inside a frame, in the manner of an embed. You can give it an **accent color** (the colored bar on the left) or none at all, and hide its whole content behind a **spoiler**. + +![Container in the editor](./assets/messages/panel_advanced_container.png) + +::hint{ type="info" } + A container cannot contain another container. +:: + +### Button and Selector + +**Buttons** and **selectors** trigger the same [actions](#possible-actions) as in Embeds mode. You can lay them out in **rows**: a row accepts up to `5` buttons, while a selector takes up a row on its own. + +## Interactions + +You can create **buttons** and **selectors** that the members of your server can use. These buttons and selectors trigger actions you have programmed beforehand (adding roles, sending a message or interacting with **DraftBot** features). You can also set conditions for certain interactions. They work in the **Embeds** format as well as in **Advanced** mode. + +::hint{ type="warning" } + For a message containing one (or more) interaction(s) to work, it **has to** be saved on the panel. +:: + +::hint{ type="info" } + You can save up to 5 messages on the panel. On [premium](/premium) <:icon_premium:1096140508625125417> servers, this limit rises to **200**. +:: + +### Interactive buttons + +To create a button, click the button named `Button` in the editor. + +![Menu for configuring a button](./assets/messages/panel_bouton_interaction.png) + +This menu lets you configure: +- The **name** of the button (it is displayed on the button, and visible to everyone); +- An **emoji** of your choice, displayed on the button, to the left of the name. Your server's emojis are accepted, including animated ones! +- The **color** of the button: you can choose between blue, grey, green and red; +- The [**action**](#possible-actions) triggered when a user clicks the button. + +### Interactive selectors + +A selector is a button displaying a dropdown menu when clicked. Each line of that menu can trigger a separate action. + +![Menu for configuring a selector](./assets/messages/panel_selector_interaction.png) + +To create an interactive selector, click the button named `Selector`. You can set the text displayed on your selector (by default: "*Choose an option*"). Then you can choose between two selector modes: +- **Simple mode**: every option of the selector triggers the same type of action among: + - Sending ephemeral messages + - Adding and removing roles + - Opening tickets + - Buying shop articles +- **Advanced mode**: you can configure a different type of action for each option of the selector, among: + - Send a new message + - Send a saved message + - Add and remove roles + - Open a ticket + - Buy an article + - Submit a suggestion + + ::hint{ type="info" } + **Simple mode** is ideal for allowing several choices within the same action, for example *selecting a role to obtain from a list*. + **Advanced mode** is ideal for messages that need to do several different things from the same place, for example *choosing a role OR displaying an ephemeral message for more information*. + :: + +### Possible actions + +Here are the different actions you can attach to a button or to a selector option. + +::hint{ type="info" } + Most of these actions can be restricted so that they only work under certain conditions. For example, you can reserve an action for members holding a certain role. +:: + +#### Send a new message +This action sends a new message automatically through **DraftBot**. +In the "Target type" menu, you can choose how the message is sent: +- **Hidden answer to message**: an ephemeral message only visible to the user who triggered the action. +- **In a channel**: DraftBot posts the message in the channel of your choice. (you have to choose the target channel in the "Message sending channel" section). +- **Private message**: DraftBot sends the message directly to the user, in their direct messages. + +Once your choice is made, you can create your message using the editor included directly in the selector's configuration menu: +![You can write your message here.](./assets/messages/panel_interaction_send_message_preview.png) + + +#### Send a saved message +If you have already written and saved a message, this action sends it when the button is clicked. Once the message has been selected, you can set how to send it ("hidden answer", "in a channel" or "private message"). + + +#### Add and remove roles +With this action, you can let users assign or remove roles themselves by simply interacting with the message. DraftBot lets you choose between several styles of behavior for this action: +- **Classic:** when the user clicks the button, **DraftBot** gives them the matching role, or removes it if they already have it. +- **Fix:** when the user clicks the button, DraftBot gives them the matching role, but once the role has been obtained, clicking the button again does not remove it. + +::hint{ type="info" } + This option is particularly suited to situations where you do not want to let members change their mind. +:: +- **Unique:** the user can only have one role among those offered by the message. If they choose another button granting another role, their previous role is removed. + +You then have to set which roles are granted or removed (you have to set at least one). A checkbox lets you set whether the role is applied temporarily or not. If the role is temporary, you have to set how long the user keeps it before it is removed automatically. + + +#### Open a ticket +This action lets users open a [ticket](/docs/community/tickets) easily. + +You can set whether the ticket is sent with a reason you have predefined, or whether you want to let the user write the opening reason themselves. + +::hint{ type="success" } + If you use this action in a selector, you can, for example, offer several predefined reason choices. +:: + + +#### Buy an article +When triggered by the button, this option makes the user immediately buy a predefined [shop](/docs/engagement/economy#shop) article. To do so, you have to set the article to be bought. It is bought at the price set in the [Shop](/docs/engagement/economy#shop) module. + +::hint{ type="warning" } + When a user clicks this button, DraftBot carries out the purchase immediately if the user has the necessary amount. No confirmation is requested beforehand. +:: + + +#### Submit a suggestion +With this action, DraftBot lets you make [suggestions](/docs/community/suggestions) easier to reach with a single click on a button. You can choose whether interacting with this button opens the user's main suggestions menu, or the form for creating a new suggestion directly. + + +#### Redirect to a link +This action redirects the user to the URL of your choice when they click the button. + +::hint{ type="info" } + You cannot choose the button's color. It is necessarily grey. + + This action is only available on buttons. +:: + +## Message profiles + +A message profile is a fictional user in its own right, which you can use to send messages. + +![An inspiring message from a fictional user…](./assets/messages/bot_profil.png) + +You can open the profiles by clicking DraftBot's profile picture. +Once in the menu, new profiles can be created through the <:edit:1389714236418298017> button. +![Menu for adding a new profile](./assets/messages/panel_create_profil.png) +You can then import a profile picture or provide the link to an image. You also have to add a username. + +Once your profile has been created, it can be used when designing your messages, whether through the panel or the \ and \ commands. + +::hint{ type="info" } + You can find the link to a server's profile picture using the \ command, or \ for a member. +:: + +## Sending through a command + +As well as the panel, two commands let you send a message directly from Discord, without opening the dashboard. These commands use the classic **Embeds** format. + +### The /say command + +With this command, you can quickly send a message in a channel of your server. To use it, you need the **Administrator** permission or an override allowing you to use the command. +![The /say command with its arguments](./assets/messages/bot_send_command.png) +Here is what these parameters mean: +- **content**: the text for DraftBot to say, as a classic message. +- **picture:** you can attach an image to your message. +- **channel:** which channel should **DraftBot** send the message to? Leave it empty if it is the same channel as the one you are running the command from. +- **edit:** if you want to edit a message, use this extra field and include the link of the message to edit. + +### The /embed command + +![The /embed command with its sending parameters](./assets/messages/bot_embed_command.png) +Here is what these parameters mean: +- **channel:** which channel should **DraftBot** send the message to? Leave it empty if it is the same channel as the one you are running the command from. + +- **edit:** if you want to edit a message, use this extra field and include the link of the message to edit. +Once the command has been run, a menu appears. It is in this menu that you write your message. +![Menu that appears once the command has been run](./assets/messages/bot_embed_modal.png) +Each text area matches a type of content: +- **Content:** **DraftBot**'s text appears as a classic message. +- **Embed title:** this is your embed's title. +- **Embed description:** the text of your embed goes here. +- **Embed footer:** you can add a small text at the bottom of your embed. + +::hint{ type="warning" } + Deleting the embed cannot be undone: if you click the `Embed` button again after deleting it, a new **empty** embed appears. +:: + + + diff --git a/docs/en/5.community/7.recurring-messages.md b/docs/en/5.community/7.recurring-messages.md new file mode 100644 index 000000000..3874feb2c --- /dev/null +++ b/docs/en/5.community/7.recurring-messages.md @@ -0,0 +1,175 @@ +--- +slug: /community/recurring-messages +title: Repeat messages +description: DraftBot lets you create messages that are sent on a recurring basis, with a few extra features. +navigation.icon: 'twemoji:bell' +redactors: ['kazotka', 'bariboo', 'draftproducts'] +contributors: ['theorik', 'thecreatorn3ant', 'imroxxor', 'rababio4579', 'erwangit'] +updatedAt: '2025-01-21' +sourceHash: f58133a232520d88209a171410cf336dbcedf8c1936c1ac8b20845a3001cbc94 +sourceCommit: cf7dd6baad2b658d0f53030171ba9ce91adbbf8b +--- + +## Creating a repeat message + +::tabs + ::tab{ label="From the panel" } + + [⫸ Open the **DraftBot** panel](/dashboard/first/repeat-messages) + + You can configure a whole range of options: + + - `"Repeat message name"` ➜ Give your message a name to find it in the list of all your repeat messages! + + ::hint{ type="info" } + This name is not visible to the members of your server. + :: + + - `"Repeat message channel"` ➜ Select the channel the message is sent to. + - `"Sending interval"` ➜ Choose the type of interval. + + ::tabs + ::tab{ label="Repetition" } + ➜ *The message is sent at a set recurrence.* + + Start by entering the recurrence at which you want your message to be sent. + + You can then limit the times at which your repeat message is sent. To do so, set a time range in "Sending time". + + ::hint{ type="info" } + This means that during the time range you set here, your message is sent at each recurrence you configured in the previous step. + :: + :: + + ::tab{ label="Target time" } + ➜ *The message is sent on a target day and time.* + + Simply set the time at which you want your message to be sent in the selector. + + ::hint{ type="info" } + *The time is based on [the French time zone](https://time.is/Paris)*. + :: + :: + :: + + - `"Days of sending"` ➜ You can restrict the sending of the message to certain days of the week. + + ::hint{ type="info" } + In the basic configuration, every day is a sending day. + :: + + - `"Duplicated message"` ➜ Once this option is enabled, the repeat message is not sent if there has been no message since the last time it was sent. + - `"Sticky message"` ➜ When the repeat message is sent, the bot automatically deletes the previous one ([premium](/premium/) <:icon_premium:1096140508625125417>) + + ![View of the interface](./assets/recurring-messages/panel_view.png) + :: + + ::tab{ label="Using the /config command" } + + ::hint{ type="warning" } + During the configuration, if you want a message containing an embed, you can select a message you have already created. To do so, go to the [panel](/dashboard/first/messages), in the "message" category. + :: + + To begin, run the \ command, then select ":alarm_clock: Repeat messages" in the selector. Finally, click `"Create"`. DraftBot then guides you through the whole procedure: + + ![Overview of the repeat message configuration system](./assets/recurring-messages/config_view.png) + + ### Naming your repeat message + + The first thing to do is name your message. This name is what tells it apart in the list of your repeat messages. + + ::hint{ type="info" } + This name is not visible to the members of your server. + :: + + ### Sending interval + + The next thing to do is set how often the message is sent. You can choose between two types of interval: + + ***Relative**: the message is sent at a set recurrence.* + + ***Targeted**: the message is sent on a target day and time.* + + ![Overview of the sending interval type selection](./assets/recurring-messages/config_target_time.png) + + ::tabs + ::tab{ label="Relative" } + + ### Sending time + + Start by entering the recurrence at which you want your message to be sent. + + You can then limit the times at which your repeat message is sent. The bot asks you for a time range during which the message should be sent. + + ::hint{ type="info" } + This means that during the time range you set here, your message is sent at each recurrence you configured in the previous step. + :: + + ### Days of sending + + You can also decide to limit the sending of your repeat message to certain days. To do so, choose the days the message **should be sent** on in the selector. + + ![Overview of the selector for configuring the days of sending.](./assets/recurring-messages/config_days.png) + :: + + ::tab{ label="Targeted" } + + ### Sending time + + Start by entering the time at which you want your message to be sent. + + ::hint{ type="info" } + *The time is based on [the French time zone](https://time.is/Paris)*. + :: + + + ### Days of sending + You can also decide to limit the sending of your repeat message to certain days. To do so, choose the days the message __should be sent__ on in the selector. + + ![Overview of the selector for configuring the days of sending.](./assets/recurring-messages/config_days.png) + :: + :: + + ### Setting the message + + To add your message, you have two options: + + - Select an existing message by obtaining its [ID](/docs/misc/finding-an-id#message-id). + - Create a message directly through the `"New message"` button. + + ::hint{ type="info" } + Feel free to use Discord's [Markdown](https://support.discord.com/hc/en-us/articles/210298617-Markdown-Text-101-Chat-Formatting-Bold-Italic-Underline). + :: + + ::hint{ type="warning" } + This message offers little customization. That is why we advise you to create a fully customized message from the [panel](/dashboard/first/messages) and then select it through its [ID](/docs/misc/finding-an-id#message-id). + :: + + ![Overview of the different message types](./assets/recurring-messages/config_target_message.png) + + #### Selecting the channel + + Finally, select the channel the message should be sent to. + + #### Additional options + + The bot finishes by asking you a few questions: + + - Do you want the repeat message not to be sent when it is the last message in the channel? ➜ This avoids having the same message several times in a row when there has been no activity since the last time it was sent. + + - Do you want the last message sent to be deleted? ➜ This feature keeps the latest version of the message at the bottom of the channel and keeps the channel tidier. ([premium](/premium/) <:icon_premium:1096140508625125417>) + + ::hint{ type="success" } + Congratulations! Your repeat message is now created and configured! :tada: + :: + :: +:: + + + + + + + + + diff --git a/docs/en/5.community/8.social-notifications.md b/docs/en/5.community/8.social-notifications.md new file mode 100644 index 000000000..8f047dd14 --- /dev/null +++ b/docs/en/5.community/8.social-notifications.md @@ -0,0 +1,203 @@ +--- +slug: /community/social-notifications +title: Social notifications +description: Make your activity on other social networks public! +navigation.icon: 'twemoji:inbox-tray' +contributors: ['tellvex', 'elbaguetto', 'draftproducts', 'ls62', 'kicoulapic314', 'theorik', 'erwangit', 'thecreatorn3ant', 'imroxxor', 'rababio4579'] +updatedAt: '2025-07-31' +sourceHash: 97599befa02d97a16b1472bd7685ec18c5961423cb1bef17e6a1095d0790454d +sourceCommit: cf7dd6baad2b658d0f53030171ba9ce91adbbf8b +--- + +## Modules + +### YouTube + +This module **displays** a message when a [`YouTube`](https://www.youtube.com/) **video is published.** + +![YouTube social notification](./assets/social-notifications/bot_youtube.png) + +The announcement is fully **customizable**. Administrators can therefore configure **a notified role**, enable **publication on other servers**, choose the **color** of the announcement embed ([premium](/premium) <:icon_premium:1096140508625125417>), as well as other visual elements. + +::hint{ type="info" } + You can add **a single [YouTube](https://www.youtube.com/) channel**. [Premium](/premium) <:icon_premium:1096140508625125417> servers can have up to 5. +:: + +You can select the **types of videos** that are published, in the YouTube channel's configuration. You can therefore add videos, shorts and live streams. + +![Allowed elements](./assets/social-notifications/panel_youtube_allowed.png) + +You can customize the announcement message with several variables: + +| Variable | Description | Example | +|----------|-------------|---------| +| `{video.author}` | Channel name | DraftBot | +| `{video.title}` | Video title | How to use DraftBot | +| `{video.url}` | Video link | https://youtube.com/... | + +*In addition to the [other variables](/docs/misc/variables) already available globally!* + +### Twitch + +::hint{ type="info" } + This feature is reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. +:: + +**Twitch social notifications** send a **customizable** message when a **live stream starts**. A server can configure up to **5 different Twitch social notifications**. + +![Twitch social notification](./assets/social-notifications/bot_twitch.png) + +::hint{ type="info" } + To avoid embed spam, a 30-minute delay applies between two announcements from the same person. +:: + +You can customize the announcement message with several variables: + +| Variable | Description | Example | +|----------|-------------|---------| +| `{stream.author}` | Channel name | StreamerName | +| `{stream.title}` | Stream title | Development stream | +| `{stream.game}` | Game being streamed | Just Chatting | +| `{stream.url}` | Stream link | https://twitch.tv/... | +| `{stream.start_at}` | Start time | 2 hours ago | +| `{stream.tags}` | Stream tags | english, development | + +*In addition to the [other variables](/docs/misc/variables) already available globally!* + +### Reddit + +This module displays a notification when something is published in a **subreddit**. As with the other social notification modules, the message sent is fully customizable: it can therefore be sent as a **classic message or as an embed**. + +::hint{ type="info" } + You can only configure one [Reddit](https://www.reddit.com/) notification. [Premium](/premium) <:icon_premium:1096140508625125417> servers extend that limit to 10. +:: + +Here is an example of a notification message: + +![Reddit social notification](./assets/social-notifications/bot_reddit.png) + +::hint{ type="info" } + To make the **Minimum upvotes** option work for every server, a minimum delay of **15** minutes between the publication on Reddit and DraftBot's announcement has been put in place. +:: + +You can customize the announcement message with several variables: + +| Variable | Description | Example | +|----------|-------------|---------| +| `{post.subreddit}` | Subreddit name | r/discord | +| `{post.title}` | Post title | Question about DraftBot | +| `{post.description}` | Post description | How do I set up… | +| `{post.url}` | Post link | https://reddit.com/... | + +*In addition to the [other variables](/docs/misc/variables) already available globally!* + +### Epic Games + +This module sends an announcement when a free game is available on the [Epic Games Store](https://store.epicgames.com/). + +::hint{ type="info" } + The mentioned role, the color of the announcement and the sending channel can all be customized. +:: + +![Epic Games social notification](./assets/social-notifications/bot_epicgames.png) + +### Steam + +This module sends an announcement when a free game is available on [Steam](https://store.steampowered.com/). + +::hint{ type="info" } + The mentioned role, the color of the announcement and the sending channel can all be customized. +:: + +![Steam social notification](./assets/social-notifications/bot_steam.png) + +### GOG + +This module sends an announcement when a free game is available on [GOG](https://www.gog.com/). + +::hint{ type="info" } + The mentioned role, the color of the announcement and the sending channel can all be customized. +:: +![GOG social notification](./assets/social-notifications/bot_gog.png) + +### Dealabs + +This module sends a notification when a discount becomes "hot". This is the stage at which the deal is judged worthwhile by the site's users. You can also select specific categories of deals to send (for example: Tech, Fashion, etc.). + +::hint{ type="info" } + You can select up to **2** specific categories. [Premium](/premium) <:icon_premium:1096140508625125417> servers have no limit. +:: + +::hint{ type="info" } + The mentioned role, the color of the announcement and the sending channel can all be customized. +:: + +![Dealabs social notification](./assets/social-notifications/bot_dealabs.png) + + +### RSS feeds + +An **RSS feed** is an address provided by a website, automatically listing its latest publications. This module lets DraftBot watch such a feed and announce every new publication on your server. + +There are three ways of finding a site's RSS feed: + +1. **Spot the RSS icon** + + Some sites mark their feed with this logo <:flux_rss:1402873518705868800>, usually placed in the header, the footer, the sidebar or the menu. Click it to open the feed. + +2. **Guess the feed address** + + If no icon is visible, try adding one of these suffixes to the site's address — they are the most common ones: + + - `/feed/` + - `/rss/` + - `/rss.xml` + + For example, for the site `example.com`, try `example.com/feed/`. + +3. **Generate the feed with rss.app** + + For sites that offer no feed at all, go to [rss.app](https://rss.app/). Paste the site's address in the generator, click "generate", and you will get a usable feed. + +::hint{ type="info" } + To avoid spam, a 10-minute delay applies between two announcements. +:: + +You can customize the announcement message with several variables: + +| Variable | Description | Example | +|----------|-------------|---------| +| `{feed.name}` | Feed name | DraftBot Blog | +| `{feed.url}` | Feed link | https://draftbot.fr/... | + +*In addition to the [other variables](/docs/misc/variables) already available globally!* + +## Configuration + +You can enable every type of social notification separately. + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/social-notifs) + + On this page, you can enable and disable social notifications as you like. There are two types: + - The **tabs**, which can be configured for several channels or forums. + - The **modules**, which enable notifications requiring very little configuration. + + ![Configuration through the panel](./assets/social-notifications/panel_view.png) + :: + + ::tab{ label="Using the /config command" } + To add an announcement for an event (a video or a post being published, a live stream starting, etc.), run the \ command and select the **Social notifications** system. You will then reach the tab below. + + ![/config > Social Notifications](./assets/social-notifications/config_view.png) + + Select the platform of your choice and configure it by following the prompts. + :: +:: + +## Additional information + +You will find the maximum number of announcements per platform in [the DraftBot Premium comparison](/premium#diff), in the **Social notifications** part. + + diff --git a/docs/en/5.community/_dir.yml b/docs/en/5.community/_dir.yml new file mode 100644 index 000000000..fa6a1ed5d --- /dev/null +++ b/docs/en/5.community/_dir.yml @@ -0,0 +1,4 @@ +slug: /community/_dir +title: Community +description: The spaces where your members talk to each other, and the tools that keep them alive. +navigation.icon: 'twemoji:busts-in-silhouette' diff --git a/docs/assets/interserveurs/config_generate.png b/docs/en/5.community/assets/interserver/config_generate.png similarity index 100% rename from docs/assets/interserveurs/config_generate.png rename to docs/en/5.community/assets/interserver/config_generate.png diff --git a/docs/assets/interserveurs/config_link.png b/docs/en/5.community/assets/interserver/config_link.png similarity index 100% rename from docs/assets/interserveurs/config_link.png rename to docs/en/5.community/assets/interserver/config_link.png diff --git a/docs/assets/messages/bot_embed_command.png b/docs/en/5.community/assets/messages/bot_embed_command.png similarity index 100% rename from docs/assets/messages/bot_embed_command.png rename to docs/en/5.community/assets/messages/bot_embed_command.png diff --git a/docs/assets/messages/bot_embed_modal.png b/docs/en/5.community/assets/messages/bot_embed_modal.png similarity index 100% rename from docs/assets/messages/bot_embed_modal.png rename to docs/en/5.community/assets/messages/bot_embed_modal.png diff --git a/docs/assets/messages/bot_profil.png b/docs/en/5.community/assets/messages/bot_profil.png similarity index 100% rename from docs/assets/messages/bot_profil.png rename to docs/en/5.community/assets/messages/bot_profil.png diff --git a/docs/assets/messages/bot_send_command.png b/docs/en/5.community/assets/messages/bot_send_command.png similarity index 100% rename from docs/assets/messages/bot_send_command.png rename to docs/en/5.community/assets/messages/bot_send_command.png diff --git a/docs/assets/messages/panel_advanced_blocks.png b/docs/en/5.community/assets/messages/panel_advanced_blocks.png similarity index 100% rename from docs/assets/messages/panel_advanced_blocks.png rename to docs/en/5.community/assets/messages/panel_advanced_blocks.png diff --git a/docs/assets/messages/panel_advanced_container.png b/docs/en/5.community/assets/messages/panel_advanced_container.png similarity index 100% rename from docs/assets/messages/panel_advanced_container.png rename to docs/en/5.community/assets/messages/panel_advanced_container.png diff --git a/docs/assets/messages/panel_advanced_editor.png b/docs/en/5.community/assets/messages/panel_advanced_editor.png similarity index 100% rename from docs/assets/messages/panel_advanced_editor.png rename to docs/en/5.community/assets/messages/panel_advanced_editor.png diff --git a/docs/assets/messages/panel_advanced_images.png b/docs/en/5.community/assets/messages/panel_advanced_images.png similarity index 100% rename from docs/assets/messages/panel_advanced_images.png rename to docs/en/5.community/assets/messages/panel_advanced_images.png diff --git a/docs/assets/messages/panel_bouton_interaction.png b/docs/en/5.community/assets/messages/panel_bouton_interaction.png similarity index 100% rename from docs/assets/messages/panel_bouton_interaction.png rename to docs/en/5.community/assets/messages/panel_bouton_interaction.png diff --git a/docs/assets/messages/panel_content.png b/docs/en/5.community/assets/messages/panel_content.png similarity index 100% rename from docs/assets/messages/panel_content.png rename to docs/en/5.community/assets/messages/panel_content.png diff --git a/docs/assets/messages/panel_create_profil.png b/docs/en/5.community/assets/messages/panel_create_profil.png similarity index 100% rename from docs/assets/messages/panel_create_profil.png rename to docs/en/5.community/assets/messages/panel_create_profil.png diff --git a/docs/assets/messages/panel_embed.png b/docs/en/5.community/assets/messages/panel_embed.png similarity index 100% rename from docs/assets/messages/panel_embed.png rename to docs/en/5.community/assets/messages/panel_embed.png diff --git a/docs/assets/messages/panel_fetch_message.png b/docs/en/5.community/assets/messages/panel_fetch_message.png similarity index 100% rename from docs/assets/messages/panel_fetch_message.png rename to docs/en/5.community/assets/messages/panel_fetch_message.png diff --git a/docs/assets/messages/panel_image_options.png b/docs/en/5.community/assets/messages/panel_image_options.png similarity index 100% rename from docs/assets/messages/panel_image_options.png rename to docs/en/5.community/assets/messages/panel_image_options.png diff --git a/docs/assets/messages/panel_interaction_send_message_preview.png b/docs/en/5.community/assets/messages/panel_interaction_send_message_preview.png similarity index 100% rename from docs/assets/messages/panel_interaction_send_message_preview.png rename to docs/en/5.community/assets/messages/panel_interaction_send_message_preview.png diff --git a/docs/assets/messages/panel_mentions.png b/docs/en/5.community/assets/messages/panel_mentions.png similarity index 100% rename from docs/assets/messages/panel_mentions.png rename to docs/en/5.community/assets/messages/panel_mentions.png diff --git a/docs/assets/messages/panel_selector_interaction.png b/docs/en/5.community/assets/messages/panel_selector_interaction.png similarity index 100% rename from docs/assets/messages/panel_selector_interaction.png rename to docs/en/5.community/assets/messages/panel_selector_interaction.png diff --git a/docs/assets/messages/panel_view.png b/docs/en/5.community/assets/messages/panel_view.png similarity index 100% rename from docs/assets/messages/panel_view.png rename to docs/en/5.community/assets/messages/panel_view.png diff --git a/docs/assets/roles-reactions/bot_view.png b/docs/en/5.community/assets/reaction-roles/bot_view.png similarity index 100% rename from docs/assets/roles-reactions/bot_view.png rename to docs/en/5.community/assets/reaction-roles/bot_view.png diff --git a/docs/assets/roles-reactions/config_manage.png b/docs/en/5.community/assets/reaction-roles/config_manage.png similarity index 100% rename from docs/assets/roles-reactions/config_manage.png rename to docs/en/5.community/assets/reaction-roles/config_manage.png diff --git a/docs/assets/roles-reactions/config_target_message.png b/docs/en/5.community/assets/reaction-roles/config_target_message.png similarity index 100% rename from docs/assets/roles-reactions/config_target_message.png rename to docs/en/5.community/assets/reaction-roles/config_target_message.png diff --git a/docs/assets/roles-reactions/config_view.png b/docs/en/5.community/assets/reaction-roles/config_view.png similarity index 100% rename from docs/assets/roles-reactions/config_view.png rename to docs/en/5.community/assets/reaction-roles/config_view.png diff --git a/docs/assets/roles-reactions/panel_edit.png b/docs/en/5.community/assets/reaction-roles/panel_edit.png similarity index 100% rename from docs/assets/roles-reactions/panel_edit.png rename to docs/en/5.community/assets/reaction-roles/panel_edit.png diff --git a/docs/assets/roles-reactions/panel_rename.png b/docs/en/5.community/assets/reaction-roles/panel_rename.png similarity index 100% rename from docs/assets/roles-reactions/panel_rename.png rename to docs/en/5.community/assets/reaction-roles/panel_rename.png diff --git a/docs/assets/roles-reactions/panel_view.png b/docs/en/5.community/assets/reaction-roles/panel_view.png similarity index 100% rename from docs/assets/roles-reactions/panel_view.png rename to docs/en/5.community/assets/reaction-roles/panel_view.png diff --git a/docs/assets/messages-recurrents/config_days.png b/docs/en/5.community/assets/recurring-messages/config_days.png similarity index 100% rename from docs/assets/messages-recurrents/config_days.png rename to docs/en/5.community/assets/recurring-messages/config_days.png diff --git a/docs/assets/messages-recurrents/config_target_message.png b/docs/en/5.community/assets/recurring-messages/config_target_message.png similarity index 100% rename from docs/assets/messages-recurrents/config_target_message.png rename to docs/en/5.community/assets/recurring-messages/config_target_message.png diff --git a/docs/assets/messages-recurrents/config_target_time.png b/docs/en/5.community/assets/recurring-messages/config_target_time.png similarity index 100% rename from docs/assets/messages-recurrents/config_target_time.png rename to docs/en/5.community/assets/recurring-messages/config_target_time.png diff --git a/docs/assets/messages-recurrents/config_view.png b/docs/en/5.community/assets/recurring-messages/config_view.png similarity index 100% rename from docs/assets/messages-recurrents/config_view.png rename to docs/en/5.community/assets/recurring-messages/config_view.png diff --git a/docs/assets/messages-recurrents/panel_view.png b/docs/en/5.community/assets/recurring-messages/panel_view.png similarity index 100% rename from docs/assets/messages-recurrents/panel_view.png rename to docs/en/5.community/assets/recurring-messages/panel_view.png diff --git a/docs/assets/notifications-sociales/bot_dealabs.png b/docs/en/5.community/assets/social-notifications/bot_dealabs.png similarity index 100% rename from docs/assets/notifications-sociales/bot_dealabs.png rename to docs/en/5.community/assets/social-notifications/bot_dealabs.png diff --git a/docs/assets/notifications-sociales/bot_epicgames.png b/docs/en/5.community/assets/social-notifications/bot_epicgames.png similarity index 100% rename from docs/assets/notifications-sociales/bot_epicgames.png rename to docs/en/5.community/assets/social-notifications/bot_epicgames.png diff --git a/docs/assets/notifications-sociales/bot_gog.png b/docs/en/5.community/assets/social-notifications/bot_gog.png similarity index 100% rename from docs/assets/notifications-sociales/bot_gog.png rename to docs/en/5.community/assets/social-notifications/bot_gog.png diff --git a/docs/assets/notifications-sociales/bot_reddit.png b/docs/en/5.community/assets/social-notifications/bot_reddit.png similarity index 100% rename from docs/assets/notifications-sociales/bot_reddit.png rename to docs/en/5.community/assets/social-notifications/bot_reddit.png diff --git a/docs/assets/notifications-sociales/bot_steam.png b/docs/en/5.community/assets/social-notifications/bot_steam.png similarity index 100% rename from docs/assets/notifications-sociales/bot_steam.png rename to docs/en/5.community/assets/social-notifications/bot_steam.png diff --git a/docs/assets/notifications-sociales/bot_twitch.png b/docs/en/5.community/assets/social-notifications/bot_twitch.png similarity index 100% rename from docs/assets/notifications-sociales/bot_twitch.png rename to docs/en/5.community/assets/social-notifications/bot_twitch.png diff --git a/docs/assets/notifications-sociales/bot_youtube.png b/docs/en/5.community/assets/social-notifications/bot_youtube.png similarity index 100% rename from docs/assets/notifications-sociales/bot_youtube.png rename to docs/en/5.community/assets/social-notifications/bot_youtube.png diff --git a/docs/assets/notifications-sociales/config_view.png b/docs/en/5.community/assets/social-notifications/config_view.png similarity index 100% rename from docs/assets/notifications-sociales/config_view.png rename to docs/en/5.community/assets/social-notifications/config_view.png diff --git a/docs/assets/notifications-sociales/panel_view.png b/docs/en/5.community/assets/social-notifications/panel_view.png similarity index 100% rename from docs/assets/notifications-sociales/panel_view.png rename to docs/en/5.community/assets/social-notifications/panel_view.png diff --git a/docs/assets/notifications-sociales/panel_youtube_allowed.png b/docs/en/5.community/assets/social-notifications/panel_youtube_allowed.png similarity index 100% rename from docs/assets/notifications-sociales/panel_youtube_allowed.png rename to docs/en/5.community/assets/social-notifications/panel_youtube_allowed.png diff --git a/docs/assets/starboards/bot_message.png b/docs/en/5.community/assets/starboards/bot_message.png similarity index 100% rename from docs/assets/starboards/bot_message.png rename to docs/en/5.community/assets/starboards/bot_message.png diff --git a/docs/assets/starboards/bot_message_2.png b/docs/en/5.community/assets/starboards/bot_message_2.png similarity index 100% rename from docs/assets/starboards/bot_message_2.png rename to docs/en/5.community/assets/starboards/bot_message_2.png diff --git a/docs/assets/starboards/config_example.png b/docs/en/5.community/assets/starboards/config_example.png similarity index 100% rename from docs/assets/starboards/config_example.png rename to docs/en/5.community/assets/starboards/config_example.png diff --git a/docs/assets/starboards/panel_create.png b/docs/en/5.community/assets/starboards/panel_create.png similarity index 100% rename from docs/assets/starboards/panel_create.png rename to docs/en/5.community/assets/starboards/panel_create.png diff --git a/docs/assets/starboards/panel_hub_line.png b/docs/en/5.community/assets/starboards/panel_hub_line.png similarity index 100% rename from docs/assets/starboards/panel_hub_line.png rename to docs/en/5.community/assets/starboards/panel_hub_line.png diff --git a/docs/assets/starboards/panel_view.png b/docs/en/5.community/assets/starboards/panel_view.png similarity index 100% rename from docs/assets/starboards/panel_view.png rename to docs/en/5.community/assets/starboards/panel_view.png diff --git a/docs/assets/suggestions/bot_accept_suggest.png b/docs/en/5.community/assets/suggestions/bot_accept_suggest.png similarity index 100% rename from docs/assets/suggestions/bot_accept_suggest.png rename to docs/en/5.community/assets/suggestions/bot_accept_suggest.png diff --git a/docs/assets/suggestions/bot_comment_modal.png b/docs/en/5.community/assets/suggestions/bot_comment_modal.png similarity index 100% rename from docs/assets/suggestions/bot_comment_modal.png rename to docs/en/5.community/assets/suggestions/bot_comment_modal.png diff --git a/docs/assets/suggestions/bot_new_suggest_confirm.png b/docs/en/5.community/assets/suggestions/bot_new_suggest_confirm.png similarity index 100% rename from docs/assets/suggestions/bot_new_suggest_confirm.png rename to docs/en/5.community/assets/suggestions/bot_new_suggest_confirm.png diff --git a/docs/assets/suggestions/bot_new_suggest_modal.png b/docs/en/5.community/assets/suggestions/bot_new_suggest_modal.png similarity index 100% rename from docs/assets/suggestions/bot_new_suggest_modal.png rename to docs/en/5.community/assets/suggestions/bot_new_suggest_modal.png diff --git a/docs/assets/suggestions/bot_reward_announce.png b/docs/en/5.community/assets/suggestions/bot_reward_announce.png similarity index 100% rename from docs/assets/suggestions/bot_reward_announce.png rename to docs/en/5.community/assets/suggestions/bot_reward_announce.png diff --git a/docs/assets/suggestions/bot_suggest_comment.png b/docs/en/5.community/assets/suggestions/bot_suggest_comment.png similarity index 100% rename from docs/assets/suggestions/bot_suggest_comment.png rename to docs/en/5.community/assets/suggestions/bot_suggest_comment.png diff --git a/docs/assets/suggestions/bot_suggest_commented.png b/docs/en/5.community/assets/suggestions/bot_suggest_commented.png similarity index 100% rename from docs/assets/suggestions/bot_suggest_commented.png rename to docs/en/5.community/assets/suggestions/bot_suggest_commented.png diff --git a/docs/assets/suggestions/bot_suggest_delete.png b/docs/en/5.community/assets/suggestions/bot_suggest_delete.png similarity index 100% rename from docs/assets/suggestions/bot_suggest_delete.png rename to docs/en/5.community/assets/suggestions/bot_suggest_delete.png diff --git a/docs/assets/suggestions/bot_suggest_menu.png b/docs/en/5.community/assets/suggestions/bot_suggest_menu.png similarity index 100% rename from docs/assets/suggestions/bot_suggest_menu.png rename to docs/en/5.community/assets/suggestions/bot_suggest_menu.png diff --git a/docs/assets/suggestions/bot_suggest_planned.png b/docs/en/5.community/assets/suggestions/bot_suggest_planned.png similarity index 100% rename from docs/assets/suggestions/bot_suggest_planned.png rename to docs/en/5.community/assets/suggestions/bot_suggest_planned.png diff --git a/docs/assets/suggestions/bot_suggest_refuse.png b/docs/en/5.community/assets/suggestions/bot_suggest_refuse.png similarity index 100% rename from docs/assets/suggestions/bot_suggest_refuse.png rename to docs/en/5.community/assets/suggestions/bot_suggest_refuse.png diff --git a/docs/assets/suggestions/bot_suggestmod_search.png b/docs/en/5.community/assets/suggestions/bot_suggestmod_search.png similarity index 100% rename from docs/assets/suggestions/bot_suggestmod_search.png rename to docs/en/5.community/assets/suggestions/bot_suggestmod_search.png diff --git a/docs/assets/suggestions/bot_suggests_list.png b/docs/en/5.community/assets/suggestions/bot_suggests_list.png similarity index 100% rename from docs/assets/suggestions/bot_suggests_list.png rename to docs/en/5.community/assets/suggestions/bot_suggests_list.png diff --git a/docs/assets/suggestions/bot_upload_panel.png b/docs/en/5.community/assets/suggestions/bot_upload_panel.png similarity index 100% rename from docs/assets/suggestions/bot_upload_panel.png rename to docs/en/5.community/assets/suggestions/bot_upload_panel.png diff --git a/docs/assets/suggestions/config_buttons_channel.png b/docs/en/5.community/assets/suggestions/config_buttons_channel.png similarity index 100% rename from docs/assets/suggestions/config_buttons_channel.png rename to docs/en/5.community/assets/suggestions/config_buttons_channel.png diff --git a/docs/assets/suggestions/config_buttons_colors.png b/docs/en/5.community/assets/suggestions/config_buttons_colors.png similarity index 100% rename from docs/assets/suggestions/config_buttons_colors.png rename to docs/en/5.community/assets/suggestions/config_buttons_colors.png diff --git a/docs/assets/suggestions/config_buttons_confirmation.png b/docs/en/5.community/assets/suggestions/config_buttons_confirmation.png similarity index 100% rename from docs/assets/suggestions/config_buttons_confirmation.png rename to docs/en/5.community/assets/suggestions/config_buttons_confirmation.png diff --git a/docs/assets/suggestions/config_buttons_limits_per_roles.png b/docs/en/5.community/assets/suggestions/config_buttons_limits_per_roles.png similarity index 100% rename from docs/assets/suggestions/config_buttons_limits_per_roles.png rename to docs/en/5.community/assets/suggestions/config_buttons_limits_per_roles.png diff --git a/docs/assets/suggestions/config_buttons_membres.png b/docs/en/5.community/assets/suggestions/config_buttons_membres.png similarity index 100% rename from docs/assets/suggestions/config_buttons_membres.png rename to docs/en/5.community/assets/suggestions/config_buttons_membres.png diff --git a/docs/assets/suggestions/config_buttons_mention.png b/docs/en/5.community/assets/suggestions/config_buttons_mention.png similarity index 100% rename from docs/assets/suggestions/config_buttons_mention.png rename to docs/en/5.community/assets/suggestions/config_buttons_mention.png diff --git a/docs/assets/suggestions/config_buttons_moderation.png b/docs/en/5.community/assets/suggestions/config_buttons_moderation.png similarity index 100% rename from docs/assets/suggestions/config_buttons_moderation.png rename to docs/en/5.community/assets/suggestions/config_buttons_moderation.png diff --git a/docs/assets/suggestions/config_buttons_reactions.png b/docs/en/5.community/assets/suggestions/config_buttons_reactions.png similarity index 100% rename from docs/assets/suggestions/config_buttons_reactions.png rename to docs/en/5.community/assets/suggestions/config_buttons_reactions.png diff --git a/docs/assets/suggestions/config_buttons_rewards.png b/docs/en/5.community/assets/suggestions/config_buttons_rewards.png similarity index 100% rename from docs/assets/suggestions/config_buttons_rewards.png rename to docs/en/5.community/assets/suggestions/config_buttons_rewards.png diff --git a/docs/assets/suggestions/config_buttons_sort_and_search.png b/docs/en/5.community/assets/suggestions/config_buttons_sort_and_search.png similarity index 100% rename from docs/assets/suggestions/config_buttons_sort_and_search.png rename to docs/en/5.community/assets/suggestions/config_buttons_sort_and_search.png diff --git a/docs/assets/suggestions/config_buttons_threads_auto.png b/docs/en/5.community/assets/suggestions/config_buttons_threads_auto.png similarity index 100% rename from docs/assets/suggestions/config_buttons_threads_auto.png rename to docs/en/5.community/assets/suggestions/config_buttons_threads_auto.png diff --git a/docs/assets/suggestions/config_confirmation.png b/docs/en/5.community/assets/suggestions/config_confirmation.png similarity index 100% rename from docs/assets/suggestions/config_confirmation.png rename to docs/en/5.community/assets/suggestions/config_confirmation.png diff --git a/docs/assets/suggestions/config_home.png b/docs/en/5.community/assets/suggestions/config_home.png similarity index 100% rename from docs/assets/suggestions/config_home.png rename to docs/en/5.community/assets/suggestions/config_home.png diff --git a/docs/assets/suggestions/config_home_to_delete.png b/docs/en/5.community/assets/suggestions/config_home_to_delete.png similarity index 100% rename from docs/assets/suggestions/config_home_to_delete.png rename to docs/en/5.community/assets/suggestions/config_home_to_delete.png diff --git a/docs/assets/suggestions/config_limits_per_roles.png b/docs/en/5.community/assets/suggestions/config_limits_per_roles.png similarity index 100% rename from docs/assets/suggestions/config_limits_per_roles.png rename to docs/en/5.community/assets/suggestions/config_limits_per_roles.png diff --git a/docs/assets/suggestions/config_membres.png b/docs/en/5.community/assets/suggestions/config_membres.png similarity index 100% rename from docs/assets/suggestions/config_membres.png rename to docs/en/5.community/assets/suggestions/config_membres.png diff --git a/docs/assets/suggestions/config_moderation.png b/docs/en/5.community/assets/suggestions/config_moderation.png similarity index 100% rename from docs/assets/suggestions/config_moderation.png rename to docs/en/5.community/assets/suggestions/config_moderation.png diff --git a/docs/assets/suggestions/config_reactions.png b/docs/en/5.community/assets/suggestions/config_reactions.png similarity index 100% rename from docs/assets/suggestions/config_reactions.png rename to docs/en/5.community/assets/suggestions/config_reactions.png diff --git a/docs/assets/suggestions/config_rewards_announces.png b/docs/en/5.community/assets/suggestions/config_rewards_announces.png similarity index 100% rename from docs/assets/suggestions/config_rewards_announces.png rename to docs/en/5.community/assets/suggestions/config_rewards_announces.png diff --git a/docs/assets/suggestions/config_threads_auto.png b/docs/en/5.community/assets/suggestions/config_threads_auto.png similarity index 100% rename from docs/assets/suggestions/config_threads_auto.png rename to docs/en/5.community/assets/suggestions/config_threads_auto.png diff --git a/docs/assets/suggestions/config_votes_color.png b/docs/en/5.community/assets/suggestions/config_votes_color.png similarity index 100% rename from docs/assets/suggestions/config_votes_color.png rename to docs/en/5.community/assets/suggestions/config_votes_color.png diff --git a/docs/assets/suggestions/panel_channel.png b/docs/en/5.community/assets/suggestions/panel_channel.png similarity index 100% rename from docs/assets/suggestions/panel_channel.png rename to docs/en/5.community/assets/suggestions/panel_channel.png diff --git a/docs/assets/suggestions/panel_colors.png b/docs/en/5.community/assets/suggestions/panel_colors.png similarity index 100% rename from docs/assets/suggestions/panel_colors.png rename to docs/en/5.community/assets/suggestions/panel_colors.png diff --git a/docs/assets/suggestions/panel_confirmation.png b/docs/en/5.community/assets/suggestions/panel_confirmation.png similarity index 100% rename from docs/assets/suggestions/panel_confirmation.png rename to docs/en/5.community/assets/suggestions/panel_confirmation.png diff --git a/docs/assets/suggestions/panel_create_reward.png b/docs/en/5.community/assets/suggestions/panel_create_reward.png similarity index 100% rename from docs/assets/suggestions/panel_create_reward.png rename to docs/en/5.community/assets/suggestions/panel_create_reward.png diff --git a/docs/assets/suggestions/panel_delai.png b/docs/en/5.community/assets/suggestions/panel_delai.png similarity index 100% rename from docs/assets/suggestions/panel_delai.png rename to docs/en/5.community/assets/suggestions/panel_delai.png diff --git a/docs/assets/suggestions/panel_delete_reactions.png b/docs/en/5.community/assets/suggestions/panel_delete_reactions.png similarity index 100% rename from docs/assets/suggestions/panel_delete_reactions.png rename to docs/en/5.community/assets/suggestions/panel_delete_reactions.png diff --git a/docs/assets/suggestions/panel_home.png b/docs/en/5.community/assets/suggestions/panel_home.png similarity index 100% rename from docs/assets/suggestions/panel_home.png rename to docs/en/5.community/assets/suggestions/panel_home.png diff --git a/docs/assets/suggestions/panel_membres.png b/docs/en/5.community/assets/suggestions/panel_membres.png similarity index 100% rename from docs/assets/suggestions/panel_membres.png rename to docs/en/5.community/assets/suggestions/panel_membres.png diff --git a/docs/assets/suggestions/panel_mention.png b/docs/en/5.community/assets/suggestions/panel_mention.png similarity index 100% rename from docs/assets/suggestions/panel_mention.png rename to docs/en/5.community/assets/suggestions/panel_mention.png diff --git a/docs/assets/suggestions/panel_moderation.png b/docs/en/5.community/assets/suggestions/panel_moderation.png similarity index 100% rename from docs/assets/suggestions/panel_moderation.png rename to docs/en/5.community/assets/suggestions/panel_moderation.png diff --git a/docs/assets/suggestions/panel_reactions.png b/docs/en/5.community/assets/suggestions/panel_reactions.png similarity index 100% rename from docs/assets/suggestions/panel_reactions.png rename to docs/en/5.community/assets/suggestions/panel_reactions.png diff --git a/docs/assets/suggestions/panel_rewards_announces.png b/docs/en/5.community/assets/suggestions/panel_rewards_announces.png similarity index 100% rename from docs/assets/suggestions/panel_rewards_announces.png rename to docs/en/5.community/assets/suggestions/panel_rewards_announces.png diff --git a/docs/assets/suggestions/panel_sort_and_search.png b/docs/en/5.community/assets/suggestions/panel_sort_and_search.png similarity index 100% rename from docs/assets/suggestions/panel_sort_and_search.png rename to docs/en/5.community/assets/suggestions/panel_sort_and_search.png diff --git a/docs/assets/suggestions/panel_suggests_limits_per_roles.png b/docs/en/5.community/assets/suggestions/panel_suggests_limits_per_roles.png similarity index 100% rename from docs/assets/suggestions/panel_suggests_limits_per_roles.png rename to docs/en/5.community/assets/suggestions/panel_suggests_limits_per_roles.png diff --git a/docs/assets/suggestions/panel_threads_auto.png b/docs/en/5.community/assets/suggestions/panel_threads_auto.png similarity index 100% rename from docs/assets/suggestions/panel_threads_auto.png rename to docs/en/5.community/assets/suggestions/panel_threads_auto.png diff --git a/docs/assets/salons-vocaux-temporaires/config_hub.png b/docs/en/5.community/assets/temporary-voice-channels/config_hub.png similarity index 100% rename from docs/assets/salons-vocaux-temporaires/config_hub.png rename to docs/en/5.community/assets/temporary-voice-channels/config_hub.png diff --git a/docs/assets/salons-vocaux-temporaires/panel_hub.png b/docs/en/5.community/assets/temporary-voice-channels/panel_hub.png similarity index 100% rename from docs/assets/salons-vocaux-temporaires/panel_hub.png rename to docs/en/5.community/assets/temporary-voice-channels/panel_hub.png diff --git a/docs/assets/salons-vocaux-temporaires/saves.png b/docs/en/5.community/assets/temporary-voice-channels/saves.png similarity index 100% rename from docs/assets/salons-vocaux-temporaires/saves.png rename to docs/en/5.community/assets/temporary-voice-channels/saves.png diff --git a/docs/assets/salons-vocaux-temporaires/view_button.png b/docs/en/5.community/assets/temporary-voice-channels/view_button.png similarity index 100% rename from docs/assets/salons-vocaux-temporaires/view_button.png rename to docs/en/5.community/assets/temporary-voice-channels/view_button.png diff --git a/docs/assets/salons-vocaux-temporaires/view_guide.gif b/docs/en/5.community/assets/temporary-voice-channels/view_guide.gif similarity index 100% rename from docs/assets/salons-vocaux-temporaires/view_guide.gif rename to docs/en/5.community/assets/temporary-voice-channels/view_guide.gif diff --git a/docs/assets/tickets/config_menu.png b/docs/en/5.community/assets/tickets/config_menu.png similarity index 100% rename from docs/assets/tickets/config_menu.png rename to docs/en/5.community/assets/tickets/config_menu.png diff --git a/docs/assets/tickets/config_reason.png b/docs/en/5.community/assets/tickets/config_reason.png similarity index 100% rename from docs/assets/tickets/config_reason.png rename to docs/en/5.community/assets/tickets/config_reason.png diff --git a/docs/assets/tickets/menu_config.png b/docs/en/5.community/assets/tickets/menu_config.png similarity index 100% rename from docs/assets/tickets/menu_config.png rename to docs/en/5.community/assets/tickets/menu_config.png diff --git a/docs/assets/tickets/panel_config.png b/docs/en/5.community/assets/tickets/panel_config.png similarity index 100% rename from docs/assets/tickets/panel_config.png rename to docs/en/5.community/assets/tickets/panel_config.png diff --git a/docs/en/6.security/0.moderation.md b/docs/en/6.security/0.moderation.md new file mode 100644 index 000000000..fcb60bf67 --- /dev/null +++ b/docs/en/6.security/0.moderation.md @@ -0,0 +1,432 @@ +--- +slug: /security/moderation +title: Moderation +description: Are some of your members causing trouble? Then set up DraftBot's moderation tools! +navigation.icon: 'twemoji:hammer' +redactors: ['titoto289', 'draftproducts', 'kazotka'] +contributors: ['bariboo', 'theorik', 'thecreatorn3ant', 'imroxxor', 'rababio4579', 'clement669', 'erwangit'] +updatedAt: '2026-08-05' +sourceHash: 24a0c297e0590540d9a37df2bd004107ff28868ea5fa21ff8ff664f1863ee001 +sourceCommit: 5a0818d3dbfb52c2a3d7395b6c58827ded331504 +--- + +**DraftBot**'s moderation systems are there to help you run your server. Here you will find everything you need to use them, from simple moderation commands to predefined sanctions! + +## Sanctions + +### Ban + +Banning a member removes them from the server: they will not be able to come back until the sanction is lifted. You can also ban them temporarily, in which case the ban is lifted automatically when the delay expires. If you simply want to remove them while leaving them the option of coming back, use a [kick](#kick) instead. + +You can ban a member through the \ command. + +After choosing the user and giving a reason, several additional optional settings are available: + +| Option | Description | +|--------|-------------| +| `[time]` | to set a ban duration | +| `[deleted_messages]` | to set how far back the member's messages should be deleted (7 days maximum) | +| `[image1]` | to upload a first image | +| `[image2]` | to upload a second image | +| `[image3]` | to upload a third image | + +![Banning a user](./assets/moderation/bot_ban_confirm.png) + +If you want to revoke a member's ban, you can unban them with the \ command or from the **`"Bans"`** tab of your Discord server. + +::hint{ type="info" } + **DraftBot** can only ban a member if you have the **`"Ban Members"`** permission, or if one of your roles is allowed to use the \ command on your server. +:: + +::hint{ type="info" } + **DraftBot** needs the **`"Ban Members"`** permission, and its role has to sit **above** that of the targeted member in the server's role list. +:: + +### Kick + +Kicking a member makes them leave the server, but they can come back with a new invitation. If you want to stop them for good, use a [ban](#ban) instead. + +**You can kick a member** from your server with the \ command. + +![Kicking a member](./assets/moderation/bot_kick_confirm.png) + +::hint{ type="info" } + **DraftBot** can only kick a member if you have the **`"Kick Members"`** permission, or if one of your roles is allowed to use the \ command on your server. +:: + +::hint{ type="info" } + **DraftBot** needs the **`"Kick Members"`** permission, and its role has to sit **above** that of the targeted member in the server's role list. +:: + +::hint{ type="info" } + You can attach up to **3 images** to the sanction (JPEG/PNG/GIF formats). +:: + +### Warn + +**You can warn a member** with the \ command. The member then receives a direct message with the reason for their warning. If, on the contrary, you want to record a remark only moderators can see, without notifying the member, use a [note](#note). + +::hint{ type="warning" } + The member only receives their warning by direct message if they accept direct messages from the server. +:: + +![Warning given to a member](./assets/moderation/bot_warn.png) + +::hint{ type="info" } + **DraftBot** can only warn a member if you have the **`"Manage Messages"`** permission, or if one of your roles is allowed to use the \ command on your server. +:: + +::hint{ type="info" } + You can attach up to **3 images** to the sanction (JPEG/PNG/GIF formats). +:: + +### Mute + +**You can silence a member** with the \ command. + +::hint{ type="info" } + You can, if you want, release a member from their silence with the \ command. +:: + +![Muting a member](./assets/moderation/bot_mute_confirm.png) + +::hint{ type="info" } + **DraftBot** can only mute a member if you have the **`"Timeout Members"`** permission, or if one of your roles is allowed to use the \ command on your server. +:: + +::hint{ type="info" } + **DraftBot** needs the **`"Timeout Members"`** permission, and its role has to sit **above** that of the targeted member in the server's role list. +:: + +::hint{ type="warning" } + A mute cannot last more than **28 days**. +:: + +::hint{ type="info" } + You can attach up to **3 images** to the sanction (JPEG/PNG/GIF formats). +:: + +### Note + +**You can add a note to a member in their sanction history** with \. +This adds a comment about a member, visible to moderators, without warning the member by direct message. + +![Note given to a member](./assets/moderation/bot_note_confirm.png) + +::hint{ type="info" } + **DraftBot** can only give a note about a member if you have the **`"Manage Messages"`** permission, or if one of your roles is allowed to use the \ command on your server. +:: + +::hint{ type="info" } + You can attach up to **3 images** to the sanction (JPEG/PNG/GIF formats). +:: + +## Managing sanctions + +### Sanction history + +You can see **every sanction** on your server with \. + +The command offers several filtering options to narrow down your search: + +| Options | Description | +|---------|-------------| +| `[user]` | Display only the sanctions of a specific member | +| `[sanction]` | Filter by type of sanction (warn, temporary mute, kick, ban, temporary ban, note) | +| `[search]` | Search within the reasons of the sanctions | +| `[moderator]` | Display only the sanctions applied by a specific moderator | + +![Sanction history of a member](./assets/moderation/bot_history.png) + +The interactive interface lets you navigate between sanctions with pagination buttons. From this list, you can: + +| Action | Description | +|--------|-------------| +| **View** | Display the full details of a sanction | +| **Show** | Share the sanction publicly in the channel (this button is hidden if the [Sanctions displayed by default](#options) option is already enabled) | + +![Details of a sanction](./assets/moderation/bot_sanctions_view.png) + +### Removing sanctions + +You can **remove a sanction from a member** of your server with the \ command. You can also reset every sanction of a member at once through \. + +::hint{ type="info" } + Likewise, if you want to remove every sanction of every member of your server, you can use \. +:: + +::hint{ type="warning" } + Note that the \ and \ commands cannot be undone. +:: + +![Deleting a sanction](./assets/moderation/bot_sanction_remove.png) + +### Editing a sanction + +From the sanction history (\), click **"View"** to open the details of a sanction. + +You can then: + +| Action | Description | +|--------|-------------| +| **Edit** | the reason and the context of the sanction | +| **Add/remove images** | (up to 3 per sanction, JPEG/PNG/GIF formats) | +| **Delete** | the sanction | + +::hint{ type="info" } + The **context** field adds extra information to a sanction (links, internal notes, circumstances). It is only visible to moderators. +:: + +::hint{ type="info" } + Changes are tracked: the list of moderators who have edited the sanction is displayed in its details. +:: + +### Editing an active sanction + +When a sanction such as a mute or a temporary ban is **still active**, you can "**Edit the duration**". + +![Editing the duration of an active sanction](./assets/moderation/bot_sanction_edit.png) + +A window then opens, in which you can enter: +- **A new duration**: the remaining duration you want to give the sanction (for example: 30m, 1h, 3d). +- **An end date**: the date the sanction ends (for example: 12/08/2026 6:00 pm). + +::hint{ type="info" } + A new duration is always counted **from now**, not from the date of the original sanction. So if you enter 30m, the member keeps their sanction for 30 more minutes. +:: + +## Options + +With the moderation options, you can configure various aspects of moderation, as described in the sections below. + +### Send a DM when a sanction is applied + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/moderation) + + Once on the **DraftBot** panel, go to the moderation section and its options. All you have to do is enable the options you want! + + ![Configuring the moderation options](./assets/moderation/panel_confidentiality_options.png) + + If the "**Send a DM when a sanction is applied**" option is enabled, the user receives a direct message for every sanction against them. + + ::hint{ type="warning" } + Once you are done, remember to save your changes with the `"Save"` button at the bottom of the page. + :: + :: + + ::tab{ label="Using the /config command" } + First go to the `"🔨 Moderation"` category of the \ command, then press **`"Sanction DMs"`**. + + ![Moderation options](./assets/moderation/config_confidentiality_options.png) + + ![Sanction DMs](./assets/moderation/config_confidentiality_sanctionsmp.png) + + If the "**Send a DM when a sanction is applied**" option is enabled, the user receives a direct message for every sanction against them. + :: +:: + +### Custom sanction DMs + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/moderation) + + Once on the **DraftBot** panel, go to the moderation section and its options. + + ![Configuring the moderation options](./assets/moderation/panel_confidentiality_options.png) + + You can then configure the **custom sanction DMs** you want: + + ![Configuring the custom DM](./assets/moderation/panel_confidentiality_sanctionsmp.png) + + - **Sanction:** the message sent by DM for the chosen sanction. + - **Custom message:** the text in the embed's description. + - **Color (<:icon_premium:1096140508625125417>):** the color of the left border of the embed that is sent. + + ::hint{ type="info" } + Features marked with the <:icon_premium:1096140508625125417> symbol are reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. + :: + + ::hint{ type="warning" } + Once you are done, remember to save your changes with the `"Save"` button at the bottom of the page. + :: + :: + + ::tab{ label="Using the /config command" } + First go to the `"🔨 Moderation"` category of the \ command, then press **`"Sanction DMs"`**. + + ![Moderation options](./assets/moderation/config_confidentiality_options.png) + + ![Sanction DMs](./assets/moderation/config_confidentiality_sanctionsmp.png) + + By pressing the selector labelled **`"Warn"`**, you can choose the sanction you want to configure. + + You can then choose between: + + - **Message:** the text in the embed's description. + - **Color (<:icon_premium:1096140508625125417>):** the color of the left border of the embed that is sent. + - **Reset:** resets the current configuration. + + ::hint{ type="warning" } + **Warning:** when you **reset** the configuration, you **cannot undo** the action. + :: + + ::hint{ type="info" } + Features marked with the <:icon_premium:1096140508625125417> symbol are reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. + :: + + If the "**Send a DM when a sanction is applied**" option is enabled, the user receives a direct message for every sanction. + :: +:: + +### Hide command answers + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/moderation) + + Once on the **DraftBot** panel, go to the moderation section and its options. + + ![Configuring the moderation options](./assets/moderation/panel_confidentiality_options.png) + + If the "**Hide command answers**" option is enabled, then when a moderator takes a moderation action such as \ or \, the bot's reply stays **invisible** to the other users. + + ::hint{ type="warning" } + Once you are done, remember to save your changes with the `"Save"` button at the bottom of the page. + :: + :: + + ::tab{ label="Using the /config command" } + First go to the `"🔨 Moderation"` category of the \ command, then press **`"Options"`**. + + ![Moderation options](./assets/moderation/config_confidentiality_options.png) + + If the "**Hide command answers**" option is enabled, then when a moderator takes a moderation action such as \ or \, the bot's reply stays **invisible** to the other users. + :: +:: + +### Display sanctions by default + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/moderation) + + Once on the **DraftBot** panel, go to the moderation section and its options. + + ![Configuring the moderation options](./assets/moderation/panel_confidentiality_options.png) + + If the "**Display sanctions by default**" option is enabled, then when a moderator runs a command such as \, the bot's reply is **visible** to every member of the channel. If it is disabled, the reply is only visible to the moderator who ran the command. + + ::hint{ type="warning" } + Once you are done, remember to save your changes with the `"Save"` button at the bottom of the page. + :: + :: + + ::tab{ label="Using the /config command" } + First go to the `"🔨 Moderation"` category of the \ command, then press **`"Options"`**. + + ![Moderation options](./assets/moderation/config_confidentiality_options.png) + + If the "**Display sanctions by default**" option is enabled, then when a moderator runs a command such as \, the bot's reply is **visible** to every member of the channel. If it is disabled, the reply is only visible to the moderator who ran the command. + :: +:: + +## Predefined sanctions + +A predefined sanction is **a preconfigured sanction that centralizes different moderation actions into a single command: \**. You choose the sanction to apply as well as its reason. This makes the sanctions your moderators can apply both easier and more consistent. + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/moderation) + + 1. Click **`"Create a predefined sanction"`**. You can then choose the sanction to apply as well as the reason given when it is used. You can also set a name shown when selecting the predefined sanction in the \ command. + + 2. You can also choose which roles can use this sanction without having the required permission. + + Example: role A can apply the kick for advertising without having the permission to kick members. + + ![Creating a predefined sanction](./assets/moderation/panel_predefined_sanctions.png) + + ::hint{ type="info" } + If the chosen sanction is a **ban** *(permanent or temporary)*, a "**Del. messages**" option appears. + :: + + ![Creating a predefined sanction in the case of a ban](./assets/moderation/panel_predefined_sanctions_ban.png) + + ::hint{ type="warning" } + Once you are done, remember to save your changes with the `"Save"` button at the bottom of the page. + :: + + ::hint{ type="success" } + Congratulations! This predefined sanction is now available and can be used through the \ command. + :: + :: + + ::tab{ label="Using the /config command" } + First go to the `"🔨 Moderation"` category of the \ command, then press **`"Predefined sanctions"`**. + + ![Configuration menu of predefined sanctions](./assets/moderation/config_predefined_sanctions.png) + + #### Creating a predefined sanction + + To create a predefined sanction, click `"Create"`. You can then choose the sanction to apply as well as the reason given when it is used. You can also set a name shown when selecting the predefined sanction in the \ command. + + ::hint{ type="info" } + You can also designate a role able to apply this sanction without necessarily having the permission for it. Example: role A can apply the kick for advertising without having the permission to kick members. + :: + + If you have chosen a **ban** *(permanent or temporary)*, **DraftBot** also asks you for the period over which the member's messages should be deleted. + + ![Question about the period over which to delete messages](./assets/moderation/config_predefined_sanctions_ban.png) + + #### Managing an existing predefined sanction + + To delete a predefined sanction, click `"Delete"`; **DraftBot** then asks you to select the sanction to remove. + + To edit an existing predefined sanction, click `"Edit"`: you can change its name, its reason, its sanction and its allowed roles. + + ![Menu for editing a predefined sanction](./assets/moderation/config_predefined_sanctions_edit.png) + + ::hint{ type="info" } + You can also remove every predefined sanction by clicking `"Reset"`. + :: + + ::hint{ type="warning" } + Note that these actions cannot be undone; once carried out, there is no way back. + :: + :: +:: + +::hint{ type="success" } + **Well done!** You have configured your predefined sanctions! +:: + +You can add the **reports** system to use them more effectively! + +::card +--- +title: Reports +icon: twemoji:police-car-light +to: /docs/security/reports +target: _blank +color: '#ff4e28' +--- + Has a user noticed inappropriate behavior on your server? Let them report it to you with DraftBot's report system! +:: + +You can also automate your sanctions through **auto-moderation**! + +::card +--- +title: Auto-moderation +icon: twemoji:shield +to: /docs/security/auto-moderation +target: _blank +color: '#22427C' +--- + Set up automatic moderation rules to secure your server! +:: + + diff --git a/docs/en/6.security/1.auto-moderation.md b/docs/en/6.security/1.auto-moderation.md new file mode 100644 index 000000000..22b63dd90 --- /dev/null +++ b/docs/en/6.security/1.auto-moderation.md @@ -0,0 +1,223 @@ +--- +slug: /security/auto-moderation +title: Auto-moderation +description: Auto-moderation blocks bad behavior such as spam, advertising or insults, and sanctions it, all without any action on your part. +navigation.icon: 'twemoji:shield' +redactors: ['kicoulapic314', 'kazotka', 'draftproducts', 'rababio4579'] +contributors: ['clement669', 'imroxxor'] +updatedAt: '2026-08-05' +sourceHash: c25cd3bdf8f98ac0b59de0744ec065fbfb018efc0c8b845ce07038c51db2580f +sourceCommit: 5a0818d3dbfb52c2a3d7395b6c58827ded331504 +--- + +## Infractions detection + +**Infractions** are what triggers auto-moderation: sending a forbidden word, a forbidden link, etc. [**Sanctions**](#automatic-sanctions) are the moderation actions: warning the member, kicking them, banning them, etc. + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/auto-moderation) + + Go to the **`🛡️ Auto-moderation`** section. + + ![Infractions detection through the web panel](./assets/auto-moderation/panel_infractions.png) + + Click the :gear: icon of a module to configure it, and enable it with the button to the right of the :gear:. + + ::hint{ type="warning" } + Once it is configured, remember to save your changes with the **`Save`** button at the bottom of the page. + :: + :: + + ::tab{ label="Using the /config command" } + First go to the **`🔨 Moderation`** category of the \ command, then press **`Infractions detection`**. + + You can then configure the different modules: + + ![Auto-moderation configuration menu](./assets/auto-moderation/config_infractions.png) + + ::hint{ type="info" } + Once in the module of your choice, **remember to enable the system** through the first button: + + ![Button for enabling the system](./assets/auto-moderation/config_enable.png) + :: + :: +:: + +Every module includes these options, so they can be configured independently: + +- **Silent mode**: if enabled, DraftBot does not reply to the infraction with an explanatory message. +- **Ignored channels**: channels where auto-moderation is disabled. +- **Ignored roles**: roles ignored by auto-moderation. + +::hint{ type="info" } + **Administrators** as well as the other **bots** on the server are automatically ignored by auto-moderation. +:: + +### Forbidden vocabulary + +You can choose expressions (words) that DraftBot blocks. + +Adding a ``*`` at the beginning and/or the end of the word blocks words with a partial match: `cat*` detects `cats`, `c a t`, `caaaaaat` or `c.a.t`. + +- The **message blocking** option blocks messages before they are sent, thanks to Discord's AutoMod system <:automod:1369109533284106260>, while still counting the infraction in the member's history. As AutoMod also analyses **voice channel statuses**, an infraction detected there is flagged as such in its reason: *"Detected in a voice channel status."* + +::hint{ type="warning" } + Only the **first 1000 words** are supported, because of a Discord limitation. +:: + +- If the **censorship** option is enabled, DraftBot resends the blocked message through a webhook with the user's name, their profile picture and the censored expression. + +### Discord invitations + +This module forbids invitation links from being posted in your server's channels (invitations to your own server are not blocked). + +- The **allowed invitations** option sets invitations that auto-moderation ignores. + +- The **immune servers** option extends the previous one to every possible invitation of a particular server, by giving its [ID](/docs/misc/finding-an-id#server-id). + +::hint{ type="info" } + This option is a feature reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. +:: + +- If the **censorship** option is enabled, DraftBot resends the message through a webhook with the user's name, their profile picture and the censored invitation link. + +::hint{ type="info" } + Every invitation is analysed. Those leading to your server or to one of its voice channels are ignored automatically. +:: + +### External links + +This module forbids links from being posted on your server. + +- The **allowed/forbidden domain names** option forbids or ignores only certain links by giving the domain name; `draftbot.fr`, for example. + +- If the **censorship** option is enabled, DraftBot resends the message through a webhook with the user's name, their profile picture and the censored link. + +### Excessive uppercase + +This module limits how much uppercase there is in messages. + +- The **percentage of uppercase** is the maximum share of uppercase characters allowed in a message. + +- The **minimum number of characters** is how many characters a message has to contain for auto-moderation to take it into account. + +### Excessive emojis + +This module limits the use of emojis in messages. + +- The **percentage of emojis in the message** is the minimum share of emojis a message has to contain for auto-moderation to take it into account. + +- The **minimum number of emojis** is how many emojis a message has to contain for auto-moderation to take it into account. + +### Forbidden pings + +This module forbids specific members or roles from being mentioned. + +Select the mentions you want to forbid in the **members or roles** field. + +- The **message blocking** option blocks messages containing the forbidden mention before they are sent, thanks to Discord's AutoMod system <:automod:1369109533284106260>, while still counting the infraction in the member's history. + +### Excessive mentions + +This module prevents mention spam. + +- The **time interval** is the period during which the number of mentions sent by a member must not exceed the set limit. + +- The **mention limit** is the maximum number of mentions a member can send during the set time interval. + +::hint{ type="info" } + A role mention counts as **3** user mentions. +:: + +- If the **remove** option is enabled, DraftBot deletes the messages containing the mention spam. Be careful, this causes ghost mentions. + +::hint{ type="info" } + A ghost mention, or *ghost ping*, is a mention notification with no way to see the mention. +:: + +- The **message blocking** option blocks messages before they are sent, thanks to Discord's AutoMod system <:automod:1369109533284106260>, while still counting the infraction in the member's history. + +::hint{ type="info" } + Mentions are counted separately for each member. +:: + +::hint{ type="warning" } + If mention blocking through **Discord** is enabled, mentions are counted per **message**, independently of the system offered by DraftBot. What is more, mentions coming from **replies** are **not counted**. +:: + +### Message spam + +This module prevents message spam. + +- The **time interval** is the period during which the number of messages sent by a member must not exceed the set limit. + +- The **message limit** is the maximum number of messages allowed per member during the set time interval. + +::hint{ type="info" } + Messages are counted separately for each member. +:: + +### Forbidden Markdown + +This module blocks the use of the Markdown of your choice among: +- Code block +- Inline code +- Masked link +- Spoiler +- Header +- Subtext +- List +- Quote + +If **Return without Markdown** is enabled, DraftBot resends the blocked message through a webhook, with the user's name and profile picture, with the Markdown removed (enabled by default). + +::hint{ type="info" } + You will find the details of the different Markdown types on [this page](/docs/misc/markdown). +:: + +## Automatic sanctions + +Automatic sanctions apply moderation actions to members automatically after a set number of [**infractions**](#infractions-detection). + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/auto-moderation) + + You can then configure the automatic sanctions. + + ![Automatic sanctions through the web panel](./assets/auto-moderation/panel_auto_sanctions.png) + + ::hint{ type="warning" } + Once your changes are done, remember to save them with the **`Save`** button on the right of the page. + :: + :: + + ::tab{ label="Using the /config command" } + First go to the **`🔨 Moderation`** category of the \ command, then press **`Automatic sanctions`**. + + You can then configure the automatic sanctions: + + ![Automatic sanctions through /config](./assets/auto-moderation/config_autosanctions.png) + :: +:: + +- **Sanction**: the type of sanction applied when the automatic sanction is triggered (a warn, for example). +- **Number of infractions**: once this number of infractions is reached, the automatic sanction is applied. + +::hint{ type="info" } + Infractions are counted separately for each member. +:: + +- **Infraction**: sets which type of infraction is counted for the automatic sanction. +- **Time interval**: the automatic sanction triggers if the number of infractions set above is reached during this time interval. + +::hint{ type="info" } + You can configure up to 10 automatic sanctions. [Premium](/premium) <:icon_premium:1096140508625125417> servers can have 50. +:: + +::hint{ type="info" } + When you choose a **ban** *(permanent or temporary)* as the automatic sanction, you can also choose "**Del. messages**". This lets you decide whether to delete the user's messages over a certain period *(last hour, last 6 hours, last 12 hours, last 24 hours, last 3 days or last 7 days)*. +:: + + diff --git a/docs/en/6.security/2.message-management.md b/docs/en/6.security/2.message-management.md new file mode 100644 index 000000000..5f16d33cd --- /dev/null +++ b/docs/en/6.security/2.message-management.md @@ -0,0 +1,97 @@ +--- +slug: /security/message-management +title: Message management +description: Harmful messages on your server? Then all of these DraftBot commands will help you! +navigation.icon: 'twemoji:speech-balloon' +redactors: ['titoto289'] +contributors: ['sagipierre', 'iibey', 'theorik', 'rababio4579', 'ls62', 'imroxxor', 'kicoulapic314'] +updatedAt: '2026-02-15' +sourceHash: 3a5d2d2facbb2f2d9115549f15f6a7da8c5a4a4ef6ee4da29390dd15644db544 +sourceCommit: 5a0818d3dbfb52c2a3d7395b6c58827ded331504 +--- + +::hint{ type="info" } + Several commands on this page ask you to designate a specific message. You can give either its **link** or its **ID**. To find out how to obtain them, see the [Finding an ID](/docs/misc/finding-an-id) page. +:: + +## Deleting messages + +You can delete messages with the \ command. DraftBot then deletes the number of messages you have given. + +Two optional settings are available: + +- `[search]` to delete only the messages containing a specific word. +- `[user]` to delete only the most recent messages sent by that member. + +You also have the \ command, which deletes a certain number of messages sent **after** a message you designate. + +::hint{ type="warning" } + **DraftBot** can only delete messages if it has the **"Manage Messages"** permission on your server. +:: + +## Deleting every message in a channel + +To empty a channel completely, DraftBot proceeds in two steps: it deletes the channel, then recreates it identically (same name, description and permissions), but without the messages. + +Use the \ command for this. If you want to empty a channel other than the one you are running the command in, specify it with the `[channel]` option. + +::hint{ type="danger" } + This action **cannot be undone**: the channel's messages are lost for good. +:: + +::hint{ type="warning" } + **DraftBot** can only empty a channel if it has the **"Manage Messages"** and **"Manage Channels"** permissions on your server. +:: + +## Deleting the messages of a conversation + +If an unwanted discussion takes place on your server, there is no need to delete every message before it: the \ command only removes the messages between the two you designate. + +::hint{ type="warning" } + **DraftBot** can only delete a conversation if it has the **"Manage Messages"** permission on your server. +:: + +## Copying one or more messages + +To copy a member's message into another channel (or the same one), use the \ command. + +To copy several messages at once, add the `[last_message]` option: DraftBot then copies every message between the first and the last. + +::hint{ type="warning" } + **DraftBot** can only copy messages if it has the **"Manage Webhooks"** and **"Manage Messages"** permissions on your server. +:: + +## Moving one or more messages + +Is a message in the wrong place? The \ command moves it to another channel. + +To move several messages at once, add the `[last_message]` option. + +::hint{ type="warning" } + **DraftBot** can only move messages if it has the **"Manage Webhooks"** and **"Manage Messages"** permissions on your server. +:: + +## Quoting a message + +If you have to repeat the same message several times on your server, **DraftBot** has a feature made for you: the \ command. + +To quote a message located in another channel, use the `[channel]` option. + +::hint{ type="warning" } + **DraftBot** can only quote a message if it has the **"Manage Messages"** permission on your server. +:: + +## Saving a conversation + +You can save a conversation with the \ command, marking out the part to keep: + +- `[first_message]`: the first message you want to save. +- `[last_message]`: the last message you want to save. + +DraftBot then generates a save file. Download it to your computer, then open it in your browser to read the discussion again. + +If you want to delete the messages concerned once the save is done, add the `[delete_conversation]` option and select "Yes". + +::hint{ type="warning" } + You can only save a conversation if you have the **"Manage Messages"** permission on your server, or an override. +:: diff --git a/docs/en/6.security/3.reports.md b/docs/en/6.security/3.reports.md new file mode 100644 index 000000000..807c2230c --- /dev/null +++ b/docs/en/6.security/3.reports.md @@ -0,0 +1,330 @@ +--- +slug: /security/reports +title: Reports +description: Has a user noticed inappropriate behavior on your server? Let them report it to you with DraftBot's report system! +navigation.icon: 'twemoji:police-car-light' +redactors: ['ls62', 'draftproducts'] +contributors: ['rababio4579', 'elvhira', 'elbaguetto', 'imroxxor', 'clement669','lyvendev'] +updatedAt: '2026-05-24' +sourceHash: 42a2b2424131838ad3667ceb509a5b9000d102011cfcde7f92bd834b722aea71 +sourceCommit: 5a0818d3dbfb52c2a3d7395b6c58827ded331504 +--- + +## Usage + +To make a report, run the \ command. You then select the user or the message breaking the rules that have been set on the server. + +![Reporting a user through the command](./assets/reports/bot_command_report_user.png) + +When reporting a **user**, the `source` option indicates where the infraction was observed (text channel, voice channel, direct message or elsewhere). + +You can also attach a screenshot (PNG, JPEG or GIF) or a video (MP4, WebM, MOV, within the size limit allowed by the server's boost level) through the `image` option, available on both variants of the command. + +If the reported message was published by an application, DraftBot identifies and displays the member actually behind the content. + +You can also go through Discord's context menu: right-click a member → **Apps** → **Report this user**, or right-click a message → **Apps** → **Report this message**. A form then opens to enter the reason and the source (for a user). + +![Reporting a user through the app](./assets/reports/bot_app_report_user.png) + +## Managing reports + +Once someone has reported a user or a message, you receive a **report message** in the channel you have set beforehand: + +![Report message](./assets/reports/bot_report.png) + +The message gathers the useful information about the reported member (date they joined the server, date the account was created, quick access to the sanction history through the **View sanctions** button, displayed only to the member who clicks it) as well as the context of the report (channel, source, link to the reported message). + +You then have several options: + +- "**Take charge**" ➜ Indicates that you are handling the report. If another moderator has already taken charge of the report, a confirmation is requested before adding you to it. + +- "**Mark as processed**" ➜ Closes the report. + +You can then select the outcome to give the report among the following options: **Member sanctioned**, **Report solved**, and **Report rejected**. If the reported member has been sanctioned within the past hour (through `/ban`, `/mod` or otherwise), DraftBot offers to link that sanction to the report in one click. Once the outcome has been selected, you can add an optional **context**, visible on the report message and also sent to the reporting member by DM if the corresponding detail is enabled in the notification configuration. + +- "**Tickets**" ➜ Displays the tickets already linked to the report and lets you open a new one for the reported member or the member behind the report (only available if the ticket system is enabled). + +- "**Sanction the member**" ➜ Sanctions the reported member directly through a **predefined sanction** or a **custom sanction** (**Note**, **Warn**, **Kick**, **Mute**, **Ban**). For a temporary custom sanction, you also give a duration (formats `1h`, `30m`, `2d`, etc.). You can delete the member's recent messages over a predefined window (1h, 6h, 12h, 24h, 3 days, 7 days), attach images to the sanction, and add a **context**: this context is recorded in the member's sanction history (never sent to the sanctioned member) and completed automatically with a link to the report message. The selector only appears if at least one predefined sanction is recorded, or if the **Custom sanction** option is enabled in the configuration. + +::hint{ type="info" } + Once the report is closed (solved, rejected or sanctioned), the action buttons are replaced by a single **Put the report back on hold** button, which restores the initial actions. +:: + + +## Integrations +The report system integrates several features to offer a pleasant and practical user experience. + + +### Predefined sanctions +The system integrates predefined sanctions to sanction reported people, saving you from running the \ command every time. + +::hint{ type="info" } + The predefined sanctions system has to be configured. +:: + +::card +--- +title: Predefined sanctions +icon: twemoji:shield +to: /docs/security/moderation#predefined-sanctions +target: _blank +color: '#22427C' +--- + A predefined sanction is a preconfigured sanction that centralizes different moderation actions into a single command. +:: + + +### Tickets +The system also integrates tickets. It can open a ticket for the reported member or the reporting member, to talk things through or find out more about the subject of the report. + +::hint{ type="info" } + The ticket system has to be configured. +:: + +::card +--- +title: Tickets +icon: twemoji:ticket +to: /docs/community/tickets#configuration +target: _blank +color: '#ff4e28' +--- + Give your members the ability to create tickets so they can have a private conversation with your server's team. +:: + + +## Configuration +To enable the report system, you first have to configure it. There are several ways of doing so. + + +### Enabling the system +First of all, for your members to be able to report a user or a message, the system has to be enabled. + +::tabs + ::tab{ label="From the panel"} + [⫸ Open the **DraftBot** panel](/dashboard/first/reports) + + You will then find a grey button on the left, on the same line as the title. Click it to enable the system. + + ![Overview of the system from the panel](./assets/reports/panel_view.png) + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Report` from the dropdown menu. + + You will then find a blue button labelled `Enable the system`. Click it to enable the system. + + ![Overview of the system from the /config command](./assets/reports/config_view.png) + :: +:: + + +### Reaction +You can configure a reaction that tells the other members, or the message's recipient, that it has been reported. + +::tabs + ::tab{ label="From the panel"} + [⫸ Open the **DraftBot** panel](/dashboard/first/reports) + + You will find the option in the "Reaction" section. + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Report` ➔ `Enable the reaction 🚨` from the dropdown menu. + :: +:: + +![Overview of a reported message with the reaction](./assets/reports/message_reaction.png) + + +### Automatic thread +For the best organization, you can configure a thread to be opened automatically whenever a user or a message is reported. + +::hint{ type="info" } + This feature is reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. +:: + +::tabs + ::tab{ label="From the panel"} + [⫸ Open the **DraftBot** panel](/dashboard/first/reports) + + You will find the option in the "Automatic thread opening" section. + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Report` ➔ `Enable thread opening` from the dropdown menu. + :: +:: + + +### Mentioned roles +To stay informed, you can add one or more roles mentioned on every new report. The global mentions `@everyone` and `@here` are supported as well. + +::tabs + ::tab{ label="From the panel"} + [⫸ Open the **DraftBot** panel](/dashboard/first/reports) + + You will find the option in the "Mentioned roles" section. + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Report` ➔ `Mentioned roles` from the dropdown menu. + :: +:: + + +### Receiving reports +Every member report can be centralized in a single channel. + +::tabs + ::tab{ label="From the panel"} + [⫸ Open the **DraftBot** panel](/dashboard/first/reports) + + You will find the option in the "Reports channel" section. + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Report` ➔ `Channel` from the dropdown menu. + :: +:: + + +### Managing reports +To make report management easier, you can grant access to a specific role for handling reports. + +::tabs + ::tab{ label="From the panel"} + [⫸ Open the **DraftBot** panel](/dashboard/first/reports) + + You will find the option in the "Moderator roles" section. + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Report` ➔ `Moderator roles` from the dropdown menu. + :: +:: + + +### Limit of claims per moderator +To spread the load between moderators and stop a single one from blocking the ongoing reports, you can set the maximum number of reports the same person can take charge of at the same time (between 1 and 10). + +::tabs + ::tab{ label="From the panel"} + [⫸ Open the **DraftBot** panel](/dashboard/first/reports) + + You will find the option in the "Limit of claims per person" section. + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Report` ➔ `Limit of claims per person` from the dropdown menu. + :: +:: + + +### Grouping similar reports +When this option is enabled, reports targeting the same member within a short interval (15 minutes) are grouped, to avoid having several nearly identical messages in the reports channel. New reports enrich the existing message instead. + +::tabs + ::tab{ label="From the panel"} + [⫸ Open the **DraftBot** panel](/dashboard/first/reports) + + You will find the option in the "Grouping similar reports" section. + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Report` ➔ `Enable grouping` from the dropdown menu. + :: +:: + + +### Custom sanctions +As well as predefined sanctions, you can let moderators apply a **custom sanction** from the "Sanction the member" selector of the report message (note, warn, kick, mute, ban, with free reason and duration). + +::tabs + ::tab{ label="From the panel"} + [⫸ Open the **DraftBot** panel](/dashboard/first/reports) + + You will find the option in the `"Custom sanction" in the sanction selector` section. + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Report` ➔ `Enable custom sanctions` from the dropdown menu. + :: +:: + + +### DM notifications for reporting members +You can automatically inform the members who made a report, by direct message, when it is **closed** (solved, rejected or sanctioned). You choose which details to send them among: **Status**, **Moderator**, **Context** and **Sanction**. If no detail is selected, the member only receives the confirmation that their report has been processed. + +::hint{ type="info" } + Members can disable these notifications themselves through a button present directly on the message received by DM. +:: + +::tabs + ::tab{ label="From the panel"} + [⫸ Open the **DraftBot** panel](/dashboard/first/reports) + + You will find the option in the "DM notifications for reporting members" section. + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Report` ➔ `DM notifications` from the dropdown menu. + :: +:: + + +### Confirmation message +You can customize the confirmation message telling your users that their reports have been sent. + +::tabs + ::tab{ label="From the panel"} + [⫸ Open the **DraftBot** panel](/dashboard/first/reports) + + You will find the option in the "Report confirmation message" section. + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Report` ➔ `Confirmation message` from the dropdown menu. + :: +:: + +You can customize your message with several variables specific to reports: + +| Variable | Description | Example | +|----------|-------------|---------| +| `{target}` | Reported member | @draftman | +| `{target_message.url}` | Link to the reported message | https://discord.com/... | +| `{reason}` | Reason for the report | Spam | + +::hint{ type="info" } + This list is not exhaustive; other [global variables](/docs/misc/variables) are available as well. +:: + + +### Sorting thread +You can sort your processed reports into several threads for better organization. + +Here are the different threads: +- Thread for solved reports +- Thread for sanctioned reports +- Thread for rejected reports + +::hint{ type="info" } + This feature is reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. +:: + +::tabs + ::tab{ label="From the panel"} + [⫸ Open the **DraftBot** panel](/dashboard/first/reports) + + You will find the option in these sections: + + - "Thread for solved reports" + - "Thread for sanctioned reports" + - "Thread for rejected reports" + :: + + ::tab{ label="Using the /config command" } + Run the \ command, then select `Report` ➔ `Sorting thread` from the dropdown menu. + :: +:: diff --git a/docs/en/6.security/4.secure-roles.md b/docs/en/6.security/4.secure-roles.md new file mode 100644 index 000000000..a4336a617 --- /dev/null +++ b/docs/en/6.security/4.secure-roles.md @@ -0,0 +1,264 @@ +--- +slug: /security/secure-roles +title: Secure roles +description: Your sensitive permissions stay switched off until someone has authenticated. A stolen moderator account no longer gives access to anything. +navigation.icon: 'twemoji:key' +redactors: ['imroxxor', 'draftproducts'] +updatedAt: '2026-07-19' +sourceHash: e507626b955405eda972426303527c6f69618ff929ea963c7faa35054fbf4594 +sourceCommit: 5a0818d3dbfb52c2a3d7395b6c58827ded331504 +--- + +## The principle + +On Discord, a role is a keyring your staff carries at all times. Whoever holds the account holds the keys: a booby-trapped link, a malicious browser extension, a stolen session, and the attacker instantly inherits everything the member could do. + +Secure roles move that keyring into a safe. Your moderators keep their badge and their color, but the permissions themselves are only placed on their account **during a session**, and only after an additional authentication (fingerprint, facial recognition, 2FA code). Once the session ends, the permissions go back into the safe. + +::hint{ type="success" } + The difference is stark on a large server: without this system, a compromised staff account can delete channels *(the history is lost for good)* or launch a wave of bans. With it, the stolen account simply no longer carries the permissions worth stealing. +:: + +This system does not replace Discord's 2FA, it complements it. Discord's 2FA protects **logging into the account**. Secure roles protect **the use of the permissions**, including when the login is already compromised. + +## The parts of the system + +Four different notions, often confused. Telling them apart avoids 90% of configuration mistakes. + +| Element | What it is | Where to find it | +|---------|--------------|-----------------| +| **Display role** | The visible role: name, color, position in the member list. No sensitive permission. | On the member, **at all times** | +| **Permissions role** | The discreet role that actually holds the sensitive permissions. | On the member, **only during a session** | +| **Access** | A given member's right to claim a permissions role. This is what is enabled, disabled and expires. | **Member access** section | +| **Session** | The period during which the permissions are actually active, after authentication. | **Sessions** section | + +::hint{ type="info" } + A member can have access **without** a display role: this is the case when you grant individual access to someone who is not part of the usual team. Conversely, carrying the display role grants no permission as long as no access exists. +:: + +Only one session can be active at a time per member and per server. Authenticating again automatically closes the previous one. + +## Protecting a role + +**DraftBot** analyses your roles and flags the ones holding dangerous permissions: this is the **Risky roles** section. From there, a **Secure** button starts the configuration, both from the [panel](/dashboard/first/permguard) and through \. + +A role is judged risky as soon as it carries **at least one** of these 13 permissions: + +| | | +|----------------------|--| +| **Administrator** | Manage Roles | +| Manage Server | Manage Channels | +| Manage Messages | Manage Webhooks | +| Ban Members | Kick Members | +| Timeout Members | Mention @everyone, @here and All Roles | +| Manage Expressions | Manage Events | +| Create Events | | +| | | + +::hint{ type="info" } + Roles managed by an integration *(a bot's role, a boost role, a role tied to a subscription)* are never offered: Discord keeps control of them and **DraftBot** cannot touch them. If a bot on your server holds sensitive permissions, it has to be handled separately. +:: + +You can secure **2 roles**, or **10** on [premium](/premium) <:icon_premium:1096140508625125417> servers. A role that does not appear in the risky roles *(because it does not carry any sensitive permission yet)* can also be prepared by hand from **Manual setup**, in the **Configured roles** section. Both routes share the same quota. + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/permguard) + + ![Overview of a risky role](./assets/secure-roles/panel_risky_roles.png) + :: + + ::tab{ label="Using the /config command" } + ![Configuration menu of secure roles](./assets/secure-roles/config_menu.png) + :: +:: + +::hint{ type="warning" } + A role carried by more than **10 members** (25 on [premium](/premium) <:icon_premium:1096140508625125417> servers) cannot be secured. This is not a technical limit but a choice: this system is designed for a small circle holding heavy powers, not for a community role. Bots and the owner do not count towards that total. +:: + +The first question asked is the most important of the whole configuration, and it is also the one with the most invisible consequences. + +### Moving the permissions + +Under the name **Move permissions to a new role**, **DraftBot** creates a discreet role, transfers the sensitive permissions to it, and leaves the original role intact: same name, same color, same position. Your staff sees no difference day to day. + +This is the recommended strategy, and the only one that unlocks the rest of the system. + +### Keeping the permissions + +Under the name **Keep permissions and remove the role**, no new role is created. The original role **is** the permissions role: it is removed from members and only comes back for the duration of a session. + +::hint{ type="danger" } + If this role also opens private channels, your members **lose access to them at the end of every session** and get it back on the next login. On an active server, that means a staff channel appearing and disappearing several times a day. Only choose this option if your private channels are opened by other roles. +:: + +What each strategy allows: + +| | Move permissions | Keep permissions | +| --- | :---: | :---: | +| Badge and color kept outside a session | Yes | No | +| Private channels accessible outside a session | Yes | No | +| [Authentication on use](#your-staffs-day-to-day) | Yes | **No** | +| Recovery of channels that became invisible | Yes | No | +| Re-registration in the **DraftBot** systems | Yes | No | +| Adjusting the protected permissions afterwards | Yes | No | + +::hint{ type="warning" } + You can change strategy later, but switching to **Keep permissions** disables authentication on use for that role. **DraftBot** tells you how many members are affected before applying. +:: + +![Overview of the interface for securing a role](./assets/secure-roles/panel_risky_role_setup.png) + +Two complementary steps then appear depending on the role being handled, and they deserve to be understood rather than confirmed automatically: + +- **Channels that became invisible:** the *Administrator* permission makes **every** channel visible, including those where the role has no explicit right. By moving it, those channels disappear for your members. **DraftBot** detects them and explicitly grants the right to view, write and join voice there. The sensitive permissions themselves stay in the safe. +- **DraftBot systems:** several features recognized your staff through *Administrator*: ticket staff, reports, Counter animators, private channel moderators, auto-moderation exemptions. **DraftBot** offers to re-register the display role in their allow lists, so that day-to-day work carries on without an open session. + +::hint{ type="info" } + These two recoveries are also offered afterwards for roles that are already configured: the **Recent improvements** button through \, and the **Fix or update** banner on the [panel](/dashboard/first/permguard). Each proposal can be applied or ignored independently. +:: + +Finally comes the **member selection**. Everyone carrying the role is offered, with an indication of who has already configured an authentication method. + +::hint{ type="danger" } + **Unticking a member is not neutral: they lose the role.** Depending on the strategy chosen, they keep the display role without the permissions, or lose the role outright. Only untick the members whose powers you really want to take away. +:: + +## Your staff's day-to-day + +There are two ways for a member to activate their permissions, and the choice changes the day-to-day feel a great deal. + +- **Logging in beforehand:** with the \ command, the member authenticates, their permissions activate for the duration of the session, they work, then they log out. As long as they are not logged in, the protected commands **do not even appear** in their list. + +- **Authentication on use:** the commands stay visible, and **DraftBot** asks for authentication at the exact moment the member runs a sensitive command, \ for example. They confirm, the command runs. The level of security is identical, but there is no preliminary step to think about. + +::hint{ type="danger" } + **Authentication on use only covers DraftBot commands.** To act directly through the Discord interface *(dragging a role onto a member, deleting a channel, banning from the right-click menu)*, the member first has to open a session with \. This is the most commonly misunderstood detail of the system. +:: + +![Overview of the secure-roles menu when logged in](./assets/secure-roles/bot_connected.png) + +To make the commands visible without granting the permissions, **DraftBot** needs a dedicated Discord authorization, limited to the server concerned and to managing command visibility alone. It is only requested once, in a window that opens at activation time. + +::hint{ type="warning" } + In that window, **leave the server's box ticked** and confirm with the right Discord account: these are the two most frequent causes of failure. It stays valid for 10 minutes and closes on its own once the authorization has been granted. +:: + +::hint{ type="info" } + Activation requires **you** to have *Manage Server* and *Manage Roles*, and your highest role to sit above the display role concerned. It is your authorization that Discord checks, not only **DraftBot**'s. +:: + +You can disable authentication on use at any time, and enable it again afterwards. Disabling it is not trivial: the members currently logged in are **logged out**, the protected commands become **invisible** again, and everyone goes back through \ before acting. **DraftBot** tells you how many sessions will be cut before confirming. + +## Choosing your method + +Each member configures their method **once only**, from \ or the [Security](/dashboard/user/security) area of the panel. It is then valid on every server where they have access. + +![Security panel through the panel](./assets/secure-roles/panel_security.png) + +| Method | Level | In practice | +|---------|--------|-------------| +| **Passkey** | Secure | Fingerprint, facial recognition, Windows code or physical key. Instant confirmation, nothing to type. The best choice for daily use. | +| **Authenticator app** | Secure | 6-digit code through Google Authenticator, Authy, Dashlane. Works everywhere. | +| **PIN code** | Alternative | 6 to 8 digits. Vulnerable to shoulder surfing and to repeated attempts. | +| **Password** | Alternative | 10 characters minimum, uppercase, lowercase and digits. | + +::hint{ type="info" } + Administrators can allow only the secure methods on a given role. If your server protects heavy permissions, that is the setting to favour: a passkey is both safer **and** faster than a PIN code. +:: + +::tabs + ::tab{ label="Passkey" } + ![Configuring passkey security](./assets/secure-roles/panel_passkeys.png) + + You can register **several keys**, for example one on your phone and one on your computer. Each of them can be renamed and deleted individually. + :: + + ::tab{ label="Authenticator app" } + ![Configuring authenticator app security](./assets/secure-roles/panel_security_2fa.png) + + A QR code is presented to you, along with a manual entry code if your app cannot scan or is not on your phone. + :: + + ::tab{ label="PIN code" } + ![Configuring PIN code security](./assets/secure-roles/panel_security_pin.png) + + Codes that are too predictable *(123456, 000000)* are refused. + :: + + ::tab{ label="Password" } + ![Configuring password security](./assets/secure-roles/panel_security_password.png) + :: +:: + +::hint{ type="warning" } + Changing or adding a method requires confirming with a method that is already configured. **Deleting** a method, on the other hand, never requires confirmation: this is deliberate, so that nobody stays locked out. Deleting your **last** method, however, revokes all of your secure access, on every server. +:: + +## What is not protected + +No security system is absolute. Knowing its blind spots is better than discovering them: + +- **The server owner:** Discord grants them every right unconditionally, regardless of roles. Configuring an authentication on that account does not protect it. This is the structural weak point of every Discord server. + +::hint{ type="danger" } + If your server matters, make the owner account a vault account: it is only used for the actions that genuinely require ownership *(transferring the server, deleting it)*. Day-to-day work happens from a secondary administrator account, itself covered by secure roles. If you are currently the only administrator, create that secondary account **before** considering an ownership transfer. +:: + +- **A member holding the same permission elsewhere:** if a moderator obtains *Kick Members* through a second, unsecured role, the protection no longer applies to them: Discord already grants them the permission, there is nothing to unlock. On a large server with dozens of stacked roles, this is the most frequent leak. **DraftBot** watches the display roles and warns you if a sensitive permission reappears on them. + +- **Permissions set channel by channel:** a right granted directly in a channel's settings does not go through roles, and therefore not through this system. + +- **Bots:** a compromised bot acts with its own permissions. Audit them separately. + +## Setting access properly + +The settings are explained directly in the interface. Here is how to weigh them up instead: + +- **Session duration:** 15 minutes by default, adjustable from 5 minutes to 8 hours. A short duration narrows the window for exploiting a stolen account, but multiplies the authentications. In practice: short for administration, longer for a moderation team in the middle of a raid. A passkey makes reconnections nearly painless, which makes short durations workable. + +- **Automatic access:** giving someone the display role creates their access on its own, and taking it away revokes it. Recommended as soon as your staff changes regularly: without it, every recruitment requires an extra manual action, and every departure leaves one behind. + +- **Expiry and inactivity (<:icon_premium:1096140508625125417>):** two safety nets for large servers: an end date for temporary reinforcements, and an automatic revocation for a member who no longer logs in. This is what prevents the silent build-up of dormant access, a prime target for a compromise. + +- **Session viewing:** lets a role read the session log in read-only mode, without granting it *Manage Server*. Useful for a supervision team or for former administrators who keep an eye on things. + +![Member access section](./assets/secure-roles/panel_role_access.png) + +The **Member access** section is there for special cases: granting a permission to someone without giving them the display role, or treating a member differently from the rest of the team. Each access inherits the role's settings and can **override** them: a badge then marks the changed value, and a button restores the role's one. Expect up to **10 accesses per role**, or **25** with [premium](/premium) <:icon_premium:1096140508625125417>. + +::hint{ type="info" } + A member you grant access to without them having configured an authentication receives a direct message and has **24 hours** to deal with it. After that delay, their access is disabled and has to be re-enabled manually. +:: + +## Going back + +Nothing is permanent: a secure role can be deleted from **Configured roles**. Two options are then offered, and they answer opposite intentions: + +- **Transfer the permissions to the display role:** the sensitive permissions are given back to the visible role, which your members carry at all times. You are back to the situation before the protection: the powers become permanently active again, without authentication. +- **Delete the permissions role:** the discreet role disappears from the server along with the permissions it contained. + +The two options are independent and can be combined. In every case, the accesses are deleted and the permissions role is removed from those who carried it. + +::hint{ type="warning" } + If you tick **neither one nor the other**, the permissions role stays on your server with its permissions intact, but **DraftBot** no longer manages it. It becomes an ordinary role that any administrator can assign, without any authentication. Nobody carries it at that moment, but remember to delete it or empty it if you do not plan to reuse it. +:: + +## Watching and reacting + +**DraftBot** does not just block, it warns you. Secure role alerts go to your **emergency logs**, independently of the classic logs module, and mention your administrators. + +![Session history](./assets/secure-roles/panel_history.png) + +The **session log** answers the question that matters afterwards: who did what, when, and with which permission. Each session lists its timestamped actions, their target, their reason, nickname changes, and a color-coded risk level. You can filter by member, period, action category, authentication method or role. + +On an ongoing session, **End session** immediately removes the member's permissions and forces them to authenticate again. Useful when facing suspicious behavior live. + +::hint{ type="info" } + The number of deleted messages settles after a few minutes. Discord groups successive deletions by the same moderator before reporting the real total, so **DraftBot** waits for the end of the grouping to display the right figure. +:: + +::hint{ type="warning" } + You cannot end your own session, nor that of a member whose secure role sits above or at the same level as yours. The hierarchy rule also applies to the configuration: you only manage the roles located **strictly below** your highest role. +:: diff --git a/docs/en/6.security/5.logs.md b/docs/en/6.security/5.logs.md new file mode 100644 index 000000000..e3cc12609 --- /dev/null +++ b/docs/en/6.security/5.logs.md @@ -0,0 +1,172 @@ +--- +slug: /security/logs +title: Logs +description: Need to keep a record of the actions taken on your server? Logs are there for you! +navigation.icon: 'twemoji:card-file-box' +redactors: ['imroxxor'] +contributors: ['draftproducts', 'hugo-broc', 'theorik', 'thecreatorn3ant', 'hunterdivin30', 'rababio4579', 'clement669'] +updatedAt: '2026-08-05' +sourceHash: 63cfa05503474725ab4dabf1e2e954de2a34555a6180bdeec0292c338e3803c7 +sourceCommit: 5a0818d3dbfb52c2a3d7395b6c58827ded331504 +--- + +## What is it? + +Logs are a history of the actions taken on your server. They let you find an action you are curious about, or see who did what. + +Logs are embeds sent not by **DraftBot**, but by webhooks. A webhook lets you send a message with a custom profile picture, name and content. +> ***DraftBot** manages its own webhooks and the messages sent with them. If you delete its log webhook, it recreates it automatically when the next log is sent.* + +## General configuration + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/logs) + + To configure **DraftBot**'s logs, go to the "Logs" category of the panel. + + At the top of the page you will find the configuration of the default global logs. + + You can configure the default color of the logs with the paint palette, the default channel with the dropdown menu, and the ignored channels by pressing "+". + + ![General log configuration from the panel](./assets/logs/panel_view.png) + :: + + ::tab{ label="Using the /config command" } + You can configure the logs with the \ command, then going to the "Logs" tab of the selector. + + **DraftBot** then displays the current configuration: + - *Default channel* ➜ The channel logs are sent to if no channel has been set individually for each log. + - *Default color* ➜ The color of the logs if no color has been set individually for each log. + - *Ignored channels* ➜ Channels ignored by the logs: you get no log of the actions taken in them. + + The "*Modules*" category summarizes the configuration of each log. + + For each module, it displays: + - Whether the log is enabled (✅) or not (❌) + - The sending channel + - The color + - Custom [destinations](#destinations), if you have configured any + + Below this message you will find the buttons for configuring the logs: + - ***Enable the system*** / ***System enabled*** ➜ To enable or disable the log system. + - ***Default channel*** ➜ The channel logs are sent to if no channel has been set individually for each log. + - ***Modules*** ➜ To configure each log individually. + - ***Default color*** ➜ To configure the color of the logs if no color has been set individually for each log. + - ***Ignore channels*** ➜ To configure the channels ignored by the logs: you get no log of the actions taken in them. + - ***Reset*** ➜ To reset the whole log configuration. + + ::hint{ type="warning" } + The "Reset" button cannot be undone: there is no way to cancel the action or to recover your previous configuration. + :: + + ::hint{ type="info" } + Blue buttons mean that their configuration has to be completed in full for the log system to work, during the first setup. + :: + + ![General log configuration through the /config command](./assets/logs/config_view.png) + :: +:: + +## Configuration per module + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/logs) + + To configure **DraftBot**'s log modules, go to the "Logs" category of the panel, then enable the modules. + + During the first setup, every log is greyed out (meaning they are disabled). + + Enable the logs you want to set up individually to reach their configuration. + + ![Enabling log modules from the panel](./assets/logs/panel_activate.png) + + You can then configure your module: + - To change the sending channel: open the dropdown menu and select the channel you want. + - To change the log's profile picture when it is sent: click **DraftBot**'s logo. (<:icon_premium:1096140508625125417>) + - To change the log's color when it is sent: click the paint palette and select the color you want. (<:icon_premium:1096140508625125417>) + + ::hint{ type="info" } + Features marked with the <:icon_premium:1096140508625125417> symbol are reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. + :: + + ![Configuring a log module from the panel](./assets/logs/panel_module.png) + + Example of a moderation log received on the server: + + ![Example of a moderation log](./assets/logs/bot_log.png) + :: + + ::tab{ label="Using the /config command" } + You can configure the logs individually with the \ command, then going to the "Logs" tab of the selector. + + In the buttons below the message, select "Modules". + + ![Configuring a log module through the /config command](./assets/logs/config_modules.png) + + Once the module has been selected, let **DraftBot** guide you to finish configuring it! + - To change the sending channel: give the mention or the ID of the channel you want. + - To change the log's profile picture when it is sent: send an image meeting the requirements given in the description of the corresponding question. (<:icon_premium:1096140508625125417>) + - To change the log's color when it is sent: give a color code in hexadecimal format. (<:icon_premium:1096140508625125417>) + - To choose where the logs are sent: click the `Destination` button (see the [Destinations](#destinations) section). + + ::hint{ type="info" } + Features marked with the <:icon_premium:1096140508625125417> symbol are reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. + :: + + ::hint{ type="success" } + The module is configured! You now have access to this module's logs in the channel you set. + :: + + Example of a moderation log received on the server: + + ![Example of a moderation log](./assets/logs/bot_log.png) + :: +:: + +### Available modules + +Each module has a different purpose. Choose the ones matching your needs to run your server better and find your way around your logs more easily. + +We advise making your logs accessible to moderators only. + +#### Configurations +- **Configuration**: configuration of your server's DraftBot systems (including the panel). +- **Joins & Leaves**: logs of members joining or leaving your server. +- **Channels**: creation, editing or deletion of channels on your server. +- **Roles**: creation, editing or deletion of roles on your server. +- **Emojis**: creation, editing or deletion of emojis on your server. +- **Stickers**: creation, editing or deletion of stickers on your server. + + +#### Users +- **Nicknames**: changes to your members' nicknames on your server. +- **Transactions**: transactions in the economy system, or item exchanges between your members. +- **Events**: messages during community events or games on your server. +- **Voice**: messages when a member leaves, joins or moves between voice channels, as well as the actions taken in **temporary voice channels** from the settings embed: visibility changes, permission management, whitelist/blacklist updates, transfers and requisitions, renamings, user limit changes, and purges. +- **Stages**: messages when a stage starts, is edited or ends. +- **Threads**: creation, editing or deletion of threads on your server. +- **/say**: use of DraftBot's /say or /embed command. +- **Suggestions**: submission and sorting of the suggestions sent on the server through DraftBot. +- **Custom Commands**: execution of custom commands on your server. +- **Slash Commands**: execution of DraftBot slash commands on your server. (DraftBot only) +- **Messages**: editing or deletion of messages on your server. (<:icon_premium:1096140508625125417>) +- **Boosters**: boosts gained and lost on the server. (<:icon_premium:1096140508625125417>) + +::hint{ type="info" } + Features marked with the <:icon_premium:1096140508625125417> symbol are reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. +:: + +## Destinations + +By default, a module's logs are sent to the **server channel** you configured for it. The `Destination` button adds two outputs to it, and can disable the server channel so that logs are only sent outside: + +- **Another server**: a **Discord webhook**. As the destination channel can belong to another server, role and channel mentions are replaced there by their name. +- **External API**: the URL of your choice, called with an **HTTP POST** in JSON format, with up to **3 headers** to pass an authentication key, for example. + +At least one destination always has to stay active: the server channel can only be disabled once one of the other two has been configured **and** enabled. + +::hint{ type="info" } + These two destinations send logs outside your server. They are reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers, and only the **server owner** can configure them or disable the server channel. +:: diff --git a/docs/en/6.security/_dir.yml b/docs/en/6.security/_dir.yml new file mode 100644 index 000000000..ce5e42ff1 --- /dev/null +++ b/docs/en/6.security/_dir.yml @@ -0,0 +1,4 @@ +slug: /security/_dir +title: Security +description: Moderation, protecting your server and keeping track of what happens on it. +navigation.icon: 'twemoji:shield' diff --git a/docs/assets/auto-moderation/config_autosanctions.png b/docs/en/6.security/assets/auto-moderation/config_autosanctions.png similarity index 100% rename from docs/assets/auto-moderation/config_autosanctions.png rename to docs/en/6.security/assets/auto-moderation/config_autosanctions.png diff --git a/docs/assets/auto-moderation/config_enable.png b/docs/en/6.security/assets/auto-moderation/config_enable.png similarity index 100% rename from docs/assets/auto-moderation/config_enable.png rename to docs/en/6.security/assets/auto-moderation/config_enable.png diff --git a/docs/assets/auto-moderation/config_infractions.png b/docs/en/6.security/assets/auto-moderation/config_infractions.png similarity index 100% rename from docs/assets/auto-moderation/config_infractions.png rename to docs/en/6.security/assets/auto-moderation/config_infractions.png diff --git a/docs/assets/auto-moderation/panel_auto_sanctions.png b/docs/en/6.security/assets/auto-moderation/panel_auto_sanctions.png similarity index 100% rename from docs/assets/auto-moderation/panel_auto_sanctions.png rename to docs/en/6.security/assets/auto-moderation/panel_auto_sanctions.png diff --git a/docs/assets/auto-moderation/panel_infractions.png b/docs/en/6.security/assets/auto-moderation/panel_infractions.png similarity index 100% rename from docs/assets/auto-moderation/panel_infractions.png rename to docs/en/6.security/assets/auto-moderation/panel_infractions.png diff --git a/docs/assets/logs/bot_log.png b/docs/en/6.security/assets/logs/bot_log.png similarity index 100% rename from docs/assets/logs/bot_log.png rename to docs/en/6.security/assets/logs/bot_log.png diff --git a/docs/assets/logs/config_modules.png b/docs/en/6.security/assets/logs/config_modules.png similarity index 100% rename from docs/assets/logs/config_modules.png rename to docs/en/6.security/assets/logs/config_modules.png diff --git a/docs/assets/logs/config_view.png b/docs/en/6.security/assets/logs/config_view.png similarity index 100% rename from docs/assets/logs/config_view.png rename to docs/en/6.security/assets/logs/config_view.png diff --git a/docs/assets/logs/panel_activate.png b/docs/en/6.security/assets/logs/panel_activate.png similarity index 100% rename from docs/assets/logs/panel_activate.png rename to docs/en/6.security/assets/logs/panel_activate.png diff --git a/docs/assets/logs/panel_module.png b/docs/en/6.security/assets/logs/panel_module.png similarity index 100% rename from docs/assets/logs/panel_module.png rename to docs/en/6.security/assets/logs/panel_module.png diff --git a/docs/assets/logs/panel_view.png b/docs/en/6.security/assets/logs/panel_view.png similarity index 100% rename from docs/assets/logs/panel_view.png rename to docs/en/6.security/assets/logs/panel_view.png diff --git a/docs/assets/moderation/bot_ban_confirm.png b/docs/en/6.security/assets/moderation/bot_ban_confirm.png similarity index 100% rename from docs/assets/moderation/bot_ban_confirm.png rename to docs/en/6.security/assets/moderation/bot_ban_confirm.png diff --git a/docs/assets/moderation/bot_history.png b/docs/en/6.security/assets/moderation/bot_history.png similarity index 100% rename from docs/assets/moderation/bot_history.png rename to docs/en/6.security/assets/moderation/bot_history.png diff --git a/docs/assets/moderation/bot_kick_confirm.png b/docs/en/6.security/assets/moderation/bot_kick_confirm.png similarity index 100% rename from docs/assets/moderation/bot_kick_confirm.png rename to docs/en/6.security/assets/moderation/bot_kick_confirm.png diff --git a/docs/assets/moderation/bot_mute_confirm.png b/docs/en/6.security/assets/moderation/bot_mute_confirm.png similarity index 100% rename from docs/assets/moderation/bot_mute_confirm.png rename to docs/en/6.security/assets/moderation/bot_mute_confirm.png diff --git a/docs/assets/moderation/bot_note_confirm.png b/docs/en/6.security/assets/moderation/bot_note_confirm.png similarity index 100% rename from docs/assets/moderation/bot_note_confirm.png rename to docs/en/6.security/assets/moderation/bot_note_confirm.png diff --git a/docs/assets/moderation/bot_sanction_edit.png b/docs/en/6.security/assets/moderation/bot_sanction_edit.png similarity index 100% rename from docs/assets/moderation/bot_sanction_edit.png rename to docs/en/6.security/assets/moderation/bot_sanction_edit.png diff --git a/docs/assets/moderation/bot_sanction_remove.png b/docs/en/6.security/assets/moderation/bot_sanction_remove.png similarity index 100% rename from docs/assets/moderation/bot_sanction_remove.png rename to docs/en/6.security/assets/moderation/bot_sanction_remove.png diff --git a/docs/assets/moderation/bot_sanctions_view.png b/docs/en/6.security/assets/moderation/bot_sanctions_view.png similarity index 100% rename from docs/assets/moderation/bot_sanctions_view.png rename to docs/en/6.security/assets/moderation/bot_sanctions_view.png diff --git a/docs/assets/moderation/bot_warn.png b/docs/en/6.security/assets/moderation/bot_warn.png similarity index 100% rename from docs/assets/moderation/bot_warn.png rename to docs/en/6.security/assets/moderation/bot_warn.png diff --git a/docs/assets/moderation/config_confidentiality_options.png b/docs/en/6.security/assets/moderation/config_confidentiality_options.png similarity index 100% rename from docs/assets/moderation/config_confidentiality_options.png rename to docs/en/6.security/assets/moderation/config_confidentiality_options.png diff --git a/docs/assets/moderation/config_confidentiality_sanctionsmp.png b/docs/en/6.security/assets/moderation/config_confidentiality_sanctionsmp.png similarity index 100% rename from docs/assets/moderation/config_confidentiality_sanctionsmp.png rename to docs/en/6.security/assets/moderation/config_confidentiality_sanctionsmp.png diff --git a/docs/assets/moderation/config_predefined_sanctions.png b/docs/en/6.security/assets/moderation/config_predefined_sanctions.png similarity index 100% rename from docs/assets/moderation/config_predefined_sanctions.png rename to docs/en/6.security/assets/moderation/config_predefined_sanctions.png diff --git a/docs/assets/moderation/config_predefined_sanctions_ban.png b/docs/en/6.security/assets/moderation/config_predefined_sanctions_ban.png similarity index 100% rename from docs/assets/moderation/config_predefined_sanctions_ban.png rename to docs/en/6.security/assets/moderation/config_predefined_sanctions_ban.png diff --git a/docs/assets/moderation/config_predefined_sanctions_edit.png b/docs/en/6.security/assets/moderation/config_predefined_sanctions_edit.png similarity index 100% rename from docs/assets/moderation/config_predefined_sanctions_edit.png rename to docs/en/6.security/assets/moderation/config_predefined_sanctions_edit.png diff --git a/docs/assets/moderation/panel_confidentiality_options.png b/docs/en/6.security/assets/moderation/panel_confidentiality_options.png similarity index 100% rename from docs/assets/moderation/panel_confidentiality_options.png rename to docs/en/6.security/assets/moderation/panel_confidentiality_options.png diff --git a/docs/assets/moderation/panel_confidentiality_sanctionsmp.png b/docs/en/6.security/assets/moderation/panel_confidentiality_sanctionsmp.png similarity index 100% rename from docs/assets/moderation/panel_confidentiality_sanctionsmp.png rename to docs/en/6.security/assets/moderation/panel_confidentiality_sanctionsmp.png diff --git a/docs/assets/moderation/panel_predefined_sanctions.png b/docs/en/6.security/assets/moderation/panel_predefined_sanctions.png similarity index 100% rename from docs/assets/moderation/panel_predefined_sanctions.png rename to docs/en/6.security/assets/moderation/panel_predefined_sanctions.png diff --git a/docs/assets/moderation/panel_predefined_sanctions_ban.png b/docs/en/6.security/assets/moderation/panel_predefined_sanctions_ban.png similarity index 100% rename from docs/assets/moderation/panel_predefined_sanctions_ban.png rename to docs/en/6.security/assets/moderation/panel_predefined_sanctions_ban.png diff --git a/docs/assets/signalements/bot_app_report_user.png b/docs/en/6.security/assets/reports/bot_app_report_user.png similarity index 100% rename from docs/assets/signalements/bot_app_report_user.png rename to docs/en/6.security/assets/reports/bot_app_report_user.png diff --git a/docs/assets/signalements/bot_command_report_user.png b/docs/en/6.security/assets/reports/bot_command_report_user.png similarity index 100% rename from docs/assets/signalements/bot_command_report_user.png rename to docs/en/6.security/assets/reports/bot_command_report_user.png diff --git a/docs/assets/signalements/bot_report.png b/docs/en/6.security/assets/reports/bot_report.png similarity index 100% rename from docs/assets/signalements/bot_report.png rename to docs/en/6.security/assets/reports/bot_report.png diff --git a/docs/assets/signalements/config_view.png b/docs/en/6.security/assets/reports/config_view.png similarity index 100% rename from docs/assets/signalements/config_view.png rename to docs/en/6.security/assets/reports/config_view.png diff --git a/docs/assets/signalements/message_reaction.png b/docs/en/6.security/assets/reports/message_reaction.png similarity index 100% rename from docs/assets/signalements/message_reaction.png rename to docs/en/6.security/assets/reports/message_reaction.png diff --git a/docs/assets/signalements/panel_view.png b/docs/en/6.security/assets/reports/panel_view.png similarity index 100% rename from docs/assets/signalements/panel_view.png rename to docs/en/6.security/assets/reports/panel_view.png diff --git a/docs/assets/roles-securises/bot_connected.png b/docs/en/6.security/assets/secure-roles/bot_connected.png similarity index 100% rename from docs/assets/roles-securises/bot_connected.png rename to docs/en/6.security/assets/secure-roles/bot_connected.png diff --git a/docs/assets/roles-securises/config_menu.png b/docs/en/6.security/assets/secure-roles/config_menu.png similarity index 100% rename from docs/assets/roles-securises/config_menu.png rename to docs/en/6.security/assets/secure-roles/config_menu.png diff --git a/docs/assets/roles-securises/panel_history.png b/docs/en/6.security/assets/secure-roles/panel_history.png similarity index 100% rename from docs/assets/roles-securises/panel_history.png rename to docs/en/6.security/assets/secure-roles/panel_history.png diff --git a/docs/assets/roles-securises/panel_passkeys.png b/docs/en/6.security/assets/secure-roles/panel_passkeys.png similarity index 100% rename from docs/assets/roles-securises/panel_passkeys.png rename to docs/en/6.security/assets/secure-roles/panel_passkeys.png diff --git a/docs/assets/roles-securises/panel_risky_role_setup.png b/docs/en/6.security/assets/secure-roles/panel_risky_role_setup.png similarity index 100% rename from docs/assets/roles-securises/panel_risky_role_setup.png rename to docs/en/6.security/assets/secure-roles/panel_risky_role_setup.png diff --git a/docs/assets/roles-securises/panel_risky_roles.png b/docs/en/6.security/assets/secure-roles/panel_risky_roles.png similarity index 100% rename from docs/assets/roles-securises/panel_risky_roles.png rename to docs/en/6.security/assets/secure-roles/panel_risky_roles.png diff --git a/docs/assets/roles-securises/panel_role_access.png b/docs/en/6.security/assets/secure-roles/panel_role_access.png similarity index 100% rename from docs/assets/roles-securises/panel_role_access.png rename to docs/en/6.security/assets/secure-roles/panel_role_access.png diff --git a/docs/assets/roles-securises/panel_security.png b/docs/en/6.security/assets/secure-roles/panel_security.png similarity index 100% rename from docs/assets/roles-securises/panel_security.png rename to docs/en/6.security/assets/secure-roles/panel_security.png diff --git a/docs/assets/roles-securises/panel_security_2fa.png b/docs/en/6.security/assets/secure-roles/panel_security_2fa.png similarity index 100% rename from docs/assets/roles-securises/panel_security_2fa.png rename to docs/en/6.security/assets/secure-roles/panel_security_2fa.png diff --git a/docs/assets/roles-securises/panel_security_password.png b/docs/en/6.security/assets/secure-roles/panel_security_password.png similarity index 100% rename from docs/assets/roles-securises/panel_security_password.png rename to docs/en/6.security/assets/secure-roles/panel_security_password.png diff --git a/docs/assets/roles-securises/panel_security_pin.png b/docs/en/6.security/assets/secure-roles/panel_security_pin.png similarity index 100% rename from docs/assets/roles-securises/panel_security_pin.png rename to docs/en/6.security/assets/secure-roles/panel_security_pin.png diff --git a/docs/en/7.utilities/0.info-commands.md b/docs/en/7.utilities/0.info-commands.md new file mode 100644 index 000000000..9042f2345 --- /dev/null +++ b/docs/en/7.utilities/0.info-commands.md @@ -0,0 +1,100 @@ +--- +slug: /utilities/info-commands +title: Information commands +description: Discover every command available for getting detailed information about a specific subject. +navigation.icon: 'twemoji:card-index' +contributors: ['theorik', 'rababio4579', 'iibey', 'imroxxor'] +updatedAt: '2023-07-04' +sourceHash: 8cc6640b8639ca92a86009790794850662ea652606dc0248d34be3b6ad48d748 +sourceCommit: d9e726b99435a84e0f0cda920a025db6e761e5e4 +--- + +## /info user + +The \ command gives you detailed information about a user: + +- The user's mention and ID. +- The different roles they hold on the server. +- The date they joined the server. +- The date their account was created. +- DraftBot badges: premium, members of the DraftBot team. +- Discord badges: HypeSquad, partner, active developer, early verified bot developer, etc. + +![Overview of the /info user command](./assets/info-commands/infouser.png) + +::hint{ type="info" } + If the user is not present on your server, the join date and the roles are not displayed. +:: + +::hint{ type="info" } + You can see another user's information by using their **username** or their **ID** after the command. For example: `/info user user:@Username`. +:: + +## /info server + +The \ command gives you detailed information about your Discord server: + +- The server's name. +- The shard and cluster it sits on in the "[Status](/status)" page. +- The owner's username. +- The number of members, channels, threads, roles, emojis, bots and boosts. +- The security level: verification and age restriction. +- The date the server was created. +- The date DraftBot joined the server. + +![Overview of the /info server command](./assets/info-commands/infoserver.png) + +## /info role + +The \ command gives you detailed information about a specific role: + +- The role's ID. +- The role's hexadecimal color code. +- Whether it is displayed separately or not. +- Whether it is mentionable or not. +- The number of members holding it. +- The permissions it has. +- Its position in the hierarchy among the other roles. + +![Overview of the /info role command](./assets/info-commands/inforole.png) + +## /info channel + +The \ command gives you detailed information about a specific channel or category: + +- The channel's or category's ID. +- The channel's topic. +- The server's name and its ID. +- The category the channel is in. +- The number of members with permission to view the channel. +- DraftBot's permissions. +- The date the channel or category was created. + +![Overview of the /info channel command](./assets/info-commands/infochannel.png) + +::hint{ type="info" } + To tell the different types of channels and categories apart, an icon appears next to their name: a "#" icon for text channels, a "📁" icon for categories, a "🔊" icon for voice channels, a "📢" icon for announcement channels. +:: + +## /profile + +The \ command gives you detailed information about a server member's profile: + +- The member's mention. +- The locality, which only appears if the member has set it through the \ command. +- Their level and rank in the server leaderboard. +- The money they hold on the server. +- Their birth date, if it has been enabled and made visible. +- Game profiles: their username on the different games and platforms. +- The date their account was created. +- The date they joined the server. + +![Overview of the /profile command](./assets/info-commands/profil.png) + +::hint{ type="info" } + You can add a description to your profile with the \ command. +:: + +::hint{ type="info" } + You can see another user's profile by using their **username** or their **ID** after the command. For example: `/profile member:@Username`. +:: diff --git a/docs/en/7.utilities/1.custom-commands.md b/docs/en/7.utilities/1.custom-commands.md new file mode 100644 index 000000000..cac6c79c5 --- /dev/null +++ b/docs/en/7.utilities/1.custom-commands.md @@ -0,0 +1,342 @@ +--- +slug: /utilities/custom-commands +title: Custom commands +description: With DraftBot, you can create your own commands! +navigation.icon: 'twemoji:magic-wand' +redactors: ['clement669', 'draftproducts'] +contributors: ['hugo-broc', 'elbaguetto', 'ls62', 'theorik', 'imroxxor', 'rababio4579', 'iibey', 'mrpraingle', 'sagipierre', 'wernouxe'] +updatedAt: '2025-03-02' +sourceHash: 4f55e2c23f3227dc7f5383128bbda3f31d0d36c1a7ab969ac4fdf8119507c875 +sourceCommit: d9e726b99435a84e0f0cda920a025db6e761e5e4 +--- + +## Configuration + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/custom-commands) + + Fill in the various fields (name, description, actions, etc.), click the "Create" button, and your custom command is ready to use straight away! + + ![Custom command configuration panel](./assets/custom-commands/panel_view.png) + + ::hint{ type="success" } + For more customization, expand the "**Advanced**" menu! + :: + + ::hint{ type="info" } + Need to edit or delete a command? + + No problem! Click "Edit" or "Delete": + + ![Buttons for editing or deleting a custom command](./assets/custom-commands/panel_edit_command.png) + :: + :: + + ::tab{ label="Using the /config command" } + You can create a custom command with the \ command, then going to the "Custom commands" tab of the selector. + DraftBot then asks you for: + + - The **name** of the command, + - The **description** of the command, + - The [action(s)](#actions) your command has to carry out, + - The [allowed/forbidden](#advanced-options) roles or channels, + - Whether the command should [appear](#advanced-options) in \ or not, + - Whether you want to add a [slow mode](#advanced-options) to your command, + - Whether you want to set a [condition](#advanced-options) for using it. + + ::hint{ type="info" } + When you run a custom command, the text that triggered it stays in the channel. If you want **DraftBot** to delete your command, you can enable the corresponding option in \, going to the "Custom commands" tab of the selector, then enabling the "Enable command deletion" button. + :: + :: +:: + +## Actions + +Actions are the heart of your custom command, and they come in 4 types: + +::tabs + ::tab{ label="Message" } + **Send a message** + + *When the command is run, DraftBot sends a message.* + + ::hint{ type="info" } + The message can contain markdown and variables. If you configure it from the [Panel](/dashboard/first/custom-commands), you can even add embeds to it! + :: + + ::collapse{ label="Show an example:" } + Here is a **Send a message** action, configured from the [Panel](/dashboard/first/custom-commands): + + ![Example of a Send a message action, with an embed and variables](./assets/custom-commands/panel_action_send_message.png) + + When the command is run, this is what you get: + + ![Result of the command on Discord](./assets/custom-commands/panel_sent_message_example.png) + :: + :: + + ::tab{ label="Roles" } + 1. **Add roles** + + *When the command is run, DraftBot assigns the selected role(s).* + + ::collapse{ label="Show an example:" } + Here is a command using the **"Add roles"** action: + + ![Example of an Add roles action](./assets/custom-commands/panel_action_add_role.png) + + ::hint{ type="success" } + If I write `!role-a @DraftBot` on Discord, the member DraftBot receives the \<@A> role! + :: + + ::hint{ type="info" } + 💡 For clarity, feel free to combine this action with a **Send a message** action, so that DraftBot can tell the member they have received a new role! + :: + :: + + 2. **Add a temporary role** + + *When the command is run, DraftBot assigns a role, then removes it after a time of your choice.* + + ::collapse{ label="Show an example:" } + From the [Panel](/dashboard/first/custom-commands), setting the exact duration you want is very easy: + + ![Example of an Add roles action](./assets/custom-commands/panel_action_add_temprole.png) + + ::hint{ type="success" } + If I write `!role-temp` on Discord, I receive the \<@C> role! + + Then, after 5 minutes, the role is removed from me automatically. + :: + :: + + 3. **Remove roles** + + *When the command is run, DraftBot removes the selected role(s).* + + ::collapse{ label="Show an example:" } + Here is a function that removes the \<@A> role from a member, by mentioning them: + + ![Example of a Remove roles action](./assets/custom-commands/panel_action_remove_role.png) + + ::hint{ type="success" } + If I write `!demote-a @DraftBot` on Discord, the member \<@DraftBot> instantly loses the \<@A> role! + :: + :: + + ::hint{ type="info" } + If you want the command to apply directly to the member using it, simply untick the "target another member" box. + + ![Target another member](./assets/custom-commands/panel_target_mentionned_member.png) + :: + :: + + ::tab{ label="Inventory / Economy" } + 1. **Shop article** + + *By using this command, the member buys the selected item.* + + ::collapse{ label="Show an example:" } + The following command lets its user buy an item: + + ![Example of a Shop article action](./assets/custom-commands/panel_action_buy_article.png) + + ::hint{ type="success" } + If I write `!fox` on Discord, the item **"🦊 Plush fox"** appears in my inventory (and its price is deducted from my money)! + :: + + ::hint{ type="info" } + DraftBot leaves you free to write the purchase confirmations yourself: + + So remember to combine this action with the **Send a message** action! + :: + :: + + 2. **Add money** + + *When the command is run, DraftBot adds a set amount of money to the member.* + + ::collapse{ label="Show an example:" } + Here is a `!donation` command, which adds 10💰 to a mentioned member: + + ![Example of an Add money action](./assets/custom-commands/panel_action_add_money.png) + + ::hint{ type="success" } + If I write `!donation @DraftBot` on Discord, the member \<@DraftBot> instantly receives 10💰! + :: + + ::hint{ type="info" } + You can also decide that this command adds the amount to the member using it, rather than to a mentioned member. To do so, untick the "target another member" box. + :: + :: + :: +:: + +## Advanced options + +### Where to find them? + +::tabs + ::tab{ label="From the panel" } + ::hint{ type="info" } + From the [Panel](/dashboard/first/custom-commands), you can bring up these options by clicking "Advanced", below your actions. + ![Expanding the advanced options menu](./assets/custom-commands/panel_advanced_button.png) + :: + :: + + ::tab{ label="Using the /config command" } + ::hint{ type="success" } + The advanced options are offered to you directly by DraftBot while configuring the command: just follow the prompts! + :: + :: +:: + +### What do they do? + +The advanced options fall into 4 categories: + +::tabs + ::tab{ label="Restrictions" } + Access to a command can be restricted by two criteria: + + 1. **Restrict by roles** + + You can reserve the use of a command for certain specific roles, or on the contrary forbid it only to certain specific roles. + + ::hint{ type="warning" } + Users with the **Administrator** permission can use the command whatever the allowed or forbidden roles. + :: + + 2. **Restrict by channels** + + In the same way, you can restrict the use of your command to certain specific channels, or forbid it in certain specific channels. + + ::hint{ type="info" } + To switch between the "allow" and "forbid" modes, click "**ALLOWED/FORBIDDEN**". + + The active mode is written in white, while the other one is greyed out. + + ![In this configuration, if I add roles/channels, they will not have access to the command.](./assets/custom-commands/panel_channels_roles_restrict.png) + :: + :: + + ::tab{ label="Hiding" } + If you do not want the command to appear in \, you can enable this button: + + ![Option for hiding the command](./assets/custom-commands/panel_command_hidden.png) + + ::hint{ type="warning" } + When the command is hidden, it does not return an error message if it is used incorrectly! + :: + :: + + ::tab{ label="Slow mode" } + If you want to apply a *"cooldown"* to your custom command, you can set it up flexibly by giving the following information: + - `Number of uses`: how many times the same user can use it before triggering a cooldown + - `Slow mode duration`: how long the cooldown lasts before the user can use the command again. + + ![The Panel offers an intuitive interface for setting the slow mode.](./assets/custom-commands/panel_cooldown.png) + + ::hint{ type="success" } + If you are a moderator or an administrator, you can reset your own number of uses of a command! To do so, go to the [Panel](/dashboard/first/custom-commands) and click "**Edit**" next to the command in question. + + A "**Reset my slow mode**" button appears at the bottom left of the screen: + + ![Resetting your slow mode from the panel](./assets/custom-commands/panel_reset_cooldown.png) + :: + :: + + ::tab{ label="Conditions" } + You can make access to your command conditional on prerequisites: + - `Inventory item`: the member can only use the command if they own the set item. + - `Money`: the member can only use the command if they hold the set amount of money. + - `Level`: only the members of a certain level can use the command. + + ::hint{ type="info" } + For the "inventory item" and "money" options, you can decide whether the item (or the amount) is deducted from the member's inventory or not. + :: + + ::hint{ type="success" } + Thanks to the [Panel](/dashboard/first/custom-commands), you can configure all of this in a few clicks: + ![List of the possible conditions](./assets/custom-commands/panel_conditions.png) + :: + :: +:: + +## Going further + +### Arguments + +You can make the messages of your custom commands more personal and more relevant by using arguments! + +::hint{ type="info" } + An "argument" is a piece of information you give when using a command. + + For example, in the command `!compliment @DraftBot cool`, `@DraftBot` is the first argument, and `cool` is the second one. +:: + +Here are the argument variables available with **DraftBot**: + +| Variable | Description | Example | +|----------|-------------|---------| +| `{args.1}` | First argument | @DraftBot | +| `{args.2}` | Second argument | cool | +| `{args.N}` | Nth argument (up to 20) | foo | +| `{args.1+}` | Every argument from the first one | @DraftBot cool | +| `{args.2+}` | Every argument from the second one | cool | +| `{args.all}` | Every argument | @DraftBot cool | +| `{args.count}` | Number of arguments | 2 | + +**Features:** +- Support for [modifiers](#variables): `{args.1?uppercase}` +- Default values: `{args.1:default=none}` +- Syntax consistent with the other variables + +::collapse{ label="💡 Example:" } + Let's take the command `!compliment @DraftBot cool` again. + + If I want my "**Send a message**" action to make DraftBot say "@DraftBot is really cool", I have to set DraftBot's message like this: `{args.1} is really {args.2}`. + + ::hint{ type="info" } + If I want the command to work with several words in a row, I just have to use `{args.2+}`! + :: + + ::hint{ type="success" } + You can combine this with modifiers: `{args.1} is {args.2+?uppercase}` gives "@DraftBot is REALLY COOL"! + :: +:: + +### Variables + +You can customize your message actions with variables: + +| Variable | Description | Example | +|----------|-------------|---------| +| `{money}` | Money | 1,234 | +| `{money.record}` | Money record | 5,678 | +| `{money.currency_icon}` | Currency icon | 💰 | +| `{money.rank}` | Position in the leaderboard | 3 | +| `{money.next_user}` | Member above in the leaderboard | @DraftBot | +| `{money.next_user.id}` | ID of the member above in the leaderboard | 318312854816161792 | +| `{money.next_user.money}` | Amount of money of the member above in the leaderboard | 2,500 | +| `{money.next_user.money_diff}` | Money difference with the member above in the leaderboard | 2,500 | +| `{money.to_position:position=N}` | Money needed to reach position N in the leaderboard | 1,200 | +| `{level}` | Level | 25 | +| `{level.rank}` | Position in the leaderboard | 5 | +| `{level.next_user}` | Member above in the leaderboard | @DraftBot | +| `{level.next_user.id}` | ID of the member above in the leaderboard | 318312854816161792 | +| `{level.next_user.xp}` | Amount of experience of the member above in the leaderboard | 2,500 | +| `{level.next_user.xp_diff}` | Experience difference with the member above in the leaderboard | 15,389 | +| `{level.next_user.level}` | Level of the member above in the leaderboard | 2,500 | +| `{level.next_user.level_diff}` | Level difference with the member above in the leaderboard | 2 | +| `{xp}` | Total experience | 12,500 | +| `{xp.current_level}` | Experience of the current level | 250 | +| `{xp.next_level}` | Experience needed to reach the next level | 750 | +| `{xp.to_level:level=N}` | Experience needed to reach level N | 15,000 | +| `{xp.to_position:position=N}` | Experience needed to reach position N in the leaderboard | 5,000 | +| `{birthday}` | Birth date | 15 March | +| `{birthday.next}` | Next birthday | In 2 months | +| `{age}` | The user's age | 25 years old | + +*In addition to the [other variables](/docs/misc/variables) already available globally!* diff --git a/docs/en/7.utilities/2.reminders.md b/docs/en/7.utilities/2.reminders.md new file mode 100644 index 000000000..00747c634 --- /dev/null +++ b/docs/en/7.utilities/2.reminders.md @@ -0,0 +1,44 @@ +--- +slug: /utilities/reminders +title: Reminders +description: With DraftBot, this feature lets you create a reminder so you are reminded of something after a set time, by being mentioned. +navigation.icon: 'twemoji:alarm-clock' +contributors: ['iibey', 'theorik', 'thecreatorn3ant', 'lukimanenmodedev', 'rababio4579'] +updatedAt: '2023-06-27' +sourceHash: 949f968209a6efa4a7c72442599884c3eb7de1eb3edcdca335b982b4b9c9f7f0 +sourceCommit: d9e726b99435a84e0f0cda920a025db6e761e5e4 +--- + +## Creating a reminder + +To create a reminder, run the \ command. DraftBot then offers you these fields: + +- **The reason**: so you know what your reminder is about. +- **The time**: how long from now you want to receive your reminder. +- **The destination**: where you want to receive it, between your direct messages and the channel the reminder was created in. + +![Overview of the command](./assets/reminders/rappel_create.png) + +::hint{ type="warning" } + You can create up to 3 reminders at the same time. [Premium](/premium) <:icon_premium:1096140508625125417> servers can have up to 10 at the same time. +:: + +::hint{ type="warning" } + Note that reminders have to be 3 months or less. +:: + +::hint{ type="success" } + 🎉 Congratulations, you have created a reminder! You will be mentioned on your server by DraftBot, or notified in your direct messages, when the time comes. +:: + +## Editing a reminder + +You can edit a reminder at any time, even one that is already running, with the \ command. All you have to do is select the reminder you want to edit and choose a new reason, a new delay and another destination. + +## Deleting a reminder + +To delete a running reminder, run the \ command and select the reminder you want to remove from the list. + +## Seeing the list of reminders + +You can see the list of reminders with the \ command. You get a summary of every running reminder, sorted by their duration. diff --git a/docs/en/7.utilities/3.statistics-channels.md b/docs/en/7.utilities/3.statistics-channels.md new file mode 100644 index 000000000..591738b54 --- /dev/null +++ b/docs/en/7.utilities/3.statistics-channels.md @@ -0,0 +1,171 @@ +--- +slug: /utilities/statistics-channels +title: Statistics channels +description: Statistics channels display various pieces of information about your server (members, bots, roles, channels, etc.) in real time, directly in voice channels or categories. +navigation.icon: 'twemoji:abacus' +redactors: ['imroxxor'] +contributors: ['iibey', 'rababio4579'] +updatedAt: '2026-01-13' +sourceHash: d621ccc2bb4e156eab493527e03ea9135e590489b5a643b7fb356ef8f402ca8d +sourceCommit: d9e726b99435a84e0f0cda920a025db6e761e5e4 +--- + +## What statistics channels look like + +### Voice channels + +![Overview of a statistics voice channel](./assets/statistics-channels/bot_vocalcount.png) + +### Category + +![Overview of a statistics category](./assets/statistics-channels/bot_categorycount.png) + +::hint{ type="info" } + Statistics channels refresh every **15 minutes**. [Premium](/premium) <:icon_premium:1096140508625125417> servers get a **10-minute** refresh. +:: + +## Creating a statistics channel + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/community) + + **Creating a channel** + + To create a statistics channel, click the "**Create a channel**" button. You can then choose a target. + + ::collapse{ label="Show / hide the list of targets" } + + | **NAME** | **EXPLANATION** | | + |---------|-----------------|--| + | **Members** | Every user *(humans and bots)* on your server. | | + | **Members (without bots)** | Every human user on your server. | | + | **Bots** | Every bot user on your server. | | + | **Roles** | Every role on your server. | | + | **Channels** | Every channel on your server. | | + | **Members with a role** | Every member holding a certain role on your server. | | + | **Category exhibitions** | Every channel in a given category. | | + | **Custom API** | Data from a web API. | <:icon_premium:1096140508625125417> | + :: + + **Configuring the channels** + + When you decide to edit a statistics channel, a series of settings appears. You can **Edit** or **Delete** the channels of your choice. + :: + + ::tab{ label="Using the /config command" } + + **Creating a channel** + + To create a statistics channel, go to the **Statistics channels** menu of the /config command. If you have no other statistics channel configured, **DraftBot** offers you two buttons to click: + + - **Quick Configuration** + - **Advanced Configuration** + + ::hint{ type="info" } + If you choose **Category** as the channel type and you want to use an **existing category**, you have to give **DraftBot** the [ID](/docs/misc/finding-an-id) of that category. + :: + + Once the method has been chosen (quick or advanced), you have to select the counter's target (members, bots, a specific role, etc.). + + ::collapse{ label="Show / hide the list of targets" } + + | **NAME** | **EXPLANATION** | | + |---------|-----------------|--| + | **Members** | Every user *(humans and bots)* present on your server. | | + | **Members (without bots)** | Every human user present on your server. | | + | **Bots** | Every bot present on your server. | | + | **Roles** | Every role on your server. | | + | **Channels** | Every channel on your server. | | + | **Members with a role** | Every member holding a certain role on your server. | | + | **Category exhibitions** | Every channel in a given category. | | + | **Custom API** | Data from a web API. | <:icon_premium:1096140508625125417> | + :: + + Once you have created your channel, you can then configure your channels. + :: +:: + +## Customizing the name format + +### Channel + +![Overview of a statistics voice channel](./assets/statistics-channels/bot_vocalcount.png) + +You can change the name of a voice channel to whatever you want, as long as it comes before the " : ". + +### Category + +![Overview of a statistics category](./assets/statistics-channels/bot_categorycount.png) + +You can change the name of a category to whatever you want, as long as it comes before the " – ". + +::hint{ type="warning" } + Be careful not to touch the member counter, otherwise you will have to redo the configuration. +:: + +## Custom API + +::hint{ type="info" } + This feature is reserved for [premium](/premium) <:icon_premium:1096140508625125417> servers. +:: + +The **Custom API** target displays a statistic coming from an **external service**, through an HTTP/HTTPS request to a web API. + +To configure a **custom API**, you first have to give: + +- **The API's URL**: for example `https://api.draftbot.fr/base/stats` +- **The path to the numeric value:** for example `guilds` + +This can be used, for example, to display: + +- The number of users registered on a website +- Any other numeric value reachable through an API + +::hint{ type="info" } + A few important points to note: + + - The API has to be reachable through an **HTTP GET** request. + + - Credentials can be included directly in the URL, but **custom headers are not supported at this time**. + + - Check that the response does contain a **numeric value**. + + - A **10-minute** delay applies between each refresh. +:: + +### Format + +The API has to return a JSON object containing a usable value. + +**Example of a valid response** +``` +{"count": 42} +``` + +In this example, DraftBot displays `42` in the statistics channel. + +::hint{ type="info" } + The value has to be a number; strings and complex objects are not supported. +:: + +### A concrete example + +If your API is reachable at: + +``` +https://api.draftbot.fr/base/stats +``` + +and returns: + +``` +{"guilds":1008140,"users":53253590} +``` + +The channel can display, for example: + +``` +👤 Servers: 1008140 +``` + diff --git a/docs/en/7.utilities/4.server-backups.md b/docs/en/7.utilities/4.server-backups.md new file mode 100644 index 000000000..00fa92b8f --- /dev/null +++ b/docs/en/7.utilities/4.server-backups.md @@ -0,0 +1,84 @@ +--- +slug: /utilities/server-backups +title: Backups +description: Secure your server's structure by creating and restoring complete backups of it. +navigation.icon: 'twemoji:package' +redactors: ['imroxxor'] +contributors: ['lyvendev'] +updatedAt: '2026-08-12' +sourceHash: b220a0526595f875948168e79aefd72ea901c82eedcffcdfd7feffedd39fc965 +sourceCommit: d9e726b99435a84e0f0cda920a025db6e761e5e4 +--- + +## What is the backup module? + +The **Backups** module creates a **complete copy of your server's structure**, so you can restore it later in case of a mistake or a redesign. + +A backup includes: + +- The server's **general information** +- The **categories and channels** (text and voice) +- The **server roles** +- The **members' roles** + +::hint{ type="warning" } + To work properly, DraftBot has to sit **right at the top of the role hierarchy** and have the **Administrator** permission. +:: + +## Creating a backup + +The \ command creates a backup. + +The `name` option is available for setting a custom name to identify the backup. + +::hint{ type="info" } + Backup names cannot exceed **30** characters. +:: + +![Confirmation panel](./assets/server-backups/bot_create.png) + +::hint{ type="success" } + **Congratulations!** You have created a backup! +:: + +## Listing backups + +The \ command displays every existing backup. + +The list displays: + +- The **name** +- The **creation date** + +![List of every backup made](./assets/server-backups/bot_list.png) + +## Restoring a backup + +The \ command restores an existing backup. + +The `backup` option is available for selecting the backup to restore. + +::hint{ type="warning" } + **Warning:** when you request a restoration of your server, you must have **disabled** your server's community option first, if that is not already the case. +:: + +![Image of the warning explaining that the community has to be disabled](./assets/server-backups/bot_warncommunity.png) + +## Deleting a backup + +The \ command deletes a specific backup. It has a `backup` option for selecting the backup to delete. + +::hint{ type="info" } + When you run the command, a confirmation is requested before deletion. +:: +![Confirmation of a backup deletion](./assets/server-backups/bot_delete_confirmation.png) + +## Resetting every backup + +The \ command deletes every backup of the server. + +![The reset confirmation panel](./assets/server-backups/bot_reset_confirmation.png) + +::hint{ type="danger" } + If you agree to delete every backup, this action **cannot be undone**. +:: diff --git a/docs/en/7.utilities/_dir.yml b/docs/en/7.utilities/_dir.yml new file mode 100644 index 000000000..3dd507221 --- /dev/null +++ b/docs/en/7.utilities/_dir.yml @@ -0,0 +1,4 @@ +slug: /utilities/_dir +title: Utilities +description: The everyday commands and tools for you and your members. +navigation.icon: 'twemoji:toolbox' diff --git a/docs/assets/commandes-personnalisees/panel_action_add_money.png b/docs/en/7.utilities/assets/custom-commands/panel_action_add_money.png similarity index 100% rename from docs/assets/commandes-personnalisees/panel_action_add_money.png rename to docs/en/7.utilities/assets/custom-commands/panel_action_add_money.png diff --git a/docs/assets/commandes-personnalisees/panel_action_add_role.png b/docs/en/7.utilities/assets/custom-commands/panel_action_add_role.png similarity index 100% rename from docs/assets/commandes-personnalisees/panel_action_add_role.png rename to docs/en/7.utilities/assets/custom-commands/panel_action_add_role.png diff --git a/docs/assets/commandes-personnalisees/panel_action_add_temprole.png b/docs/en/7.utilities/assets/custom-commands/panel_action_add_temprole.png similarity index 100% rename from docs/assets/commandes-personnalisees/panel_action_add_temprole.png rename to docs/en/7.utilities/assets/custom-commands/panel_action_add_temprole.png diff --git a/docs/assets/commandes-personnalisees/panel_action_buy_article.png b/docs/en/7.utilities/assets/custom-commands/panel_action_buy_article.png similarity index 100% rename from docs/assets/commandes-personnalisees/panel_action_buy_article.png rename to docs/en/7.utilities/assets/custom-commands/panel_action_buy_article.png diff --git a/docs/assets/commandes-personnalisees/panel_action_remove_role.png b/docs/en/7.utilities/assets/custom-commands/panel_action_remove_role.png similarity index 100% rename from docs/assets/commandes-personnalisees/panel_action_remove_role.png rename to docs/en/7.utilities/assets/custom-commands/panel_action_remove_role.png diff --git a/docs/assets/commandes-personnalisees/panel_action_send_message.png b/docs/en/7.utilities/assets/custom-commands/panel_action_send_message.png similarity index 100% rename from docs/assets/commandes-personnalisees/panel_action_send_message.png rename to docs/en/7.utilities/assets/custom-commands/panel_action_send_message.png diff --git a/docs/assets/commandes-personnalisees/panel_advanced_button.png b/docs/en/7.utilities/assets/custom-commands/panel_advanced_button.png similarity index 100% rename from docs/assets/commandes-personnalisees/panel_advanced_button.png rename to docs/en/7.utilities/assets/custom-commands/panel_advanced_button.png diff --git a/docs/assets/commandes-personnalisees/panel_channels_roles_restrict.png b/docs/en/7.utilities/assets/custom-commands/panel_channels_roles_restrict.png similarity index 100% rename from docs/assets/commandes-personnalisees/panel_channels_roles_restrict.png rename to docs/en/7.utilities/assets/custom-commands/panel_channels_roles_restrict.png diff --git a/docs/assets/commandes-personnalisees/panel_command_hidden.png b/docs/en/7.utilities/assets/custom-commands/panel_command_hidden.png similarity index 100% rename from docs/assets/commandes-personnalisees/panel_command_hidden.png rename to docs/en/7.utilities/assets/custom-commands/panel_command_hidden.png diff --git a/docs/assets/commandes-personnalisees/panel_conditions.png b/docs/en/7.utilities/assets/custom-commands/panel_conditions.png similarity index 100% rename from docs/assets/commandes-personnalisees/panel_conditions.png rename to docs/en/7.utilities/assets/custom-commands/panel_conditions.png diff --git a/docs/assets/commandes-personnalisees/panel_cooldown.png b/docs/en/7.utilities/assets/custom-commands/panel_cooldown.png similarity index 100% rename from docs/assets/commandes-personnalisees/panel_cooldown.png rename to docs/en/7.utilities/assets/custom-commands/panel_cooldown.png diff --git a/docs/assets/commandes-personnalisees/panel_edit_command.png b/docs/en/7.utilities/assets/custom-commands/panel_edit_command.png similarity index 100% rename from docs/assets/commandes-personnalisees/panel_edit_command.png rename to docs/en/7.utilities/assets/custom-commands/panel_edit_command.png diff --git a/docs/assets/commandes-personnalisees/panel_reset_cooldown.png b/docs/en/7.utilities/assets/custom-commands/panel_reset_cooldown.png similarity index 100% rename from docs/assets/commandes-personnalisees/panel_reset_cooldown.png rename to docs/en/7.utilities/assets/custom-commands/panel_reset_cooldown.png diff --git a/docs/assets/commandes-personnalisees/panel_sent_message_example.png b/docs/en/7.utilities/assets/custom-commands/panel_sent_message_example.png similarity index 100% rename from docs/assets/commandes-personnalisees/panel_sent_message_example.png rename to docs/en/7.utilities/assets/custom-commands/panel_sent_message_example.png diff --git a/docs/assets/commandes-personnalisees/panel_target_mentionned_member.png b/docs/en/7.utilities/assets/custom-commands/panel_target_mentionned_member.png similarity index 100% rename from docs/assets/commandes-personnalisees/panel_target_mentionned_member.png rename to docs/en/7.utilities/assets/custom-commands/panel_target_mentionned_member.png diff --git a/docs/assets/commandes-personnalisees/panel_view.png b/docs/en/7.utilities/assets/custom-commands/panel_view.png similarity index 100% rename from docs/assets/commandes-personnalisees/panel_view.png rename to docs/en/7.utilities/assets/custom-commands/panel_view.png diff --git a/docs/assets/commandes-informations/infochannel.png b/docs/en/7.utilities/assets/info-commands/infochannel.png similarity index 100% rename from docs/assets/commandes-informations/infochannel.png rename to docs/en/7.utilities/assets/info-commands/infochannel.png diff --git a/docs/assets/commandes-informations/inforole.png b/docs/en/7.utilities/assets/info-commands/inforole.png similarity index 100% rename from docs/assets/commandes-informations/inforole.png rename to docs/en/7.utilities/assets/info-commands/inforole.png diff --git a/docs/assets/commandes-informations/infoserver.png b/docs/en/7.utilities/assets/info-commands/infoserver.png similarity index 100% rename from docs/assets/commandes-informations/infoserver.png rename to docs/en/7.utilities/assets/info-commands/infoserver.png diff --git a/docs/assets/commandes-informations/infouser.png b/docs/en/7.utilities/assets/info-commands/infouser.png similarity index 100% rename from docs/assets/commandes-informations/infouser.png rename to docs/en/7.utilities/assets/info-commands/infouser.png diff --git a/docs/assets/commandes-informations/profil.png b/docs/en/7.utilities/assets/info-commands/profil.png similarity index 100% rename from docs/assets/commandes-informations/profil.png rename to docs/en/7.utilities/assets/info-commands/profil.png diff --git a/docs/assets/rappels/rappel_create.png b/docs/en/7.utilities/assets/reminders/rappel_create.png similarity index 100% rename from docs/assets/rappels/rappel_create.png rename to docs/en/7.utilities/assets/reminders/rappel_create.png diff --git a/docs/assets/sauvegardes-du-serveur/bot_create.png b/docs/en/7.utilities/assets/server-backups/bot_create.png similarity index 100% rename from docs/assets/sauvegardes-du-serveur/bot_create.png rename to docs/en/7.utilities/assets/server-backups/bot_create.png diff --git a/docs/assets/sauvegardes-du-serveur/bot_delete_confirmation.png b/docs/en/7.utilities/assets/server-backups/bot_delete_confirmation.png similarity index 100% rename from docs/assets/sauvegardes-du-serveur/bot_delete_confirmation.png rename to docs/en/7.utilities/assets/server-backups/bot_delete_confirmation.png diff --git a/docs/assets/sauvegardes-du-serveur/bot_list.png b/docs/en/7.utilities/assets/server-backups/bot_list.png similarity index 100% rename from docs/assets/sauvegardes-du-serveur/bot_list.png rename to docs/en/7.utilities/assets/server-backups/bot_list.png diff --git a/docs/assets/sauvegardes-du-serveur/bot_reset_confirmation.png b/docs/en/7.utilities/assets/server-backups/bot_reset_confirmation.png similarity index 100% rename from docs/assets/sauvegardes-du-serveur/bot_reset_confirmation.png rename to docs/en/7.utilities/assets/server-backups/bot_reset_confirmation.png diff --git a/docs/assets/sauvegardes-du-serveur/bot_warncommunity.png b/docs/en/7.utilities/assets/server-backups/bot_warncommunity.png similarity index 100% rename from docs/assets/sauvegardes-du-serveur/bot_warncommunity.png rename to docs/en/7.utilities/assets/server-backups/bot_warncommunity.png diff --git a/docs/assets/salons-de-statistiques/bot_categorycount.png b/docs/en/7.utilities/assets/statistics-channels/bot_categorycount.png similarity index 100% rename from docs/assets/salons-de-statistiques/bot_categorycount.png rename to docs/en/7.utilities/assets/statistics-channels/bot_categorycount.png diff --git a/docs/assets/salons-de-statistiques/bot_vocalcount.png b/docs/en/7.utilities/assets/statistics-channels/bot_vocalcount.png similarity index 100% rename from docs/assets/salons-de-statistiques/bot_vocalcount.png rename to docs/en/7.utilities/assets/statistics-channels/bot_vocalcount.png diff --git a/docs/en/8.misc/0.finding-an-id.md b/docs/en/8.misc/0.finding-an-id.md new file mode 100644 index 000000000..83509b4b9 --- /dev/null +++ b/docs/en/8.misc/0.finding-an-id.md @@ -0,0 +1,112 @@ +--- +slug: /misc/finding-an-id +title: Finding an ID +description: Every message, role, member, server and emoji has an ID of its own. It can be useful when configuring certain modules. +navigation.icon: 'material-symbols:filter-none-outline' +redactors: ['sagipierre'] +contributors: ['hugo-broc', 'titoto289', 'theorik', 'imroxxor', 'rababio4579'] +updatedAt: '2022-09-06' +sourceHash: 7fafb9acc71f953eb68cecc251c4af3c49a1cf686113ee15aa61b9c7ad6c5256 +sourceCommit: 3776da3855c1e37b0dd4e1e94ee9dc61ae4bde08 +--- + +## Message ID + +::hint{ type="warning" } + You first have to enable `developer mode` to obtain IDs. + + To do so, go to the user settings, then Advanced, and enable developer mode. +:: + +To obtain a message's ID, you have to: + +- Long-press or right-click a message +- Then press **Copy Message ID** + +![Example of obtaining a message's ID on desktop](./assets/misc/message_id.gif) + +## Role ID + +::hint{ type="warning" } + You first have to enable `developer mode` to obtain IDs. + + To do so, go to the user settings, then Advanced, and enable developer mode. +:: + +To obtain a role's ID, you have to: + +- Press or click a member holding the role whose ID you want +- Then long-press the role (on a smartphone) or right-click the role and choose **Copy Role ID** (on desktop). + +![Example of obtaining a role's ID on desktop](./assets/misc/role_id.gif) + +If you need to mention a role (on the web panel, for example), simply write `<@&[Role-ID]>`. + +## Member ID + +::hint{ type="warning" } + You first have to enable `developer mode` to obtain IDs. + + To do so, go to the user settings, then Advanced, and enable developer mode. +:: + +To obtain a member's ID, you have to: + +- Right-click or click the person whose ID you want + - On a smartphone, tap the three dots in the top right corner +- Then press **Copy User ID**. + +![Example of obtaining a member's ID on desktop](./assets/misc/member_id.gif) + +If you need to mention a member (on the web panel, for example), you can write `<@Member-ID>`. + +## Emoji ID + +To obtain an emoji's ID, all you have to do is: + +- Write your emoji in a text channel +- Put a backslash before the emoji +- Then send your message. + +![Example of obtaining an emoji's ID on desktop](./assets/misc/emoji_id.gif) + +::hint{ type="info" } + On **Android**, to obtain an emoji's ID: + + - Send `:TheNameOfYourEmoji:` in a text channel + - Then copy the result, which is the emoji's ID +:: + +## Channel ID + +::hint{ type="warning" } + You first have to enable `developer mode` to obtain IDs. + + To do so, go to the user settings, then Advanced, and enable developer mode. +:: + +To obtain a channel's ID, you can: + +- Press or right-click a channel's name +- Then press **Copy Channel ID**. + +![Example of obtaining a channel's ID on desktop](./assets/misc/channel_id.gif) + +If you need to mention a channel (on the web panel, for example), you have to write `<#Channel-ID>` + +## Server ID + +::hint{ type="warning" } + You first have to enable `developer mode` to obtain IDs. + + To do so, go to the user settings, then Advanced, and enable developer mode. +:: + +If you want to obtain a server's ID, all you have to do is: + +- Right-click or press the server's image/name +- Then press **Copy Server ID**. + +![Example of obtaining a server's ID on desktop](./assets/misc/guild_id.gif) + + diff --git a/docs/en/8.misc/2.markdown.md b/docs/en/8.misc/2.markdown.md new file mode 100644 index 000000000..349b9c7d9 --- /dev/null +++ b/docs/en/8.misc/2.markdown.md @@ -0,0 +1,175 @@ +--- +slug: /misc/markdown +title: Markdown +description: Discover and use Discord markdown in your messages. +navigation.icon: 'material-symbols:markdown-outline' +redactors: ['kicoulapic314'] +contributors: ['erwangit', 'elvhira', 'draftproducts', 'imroxxor', 'hunterdivin30', 'rababio4579'] +updatedAt: '2025-06-05' +sourceHash: f82044674efef5cfd0e0c599a3b9fe8912ea6dc7eb5b6bc66467ccd8e99bd984 +sourceCommit: 3776da3855c1e37b0dd4e1e94ee9dc61ae4bde08 +--- + +## Basic markdown + +| **Preview** | **Markdown** | +|------------|--------------| +| *Italic* | `*Text*` or `_Text_` | +| **Bold** | `**Text**` | +| ~~Strikethrough~~ | `~~Text~~` | +| Underlined | `__Text__` | + +::hint{ type="info" } + You can stack several Markdown marks to combine formats: ***bold italic*** with `***Text***`. +:: + +## Advanced formatting + +### Heading + +To create a heading, put a specific number of hash characters `#` as the first term(s) of a new line. +The more `#` you use (3 maximum) for a heading, the smaller the heading. + +**Markdown:** +``` +# Heading 1 +## Heading 2 +### Heading 3 +``` +![Preview of the headings](./assets/markdown/titre.png) + +::hint{ type="info" } + Remember to put a space between your heading and the code. + + This applies to every list and heading Markdown mark. +:: + +### Subtext + +You can turn text into subtext, so it is displayed smaller than normal text, by adding `-#` at the beginning of the line. + +**Markdown:** +``` +-# Text +``` +![Preview of subtext](./assets/markdown/soustexte.png) + +### Masked link + +You can embed a masked, clickable hyperlink in a text. + +**Markdown:** +``` +[Text](hyperlink) +``` +![Preview of a masked link](./assets/markdown/lien_masque.png) + +### List + +You can create a bullet list using `-` or `*` at the beginning of each line. +You can also indent your list by adding a space before the `-` or `*` at the beginning of each line. + +**Markdown:** +``` +- Line 1 +- Line 2 +... +``` +![Preview of a list](./assets/markdown/liste.png) + +### Quote + +**Markdown:** +``` +> Text on a single line +or +>>> Text +over +several lines +``` +![Preview of a quote](./assets/markdown/citation.png) + +### Spoiler + +You can hide your text, so that it is only visible when clicked, with spoilers. + +**Markdown:** +``` +||Text|| +``` +![Preview of a spoiler](./assets/markdown/spoiler.png) + +### Code block + +**Markdown:** +``` +```Text +Text +Text``` +``` +![Preview of a code block](./assets/markdown/code_block.png) + +### Language code + +**Example markdown:** +``` +```diff ++ addition +- removal``` +``` +![Preview of the code](./assets/markdown/code_diff.png) + +::collapse{ label="See the different codes available" } + | Code | Category | + |------|-----------------| + | python, py | Programming language | + | javascript, js | Programming language | + | typescript, ts | Programming language | + | java | Programming language | + | c | Programming language | + | cpp | Programming language | + | csharp, cs | Programming language | + | go | Programming language | + | rust | Programming language | + | kotlin | Programming language | + | swift | Programming language | + | php | Programming language | + | ruby, rb | Programming language | + | perl | Programming language | + | lua | Programming language | + | html | Markup language | + | css, scss, less | Style language | + | json | Structured data | + | xml | Structured data | + | yaml, yml | Structured data | + | markdown, md | Text formatting | + | bash, sh, shell | Terminal | + | zsh | Terminal | + | powershell, ps | Terminal | + | batch, bat | Terminal | + | sql | Database | + | ini | Configuration file | + | toml | Configuration file | + | env | Configuration file | + | dockerfile | Configuration file | + | nginx | Configuration file | + | apache | Configuration file | + | diff | Comparison (+/-) | + | regex | Regular expression | + | plaintext, text | Plain text | + + ::hint{ type="info" } + Other variables may be available. + Simply put them after the first ``` (see the example above). + :: +:: + + +### Inline code +**Markdown:** +``` +`Text` +or +``Text`` +``` +![Preview of inline code](./assets/markdown/code_ligne.png) diff --git a/docs/en/8.misc/3.premium.md b/docs/en/8.misc/3.premium.md new file mode 100644 index 000000000..68d278000 --- /dev/null +++ b/docs/en/8.misc/3.premium.md @@ -0,0 +1,109 @@ +--- +slug: /misc/premium +title: Premium subscription +description: Here you will find everything you need to know about how DraftBot's premium works, and how to manage and activate it. +navigation.icon: 'material-symbols:diamond-outline' +contributors: ['ls62', 'imroxxor', 'rababio4579', 'lyvendev'] +updatedAt: '2025-08-18' +sourceHash: 78170fffee6d99b5e64fb481d8f8f62705b0bfe9e19b3a53d3301edd2d4ec2fc +sourceCommit: 3776da3855c1e37b0dd4e1e94ee9dc61ae4bde08 +--- + +## Your subscription + +From the [panel](/dashboard/user/premium), you will find every piece of information about your premium: + +- Credit or subscription +- Renewal status +- Start date and end date +- Payment history +- Your activated servers + +![Overview of the panel interface](./assets/premium/interface_panel_premium.png) + +- **Manage subscription**: lets you manage the renewal of your subscription and check your purchase invoices. + +- **Inventory**: lets you display, share and activate your premium codes. + +::hint{ type="info" } + The "Manage subscription" button is not available when premium has been activated from a [premium code](#premium-codes). +:: + +## Activating a server + +When premium is purchased, it is associated with your Discord account straight away. To enjoy its benefits, you have to activate it on one of your servers. There are two ways of doing so: + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/user/premium) + + To activate premium on a server, click the icon of the server you want, then confirm. + + ![Overview of the activation interface](./assets/premium/apercu_serveur.png) + :: + + ::tab{ label="Through a command" } + To activate premium on your server, simply run the \ command. + + ![Message of the /premium enable command](./assets/premium/premium_enable_command.png) + :: +:: + +::hint{ type="info" } + You need the **Administrator** permission on the server for this action. +:: + +## Premium codes + +If you have received a premium code from someone else, or bought it through the **"Buy premium"** button, you can activate it so that it is associated with your Discord account and you can enjoy it. + +Go to the **[panel](/dashboard/user/premium)**, open the **"inventory"** section, then select **"Use a code"** and enter the code. The code is in your inventory. You can keep it or activate it straight away to enjoy the benefits. + +![Overview of the inventory](./assets/premium/inventaire_apercu.png) + +::hint{ type="info" } + You do not need to be on the server, nor to have any particular permission. +:: + +::hint{ type="info" } + From the \ command, a **"Redeem a code"** button also adds a premium code directly to your inventory, without going through the panel. You can then activate it whenever you want. +:: + +## Available commands + +By taking out a premium subscription, you get several essential commands for managing it. + +| Commands | Descriptions | +|-----------|--------------| +| \ | Check the state of your premium subscription. +| \ | Activate your premium subscription on a server. +| \ | Deactivate your premium subscription on a server. +| \ | Display your premium code inventory, and redeem a new code through the "Redeem a code" button. + +## Stacking premium + +If you take out a premium subscription while already having an active one, this new purchase is converted into a [premium code](#premium-codes). You can then combine it with the current one as you prefer. + +- **Stack with current:** + With this option, you can accumulate **servers only**, which lets you activate premium on more servers. + +- **Activate it at the end of the current one:** + With this option, you can extend your premium subscription over time. + +![Overview of the window when activating your code](./assets/premium/apercu_popup_accumulation.png) + +## Deactivating premium + +You can deactivate the premium benefits on a server where you have activated them. There are two ways of doing so. + + ::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/user/premium) + + To deactivate premium on a server, click the icon of the server you want, then confirm. + :: + + ::tab{ label="Through a command" } + To deactivate premium on a server, simply run the \ command, giving the name or the ID of the server concerned. + :: + :: diff --git a/docs/en/8.misc/6.variables.md b/docs/en/8.misc/6.variables.md new file mode 100644 index 000000000..04f128c4b --- /dev/null +++ b/docs/en/8.misc/6.variables.md @@ -0,0 +1,474 @@ +--- +slug: /misc/variables +title: Variables +description: The variable system inserts contextual information into your messages dynamically. These variables follow a specific format and can be enriched with parameters and modifiers to customize how they are displayed. +navigation.icon: 'material-symbols:data-object' +redactors: ['elbaguetto', 'imroxxor'] +contributors: ['draftproducts', 'rababio4579', 'erwangit'] +updatedAt: '2025-10-23' +sourceHash: 3240f9f9a17057baac8f794f0b383f4472c99e86a2ec6ebdde82131ccd17fc72 +sourceCommit: 3776da3855c1e37b0dd4e1e94ee9dc61ae4bde08 +--- + +## General syntax + +Variables are always used between curly braces `{}` and follow one of the following structures: + +- `{variable}`: a simple variable +- `{variable:parameters}`: a variable with parameters +- `{variable?modifier}`: a variable with a modifier +- `{variable:parameters?modifier}`: a variable with parameters and a modifier + +**Example:** + +- `{user.username}` +- `{user.created_at:format=DD/MM/YYYY}` +- `{level.rank?ordinal}` + +## Parameters + +Parameters fine-tune a variable's behavior by passing it additional information. They are added after the variable's name, each of them preceded by a colon `:`. + +Each parameter follows the `name=value` structure. When you want to use several parameters at once, simply add a new `:` followed by the next parameter. + +**Example:** + +- `{level.rank:user_id=123456789012345678}` +- `{user.created_at:user_id=123456789012345678:format=DD MMMM YYYY}` + +## Common parameters + +This section gathers the parameters used by several variables. When a parameter is mentioned later without a detailed explanation, refer to this section. + +### user_id + +Discord ID of a user targeted by the variable (mentions `<@123>` are supported). + +- **Type:** Discord ID +- **Required:** depends on the variable + +### role_id + +Discord ID of a role. + +- **Type:** Discord ID +- **Required:** for role-related variables + +::hint{ type="warning" } + This parameter is required for every role variable. +:: + +### channel_id + +Discord ID of a channel. + +- **Type:** Discord ID +- **Required:** depends on the variable + +### format + +Sets the display format of dates and times. + +- **Default value:** `L` (date) or `LT` (time) + +- **Accepted values:** + + - `relative` → relative display (2 hours ago, for example) + + - a custom format (DD/MM/YYYY, HH:mm, for example) + + ::hint{ type="info" } + The list of the different formats is available on [this page](/docs/misc/timestamps) of the documentation. + :: + +| Variable | Format example | Response example | +|----------|----------------|-----------------| +| stream.start_at | The stream will begin on `{stream.start_at:format=DD/MM/YYYY}`. | The stream will begin on 31/12/2025. +| date | It is `{date:format=DD/MM/YYYY, HH:mm}`. | It is 04/03/2026, 20:14. | + +### separator + +The character(s) used to separate several values. + +- **Default value:** `, ` + +### style + +::card +--- +title: Timestamps +icon: material-symbols:schedule +to: /docs/misc/timestamps#the-style-parameter +target: _blank +color: '#D1D5DB' +--- + Discover the different style parameters +:: + +## Modifiers + +Modifiers transform how variables are displayed. They are added after the variable's name, or after the parameter(s), preceded by a question mark `?`. + +::hint{ type="warning" } + Modifiers cannot be stacked on the same variable. +:: + +| Modifier | Description | Example | +|--------------|-------------|---------| +| `uppercase` | Text in uppercase | `{user.username?uppercase}` → DRAFTBOT | +| `lowercase` | Text in lowercase | `{server.name?lowercase}` → draftbot support | +| `capitalize` | First letter in uppercase | `{user.username?capitalize}` → Draftbot | +| `ordinal` | Ordinal number | `{level.rank?ordinal}` → 3rd | +| `maxLength=N` | Length limit | `{title?maxLength=50}` | +| `formatNumber` | Localized number format | `{money?formatNumber}` → 1,234 | + +## Basic variables + +### User + +| Variable | Description | Example | +|----------|-------------|---------| +| `{user}` | The user's mention | @draftbot | +| `{user.id}` | The user's ID | 318312854816161792 | +| `{user.username}` | Account username | draftbot | +| `{user.globalname}` | Global display name | DraftBot | +| `{user.nickname}` | Nickname on the server | ❕DraftBot | +| `{user.tag}` | Tag (deprecated) | draftbot#0535 | +| `{user.rolecount}` | Number of roles | 2 | +| `{user.created_at}` | Date the account was created | 28/05/2017 | +| `{user.joined_at}` | Date they joined the server | 11/03/2018 | + +**Parameters:** +- `user_id` +- `format` + +::hint{ type="info" } + For the details of the parameters, [`click here`](#common-parameters). +:: + +### Server + +| Variable | Description | Example | +|----------|-------------|---------| +| `{server}` | The server's name | DraftBot Support | +| `{server.id}` | The server's ID | 422112414964908042 | +| `{server.name}` | The server's name | DraftBot Support | +| `{server.description}` | The server's description | Official server and Support of DraftBot | +| `{server.membercount}` | Total number of members | 65536 | +| `{server.humancount}` | Number of human members | 65535 | +| `{server.botcount}` | Number of bots | 1 | +| `{server.rolecount}` | Number of roles | 69 | +| `{server.channelcount}` | Number of channels | 20 | +| `{server.boosts.level}` | The server's boost level | 2 | +| `{server.boosts.count}` | The server's number of boosts | 27 | +| `{server.created_at}` | Date the server was created | 10/03/2018 | + +**Parameters:** +- `format` + +::hint{ type="info" } + For the details of the parameters, [`click here`](#common-parameters). +:: + +### Channel + +| Variable | Description | Example | +|----------|-------------|---------| +| `{channel}` | The channel's mention | #chat➖🐱 | +| `{channel.id}` | The channel's ID | 700375095297835096 | +| `{channel.name}` | The channel's name | chat➖🐱 | +| `{channel.created_at}` | Creation date | 16/04/2020 | +| `{channel.parent}` | The parent channel's mention | #▬▬▬ Community ▬▬▬ | +| `{channel.parent.id}` | The parent channel's ID | 700370977019658332 | +| `{channel.parent.name}` | The parent channel's name | ▬▬▬ Community ▬▬▬ | +| `{channel.parent.created_at}` | Parent creation date | 16/04/2020 | + +**Parameters:** +- `channel_id` +- `format` + +::hint{ type="info" } + For the details of the parameters, [`click here`](#common-parameters). +:: + +### Role + +| Variable | Description | Example | +|----------|-------------|---------| +| `{role}` | The role's mention | @Team | +| `{role.id}` | The role's ID | 698990778084491314 | +| `{role.name}` | The role's name | Team | +| `{role.color}` | Hexadecimal color | #FD9A60 | +| `{role.position}` | The role's position | 5 | +| `{role.membercount}` | Number of members | 13 | +| `{role.created_at}` | Creation date | 12/04/2020 | + +**Parameters:** +- `role_id` +- `format` + +::hint{ type="info" } + For the details of the parameters, [`click here`](#common-parameters). +:: + +### Time + +| Variable | Description | Example | +|----------|-------------|---------| +| `{date}` | Current date | 28/05/2017 | +| `{time}` | Current time | 11:01 | +| `{timestamp}` | Discord timestamp | 1495962098 | + +**Parameters:** +- `format` (date and time) +- `style` (timestamp) + +::hint{ type="info" } + For the details of the parameters, [`click here`](#common-parameters). +:: + +## Variables per module + +### Economy + +| Variable | Description | Example | +|----------|-------------|---------| +| `{money}` | Money | 1,234 | +| `{money.record}` | Money record | 5,678 | +| `{money.currency_icon}` | Currency icon | 💰 | +| `{money.rank}` | Position in the leaderboard | 3 | +| `{money.next_user}` | Member above in the leaderboard | @DraftBot | +| `{money.next_user.id}` | ID of the member above in the leaderboard | 318312854816161792 | +| `{money.next_user.money}` | Amount of money of the member above in the leaderboard | 2,500 | +| `{money.next_user.money_diff}` | Money difference with the member above in the leaderboard | 2,500 | +| `{money.to_position:position=N}` | Money needed to reach position N in the leaderboard | 1,200 | + +**Parameters:** +- `user_id` + +::hint{ type="info" } + For the details of the parameters, [`click here`](#common-parameters). +:: + +### Levels + +| Variable | Description | Example | +|----------|-------------|---------| +| `{level}` | Level | 25 | +| `{level.rank}` | Position in the leaderboard | 5 | +| `{level.next_user}` | Member above in the leaderboard | @DraftBot | +| `{level.next_user.id}` | ID of the member above in the leaderboard | 318312854816161792 | +| `{level.next_user.level}` | Level of the member above in the leaderboard | 27 | +| `{level.next_user.level_diff}` | Level difference with the member above in the leaderboard | 2 | +| `{level.next_user.xp}` | Amount of experience of the member above in the leaderboard | 15,000 | +| `{level.next_user.xp_diff}` | Experience difference with the member above in the leaderboard | 2,500 | +| `{level.to_position:position=N}` | Levels needed to reach position N in the leaderboard | 5,000 | +| `{xp}` | Total experience | 12,500 | +| `{xp.current_level}` | Experience of the current level | 250 | +| `{xp.next_level}` | Experience needed to reach the next level | 750 | +| `{xp.to_level:level=N}` | Experience needed to reach level N | 15,000 | +| `{xp.to_position:position=N}` | Experience needed to reach position N in the leaderboard | 5,000 | + +**Parameters:** +- `user_id` + +::hint{ type="info" } + For the details of the parameters, [`click here`](#common-parameters). +:: + +### Level rewards + +| Variable | Description | Example | +|----------|-------------|---------| +| `{reward}` | Reward received | VIP role | +| `{reward.level}` | Level of the reward received | 10 | +| `{reward.next_level}` | Levels before the next reward | 5 | +| `{reward.next_xp}` | Experience before the next reward | 2,500 | + +::hint{ type="info" } + The [level](#levels) variables are also available in level reward messages. +:: + +### Tickets + +| Variable | Description | Example | +|----------|-------------|---------| +| `{number}` | Ticket number | 42 | + +### Suggestions + +| Variable | Description | Example | +|----------|-------------|---------| +| `{title}` | Title of the suggestion | Questionnaire system | +| `{count}` | Number of ongoing suggestions | 3 | +| `{max}` | Maximum number of suggestions | 5 | + +### Suggestion rewards + +| Variable | Description | Example | +|----------|-------------|---------| +| `{reward}` | Reward received | 100 💰 | +| `{target.type}` | Status type | accepted | +| `{target.count}` | Number of suggestions | 10 | + +### Custom commands + +::card +--- +title: Custom commands - Arguments +icon: twemoji:magic-wand +to: /docs/utilities/custom-commands#arguments +target: _blank +color: '#FAEF90' +--- + You can see the different arguments of custom commands on this page. +:: + +#### Birthdays + +| Variable | Description | Example | +|----------|-------------|---------| +| `{birthday}` | Birth date | 15 March | +| `{birthday.next}` | Next birthday | In 2 months | +| `{age}` | The user's age | 25 years old | + +**Parameters:** +- `user_id` + +::hint{ type="info" } + For the details of the parameters, [`click here`](#common-parameters). +:: + +::hint{ type="info" } + The [economy](#economy) and [level](#levels) variables are also available in custom commands. +:: + +### Starboards + +| Variable | Description | Example | +|----------|-------------|---------| +| `{emoji}` | Starboard emoji | ⭐ | +| `{emoji.count}` | Number of reactions | 15 | +| `{message.url}` | Link to the message | https://discord.com/... | + +### Reports + +| Variable | Description | Example | +|----------|-------------|---------| +| `{target}` | Reported member | @draftman | +| `{target_message.url}` | Link to the reported message | https://discord.com/... | +| `{reason}` | Reason for the report | Spam | + +### Birthday + +| Variable | Description | Example | +|----------|-------------|---------| +| `{user}` | Member(s) celebrating their birthday | @John, @Jane | +| `{role}` | Temporary birthday role | @Birthday | +| `{gifts}` | Rewards granted | 500 💰, VIP role | + +### Statistics + +| Variable | Description | Example | +|----------|-------------|---------| +| `{count}` | The channel's statistic | 1,250 | + +::hint{ type="warning" } + This variable has to be present in the statistics channel's format. +:: + +### Temporary voice channels + +| Variable | Description | Example | +|----------|-------------|---------| +| `{index}` | The channel's number | 5 | +| `{random_word}` | Predefined random word | trampoline | +| `{custom_word}` | Custom random word | unicorn | + +### Counter + +| Variable | Description | Example | +|----------|-------------|---------| +| `{number}` | The indicated number | 4956 | +| `{discussion}` | The member's discussion (if any) | almost at 5k | + +### Counter rewards + +| Variable | Description | Example | +|----------|-------------|---------| +| `{number}` | The indicated number | 4956 | +| `{reward}` | Reward won when passing a tier | 5,000 💰 | + +### Advent calendar + +| Variable | Description | Example | +|----------|-------------|---------| +| `{day}` | Day number of the opened box | 15 | +| `{gift}` | Gift received in the opened box | 10,000 💰 | +| `{streak.count}` | Current number of consecutive openings | 7 | +| `{streak.record}` | The member's consecutive openings record | 15 | + +### Consecutive calendar openings + +| Variable | Description | Example | +|----------|-------------|---------| +| `{day}` | Day number of the opened box | 15 | +| `{streak.count}` | Current number of consecutive openings | 7 | +| `{streak.record}` | The member's consecutive openings record | 15 | +| `{streak.reward}` | Name of the reward obtained | "Loyal" role | + +### Sanction DMs + +| Variable | Description | Example | +|----------|-------------|---------| +| `{sanction.moderator}` | Name of the moderator behind the sanction | DraftBot | +| `{sanction.end}` | End date of the temporary sanction (if applicable) | in 3 days | +| `{sanction.duration}` | Duration of the temporary sanction (if applicable) | 5 days | +| `{sanction.reason}` | Reason for the sanction | Advertising on the server | + +## Social notification variables + +### YouTube + +| Variable | Description | Example | +|----------|-------------|---------| +| `{video.author}` | Channel name | DraftBot | +| `{video.title}` | Video title | How to use DraftBot | +| `{video.url}` | Video link | https://youtube.com/... | + +### Twitch + +| Variable | Description | Example | +|----------|-------------|---------| +| `{stream.author}` | Channel name | StreamerName | +| `{stream.title}` | Stream title | Development stream | +| `{stream.game}` | Game being streamed | Just Chatting | +| `{stream.url}` | Stream link | https://twitch.tv/... | +| `{stream.start_at}` | Start time | 2 hours ago | +| `{stream.tags}` | Stream tags | english, development | + +**Parameters:** +- `format` +- `separator` + +::hint{ type="info" } + For the details of the parameters, [`click here`](#common-parameters). +:: + +### Reddit + +| Variable | Description | Example | +|----------|-------------|---------| +| `{post.subreddit}` | Subreddit name | r/discord | +| `{post.title}` | Post title | Question about DraftBot | +| `{post.description}` | Post description | How do I set up… | +| `{post.url}` | Post link | https://reddit.com/... | + +### RSS feeds + +| Variable | Description | Example | +|----------|-------------|---------| +| `{feed.name}` | Feed name | DraftBot Blog | +| `{feed.url}` | Feed link | https://draftbot.fr/... | + + diff --git a/docs/en/8.misc/7.timestamps.md b/docs/en/8.misc/7.timestamps.md new file mode 100644 index 000000000..c61cb3dee --- /dev/null +++ b/docs/en/8.misc/7.timestamps.md @@ -0,0 +1,50 @@ +--- +slug: /misc/timestamps +title: Timestamps +description: Timestamps display a dynamic date or time, interpreted directly by Discord. They automatically adapt to the user's language, their time zone and the moment the message is read. +navigation.icon: 'material-symbols:schedule' +contributors: ['imroxxor', 'rababio4579'] +updatedAt: '2026-01-06' +sourceHash: c21cdf7da2c2cc90df10803ba63d1c919818f049c1c637eb4480b2bab14c1778 +sourceCommit: 3776da3855c1e37b0dd4e1e94ee9dc61ae4bde08 +--- + +## Usage + +The `{timestamp}` variable represents a date as a Discord timestamp. + +Simplified example: +``` +{timestamp} +``` + +::hint{ type="warning" } + Used on its own, the `{timestamp}` variable only returns a numeric value. + To get a readable display, you have to use the [style parameter](#the-style-parameter). +:: + +::hint{ type="info" } + You can find the other existing variables by [**`clicking here`**](/docs/misc/variables) +:: + +## The style parameter + +The `style` parameter chooses the timestamp's display format. + +### Variables + +| Style | Example rendering | Description | +|-------|---------------|-------------| +| `t` | 14:32 | Short time | +| `T` | 14:32:18 | Long time | +| `d` | 25/01/2019 | Short date | +| `D` | 25 January 2019 | Long date | +| `f` | 25 January 2019 14:32 | Date and time | +| `F` | Friday 25 January 2019 14:32 | Full date and time | +| `R` | 2 hours ago | Relative display | + +### Examples of use + +- **Short date**: `{timestamp:style=d}` +- **Full date and time**: `{timestamp:style=F}` +- **Relative display**: `{timestamp:style=R}` diff --git a/docs/en/8.misc/_dir.yml b/docs/en/8.misc/_dir.yml new file mode 100644 index 000000000..c7545428e --- /dev/null +++ b/docs/en/8.misc/_dir.yml @@ -0,0 +1,2 @@ +slug: /misc/_dir +title: Misc diff --git a/docs/assets/markdown/citation.png b/docs/en/8.misc/assets/markdown/citation.png similarity index 100% rename from docs/assets/markdown/citation.png rename to docs/en/8.misc/assets/markdown/citation.png diff --git a/docs/assets/markdown/code_block.png b/docs/en/8.misc/assets/markdown/code_block.png similarity index 100% rename from docs/assets/markdown/code_block.png rename to docs/en/8.misc/assets/markdown/code_block.png diff --git a/docs/assets/markdown/code_diff.png b/docs/en/8.misc/assets/markdown/code_diff.png similarity index 100% rename from docs/assets/markdown/code_diff.png rename to docs/en/8.misc/assets/markdown/code_diff.png diff --git a/docs/assets/markdown/code_ligne.png b/docs/en/8.misc/assets/markdown/code_ligne.png similarity index 100% rename from docs/assets/markdown/code_ligne.png rename to docs/en/8.misc/assets/markdown/code_ligne.png diff --git a/docs/assets/markdown/lien_masque.png b/docs/en/8.misc/assets/markdown/lien_masque.png similarity index 100% rename from docs/assets/markdown/lien_masque.png rename to docs/en/8.misc/assets/markdown/lien_masque.png diff --git a/docs/assets/markdown/liste.png b/docs/en/8.misc/assets/markdown/liste.png similarity index 100% rename from docs/assets/markdown/liste.png rename to docs/en/8.misc/assets/markdown/liste.png diff --git a/docs/assets/markdown/soustexte.png b/docs/en/8.misc/assets/markdown/soustexte.png similarity index 100% rename from docs/assets/markdown/soustexte.png rename to docs/en/8.misc/assets/markdown/soustexte.png diff --git a/docs/assets/markdown/spoiler.png b/docs/en/8.misc/assets/markdown/spoiler.png similarity index 100% rename from docs/assets/markdown/spoiler.png rename to docs/en/8.misc/assets/markdown/spoiler.png diff --git a/docs/assets/markdown/titre.png b/docs/en/8.misc/assets/markdown/titre.png similarity index 100% rename from docs/assets/markdown/titre.png rename to docs/en/8.misc/assets/markdown/titre.png diff --git a/docs/assets/autres/channel_id.gif b/docs/en/8.misc/assets/misc/channel_id.gif similarity index 100% rename from docs/assets/autres/channel_id.gif rename to docs/en/8.misc/assets/misc/channel_id.gif diff --git a/docs/assets/autres/emoji_id.gif b/docs/en/8.misc/assets/misc/emoji_id.gif similarity index 100% rename from docs/assets/autres/emoji_id.gif rename to docs/en/8.misc/assets/misc/emoji_id.gif diff --git a/docs/assets/autres/guild_id.gif b/docs/en/8.misc/assets/misc/guild_id.gif similarity index 100% rename from docs/assets/autres/guild_id.gif rename to docs/en/8.misc/assets/misc/guild_id.gif diff --git a/docs/assets/autres/member_id.gif b/docs/en/8.misc/assets/misc/member_id.gif similarity index 100% rename from docs/assets/autres/member_id.gif rename to docs/en/8.misc/assets/misc/member_id.gif diff --git a/docs/assets/autres/message_id.gif b/docs/en/8.misc/assets/misc/message_id.gif similarity index 100% rename from docs/assets/autres/message_id.gif rename to docs/en/8.misc/assets/misc/message_id.gif diff --git a/docs/assets/autres/role_id.gif b/docs/en/8.misc/assets/misc/role_id.gif similarity index 100% rename from docs/assets/autres/role_id.gif rename to docs/en/8.misc/assets/misc/role_id.gif diff --git a/docs/assets/premium/apercu_popup_accumulation.png b/docs/en/8.misc/assets/premium/apercu_popup_accumulation.png similarity index 100% rename from docs/assets/premium/apercu_popup_accumulation.png rename to docs/en/8.misc/assets/premium/apercu_popup_accumulation.png diff --git a/docs/assets/premium/apercu_serveur.png b/docs/en/8.misc/assets/premium/apercu_serveur.png similarity index 100% rename from docs/assets/premium/apercu_serveur.png rename to docs/en/8.misc/assets/premium/apercu_serveur.png diff --git a/docs/assets/premium/interface_panel_premium.png b/docs/en/8.misc/assets/premium/interface_panel_premium.png similarity index 100% rename from docs/assets/premium/interface_panel_premium.png rename to docs/en/8.misc/assets/premium/interface_panel_premium.png diff --git a/docs/assets/premium/inventaire_apercu.png b/docs/en/8.misc/assets/premium/inventaire_apercu.png similarity index 100% rename from docs/assets/premium/inventaire_apercu.png rename to docs/en/8.misc/assets/premium/inventaire_apercu.png diff --git a/docs/assets/premium/premium_enable_command.png b/docs/en/8.misc/assets/premium/premium_enable_command.png similarity index 100% rename from docs/assets/premium/premium_enable_command.png rename to docs/en/8.misc/assets/premium/premium_enable_command.png diff --git a/docs/en/9.appendices/1.contribute.md b/docs/en/9.appendices/1.contribute.md new file mode 100644 index 000000000..70d93b37c --- /dev/null +++ b/docs/en/9.appendices/1.contribute.md @@ -0,0 +1,646 @@ +--- +slug: /appendices/contribute +title: 'Reference page' +description: This is the documentation's reference page for integration and development +navigation.icon: material-symbols:edit-document-outline +redactors: ['draftproducts', 'rababio4579', 'theorik'] +contributors: ['clement669', 'iibey', 'imroxxor', 'kazotka'] +noindex: true +sourceHash: f75190186d7785af3c9c385509a4db096a702253a4b33ab9ddfaddac056173a8 +sourceCommit: 3776da3855c1e37b0dd4e1e94ee9dc61ae4bde08 +--- + +## Writing style + +The documentation is an essential part of **DraftBot**: it gives every user a good experience of the bot. It matters that they can find answers to their questions easily and on their own. + +Here are a few pieces of advice for improving the quality of your writing: + +1. **Clarity and concision:** +Use **clear and precise** vocabulary, matching **DraftBot**'s wording as closely as possible. Avoid needless jargon and long sentences. **Your goal is to make the information easy for the reader to understand.** +2. **Stay considerate:** avoid subjective expressions such as *"simply"*, *"just"*, *"obviously"* as much as possible. **Keep in mind that we all have different experience and backgrounds.** These words add no useful information and can sometimes come across as dismissive or hurtful, particularly to people discovering Discord or starting out with **DraftBot**. +3. **Use informative language:** the point of the documentation is to convey **information and knowledge** about using the bot. To match that, stay **neutral and objective** as much as possible, without trying to convince, entertain or push choices or actions. +4. **Consistency:** keep the style, tone and terminology consistent throughout the documentation. This maintains a smooth, professional reading experience. To that end, use the **declarative form in the active voice** as much as possible, in the **present tense** in most cases. Exceptions and departures can of course be made depending on the situation, to come back to an earlier explanation or to raise a future possibility. + +## Writing rules + +### A user-oriented introduction + +When writing a page, always start with a presentation of the system from the user's point of view. + +When a server manager decides to enable a system, they always put themselves in their members' shoes. If they are convinced, they will move on to setting it up. + +### Recommended structure of a module page + +To keep the whole documentation consistent, follow this structure when writing a module page: + +1. **User view**: start by explaining what an ordinary member sees and does (user commands, visible features) +2. **Administrator view**: explain the management features and admin commands +3. **Configuration**: detail the configuration options (through the "Panel" / "/config command" tabs) +4. **Advanced use cases**: migrations, tips (optional) + +::hint{ type="success" } + This structure lets the reader understand what the module is **for** before diving into the technical configuration. +:: + +### Premium features + +When you want to indicate that a feature is premium, do not put it in the title or in the feature's description. +Use an info hint instead; several wordings such as these work well: + +**Limit extended by premium** + +::tabs + ::tab{ label="Preview"} + ::hint{ type="info" } + You can run up to 3 giveaways at the same time. [Premium](/premium) <:icon_premium_:1096140508625125417> servers have no limit. + :: + :: + + ::tab{ label="Markdown"} + ``` + ::hint{ type="info" } + You can run up to 3 giveaways at the same time. [Premium](/premium) <:icon_premium_:1096140508625125417> servers have no limit. + :: + ``` + :: +:: + +**Premium feature** + +::tabs + ::tab{ label="Preview"} + ::hint{ type="info" } + This feature is reserved for [premium](/premium) <:icon_premium_:1096140508625125417> servers. + :: + :: + + ::tab{ label="Markdown"} + ``` + ::hint{ type="info" } + This feature is reserved for [premium](/premium) <:icon_premium_:1096140508625125417> servers. + :: + ``` + :: +:: + +**Premium feature in a table** + +::tabs + ::tab{ label="Preview"} + ::hint{ type="info" } + Features marked with the <:icon_premium:1096140508625125417> symbol are reserved for [premium](/premium) <:icon_premium_:1096140508625125417> servers. + :: + :: + + ::tab{ label="Markdown"} + ``` + ::hint{ type="info" } + Features marked with the <:icon_premium:1096140508625125417> symbol are reserved for [premium](/premium) <:icon_premium_:1096140508625125417> servers. + :: + ``` + :: +:: + +### Screenshots + +They are essential for illustrating the documentation and giving it room to breathe. +To stay in harmony with the rest of the documentation: +1. Prefer wide shots with no editing of the screenshots. + + The necessary edits, such as cutting out or cropping the screenshots, are done by a writing referent once the writing and the corrections are finished. + +2. Use the Discord theme called "Dark" exclusively. + +![Dark theme](./assets/contribute/discord_theme.png) + +### Links to the panel + +Let the user reach the relevant page of the panel every time the page changes: +- At the top of the section concerned +- In every section concerned (even if it comes up several times on the same page) + +::tabs + ::tab{ label="Preview"} + [⫸ Open the **DraftBot** panel](/dashboard/first/levels) + :: + + ::tab{ label="Markdown"} + ``` + [⫸ Open the **DraftBot** panel](/dashboard/first/moduleName) + ``` + + 1. `first` automatically selects the first server in the list. + 2. `moduleName` has to match the page concerned. + :: +:: + +### Configuration from the Panel and /config + +Always put the "**From the panel**" choice first rather than "**Using the /config command**", to keep the pages consistent so that members do not have to look for it. + +::tabs + ::tab{ label="From the panel" } + [⫸ Open the **DraftBot** panel](/dashboard/first/levels) + + This is for configuring from the panel. + :: + + ::tab{ label="Using the /config command" } + If you would rather do the whole setup from Discord, you can use the /config command, then go to the "Levels" tab. + :: +:: + +### Default values and behaviors + +Always give the default values when a feature offers any: + +**Recommended format:** +- Directly in the description: "**15 to 25 XP** by default" +- In brackets for options: "configurable **100-1500**" +- In an info hint for complex behaviors + +**Example:** +```markdown +Each message grants a **random** amount of experience between two values you configure (**15 to 25 XP** by default). +``` + +### Specific behaviors and edge cases + +Some features behave in specific ways in particular situations (edge cases). Document them clearly to avoid confusion: + +**Recommended format:** + +```markdown +**Specific behaviors:** + +- **Name of the case**: a clear explanation of the behavior, with a concrete example if needed. +- **Another case**: description… +``` + +**Example:** +```markdown +- **Skipping levels**: if a member skips several levels at once (through \), they receive **every reward** of the intermediate levels. For example, if a member goes from level 5 to 25, they will receive the rewards of levels 10, 15, 20 and 25. +``` + +### Required Discord permissions + +When a feature requires specific Discord permissions, document them in a warning hint: + +::hint{ type="warning" } + **Required permissions**: to send announcements, DraftBot needs the following permissions in the chosen channel: **View Channel**, **Send Messages**, **Embed Links** and **Attach Files**. If these permissions are removed, announcements are disabled automatically. +:: + +**Good practice:** +- List **every** required permission +- Explain the **consequences** if the permissions are missing +- State whether the system disables itself automatically or returns an error + +### Navigation icons + +Every page of the documentation *(apart from a few)* has to set an icon through `navigation.icon`. + +Two icon libraries are used: + +- **[`twemoji`](https://icones.js.org/collection/twemoji):** **only** for **feature pages** *(Member welcome, Engagement, Games & events, Community, Security, Utilities)* and the **home/installation** pages. +- **[`material-symbols`](https://icones.js.org/collection/material-symbols?s=filter&variant=Outline):** for **every page** of the documentation. + +**Examples** + +::card +--- +icon: material-symbols:edit-document-outline +--- +:: + +```yaml +navigation.icon: material-symbols:edit-document-outline +``` + +::card +--- +icon: twemoji:locked +--- +:: + +```yaml +navigation.icon: material-symbols:edit-document-outline +``` + +## Multilingual structure + +The documentation exists in French and in English. French is authoritative: +every page is written in French first, then translated. + +### Where to put a file + +French pages live under `docs/fr/`, English ones under `docs/en/`. +**File and folder names are in English and identical in both languages** — +that is what pairs a page with its translation. A French page is therefore +called `docs/fr/3.engagement/0.levels.md`, not `0.niveaux.md`. + +The numeric prefixes determine the display order in the menu. + +### Declaring a page's address + +A page's address no longer comes from its file name but from its +frontmatter: + +```yaml +--- +title: Levels +slug: /engagement/levels +--- +``` + +The `slug` is the full path, without the `/docs/en` prefix. It has to +start with the `slug` of the `_dir.yml` file of its folder, minus its +`/_dir` suffix. + +`_dir.yml` files carry one too, ending in `/_dir`: + +```yaml +slug: /engagement/_dir +title: Engagement +``` + +### Images + +A page's images live in the `assets/` folder of its category, in a +subfolder named after the page: + +``` +docs/fr/3.engagement/ +├─ assets/levels/panel.png +└─ 0.levels.md ![Caption](./assets/levels/panel.png) +``` + +### Checking your work + +```bash +node scripts/check-translations.mjs # slugs, duplicates and up-to-date translations +node scripts/check-links.mjs # missing images and internal links +``` + +### Translations + +You do not have to translate anything yourself. When a French page changes, a +translation pull request is opened automatically — it needs to be reviewed, +not written. While it awaits review, the English documentation displays the +up-to-date French version rather than an outdated translation. + +### Excluding a page from translation + +A page that is not meant to exist in English carries `translate: false` +in its frontmatter: + +```yaml +--- +title: 2026 +slug: /annexes/changelog/2026 +translate: false +--- +``` + +It then drops out of the list of pages to translate. This is the case of the +changelog, which stays in French. + +This key does not propagate: putting it in a `_dir.yml` only excludes that +file, not the pages of the folder. Every page to exclude has to carry it. + +## Structuring tools + +Organize your content logically. Use headings, subheadings, tabs and screenshots so that it is easy to follow. +Below are all of the structures available. + +### Headings + +::tabs + ::tab{ label="Preview"} + + ## H2 + + ### H3 + + + #### H4 + :: + + ::tab{ label="Markdown"} + ```mdc + ## H2 + ### H3 + #### H4 + ``` + :: +:: + +::hint{ type="warning" } + **Be careful not to nest headings inside block elements** *(such as collapsible menus or tabs)*! +:: + +### Basic markdown + +::tabs + ::tab{ label="Preview"} + **Bold** + + *Italic* + + **_Bold italic_** + + ***Bold italic*** + + ~~Strikethrough~~ + + `Code` + + www.automatic-link.com + + [link to a URL](https://www.youtube.com/watch?v=dQw4w9WgXcQ) + + [link to a panel page](/dashboard/first/messages) + + [link to a new tab](https://www.youtube.com/watch?v=dQw4w9WgXcQ) + + ![image](https://i.imgur.com/hgmR4m0.jpeg) + + > "Quote" + + :shortcut{value="meta"} :shortcut{value="A"} + :shortcut{value="C"} + :: + + ::tab{ label="Markdown"} + ```mdc + **Bold** + + *Italic* + + **_Bold italic_** + + ***Bold italic*** + + ~~Strikethrough~~ + + `Code` + + www.automatic-link.com + + [link to a URL](https://www.youtube.com/watch?v=dQw4w9WgXcQ) + + [link to a new tab](https://www.youtube.com/watch?v=dQw4w9WgXcQ) + + [link to a panel page](/dashboard/first/messages) + + ![image](https://i.imgur.com/hgmR4m0.jpeg) + + > "Quote" + + :shortcut{value="meta"} :shortcut{value="A"} + :shortcut{value="C"} + ``` + :: +:: + +### Emojis & mentions + +::tabs + ::tab{ label="Preview"} + Text emoji: :fire: + + Character emoji: 🔥 + + Custom Discord emoji: <:draftbot:816002768971759636> + + Animated custom Discord emoji: + + Command mention: \ + + Channel mention: <#channel> + :: + + ::tab{ label="Markdown"} + Text emoji: `:fire:` + + Character emoji: `🔥` + + Custom Discord emoji: `<:draftbot:816002768971759636>` + + Animated custom Discord emoji: `` + + Command mention: `\` + + Channel mention: `<#channel>` + :: +:: + +### Bullets & lists + +::tabs + ::tab{ label="Preview"} + - Bullet 1 + - Bullet 2 + - Bullet 3 + - Bullet 3.1 + - Bullet 3.1.1 + + 1. Num 1 + 2. Num 2 + 3. Num 3 + + - [ ] box 1 + - [x] box 2 + :: + + ::tab{ label="Markdown"} + ```mdc + - Bullet 1 + - Bullet 2 + - Bullet 3 + - Bullet 3.1 + - Bullet 3.1.1 + + 1. Num 1 + 2. Num 2 + 3. Num 3 + + - [ ] box 1 + - [x] box 2 + ``` + :: +:: + +### Information hints + +Hints highlight important information. Choose the type according to the context: + +::tabs + ::tab{ label="Preview"} + ::hint{ type="success" } + A nice, positive little piece of information + :: + + ::hint{ type="info" } + A nice, informative little piece of information + :: + + ::hint{ type="warning" } + A moderately nice little warning + :: + + ::hint{ type="danger" } + A not-so-nice little piece of information + :: + :: + + ::tab{ label="Markdown"} + ```mdc + ::hint{ type="success" } + A nice, positive little piece of information + :: + + ::hint{ type="info" } + A nice, informative little piece of information + :: + + ::hint{ type="warning" } + A moderately nice little warning + :: + + ::hint{ type="danger" } + A not-so-nice little piece of information + :: + ``` + :: +:: + +::hint{ type="info" } + **Several hints in a row**: only use several consecutive hints if the pieces of information are of **different types** (an info followed by a warning, for example). Otherwise, gather the information in a single hint with bullets. +:: + +### Table + +Tables are essential for comparing options or listing features in a structured way. + +**Use a table to:** +- Compare several types of options +- List commands with their descriptions +- Present customization variables + +::tabs + ::tab{ label="Preview"} + | Curve | Difficulty | Description | + |--------|------------|-------------| + | **Constant** | Fixed | Every level requires exactly the same amount of XP | + | **Linear** | Moderate increase | Linear progression | + | **Exponential** | Fast increase | Exponentially increasing difficulty | + :: + + ::tab{ label="Markdown"} + ```mdc + | Curve | Difficulty | Description | + |--------|------------|-------------| + | **Constant** | Fixed | Every level requires exactly the same amount of XP | + | **Linear** | Moderate increase | Linear progression | + | **Exponential** | Fast increase | Exponentially increasing difficulty | + ``` + :: +:: + +### Collapsible + +::tabs + ::tab{ label="Preview"} + ::collapse{ label="Text" } + A long + + text + + over + + several + + lines + :: + :: + + ::tab{ label="Markdown"} + ```mdc + ::collapse{ label="Text" } + A long + + text + + over + + several + + lines + :: + ``` + :: +:: + +### Tabs + +::tabs + ::tab{ label="Tab 1" } + Information 1 + :: + + ::tab{ label="Tab 2" } + Information 2 + :: + + ::tab{ label="Tab 3" } + Information 3 + :: +:: + +```mdc +::tabs + ::tab{ label="Tab 1" } + Information 1 + :: + + ::tab{ label="Tab 2" } + Information 2 + :: + + ::tab{ label="Tab 3" } + Information 3 + :: +:: +``` + +### Card + +::tabs + ::tab{ label="Preview"} + ::card + --- + title: Levels + icon: material-symbols:view-module-rounded + to: /docs/engagement/levels + target: _blank + color: '#00ff00' + --- + Discover a secret page in a new tab + :: + :: + + ::tab{ label="Markdown"} + ```mdc + ::card + --- + title: Levels + icon: material-symbols:view-module-rounded + to: /docs/engagement/levels + target: _blank + color: '#00ff00' + --- + Discover a secret page in a new tab + :: + ``` + :: +:: + diff --git a/docs/en/9.appendices/_dir.yml b/docs/en/9.appendices/_dir.yml new file mode 100644 index 000000000..d90c8e345 --- /dev/null +++ b/docs/en/9.appendices/_dir.yml @@ -0,0 +1,2 @@ +slug: /appendices/_dir +title: Appendices diff --git a/docs/assets/contribute/discord_theme.png b/docs/en/9.appendices/assets/contribute/discord_theme.png similarity index 100% rename from docs/assets/contribute/discord_theme.png rename to docs/en/9.appendices/assets/contribute/discord_theme.png diff --git a/docs/_dir.yml b/docs/en/_dir.yml similarity index 50% rename from docs/_dir.yml rename to docs/en/_dir.yml index 5d512327b..8a64693ad 100644 --- a/docs/_dir.yml +++ b/docs/en/_dir.yml @@ -1 +1,2 @@ +slug: /_dir title: Docs diff --git a/docs/assets/installation/add.jpg b/docs/en/assets/installation/add.jpg similarity index 100% rename from docs/assets/installation/add.jpg rename to docs/en/assets/installation/add.jpg diff --git a/docs/assets/installation/preview_integrations.png b/docs/en/assets/installation/preview_integrations.png similarity index 100% rename from docs/assets/installation/preview_integrations.png rename to docs/en/assets/installation/preview_integrations.png diff --git a/docs/assets/installation/role.png b/docs/en/assets/installation/role.png similarity index 100% rename from docs/assets/installation/role.png rename to docs/en/assets/installation/role.png diff --git a/docs/0.accueil.md b/docs/fr/0.home.md similarity index 98% rename from docs/0.accueil.md rename to docs/fr/0.home.md index f9e45983a..accf61212 100644 --- a/docs/0.accueil.md +++ b/docs/fr/0.home.md @@ -1,4 +1,5 @@ --- +slug: /accueil title: Accueil description: Bienvenue sur la documentation de DraftBot. Retrouvez ici des conseils, des tutoriels et les réponses à vos questions. navigation.icon: 'twemoji:round-pushpin' diff --git a/docs/1.installation.md b/docs/fr/1.installation.md similarity index 99% rename from docs/1.installation.md rename to docs/fr/1.installation.md index aae1d666e..c74799c8e 100644 --- a/docs/1.installation.md +++ b/docs/fr/1.installation.md @@ -1,4 +1,5 @@ --- +slug: /installation title: Installation et réglages description: Voici le processus d'invitation et d'installation de DraftBot. navigation.icon: 'twemoji:gear' diff --git a/docs/2.accueil-des-membres/0.arrivees-et-departs.md b/docs/fr/2.member-welcome/0.joins-and-leaves.md similarity index 88% rename from docs/2.accueil-des-membres/0.arrivees-et-departs.md rename to docs/fr/2.member-welcome/0.joins-and-leaves.md index f7fbd5d23..d9e0fab50 100644 --- a/docs/2.accueil-des-membres/0.arrivees-et-departs.md +++ b/docs/fr/2.member-welcome/0.joins-and-leaves.md @@ -1,4 +1,5 @@ --- +slug: /accueil-des-membres/arrivees-et-departs title: Arrivées & départs description: Configurez des messages qui s'enverront lorsqu'un membre rejoint ou quitte votre serveur. navigation.icon: 'twemoji:waving-hand' @@ -11,7 +12,7 @@ updatedAt: '2025-05-26' Les messages de bienvenue sont envoyés lorsqu'un membre rejoint votre serveur. Ils permettent de souhaiter la bienvenue à un nouvel arrivant et de lui donner des informations sur votre serveur. -![Exemple de message de bienvenue](../assets/arrivees-et-departs/bot_welcome.png) +![Exemple de message de bienvenue](./assets/joins-and-leaves/bot_welcome.png) ### Configuration @@ -22,13 +23,13 @@ Les messages de bienvenue sont envoyés lorsqu'un membre rejoint votre serveur. Vous devez ensuite activer le système en cliquant sur le bouton d'activation du module. Si vous voulez le désactiver, recliquez sur ce même bouton. - ![Activer le système de bienvenue](../assets/arrivees-et-departs/panel_welcome_enable.png) + ![Activer le système de bienvenue](./assets/joins-and-leaves/panel_welcome_enable.png) ::hint{type="warning"} Une fois fini, n'oubliez pas d'enregistrer vos modifications avec le bouton "Enregistrer" en bas de la page. :: - ![Menu de configuration](../assets/arrivees-et-departs/panel_welcome.png) + ![Menu de configuration](./assets/joins-and-leaves/panel_welcome.png) :: ::tab{ label="Via la commande /config" } @@ -68,7 +69,7 @@ Les messages de bienvenue sont envoyés lorsqu'un membre rejoint votre serveur. Si vous souhaitez avoir une couleur personnalisée, vous devez souscrire à un abonnement [premium](/premium) <:icon_premium:1096140508625125417>. - ![Menu de sélection de la couleur de fond](../assets/arrivees-et-departs/config_welcome_color.png) + ![Menu de sélection de la couleur de fond](./assets/joins-and-leaves/config_welcome_color.png) :: - "Couleur" ➜ Définir la couleur de la barre latérale de votre message de bienvenue. (<:icon_premium:1096140508625125417>) @@ -82,7 +83,7 @@ Les messages de bienvenue sont envoyés lorsqu'un membre rejoint votre serveur. Les dimensions optimales de l'image sont de 1 000 x 300 pixels. :: - ![Menu de configuration du système de bienvenue](../assets/arrivees-et-departs/config_welcome.png) + ![Menu de configuration du système de bienvenue](./assets/joins-and-leaves/config_welcome.png) :: :: @@ -94,7 +95,7 @@ Les messages de bienvenue sont envoyés lorsqu'un membre rejoint votre serveur. Les messages d'au revoir sont envoyés lorsqu'un membre quitte votre serveur. Ils permettent d'informer la communauté qu'un membre a quitté le serveur et de lui souhaiter bonne continuation. -![Exemple de message d'au revoir](../assets/arrivees-et-departs/bot_goodbye.png) +![Exemple de message d'au revoir](./assets/joins-and-leaves/bot_goodbye.png) ### Configuration @@ -105,13 +106,13 @@ Les messages d'au revoir sont envoyés lorsqu'un membre quitte votre serveur. Il Vous devez d'abord activer le système en cliquant sur le bouton d'activation du module. Si vous voulez le désactiver, recliquez sur ce même bouton. - ![Activer le système messages d'au revoir](../assets/arrivees-et-departs/panel_goodbye_enable.png) + ![Activer le système messages d'au revoir](./assets/joins-and-leaves/panel_goodbye_enable.png) ::hint{type="warning"} Une fois fini, n'oubliez pas d'enregistrer vos modifications avec le bouton "Enregistrer" en bas de la page. :: - ![Menu de configuration](../assets/arrivees-et-departs/panel_goodbye.png) + ![Menu de configuration](./assets/joins-and-leaves/panel_goodbye.png) :: ::tab{ label="Via la commande /config" } @@ -156,7 +157,7 @@ Les messages d'au revoir sont envoyés lorsqu'un membre quitte votre serveur. Il Si vous souhaitez avoir une couleur personnalisée, vous devez souscrire à un abonnement [premium](/premium) <:icon_premium:1096140508625125417>. - ![Menu configuration couleur de fond](../assets/arrivees-et-departs/config_goodbye_color.png) + ![Menu configuration couleur de fond](./assets/joins-and-leaves/config_goodbye_color.png) :: - "Couleur" ➜ Définir la couleur de la barre latérale de votre message d'au revoir. (<:icon_premium:1096140508625125417>) @@ -170,7 +171,7 @@ Les messages d'au revoir sont envoyés lorsqu'un membre quitte votre serveur. Il Les dimensions optimales de l'image sont de 1 000 x 300 pixels. :: - ![Menu de configuration du système d'au revoir](../assets/arrivees-et-departs/config_goodbye.png) + ![Menu de configuration du système d'au revoir](./assets/joins-and-leaves/config_goodbye.png) :: :: diff --git a/docs/2.accueil-des-membres/1.roles-automatiques.md b/docs/fr/2.member-welcome/1.automatic-roles.md similarity index 89% rename from docs/2.accueil-des-membres/1.roles-automatiques.md rename to docs/fr/2.member-welcome/1.automatic-roles.md index e12dec0b2..a39873680 100644 --- a/docs/2.accueil-des-membres/1.roles-automatiques.md +++ b/docs/fr/2.member-welcome/1.automatic-roles.md @@ -1,4 +1,5 @@ --- +slug: /accueil-des-membres/roles-automatiques title: Gestion des rôles description: Déterminez quelles actions donnent un rôle spécifique à vos utilisateurs ou ajoutez en masse des rôles aux membres de votre serveur. navigation.icon: 'twemoji:label' @@ -29,7 +30,7 @@ updatedAt: '2026-04-17' - Le rôle est géré par un bot ou par Discord. :: - ![Configuration des rôles automatiques à l'arrivée sur le panel](../assets/roles-automatiques/panel_join.png) + ![Configuration des rôles automatiques à l'arrivée sur le panel](./assets/automatic-roles/panel_join.png) :: ::tab{ label="Via la commande /config" } @@ -45,7 +46,7 @@ updatedAt: '2026-04-17' Vous pouvez créer jusqu'à 3 rôles automatiques. Les serveurs [premium](/premium) <:icon_premium:1096140508625125417> ont le droit d'en créer jusqu'à 10. :: - ![Menu d'accueil de la configuration des rôles automatiques à l'arrivée](../assets/roles-automatiques/config_join.png) + ![Menu d'accueil de la configuration des rôles automatiques à l'arrivée](./assets/automatic-roles/config_join.png) :: :: @@ -69,7 +70,7 @@ updatedAt: '2026-04-17' - Le rôle est géré par un bot ou par Discord. :: - ![Configuration des rôles automatiques de vocal, sur le panel](../assets/roles-automatiques/panel_voice.png) + ![Configuration des rôles automatiques de vocal, sur le panel](./assets/automatic-roles/panel_voice.png) :: ::tab{ label="Via la commande /config" } @@ -91,7 +92,7 @@ updatedAt: '2026-04-17' Pour restreindre des salons aux membres en vocal, cliquez sur **"Restreindre des salons aux membres en vocal"** puis sélectionnez le salon en question. Seuls les membres possédant ce rôle pourront le voir. - ![Menu d'accueil de la configuration des rôles automatiques en vocal](../assets/roles-automatiques/config_voice.png) + ![Menu d'accueil de la configuration des rôles automatiques en vocal](./assets/automatic-roles/config_voice.png) :: :: @@ -102,11 +103,11 @@ updatedAt: '2026-04-17' ::tabs ::tab{ label="/role tous" } La commande \ permet de distribuer à l'ensemble des membres du serveur un rôle spécifié. - ![Exemple de la commande](../assets/roles-automatiques/config_roles_all.png) + ![Exemple de la commande](./assets/automatic-roles/config_roles_all.png) Il suffit de choisir l'action à faire (ajouter ou retirer) puis de sélectionner le rôle concerné. Vous devez également choisir si l'ensemble des membres est concerné (Humain + Bots) ou uniquement un des deux. Une fois la commande lancée, l'attribution des rôles s'effectuera et un message vous informera de la progression de la commande[^1]. - ![Suivi de la tâche](../assets/roles-automatiques/config_roles_progress.png) + ![Suivi de la tâche](./assets/automatic-roles/config_roles_progress.png) [^1]:Plus les membres sont nombreux, plus la tâche est longue. :: @@ -114,10 +115,10 @@ updatedAt: '2026-04-17' La commande \ permet d'ajouter un rôle en masse, mais en permettant de créer une condition pour ajouter le rôle souhaité. Il suffit de choisir l'action à faire (ajouter ou retirer), sélectionner le rôle qui déterminera l'ajout du rôle, puis de sélectionner le rôle que vous souhaitez ajouter. Vous devez également choisir si l'ensemble des membres est concerné (Humain + Bots) ou uniquement un des deux. - ![Exemple de la commande](../assets/roles-automatiques/config_roles_to.png) + ![Exemple de la commande](./assets/automatic-roles/config_roles_to.png) Ici, le rôle A sera donné à l'ensemble des membres ayant le rôle B. Une fois la commande lancée l'attribution des rôles s'effectuera, un message vous informera de la progression de la commande[^1]. - ![Suivi de la tâche](../assets/roles-automatiques/config_roles_progress.png) + ![Suivi de la tâche](./assets/automatic-roles/config_roles_progress.png) :: :: diff --git a/docs/2.accueil-des-membres/2.reglement.md b/docs/fr/2.member-welcome/2.rules.md similarity index 81% rename from docs/2.accueil-des-membres/2.reglement.md rename to docs/fr/2.member-welcome/2.rules.md index d67a8ee6b..c703d836e 100644 --- a/docs/2.accueil-des-membres/2.reglement.md +++ b/docs/fr/2.member-welcome/2.rules.md @@ -1,4 +1,5 @@ --- +slug: /accueil-des-membres/reglement title: 'Règlement' description: Le système de règlement avec validation permet de donner un rôle aux nouveaux arrivants une fois qu'ils ont pris connaissance et accepté des règles du serveur. navigation.icon: 'twemoji:memo' @@ -12,7 +13,7 @@ Pour commencer, vous allez devoir effectuer la commande \. ** Les membres reçoivent ce rôle une fois qu'ils ont pris connaissance du règlement et cliqué sur le bouton `Accepter le règlement`. -![Résultat de la commande /reglement créer](../assets/reglement/bot_rules_1.png) +![Résultat de la commande /reglement créer](./assets/rules/bot_rules_1.png) ## Ajouter des règles @@ -20,14 +21,14 @@ Maintenant que le message de règlement est créé, il ne contient encore aucune Pour cela, utilisez la commande \. DraftBot vous demandera trois informations : le message du règlement, le titre de votre règle et sa description. -![Aperçu de la commande /reglement ajouter](../assets/reglement/config_rules_add.png) +![Aperçu de la commande /reglement ajouter](./assets/rules/config_rules_add.png) ::hint{ type="warning" } Le champ "message du règlement" attend **l'identifiant** du message de règlement que vous venez de créer. Pour savoir comment le récupérer, consultez la page [Récupérer un identifiant](/docs/autres/recuperer-un-identifiant#identifiant-dun-message). :: -![Résultat d'ajout d'une règle](../assets/reglement/bot_rules_2.png) +![Résultat d'ajout d'une règle](./assets/rules/bot_rules_2.png) ::hint{ type="info" } Lorsque l'ajout d'une règle est effectué, **DraftBot** proposera deux choix : ajouter une autre règle ou de remettre à plus tard. @@ -45,20 +46,20 @@ La procédure n'est pas très différente de la commande \, Ce champ vous permet de sélectionner **la règle** que vous souhaitez modifier. -![Aperçu de la commande /reglement modifier](../assets/reglement/config_rules_edit.png) +![Aperçu de la commande /reglement modifier](./assets/rules/config_rules_edit.png) -![Résultat de la modification d'une règle](../assets/reglement/bot_rules_3.png) +![Résultat de la modification d'une règle](./assets/rules/bot_rules_3.png) ::hint{ type="info" } Vous avez la possibilité de modifier les règles depuis le panel dans la catégorie [Messages](/dashboard/first/messages). L'Embed est intitulé **"Règlement du serveur"**. - ![Aperçu du panel dans la catégorie Messages](../assets/reglement/panel_messages.png) + ![Aperçu du panel dans la catégorie Messages](./assets/rules/panel_messages.png) :: ## Retirer une règle Si une règle ne vous plaît pas et que vous souhaitez la retirer, vous pouvez utiliser la commande \. Vous aurez juste à récupérer **l'identifiant** du message du règlement et sélectionner la **règle**. -![Aperçu de la commande /reglement retirer](../assets/reglement/config_rules_remove.png) +![Aperçu de la commande /reglement retirer](./assets/rules/config_rules_remove.png) diff --git a/docs/2.accueil-des-membres/3.captcha.md b/docs/fr/2.member-welcome/3.captcha.md similarity index 94% rename from docs/2.accueil-des-membres/3.captcha.md rename to docs/fr/2.member-welcome/3.captcha.md index 22efffda7..e5d204e87 100644 --- a/docs/2.accueil-des-membres/3.captcha.md +++ b/docs/fr/2.member-welcome/3.captcha.md @@ -1,4 +1,5 @@ --- +slug: /accueil-des-membres/captcha title: Captcha description: Le système de captcha permet de protéger votre serveur d’éventuelles attaques de robots qu'il pourrait subir. navigation.icon: 'twemoji:locked' @@ -28,7 +29,7 @@ Vous pourrez alors : - **Créer ou sélectionner** un rôle attribué aux membres n'ayant pas encore validé le captcha - **Sélectionner** (facultatif) un rôle attribué aux membres ayant validé le captcha -![Configuration du captcha](../assets/captcha/config_view.png) +![Configuration du captcha](./assets/captcha/config_view.png) ::hint{ type="info" } La configuration du système de captcha n'est pas encore disponible sur le panel de **DraftBot**. @@ -40,7 +41,7 @@ Lorsqu'un nouveau membre rejoindra votre serveur Discord, un message apparaîtra Le membre devra alors réécrire les caractères sur l'image qui lui est destinée pour accéder au serveur. -![Message envoyé dans le salon dédié au captcha lorsqu'un membre rejoint le serveur](../assets/captcha/bot_captcha.png) +![Message envoyé dans le salon dédié au captcha lorsqu'un membre rejoint le serveur](./assets/captcha/bot_captcha.png) ::hint{ type="info" } Le message d'arrivée ne s'envoie qu'après la validation du règlement du système de communauté Discord et du captcha de DraftBot. diff --git a/docs/2.accueil-des-membres/_dir.yml b/docs/fr/2.member-welcome/_dir.yml similarity index 83% rename from docs/2.accueil-des-membres/_dir.yml rename to docs/fr/2.member-welcome/_dir.yml index 676f95bdd..3fb2d83d5 100644 --- a/docs/2.accueil-des-membres/_dir.yml +++ b/docs/fr/2.member-welcome/_dir.yml @@ -1,3 +1,4 @@ +slug: /accueil-des-membres/_dir title: Accueil des membres description: Tout ce qui accompagne un membre de son arrivée sur le serveur à ses premiers pas. navigation.icon: 'twemoji:waving-hand' diff --git a/docs/fr/2.member-welcome/assets/automatic-roles/config_join.png b/docs/fr/2.member-welcome/assets/automatic-roles/config_join.png new file mode 100644 index 000000000..87f9fe0e5 Binary files /dev/null and b/docs/fr/2.member-welcome/assets/automatic-roles/config_join.png differ diff --git a/docs/fr/2.member-welcome/assets/automatic-roles/config_roles_all.png b/docs/fr/2.member-welcome/assets/automatic-roles/config_roles_all.png new file mode 100644 index 000000000..098a2d26f Binary files /dev/null and b/docs/fr/2.member-welcome/assets/automatic-roles/config_roles_all.png differ diff --git a/docs/fr/2.member-welcome/assets/automatic-roles/config_roles_progress.png b/docs/fr/2.member-welcome/assets/automatic-roles/config_roles_progress.png new file mode 100644 index 000000000..d8076fc81 Binary files /dev/null and b/docs/fr/2.member-welcome/assets/automatic-roles/config_roles_progress.png differ diff --git a/docs/fr/2.member-welcome/assets/automatic-roles/config_roles_to.png b/docs/fr/2.member-welcome/assets/automatic-roles/config_roles_to.png new file mode 100644 index 000000000..2c435e01a Binary files /dev/null and b/docs/fr/2.member-welcome/assets/automatic-roles/config_roles_to.png differ diff --git a/docs/fr/2.member-welcome/assets/automatic-roles/config_voice.png b/docs/fr/2.member-welcome/assets/automatic-roles/config_voice.png new file mode 100644 index 000000000..a74a95272 Binary files /dev/null and b/docs/fr/2.member-welcome/assets/automatic-roles/config_voice.png differ diff --git a/docs/fr/2.member-welcome/assets/automatic-roles/panel_join.png b/docs/fr/2.member-welcome/assets/automatic-roles/panel_join.png new file mode 100644 index 000000000..ffe4c4e4a Binary files /dev/null and b/docs/fr/2.member-welcome/assets/automatic-roles/panel_join.png differ diff --git a/docs/fr/2.member-welcome/assets/automatic-roles/panel_voice.png b/docs/fr/2.member-welcome/assets/automatic-roles/panel_voice.png new file mode 100644 index 000000000..51d96d0f4 Binary files /dev/null and b/docs/fr/2.member-welcome/assets/automatic-roles/panel_voice.png differ diff --git a/docs/fr/2.member-welcome/assets/captcha/bot_captcha.png b/docs/fr/2.member-welcome/assets/captcha/bot_captcha.png new file mode 100644 index 000000000..2af0f6a89 Binary files /dev/null and b/docs/fr/2.member-welcome/assets/captcha/bot_captcha.png differ diff --git a/docs/fr/2.member-welcome/assets/captcha/config_view.png b/docs/fr/2.member-welcome/assets/captcha/config_view.png new file mode 100644 index 000000000..55518ec89 Binary files /dev/null and b/docs/fr/2.member-welcome/assets/captcha/config_view.png differ diff --git a/docs/fr/2.member-welcome/assets/joins-and-leaves/bot_goodbye.png b/docs/fr/2.member-welcome/assets/joins-and-leaves/bot_goodbye.png new file mode 100644 index 000000000..bbc44e2a0 Binary files /dev/null and b/docs/fr/2.member-welcome/assets/joins-and-leaves/bot_goodbye.png differ diff --git a/docs/fr/2.member-welcome/assets/joins-and-leaves/bot_welcome.png b/docs/fr/2.member-welcome/assets/joins-and-leaves/bot_welcome.png new file mode 100644 index 000000000..5bd60785e Binary files /dev/null and b/docs/fr/2.member-welcome/assets/joins-and-leaves/bot_welcome.png differ diff --git a/docs/fr/2.member-welcome/assets/joins-and-leaves/config_goodbye.png b/docs/fr/2.member-welcome/assets/joins-and-leaves/config_goodbye.png new file mode 100644 index 000000000..a72df8c5d Binary files /dev/null and b/docs/fr/2.member-welcome/assets/joins-and-leaves/config_goodbye.png differ diff --git a/docs/fr/2.member-welcome/assets/joins-and-leaves/config_goodbye_color.png b/docs/fr/2.member-welcome/assets/joins-and-leaves/config_goodbye_color.png new file mode 100644 index 000000000..29af881d3 Binary files /dev/null and b/docs/fr/2.member-welcome/assets/joins-and-leaves/config_goodbye_color.png differ diff --git a/docs/fr/2.member-welcome/assets/joins-and-leaves/config_welcome.png b/docs/fr/2.member-welcome/assets/joins-and-leaves/config_welcome.png new file mode 100644 index 000000000..ffd2e5155 Binary files /dev/null and b/docs/fr/2.member-welcome/assets/joins-and-leaves/config_welcome.png differ diff --git a/docs/fr/2.member-welcome/assets/joins-and-leaves/config_welcome_color.png b/docs/fr/2.member-welcome/assets/joins-and-leaves/config_welcome_color.png new file mode 100644 index 000000000..07f140156 Binary files /dev/null and b/docs/fr/2.member-welcome/assets/joins-and-leaves/config_welcome_color.png differ diff --git a/docs/fr/2.member-welcome/assets/joins-and-leaves/panel_goodbye.png b/docs/fr/2.member-welcome/assets/joins-and-leaves/panel_goodbye.png new file mode 100644 index 000000000..93846d422 Binary files /dev/null and b/docs/fr/2.member-welcome/assets/joins-and-leaves/panel_goodbye.png differ diff --git a/docs/fr/2.member-welcome/assets/joins-and-leaves/panel_goodbye_enable.png b/docs/fr/2.member-welcome/assets/joins-and-leaves/panel_goodbye_enable.png new file mode 100644 index 000000000..c5b71fd54 Binary files /dev/null and b/docs/fr/2.member-welcome/assets/joins-and-leaves/panel_goodbye_enable.png differ diff --git a/docs/fr/2.member-welcome/assets/joins-and-leaves/panel_welcome.png b/docs/fr/2.member-welcome/assets/joins-and-leaves/panel_welcome.png new file mode 100644 index 000000000..a9ecc1ac6 Binary files /dev/null and b/docs/fr/2.member-welcome/assets/joins-and-leaves/panel_welcome.png differ diff --git a/docs/fr/2.member-welcome/assets/joins-and-leaves/panel_welcome_enable.png b/docs/fr/2.member-welcome/assets/joins-and-leaves/panel_welcome_enable.png new file mode 100644 index 000000000..2667594ee Binary files /dev/null and b/docs/fr/2.member-welcome/assets/joins-and-leaves/panel_welcome_enable.png differ diff --git a/docs/fr/2.member-welcome/assets/rules/bot_rules_1.png b/docs/fr/2.member-welcome/assets/rules/bot_rules_1.png new file mode 100644 index 000000000..ca4457cf6 Binary files /dev/null and b/docs/fr/2.member-welcome/assets/rules/bot_rules_1.png differ diff --git a/docs/fr/2.member-welcome/assets/rules/bot_rules_2.png b/docs/fr/2.member-welcome/assets/rules/bot_rules_2.png new file mode 100644 index 000000000..2fbaf662c Binary files /dev/null and b/docs/fr/2.member-welcome/assets/rules/bot_rules_2.png differ diff --git a/docs/fr/2.member-welcome/assets/rules/bot_rules_3.png b/docs/fr/2.member-welcome/assets/rules/bot_rules_3.png new file mode 100644 index 000000000..6c7db4267 Binary files /dev/null and b/docs/fr/2.member-welcome/assets/rules/bot_rules_3.png differ diff --git a/docs/fr/2.member-welcome/assets/rules/config_rules_add.png b/docs/fr/2.member-welcome/assets/rules/config_rules_add.png new file mode 100644 index 000000000..57cf5218b Binary files /dev/null and b/docs/fr/2.member-welcome/assets/rules/config_rules_add.png differ diff --git a/docs/fr/2.member-welcome/assets/rules/config_rules_edit.png b/docs/fr/2.member-welcome/assets/rules/config_rules_edit.png new file mode 100644 index 000000000..71464c1b6 Binary files /dev/null and b/docs/fr/2.member-welcome/assets/rules/config_rules_edit.png differ diff --git a/docs/fr/2.member-welcome/assets/rules/config_rules_remove.png b/docs/fr/2.member-welcome/assets/rules/config_rules_remove.png new file mode 100644 index 000000000..b72d72e43 Binary files /dev/null and b/docs/fr/2.member-welcome/assets/rules/config_rules_remove.png differ diff --git a/docs/fr/2.member-welcome/assets/rules/panel_messages.png b/docs/fr/2.member-welcome/assets/rules/panel_messages.png new file mode 100644 index 000000000..30312f433 Binary files /dev/null and b/docs/fr/2.member-welcome/assets/rules/panel_messages.png differ diff --git a/docs/3.engagement/0.niveaux.md b/docs/fr/3.engagement/0.levels.md similarity index 93% rename from docs/3.engagement/0.niveaux.md rename to docs/fr/3.engagement/0.levels.md index 537e7abd9..cb6055e51 100644 --- a/docs/3.engagement/0.niveaux.md +++ b/docs/fr/3.engagement/0.levels.md @@ -1,4 +1,5 @@ --- +slug: /engagement/niveaux title: Niveaux description: Découvrez comment suivre la progression des membres de votre serveur avec la fonctionnalité de niveaux. navigation.icon: 'twemoji:chart-increasing' @@ -11,7 +12,7 @@ updatedAt: '2026-05-23' Pour consulter votre progression personnelle, utilisez la commande \. -![Carte renvoyée par la commande /niveau](../assets/niveaux/bot_level_card.png) +![Carte renvoyée par la commande /niveau](./assets/levels/bot_level_card.png) ::hint{ type="info" } Pour consulter la progression d'un autre membre, ajoutez simplement sa mention en argument de la commande \. @@ -29,7 +30,7 @@ Motivez vos membres en leur offrant des récompenses lorsqu'ils atteignent certa | **Objet d'inventaire** | Un ou plusieurs [objets d'inventaire](/docs/engagement/inventaire) | 3x "Potion de boost" au niveau 25 | | **Récompense personnalisée** | Une récompense que vous remettez manuellement | Code promo, goodies, etc. | -![Récompenses de niveau](../assets/niveaux/bot_rewards.png) +![Récompenses de niveau](./assets/levels/bot_rewards.png) ::hint{ type="info" } Vous pouvez créer jusqu'à **10 récompenses** gratuitement. Les serveurs [premium](/premium) <:icon_premium:1096140508625125417> n'ont **aucune limite** ! @@ -43,7 +44,7 @@ Vous pouvez afficher le classement des membres, du plus haut au plus bas niveau, Vous pouvez afficher le classement via la commande \. -![Résultat de la commande /topniveau](../assets/niveaux/bot_toplevel.png) +![Résultat de la commande /topniveau](./assets/levels/bot_toplevel.png) ::hint{ type="success" } Si vous souhaitez afficher un nombre spécifique de lignes (seulement le top 3 par exemple), vous pouvez ajouter ce nombre en argument de la commande \. @@ -57,7 +58,7 @@ Vous pouvez afficher le classement via la commande \. Si vous avez activé le **classement en ligne**, vous pouvez le consulter depuis le bouton **"Voir l'ensemble du classement"** de la commande \. -![Classement en ligne](../assets/niveaux/panel_leaderboard.png) +![Classement en ligne](./assets/levels/panel_leaderboard.png) ::hint{ type="info" } Si vous êtes administrateur du serveur, vous pouvez également y accéder depuis le [**panel**](/dashboard/first/levels) dans le module **Niveaux** via le bouton **"Accéder au classement"**. @@ -67,7 +68,7 @@ Si vous avez activé le **classement en ligne**, vous pouvez le consulter depuis Pour les serveurs [premium](/premium) <:icon_premium:1096140508625125417>, il est possible de mettre en place dans un salon dédié un classement des membres en temps réel et mis à jour automatiquement. -![Classement Discord automatique](../assets/niveaux/bot_leaderboard_auto.png) +![Classement Discord automatique](./assets/levels/bot_leaderboard_auto.png) ::hint{ type="success" } L'avantage de cette fonctionnalité est que le message affichant le classement peut afficher jusqu'à 25 membres et sera réactualisé toutes les 10 minutes automatiquement, sauf s'il n'y a pas de changements ! @@ -206,7 +207,7 @@ D'autres options avancées sont disponibles pour affiner le système : ::hint{ type="info" } Vous trouverez ci-dessous le nombre d'XP nécessaire pour passer au niveau supérieur avec la courbe par défaut. - ![Tableau des niveaux](../assets/niveaux/bot_experience_table.png) + ![Tableau des niveaux](./assets/levels/bot_experience_table.png) :: ### Courbe d'expérience personnalisable @@ -288,7 +289,7 @@ Le message d'annonce est **entièrement personnalisable** avec des variables dyn Configurez des annonces **séparées** pour les récompenses de niveau. Elles utilisent les mêmes options et variables, avec en plus `{reward}` pour afficher la récompense obtenue. -![Annonce d'un nouveau niveau](../assets/niveaux/bot_new_level_notif.png) +![Annonce d'un nouveau niveau](./assets/levels/bot_new_level_notif.png) ## Configurer le système de niveaux @@ -299,11 +300,11 @@ Configurez des annonces **séparées** pour les récompenses de niveau. Elles ut Pour activer le module, la première étape est de cliquer sur le bouton en haut à droite : - ![Activation du système de niveaux depuis le Panel](../assets/niveaux/panel_enable.png) + ![Activation du système de niveaux depuis le Panel](./assets/levels/panel_enable.png) Ensuite, l'ensemble des fonctionnalités apparaît : - ![Module Niveaux activé sur le Panel](../assets/niveaux/panel_home.png) + ![Module Niveaux activé sur le Panel](./assets/levels/panel_home.png) ::hint{type="warning"} Une fois vos modifications terminées, n'oubliez pas de les enregistrer avec le bouton "Enregistrer" situé en bas de page ! @@ -314,7 +315,7 @@ Configurez des annonces **séparées** pour les récompenses de niveau. Elles ut Si vous souhaitez effectuer toute la configuration directement depuis Discord, vous pouvez le faire via la commande \, puis en vous rendant dans l'onglet "Niveaux". Le menu ressemble alors à ceci : - ![Module Niveaux via la commande /config](../assets/niveaux/config_home.png) + ![Module Niveaux via la commande /config](./assets/levels/config_home.png) Le corps du **message** vous permet de consulter en un coup d'œil l'**état actuel** de votre système de niveaux, tandis que les **boutons** situés au-dessous vous permettent d'en **modifier la configuration**. @@ -324,7 +325,7 @@ Configurez des annonces **séparées** pour les récompenses de niveau. Elles ut - Activer / Désactiver le classement en ligne - Activer / Désactiver le classement sur Discord (<:icon_premium:1096140508625125417>) - ![Menu "Statut" via la commande /config](../assets/niveaux/config_status.png) + ![Menu "Statut" via la commande /config](./assets/levels/config_status.png) ::hint{ type="success" } Lorsque vous activez le classement sur Discord, vous avez le choix entre utiliser un salon existant ou laisser DraftBot en créer un pour vous. Vous pouvez même définir le nombre de lignes du classement à afficher ! @@ -340,7 +341,7 @@ Configurez des annonces **séparées** pour les récompenses de niveau. Elles ut - Activer / Désactiver / Régler le double XP pour les messages longs - Choisir si le niveau des membres quittant le serveur est remis à 0 - ![Menu "Expérience" via la commande /config](../assets/niveaux/config_experience.png) + ![Menu "Expérience" via la commande /config](./assets/levels/config_experience.png) :: ::collapse{ label="Récompenses de niveaux" } @@ -348,7 +349,7 @@ Configurez des annonces **séparées** pour les récompenses de niveau. Elles ut - Créer / Modifier / Supprimer une [récompense](#récompenses-de-niveau) - Réinitialiser les récompenses. - ![Menu "Récompenses de niveau" via la commande /config](../assets/niveaux/config_rewards.png) + ![Menu "Récompenses de niveau" via la commande /config](./assets/levels/config_rewards.png) :: ::collapse{ label="Annonces" } @@ -363,7 +364,7 @@ Configurez des annonces **séparées** pour les récompenses de niveau. Elles ut - Choisir le salon où faire les annonces - Personnaliser le message d'annonce - ![Menu "Annonces" via la commande /config](../assets/niveaux/config_notifs.png) + ![Menu "Annonces" via la commande /config](./assets/levels/config_notifs.png) :: ::collapse{ label="Limitations & Boosts" } @@ -373,7 +374,7 @@ Configurez des annonces **séparées** pour les récompenses de niveau. Elles ut - à quels rôles appliquer un multiplicateur (x1.5, x2, x2.5, x3), - à quels salons appliquer un multiplicateur (x1.5, x2, x2.5, x3). - ![Menu "Limitations & Boosts" via la commande /config](../assets/niveaux/config_limits_boosts.png) + ![Menu "Limitations & Boosts" via la commande /config](./assets/levels/config_limits_boosts.png) :: ::collapse{ label="Personnalisation" } @@ -381,7 +382,7 @@ Configurez des annonces **séparées** pour les récompenses de niveau. Elles ut - Définir un niveau maximum - Personnaliser la couleur de l'interface des niveaux (par défaut : orange) - ![Menu "Personnalisation" via la commande /config](../assets/niveaux/config_customization.png) + ![Menu "Personnalisation" via la commande /config](./assets/levels/config_customization.png) :: :: :: @@ -397,7 +398,7 @@ La configuration de base des récompenses se fait comme ceci : Deux sections s'offrent à vous : - ![Menu des récompenses depuis le Panel DraftBot](../assets/niveaux/panel_rewards.png) + ![Menu des récompenses depuis le Panel DraftBot](./assets/levels/panel_rewards.png) 1. **Créer une récompense** : cette option permet de créer et assigner des récompenses aux passages de niveaux de votre choix. *(Apprenez à [créer une récompense](#créer-une-récompense) !)* @@ -409,7 +410,7 @@ La configuration de base des récompenses se fait comme ceci : - Créer ou sélectionner un salon dédié - Personnaliser le message d'annonce - ![Configuration des annonces depuis le Panel](../assets/niveaux/panel_rewards_notifs.png) + ![Configuration des annonces depuis le Panel](./assets/levels/panel_rewards_notifs.png) :: ::hint{ type="success" } @@ -423,7 +424,7 @@ La configuration de base des récompenses se fait comme ceci : - Créer / Modifier / Supprimer une [récompense](#créer-une-récompense) - Réinitialiser les récompenses - ![Menu "Récompenses" via la commande /config](../assets/niveaux/config_rewards.png) + ![Menu "Récompenses" via la commande /config](./assets/levels/config_rewards.png) :: :: @@ -431,7 +432,7 @@ La configuration de base des récompenses se fait comme ceci : DraftBot vous permet de récompenser l'activité de vos membres à travers des items de types variés : -![Menu de création de récompenses, depuis le panel](../assets/niveaux/panel_create_reward.png) +![Menu de création de récompenses, depuis le panel](./assets/levels/panel_create_reward.png) ::tabs ::tab{ label="Rôle" } @@ -517,7 +518,7 @@ DraftBot vous permet de récompenser l'activité de vos membres à travers des i Si vous utilisiez déjà un système de niveaux via MEE6, vous avez la possibilité d'importer la progression de vos membres au système de niveaux de DraftBot ! -![Bouton d'importation des niveaux](../assets/niveaux/config_import.png) +![Bouton d'importation des niveaux](./assets/levels/config_import.png) Après avoir cliqué sur **Importer MEE6**, et confirmé que vous souhaitez procéder à l'importation, DraftBot récupèrera automatiquement toutes les informations de niveaux des membres. diff --git a/docs/3.engagement/1.economie.md b/docs/fr/3.engagement/1.economy.md similarity index 92% rename from docs/3.engagement/1.economie.md rename to docs/fr/3.engagement/1.economy.md index 27f4d5f65..674349250 100644 --- a/docs/3.engagement/1.economie.md +++ b/docs/fr/3.engagement/1.economy.md @@ -1,4 +1,5 @@ --- +slug: /engagement/economie title: Économie description: Créez une économie virtuelle sur votre serveur Discord avec DraftBot ! Permettez à vos membres de gagner de l'argent, d'acheter des objets dans des boutiques personnalisées et de consulter leur richesse dans les classements. navigation.icon: 'twemoji:money-bag' @@ -11,7 +12,7 @@ updatedAt: '2026-05-23' Pour consulter votre solde personnel, utilisez la commande \. -![Carte renvoyée par la commande /argent](../assets/economie/bot_money.png) +![Carte renvoyée par la commande /argent](./assets/economy/bot_money.png) ::hint{ type="info" } Pour consulter le solde d'un autre membre, ajoutez simplement sa mention en argument de la commande \. @@ -38,7 +39,7 @@ Il existe plusieurs commandes pratiques pour rendre l'intégration du système d La boutique, accessible depuis la commande \, permet à vos membres d'acheter des articles mis en place par vos soins ! -![Interface de la boutique](../assets/economie/bot_shops.png) +![Interface de la boutique](./assets/economy/bot_shops.png) - **Pagination** : Les articles sont affichés par page de 5 articles maximum - **Tri des articles** : 5 options de tri disponibles (date de création, prix croissant, prix décroissant, nom alphabétique, type) @@ -172,7 +173,7 @@ Vous pouvez afficher le classement des membres, du plus riche au moins riche, de ### Commande /topargent -![Résultat de la commande /topargent](../assets/economie/bot_topargent.png) +![Résultat de la commande /topargent](./assets/economy/bot_topargent.png) ::hint{ type="success" } Pour afficher un nombre spécifique de lignes (par exemple le top 3 uniquement), passez ce nombre en argument : \ `nombre:3`. @@ -186,7 +187,7 @@ Vous pouvez afficher le classement des membres, du plus riche au moins riche, de Vous pouvez le consulter depuis le bouton **"Voir l'ensemble du classement"** de la commande \. -![Classement en ligne](../assets/economie/panel_classement_web.png) +![Classement en ligne](./assets/economy/panel_classement_web.png) ::hint{ type="info" } Si vous êtes administrateur du serveur, vous pouvez également y accéder depuis le [**panel**](/dashboard/first/economy) dans le module **Économie** via le bouton **"Accéder au classement"**. @@ -200,7 +201,7 @@ Vous pouvez le consulter depuis le bouton **"Voir l'ensemble du classement"** de Pour les serveurs [premium](/premium) <:icon_premium:1096140508625125417>, il est possible de mettre en place un classement automatique des membres dans un salon dédié. -![Classement Discord automatique](../assets/economie/bot_classement_discord_auto.png) +![Classement Discord automatique](./assets/economy/bot_classement_discord_auto.png) ::hint{ type="success" } Le message affiche jusqu'à 25 membres et est mis à jour automatiquement toutes les 10 minutes, uniquement si le classement a évolué. @@ -215,11 +216,11 @@ Pour les serveurs [premium](/premium) <:icon_premium:1096140508625125417>, il es Pour activer le module, la première étape est de cliquer sur le bouton en haut à droite : - ![Activation du système d'économie depuis le panel](../assets/economie/panel_economy_enable.png) + ![Activation du système d'économie depuis le panel](./assets/economy/panel_economy_enable.png) Ensuite, l'ensemble des fonctionnalités apparaît : - ![Module économie activé sur le Panel](../assets/economie/panel_all.png) + ![Module économie activé sur le Panel](./assets/economy/panel_all.png) ::hint{type="warning"} Une fois vos modifications terminées, n'oubliez pas de les enregistrer avec le bouton "Enregistrer" situé en bas de page ! @@ -230,7 +231,7 @@ Pour les serveurs [premium](/premium) <:icon_premium:1096140508625125417>, il es Si vous souhaitez effectuer toute la configuration directement depuis Discord, vous pouvez le faire via la commande \, puis en vous rendant dans l'onglet "Économie". Le menu ressemble alors à ceci : - ![Module économie via la commande /config](../assets/economie/config_home.png) + ![Module économie via la commande /config](./assets/economy/config_home.png) Le corps du **message** vous permet de consulter en un coup d'œil l'**état actuel** de votre système économique, tandis que les **boutons** situés au-dessous vous permettent d'en **modifier la configuration**. @@ -240,7 +241,7 @@ Pour les serveurs [premium](/premium) <:icon_premium:1096140508625125417>, il es - Activer / Désactiver le classement en ligne - Activer / Désactiver le classement sur Discord (<:icon_premium:1096140508625125417>) - ![Menu "Statut" via la commande /config](../assets/economie/config_status.png) + ![Menu "Statut" via la commande /config](./assets/economy/config_status.png) ::hint{ type="success" } Lorsque vous activez le classement sur Discord, vous avez le choix entre utiliser un salon existant ou laisser DraftBot en créer un pour vous. Vous pouvez même définir le nombre de lignes du classement à afficher ! @@ -260,7 +261,7 @@ Pour les serveurs [premium](/premium) <:icon_premium:1096140508625125417>, il es - Choisir si l'argent des membres quittant le serveur est remis à 0 - Choisir si l'argent des membres bannis est remis à 0 - ![Menu "Argent" via la commande /config](../assets/economie/config_money.png) + ![Menu "Argent" via la commande /config](./assets/economy/config_money.png) :: ::collapse{ label="Limitations & Boosts" } @@ -270,18 +271,18 @@ Pour les serveurs [premium](/premium) <:icon_premium:1096140508625125417>, il es - à quels rôles appliquer un multiplicateur (de x1.5 à x3), - à quels salons appliquer un multiplicateur (de x1.5 à x3). - ![Menu "Limitations & Boosts" via la commande /config](../assets/economie/config_limits_boosts.png) + ![Menu "Limitations & Boosts" via la commande /config](./assets/economy/config_limits_boosts.png) :: ::collapse{ label="Personnalisation" } - Personnaliser l'émoji de votre monnaie - Personnaliser la couleur de l'interface d'économie (vert par défaut) - ![Menu "Personnalisation" via la commande /config](../assets/economie/config_custom.png) + ![Menu "Personnalisation" via la commande /config](./assets/economy/config_custom.png) ::hint{ type="success" } Lorsque vous personnalisez la devise, vous pouvez même utiliser les émojis personnalisés de votre serveur ! - ![Exemple de devise personnalisée](../assets/economie/panel_custom_currency.png) + ![Exemple de devise personnalisée](./assets/economy/panel_custom_currency.png) :: ::hint{ type="info" } @@ -300,11 +301,11 @@ Pour les serveurs [premium](/premium) <:icon_premium:1096140508625125417>, il es Pour créer une boutique depuis le [**Panel**](/dashboard/first/economy), cliquez sur le bouton **"Créer une boutique"** dans la section "Configuration des boutiques" : - ![Bouton de création de boutique depuis le panel](../assets/economie/panel_create_shop.png) + ![Bouton de création de boutique depuis le panel](./assets/economy/panel_create_shop.png) Une fenêtre s'ouvre pour configurer votre nouvelle boutique : - ![Menu de création de boutique](../assets/economie/panel_shops.png) + ![Menu de création de boutique](./assets/economy/panel_shops.png) **Paramètres de la boutique :** - **Nom** : Le nom de votre boutique (50 caractères maximum) @@ -319,9 +320,9 @@ Pour les serveurs [premium](/premium) <:icon_premium:1096140508625125417>, il es ::tab{ label="Via la commande /config" } Via la commande \, accédez au menu "Économie" puis "Boutique". Vous pourrez alors créer, modifier ou supprimer des boutiques. - ![Menu de sélection d'une boutique](../assets/economie/config_shops.png) + ![Menu de sélection d'une boutique](./assets/economy/config_shops.png) - ![Menu "Boutique" via la commande /config](../assets/economie/config_shop.png) + ![Menu "Boutique" via la commande /config](./assets/economy/config_shop.png) :: :: @@ -358,13 +359,13 @@ Pour ajouter des articles à votre boutique : 1. Cliquez sur le bouton **"Modifier"** de la boutique concernée 2. Cliquez sur **"Créer un article"** - ![Menu de création d'article](../assets/economie/panel_create_article.png) + ![Menu de création d'article](./assets/economy/panel_create_article.png) :: ::tab{ label="Via la commande /config" } Via la commande \, accédez au menu "Économie" > "Boutique" > "Créer / Modifier / Supprimer un article". - ![Menu de gestion des articles via la commande /config](../assets/economie/config_articles.png) + ![Menu de gestion des articles via la commande /config](./assets/economy/config_articles.png) :: :: @@ -384,7 +385,7 @@ Pour ajouter des articles à votre boutique : - La description de l'article - La durée du rôle *(dans le cas d'un rôle temporaire)* - ![Menu de vente de rôles, temporaire (à gauche) et classique (à droite)](../assets/economie/panel_article_roles.png) + ![Menu de vente de rôles, temporaire (à gauche) et classique (à droite)](./assets/economy/panel_article_roles.png) ::hint{ type="warning" } Le rôle sélectionné doit avoir été créé au préalable sur votre serveur, et être accessible à DraftBot (donc ne pas être situé plus haut que le rôle le plus élevé de DraftBot). @@ -403,7 +404,7 @@ Pour ajouter des articles à votre boutique : - La quantité d'expérience à attribuer - La description de l'article - ![Menu de vente de points d'expérience](../assets/economie/panel_article_xp.png) + ![Menu de vente de points d'expérience](./assets/economy/panel_article_xp.png) ::hint{ type="warning" } Le système de niveaux doit être **activé** sur votre serveur pour utiliser ce type d'article. Si vous le désactivez, un avertissement s'affichera lors de l'achat. @@ -424,7 +425,7 @@ Pour ajouter des articles à votre boutique : - Le nombre d'objets à attribuer par achat - La description de l'article - ![Menu de vente d'objet d'inventaire](../assets/economie/panel_article_item.png) + ![Menu de vente d'objet d'inventaire](./assets/economy/panel_article_item.png) ::hint{ type="info" } Si vous n'utilisez pas encore l'inventaire, découvrez la fonctionnalité depuis la [documentation de l'inventaire](/docs/engagement/inventaire). @@ -441,7 +442,7 @@ Pour ajouter des articles à votre boutique : - Le nom de l'article - La description de l'article - ![Menu de vente d'article personnalisé](../assets/economie/panel_article_custom.png) + ![Menu de vente d'article personnalisé](./assets/economy/panel_article_custom.png) ::hint{ type="success" } **Comment ça fonctionne ?** Lorsqu'un membre achète cet article, **vous recevez une notification par message privé de DraftBot** avec les informations du membre. Vous pouvez alors lui remettre la récompense "en main propre" comme vous le souhaitez. @@ -461,7 +462,7 @@ Un article est par défaut en quantité illimitée. En déroulant le menu "Avanc Le stock est géré article par article. Vous pouvez avoir certains articles en stock illimité et d'autres en quantité limitée dans la même boutique. :: -![Option de configuration du stock](../assets/economie/panel_stock.png) +![Option de configuration du stock](./assets/economy/panel_stock.png) ## Gérer l'argent des membres @@ -489,7 +490,7 @@ En tant qu'administrateur, vous disposez de plusieurs commandes pour gérer l'ar Un message de progression s'affiche et se met à jour automatiquement. Vous pouvez annuler l'opération à tout moment via le bouton prévu à cet effet. :: -![Utilisation de la commande /dropargent](../assets/economie/bot_dropmoney.png) +![Utilisation de la commande /dropargent](./assets/economy/bot_dropmoney.png) ## Migration depuis UnbelievaBoat @@ -497,7 +498,7 @@ Si vous utilisiez déjà un système d'économie via UnbelievaBoat, vous avez la La fonctionnalité est accessible depuis la commande \ dans l'onglet "Économie". -![Bouton d'importation de l'économie](../assets/economie/config_import.png) +![Bouton d'importation de l'économie](./assets/economy/config_import.png) Après avoir cliqué sur **Importer UnbelievaBoat**, et confirmé que vous souhaitez procéder à l'importation, DraftBot récupérera automatiquement toutes les informations d'argent des membres. L'argent importé **remplace** l'argent actuel des membres dans DraftBot. diff --git a/docs/3.engagement/2.inventaire.md b/docs/fr/3.engagement/2.inventory.md similarity index 95% rename from docs/3.engagement/2.inventaire.md rename to docs/fr/3.engagement/2.inventory.md index 6ca3e1aa5..2077fc3d3 100644 --- a/docs/3.engagement/2.inventaire.md +++ b/docs/fr/3.engagement/2.inventory.md @@ -1,4 +1,5 @@ --- +slug: /engagement/inventaire title: Objets & inventaires description: Obtenez des objets via différents systèmes de DraftBot et affichez-les aux autres membres ! navigation.icon: 'twemoji:magnifying-glass-tilted-right' @@ -58,7 +59,7 @@ Plusieurs options s'offrent à vous : Les membres du serveur peuvent accéder à tout moment à **leur propre inventaire** en utilisant la commande \. Si le membre possède des objets, ils seront donc affichés, de même qu'il aura la possibilité de voir l'argent en sa possession grâce au système d'[économie](/docs/engagement/economie) de DraftBot. -![Aperçu de l'inventaire d'un membre](../assets/inventaire/bot_inventory.png) +![Aperçu de l'inventaire d'un membre](./assets/inventory/bot_inventory.png) ::hint{ type="info" } Vous pouvez voir l'inventaire d'un autre membre en le **mentionnant** ou en utilisant son **pseudonyme** après la commande. Par exemple : `/inventaire membre:@Pseudo`. @@ -84,7 +85,7 @@ Les commandes \ et \ ont pour but de générer un messa - \ ➜ Génère un nouvel objet pour lancer le drop. - \ ➜ Offre un objet qui provient de l'inventaire d'un membre. -![Aperçu de la commande /objet drop](../assets/inventaire/bot_dropitem.png) +![Aperçu de la commande /objet drop](./assets/inventory/bot_dropitem.png) ::hint{ type="info" } Dans les deux cas, vous avez la possibilité de choisir le salon où le drop sera lancé et sa durée. @@ -94,4 +95,4 @@ Les commandes \ et \ ont pour but de générer un messa Vous pouvez consulter les objets existants sur le serveur avec la commande \. Un sélecteur en bas du message vous permet de sélectionner un objet et de voir qui le possède en quelle quantité. -![Aperçu de la commande /topitems](../assets/inventaire/bot_topitems.png) +![Aperçu de la commande /topitems](./assets/inventory/bot_topitems.png) diff --git a/docs/3.engagement/3.anniversaires.md b/docs/fr/3.engagement/3.birthdays.md similarity index 89% rename from docs/3.engagement/3.anniversaires.md rename to docs/fr/3.engagement/3.birthdays.md index 741e2df1c..57ccd1fb2 100644 --- a/docs/3.engagement/3.anniversaires.md +++ b/docs/fr/3.engagement/3.birthdays.md @@ -1,4 +1,5 @@ --- +slug: /engagement/anniversaires title: Anniversaires description: Avec DraftBot, vous pouvez renseigner votre date d'anniversaire et offrir des récompenses aux membres de votre serveur qui fêtent leur anniversaire ! navigation.icon: 'twemoji:birthday-cake' @@ -10,13 +11,13 @@ updatedAt: '2025-04-07' ## Présentation Le système d'anniversaire permet aux membres de partager leur anniversaire simplement. Grâce à cela, vous pouvez leur offrir une attention particulière pour célébrer cette journée spéciale. -![Exemple d'annonce pour un anniversaire](../assets/anniversaires/bot_announce.png) +![Exemple d'annonce pour un anniversaire](./assets/birthdays/bot_announce.png) ## Votre anniversaire Vous pouvez définir votre anniversaire via [le panel de **DraftBot**](/dashboard/user/profil) ou avec la commande \. Il vous suffira de mettre dans l'argument `Date` votre date d'anniversaire. -![Exemple de commande d'anniversaire](../assets/anniversaires/bot_birthday_set.png) +![Exemple de commande d'anniversaire](./assets/birthdays/bot_birthday_set.png) Vous pouvez également voir la liste des dix prochains anniversaires définis sur le serveur grâce à la commande \. @@ -33,7 +34,7 @@ Vous pouvez également voir la liste des dix prochains anniversaires définis su Grâce aux commandes \ et \, vous pouvez activer ou désactiver la visibilité de votre anniversaire, **serveur par serveur**. Vous pouvez aussi modifier ces paramètres depuis le panel, dans la rubrique [profil](/dashboard/user/profil). -![Message de confirmation de la commande /anniversaire activer](../assets/anniversaires/bot_birthday_confirm.png) +![Message de confirmation de la commande /anniversaire activer](./assets/birthdays/bot_birthday_confirm.png) ::hint{ type="info" } Vous pouvez désactiver la visibilité de votre anniversaire sur tous les serveurs avec la commande \. @@ -58,11 +59,11 @@ Une fois votre mode sélectionné, vous pouvez commencer à configurer le systè ::tab{ label="Depuis le panel" } [⫸ Accéder au panel de **DraftBot**](/dashboard/first/birthdays) - ![Vous pouvez choisir le mode en haut de la page anniversaire du panel](../assets/anniversaires/panel_mode.png) + ![Vous pouvez choisir le mode en haut de la page anniversaire du panel](./assets/birthdays/panel_mode.png) :: ::tab{ label="Via la commande /config" } - ![Vous pouvez choisir le mode en appuyant sur le bouton "mode des dates d'anniversaire" puis choisir le mode](../assets/anniversaires/config_mode.png) + ![Vous pouvez choisir le mode en appuyant sur le bouton "mode des dates d'anniversaire" puis choisir le mode](./assets/birthdays/config_mode.png) :: :: @@ -81,11 +82,11 @@ Vous devez paramétrer les informations suivantes : ::tab{ label="Depuis le panel" } [⫸ Accéder au panel de **DraftBot**](/dashboard/first/birthdays) - ![Configurez l'ensemble de ces éléments sur le panel en activant le message d'annonce](../assets/anniversaires/panel_announces.png) + ![Configurez l'ensemble de ces éléments sur le panel en activant le message d'annonce](./assets/birthdays/panel_announces.png) :: ::tab{ label="Via la commande /config" } - ![Configurez l'ensemble de ces éléments en appuyant sur le bouton annonce une fois la commande config lancée](../assets/anniversaires/config_announces.png) + ![Configurez l'ensemble de ces éléments en appuyant sur le bouton annonce une fois la commande config lancée](./assets/birthdays/config_announces.png) :: :: @@ -111,11 +112,11 @@ Vous pouvez choisir de donner un rôle, le temps de la journée, au membre qui f ::tab{ label="Depuis le panel" } [⫸ Accéder au panel de **DraftBot**](/dashboard/first/birthdays) - ![Paramétrez ici le rôle à donner aux membres qui fêtent leur anniversaire](../assets/anniversaires/panel_birthday_role.png) + ![Paramétrez ici le rôle à donner aux membres qui fêtent leur anniversaire](./assets/birthdays/panel_birthday_role.png) :: ::tab{ label="Via la commande /config" } - ![Paramétrez ici le rôle à donner aux membres qui fêtent leur anniversaire en appuyant sur le bouton rôle une fois la commande config lancée](../assets/anniversaires/config_birthday_role.png) + ![Paramétrez ici le rôle à donner aux membres qui fêtent leur anniversaire en appuyant sur le bouton rôle une fois la commande config lancée](./assets/birthdays/config_birthday_role.png) :: :: @@ -175,11 +176,11 @@ Vous pouvez choisir un cadeau à donner aux membres qui fêtent leur anniversair ::tab{ label="Depuis le Panel" } [⫸ Accéder au panel de **DraftBot**](/dashboard/first/birthdays) - ![Créez vos cadeaux en cliquant sur "Créer un cadeau"](../assets/anniversaires/panel_gifts.png) + ![Créez vos cadeaux en cliquant sur "Créer un cadeau"](./assets/birthdays/panel_gifts.png) :: ::tab{ label="Via la commande /config" } - ![Créez vos cadeaux en cliquant sur le bouton "Cadeaux" une fois la commande config lancée](../assets/anniversaires/config_gifts.png) + ![Créez vos cadeaux en cliquant sur le bouton "Cadeaux" une fois la commande config lancée](./assets/birthdays/config_gifts.png) :: :: @@ -196,11 +197,11 @@ Vous devez, dans la section `Annonces personnalisées`, choisir le rôle ou le m ::tab{ label="Depuis le panel" } [⫸ Accéder au panel de **DraftBot**](/dashboard/first/birthdays) - ![Configurez vos annonces personnalisées en bas de la page d'anniversaire](../assets/anniversaires/panel_targets_announces.png) + ![Configurez vos annonces personnalisées en bas de la page d'anniversaire](./assets/birthdays/panel_targets_announces.png) :: ::tab{ label="Via la commande /config" } - ![Configurez vos annonces personnalisées en appuyant sur le bouton annonces personnalisées une fois la commande config lancée](../assets/anniversaires/config_targets_announces.png) + ![Configurez vos annonces personnalisées en appuyant sur le bouton annonces personnalisées une fois la commande config lancée](./assets/birthdays/config_targets_announces.png) :: :: diff --git a/docs/3.engagement/4.reactions-de-mots.md b/docs/fr/3.engagement/4.word-reactions.md similarity index 92% rename from docs/3.engagement/4.reactions-de-mots.md rename to docs/fr/3.engagement/4.word-reactions.md index d6eeaa818..bd41eb868 100644 --- a/docs/3.engagement/4.reactions-de-mots.md +++ b/docs/fr/3.engagement/4.word-reactions.md @@ -1,4 +1,5 @@ --- +slug: /engagement/reactions-de-mots title: Réactions de mots description: Faites réagir DraftBot à vos messages pour ne plus jamais vous sentir seul. navigation.icon: 'twemoji:eyes' @@ -10,7 +11,7 @@ updatedAt: '2025-03-23' Le système de réactions de mots permet à **DraftBot** de réagir à des messages qui commencent par un mot prédéfini avec une ou plusieurs réactions définies. Un aperçu du message est disponible ci-dessous : -![Aperçu du système](../assets/reactions-de-mots/bot_example.png) +![Aperçu du système](./assets/word-reactions/bot_example.png) ::hint{ type="info" } Le bot ne réagira que lorsque le mot est en **début de phrase**. @@ -22,7 +23,7 @@ Le système de réactions de mots permet à **DraftBot** de réagir à des messa ::tab{ label="Depuis le panel" } [⫸ Accéder au panel de **DraftBot**](/dashboard/first/words-reactions) - ![Aperçu du panel](../assets/reactions-de-mots/panel_view.png) + ![Aperçu du panel](./assets/word-reactions/panel_view.png) ### Activer / Désactiver le système @@ -46,7 +47,7 @@ Le système de réactions de mots permet à **DraftBot** de réagir à des messa ### Restreindre les réactions - ![Restriction de rôle](../assets/reactions-de-mots/panel_roles_restrict.png) + ![Restriction de rôle](./assets/word-reactions/panel_roles_restrict.png) Vous avez la possibilité de déterminer les rôles et/ou salons pour lesquels DraftBot ne réagira pas. ::hint{ type="info" } @@ -68,7 +69,7 @@ Le système de réactions de mots permet à **DraftBot** de réagir à des messa ### Activer le système de réactions de mots - ![Configuration via /config](../assets/reactions-de-mots/config_view.png) + ![Configuration via /config](./assets/word-reactions/config_view.png) Pour activer le système de réactions de mots, il faudra aller dans le système "👀 Réactions de mots" puis cliquer sur "Activer le système". @@ -80,7 +81,7 @@ Le système de réactions de mots permet à **DraftBot** de réagir à des messa Pour ajouter une réaction à un mot, il vous suffit de cliquer sur le bouton "Ajouter". Vous obtiendrez alors le message ci-dessous : - ![Aperçu du message](../assets/reactions-de-mots/config_creation_question.png) + ![Aperçu du message](./assets/word-reactions/config_creation_question.png) ::hint{ type="warning" } Il n'est pas possible d'ajouter un émoji provenant d'un autre serveur. diff --git a/docs/3.engagement/_dir.yml b/docs/fr/3.engagement/_dir.yml similarity index 87% rename from docs/3.engagement/_dir.yml rename to docs/fr/3.engagement/_dir.yml index b55d90e02..69d9489de 100644 --- a/docs/3.engagement/_dir.yml +++ b/docs/fr/3.engagement/_dir.yml @@ -1,3 +1,4 @@ +slug: /engagement/_dir title: Engagement description: Les systèmes qui récompensent la participation de vos membres sur la durée. navigation.icon: 'twemoji:chart-increasing' diff --git a/docs/fr/3.engagement/assets/birthdays/bot_announce.png b/docs/fr/3.engagement/assets/birthdays/bot_announce.png new file mode 100644 index 000000000..5c10af567 Binary files /dev/null and b/docs/fr/3.engagement/assets/birthdays/bot_announce.png differ diff --git a/docs/fr/3.engagement/assets/birthdays/bot_birthday_confirm.png b/docs/fr/3.engagement/assets/birthdays/bot_birthday_confirm.png new file mode 100644 index 000000000..36f2cdf6d Binary files /dev/null and b/docs/fr/3.engagement/assets/birthdays/bot_birthday_confirm.png differ diff --git a/docs/fr/3.engagement/assets/birthdays/bot_birthday_set.png b/docs/fr/3.engagement/assets/birthdays/bot_birthday_set.png new file mode 100644 index 000000000..81339ef4f Binary files /dev/null and b/docs/fr/3.engagement/assets/birthdays/bot_birthday_set.png differ diff --git a/docs/fr/3.engagement/assets/birthdays/config_announces.png b/docs/fr/3.engagement/assets/birthdays/config_announces.png new file mode 100644 index 000000000..c1313db39 Binary files /dev/null and b/docs/fr/3.engagement/assets/birthdays/config_announces.png differ diff --git a/docs/fr/3.engagement/assets/birthdays/config_birthday_role.png b/docs/fr/3.engagement/assets/birthdays/config_birthday_role.png new file mode 100644 index 000000000..99283c7bd Binary files /dev/null and b/docs/fr/3.engagement/assets/birthdays/config_birthday_role.png differ diff --git a/docs/fr/3.engagement/assets/birthdays/config_gifts.png b/docs/fr/3.engagement/assets/birthdays/config_gifts.png new file mode 100644 index 000000000..889e373de Binary files /dev/null and b/docs/fr/3.engagement/assets/birthdays/config_gifts.png differ diff --git a/docs/fr/3.engagement/assets/birthdays/config_mode.png b/docs/fr/3.engagement/assets/birthdays/config_mode.png new file mode 100644 index 000000000..7b0869cc4 Binary files /dev/null and b/docs/fr/3.engagement/assets/birthdays/config_mode.png differ diff --git a/docs/fr/3.engagement/assets/birthdays/config_targets_announces.png b/docs/fr/3.engagement/assets/birthdays/config_targets_announces.png new file mode 100644 index 000000000..1dd3c2913 Binary files /dev/null and b/docs/fr/3.engagement/assets/birthdays/config_targets_announces.png differ diff --git a/docs/fr/3.engagement/assets/birthdays/panel_announces.png b/docs/fr/3.engagement/assets/birthdays/panel_announces.png new file mode 100644 index 000000000..0655629f5 Binary files /dev/null and b/docs/fr/3.engagement/assets/birthdays/panel_announces.png differ diff --git a/docs/fr/3.engagement/assets/birthdays/panel_birthday_role.png b/docs/fr/3.engagement/assets/birthdays/panel_birthday_role.png new file mode 100644 index 000000000..dd0120027 Binary files /dev/null and b/docs/fr/3.engagement/assets/birthdays/panel_birthday_role.png differ diff --git a/docs/fr/3.engagement/assets/birthdays/panel_gifts.png b/docs/fr/3.engagement/assets/birthdays/panel_gifts.png new file mode 100644 index 000000000..925ff47f0 Binary files /dev/null and b/docs/fr/3.engagement/assets/birthdays/panel_gifts.png differ diff --git a/docs/fr/3.engagement/assets/birthdays/panel_mode.png b/docs/fr/3.engagement/assets/birthdays/panel_mode.png new file mode 100644 index 000000000..ace1d3912 Binary files /dev/null and b/docs/fr/3.engagement/assets/birthdays/panel_mode.png differ diff --git a/docs/fr/3.engagement/assets/birthdays/panel_targets_announces.png b/docs/fr/3.engagement/assets/birthdays/panel_targets_announces.png new file mode 100644 index 000000000..72349edb6 Binary files /dev/null and b/docs/fr/3.engagement/assets/birthdays/panel_targets_announces.png differ diff --git a/docs/fr/3.engagement/assets/economy/bot_classement_discord_auto.png b/docs/fr/3.engagement/assets/economy/bot_classement_discord_auto.png new file mode 100644 index 000000000..393535fc6 Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/bot_classement_discord_auto.png differ diff --git a/docs/fr/3.engagement/assets/economy/bot_dropmoney.png b/docs/fr/3.engagement/assets/economy/bot_dropmoney.png new file mode 100644 index 000000000..009d5b883 Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/bot_dropmoney.png differ diff --git a/docs/fr/3.engagement/assets/economy/bot_money.png b/docs/fr/3.engagement/assets/economy/bot_money.png new file mode 100644 index 000000000..c70400b37 Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/bot_money.png differ diff --git a/docs/fr/3.engagement/assets/economy/bot_shops.png b/docs/fr/3.engagement/assets/economy/bot_shops.png new file mode 100644 index 000000000..16c92352b Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/bot_shops.png differ diff --git a/docs/fr/3.engagement/assets/economy/bot_topargent.png b/docs/fr/3.engagement/assets/economy/bot_topargent.png new file mode 100644 index 000000000..bd8505803 Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/bot_topargent.png differ diff --git a/docs/fr/3.engagement/assets/economy/config_articles.png b/docs/fr/3.engagement/assets/economy/config_articles.png new file mode 100644 index 000000000..4a9a84a15 Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/config_articles.png differ diff --git a/docs/fr/3.engagement/assets/economy/config_custom.png b/docs/fr/3.engagement/assets/economy/config_custom.png new file mode 100644 index 000000000..b087989d2 Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/config_custom.png differ diff --git a/docs/fr/3.engagement/assets/economy/config_home.png b/docs/fr/3.engagement/assets/economy/config_home.png new file mode 100644 index 000000000..5946c5750 Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/config_home.png differ diff --git a/docs/fr/3.engagement/assets/economy/config_import.png b/docs/fr/3.engagement/assets/economy/config_import.png new file mode 100644 index 000000000..a3d06bc77 Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/config_import.png differ diff --git a/docs/fr/3.engagement/assets/economy/config_limits_boosts.png b/docs/fr/3.engagement/assets/economy/config_limits_boosts.png new file mode 100644 index 000000000..9ba57d95e Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/config_limits_boosts.png differ diff --git a/docs/fr/3.engagement/assets/economy/config_money.png b/docs/fr/3.engagement/assets/economy/config_money.png new file mode 100644 index 000000000..948e3f1bb Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/config_money.png differ diff --git a/docs/fr/3.engagement/assets/economy/config_shop.png b/docs/fr/3.engagement/assets/economy/config_shop.png new file mode 100644 index 000000000..e9d2eacfa Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/config_shop.png differ diff --git a/docs/fr/3.engagement/assets/economy/config_shops.png b/docs/fr/3.engagement/assets/economy/config_shops.png new file mode 100644 index 000000000..d85ec752b Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/config_shops.png differ diff --git a/docs/fr/3.engagement/assets/economy/config_status.png b/docs/fr/3.engagement/assets/economy/config_status.png new file mode 100644 index 000000000..59ef740fe Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/config_status.png differ diff --git a/docs/fr/3.engagement/assets/economy/panel_all.png b/docs/fr/3.engagement/assets/economy/panel_all.png new file mode 100644 index 000000000..f513dd226 Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/panel_all.png differ diff --git a/docs/fr/3.engagement/assets/economy/panel_article_custom.png b/docs/fr/3.engagement/assets/economy/panel_article_custom.png new file mode 100644 index 000000000..f40650599 Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/panel_article_custom.png differ diff --git a/docs/fr/3.engagement/assets/economy/panel_article_item.png b/docs/fr/3.engagement/assets/economy/panel_article_item.png new file mode 100644 index 000000000..fb616e29f Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/panel_article_item.png differ diff --git a/docs/fr/3.engagement/assets/economy/panel_article_roles.png b/docs/fr/3.engagement/assets/economy/panel_article_roles.png new file mode 100644 index 000000000..944715587 Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/panel_article_roles.png differ diff --git a/docs/fr/3.engagement/assets/economy/panel_article_xp.png b/docs/fr/3.engagement/assets/economy/panel_article_xp.png new file mode 100644 index 000000000..07d21f521 Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/panel_article_xp.png differ diff --git a/docs/fr/3.engagement/assets/economy/panel_classement_web.png b/docs/fr/3.engagement/assets/economy/panel_classement_web.png new file mode 100644 index 000000000..3d50abbf2 Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/panel_classement_web.png differ diff --git a/docs/fr/3.engagement/assets/economy/panel_create_article.png b/docs/fr/3.engagement/assets/economy/panel_create_article.png new file mode 100644 index 000000000..47e4331fa Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/panel_create_article.png differ diff --git a/docs/fr/3.engagement/assets/economy/panel_create_shop.png b/docs/fr/3.engagement/assets/economy/panel_create_shop.png new file mode 100644 index 000000000..d6d79786c Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/panel_create_shop.png differ diff --git a/docs/fr/3.engagement/assets/economy/panel_custom_currency.png b/docs/fr/3.engagement/assets/economy/panel_custom_currency.png new file mode 100644 index 000000000..22436844f Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/panel_custom_currency.png differ diff --git a/docs/fr/3.engagement/assets/economy/panel_economy_enable.png b/docs/fr/3.engagement/assets/economy/panel_economy_enable.png new file mode 100644 index 000000000..7ce51abe8 Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/panel_economy_enable.png differ diff --git a/docs/fr/3.engagement/assets/economy/panel_shops.png b/docs/fr/3.engagement/assets/economy/panel_shops.png new file mode 100644 index 000000000..72c8d5f53 Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/panel_shops.png differ diff --git a/docs/fr/3.engagement/assets/economy/panel_stock.png b/docs/fr/3.engagement/assets/economy/panel_stock.png new file mode 100644 index 000000000..c4b985e37 Binary files /dev/null and b/docs/fr/3.engagement/assets/economy/panel_stock.png differ diff --git a/docs/fr/3.engagement/assets/inventory/bot_dropitem.png b/docs/fr/3.engagement/assets/inventory/bot_dropitem.png new file mode 100644 index 000000000..d9c559e46 Binary files /dev/null and b/docs/fr/3.engagement/assets/inventory/bot_dropitem.png differ diff --git a/docs/fr/3.engagement/assets/inventory/bot_inventory.png b/docs/fr/3.engagement/assets/inventory/bot_inventory.png new file mode 100644 index 000000000..c9d841216 Binary files /dev/null and b/docs/fr/3.engagement/assets/inventory/bot_inventory.png differ diff --git a/docs/fr/3.engagement/assets/inventory/bot_topitems.png b/docs/fr/3.engagement/assets/inventory/bot_topitems.png new file mode 100644 index 000000000..9951fa93b Binary files /dev/null and b/docs/fr/3.engagement/assets/inventory/bot_topitems.png differ diff --git a/docs/fr/3.engagement/assets/levels/bot_experience_table.png b/docs/fr/3.engagement/assets/levels/bot_experience_table.png new file mode 100644 index 000000000..9938e9bf0 Binary files /dev/null and b/docs/fr/3.engagement/assets/levels/bot_experience_table.png differ diff --git a/docs/fr/3.engagement/assets/levels/bot_leaderboard_auto.png b/docs/fr/3.engagement/assets/levels/bot_leaderboard_auto.png new file mode 100644 index 000000000..9d28fcb08 Binary files /dev/null and b/docs/fr/3.engagement/assets/levels/bot_leaderboard_auto.png differ diff --git a/docs/fr/3.engagement/assets/levels/bot_level_card.png b/docs/fr/3.engagement/assets/levels/bot_level_card.png new file mode 100644 index 000000000..26c9f59fd Binary files /dev/null and b/docs/fr/3.engagement/assets/levels/bot_level_card.png differ diff --git a/docs/fr/3.engagement/assets/levels/bot_new_level_notif.png b/docs/fr/3.engagement/assets/levels/bot_new_level_notif.png new file mode 100644 index 000000000..94cc0cb14 Binary files /dev/null and b/docs/fr/3.engagement/assets/levels/bot_new_level_notif.png differ diff --git a/docs/fr/3.engagement/assets/levels/bot_rewards.png b/docs/fr/3.engagement/assets/levels/bot_rewards.png new file mode 100644 index 000000000..ab90fc19a Binary files /dev/null and b/docs/fr/3.engagement/assets/levels/bot_rewards.png differ diff --git a/docs/fr/3.engagement/assets/levels/bot_toplevel.png b/docs/fr/3.engagement/assets/levels/bot_toplevel.png new file mode 100644 index 000000000..58373d6a7 Binary files /dev/null and b/docs/fr/3.engagement/assets/levels/bot_toplevel.png differ diff --git a/docs/fr/3.engagement/assets/levels/config_customization.png b/docs/fr/3.engagement/assets/levels/config_customization.png new file mode 100644 index 000000000..cbd13fef1 Binary files /dev/null and b/docs/fr/3.engagement/assets/levels/config_customization.png differ diff --git a/docs/fr/3.engagement/assets/levels/config_experience.png b/docs/fr/3.engagement/assets/levels/config_experience.png new file mode 100644 index 000000000..3cd428d0f Binary files /dev/null and b/docs/fr/3.engagement/assets/levels/config_experience.png differ diff --git a/docs/fr/3.engagement/assets/levels/config_home.png b/docs/fr/3.engagement/assets/levels/config_home.png new file mode 100644 index 000000000..b0e30ddd1 Binary files /dev/null and b/docs/fr/3.engagement/assets/levels/config_home.png differ diff --git a/docs/fr/3.engagement/assets/levels/config_import.png b/docs/fr/3.engagement/assets/levels/config_import.png new file mode 100644 index 000000000..ea13df121 Binary files /dev/null and b/docs/fr/3.engagement/assets/levels/config_import.png differ diff --git a/docs/fr/3.engagement/assets/levels/config_limits_boosts.png b/docs/fr/3.engagement/assets/levels/config_limits_boosts.png new file mode 100644 index 000000000..9b291f688 Binary files /dev/null and b/docs/fr/3.engagement/assets/levels/config_limits_boosts.png differ diff --git a/docs/fr/3.engagement/assets/levels/config_notifs.png b/docs/fr/3.engagement/assets/levels/config_notifs.png new file mode 100644 index 000000000..a46863365 Binary files /dev/null and b/docs/fr/3.engagement/assets/levels/config_notifs.png differ diff --git a/docs/fr/3.engagement/assets/levels/config_rewards.png b/docs/fr/3.engagement/assets/levels/config_rewards.png new file mode 100644 index 000000000..8943e0a86 Binary files /dev/null and b/docs/fr/3.engagement/assets/levels/config_rewards.png differ diff --git a/docs/fr/3.engagement/assets/levels/config_status.png b/docs/fr/3.engagement/assets/levels/config_status.png new file mode 100644 index 000000000..6edbe868e Binary files /dev/null and b/docs/fr/3.engagement/assets/levels/config_status.png differ diff --git a/docs/fr/3.engagement/assets/levels/panel_create_reward.png b/docs/fr/3.engagement/assets/levels/panel_create_reward.png new file mode 100644 index 000000000..344fb2eea Binary files /dev/null and b/docs/fr/3.engagement/assets/levels/panel_create_reward.png differ diff --git a/docs/fr/3.engagement/assets/levels/panel_enable.png b/docs/fr/3.engagement/assets/levels/panel_enable.png new file mode 100644 index 000000000..7ce51abe8 Binary files /dev/null and b/docs/fr/3.engagement/assets/levels/panel_enable.png differ diff --git a/docs/fr/3.engagement/assets/levels/panel_home.png b/docs/fr/3.engagement/assets/levels/panel_home.png new file mode 100644 index 000000000..6fa99a999 Binary files /dev/null and b/docs/fr/3.engagement/assets/levels/panel_home.png differ diff --git a/docs/fr/3.engagement/assets/levels/panel_leaderboard.png b/docs/fr/3.engagement/assets/levels/panel_leaderboard.png new file mode 100644 index 000000000..74d4a0ee0 Binary files /dev/null and b/docs/fr/3.engagement/assets/levels/panel_leaderboard.png differ diff --git a/docs/fr/3.engagement/assets/levels/panel_rewards.png b/docs/fr/3.engagement/assets/levels/panel_rewards.png new file mode 100644 index 000000000..70da0fb69 Binary files /dev/null and b/docs/fr/3.engagement/assets/levels/panel_rewards.png differ diff --git a/docs/fr/3.engagement/assets/levels/panel_rewards_notifs.png b/docs/fr/3.engagement/assets/levels/panel_rewards_notifs.png new file mode 100644 index 000000000..99cd31e76 Binary files /dev/null and b/docs/fr/3.engagement/assets/levels/panel_rewards_notifs.png differ diff --git a/docs/fr/3.engagement/assets/word-reactions/bot_example.png b/docs/fr/3.engagement/assets/word-reactions/bot_example.png new file mode 100644 index 000000000..7ab3106b4 Binary files /dev/null and b/docs/fr/3.engagement/assets/word-reactions/bot_example.png differ diff --git a/docs/fr/3.engagement/assets/word-reactions/config_creation_question.png b/docs/fr/3.engagement/assets/word-reactions/config_creation_question.png new file mode 100644 index 000000000..7f81a2605 Binary files /dev/null and b/docs/fr/3.engagement/assets/word-reactions/config_creation_question.png differ diff --git a/docs/fr/3.engagement/assets/word-reactions/config_view.png b/docs/fr/3.engagement/assets/word-reactions/config_view.png new file mode 100644 index 000000000..aaa4c12ae Binary files /dev/null and b/docs/fr/3.engagement/assets/word-reactions/config_view.png differ diff --git a/docs/fr/3.engagement/assets/word-reactions/panel_roles_restrict.png b/docs/fr/3.engagement/assets/word-reactions/panel_roles_restrict.png new file mode 100644 index 000000000..df39f87d4 Binary files /dev/null and b/docs/fr/3.engagement/assets/word-reactions/panel_roles_restrict.png differ diff --git a/docs/fr/3.engagement/assets/word-reactions/panel_view.png b/docs/fr/3.engagement/assets/word-reactions/panel_view.png new file mode 100644 index 000000000..e5ed72f4b Binary files /dev/null and b/docs/fr/3.engagement/assets/word-reactions/panel_view.png differ diff --git a/docs/4.jeux-et-evenements/0.giveaways.md b/docs/fr/4.games-and-events/0.giveaways.md similarity index 88% rename from docs/4.jeux-et-evenements/0.giveaways.md rename to docs/fr/4.games-and-events/0.giveaways.md index 5510e365e..72c8bc265 100644 --- a/docs/4.jeux-et-evenements/0.giveaways.md +++ b/docs/fr/4.games-and-events/0.giveaways.md @@ -1,4 +1,5 @@ --- +slug: /jeux-et-evenements/giveaways title: Giveaways description: Organisez des giveaways pour faire gagner de superbes récompenses à vos membres ! navigation.icon: 'twemoji:party-popper' @@ -11,7 +12,7 @@ updatedAt: '2026-01-18' La fonctionnalité de giveaways vous permet d'organiser des tirages au sort et d'offrir des récompenses aux membres de votre serveur qui y participent. -![Exemple de giveaway avec une récompense personnalisée](../assets/giveaways/preview_giveaway.png) +![Exemple de giveaway avec une récompense personnalisée](./assets/giveaways/preview_giveaway.png) Pour chaque giveaway, vous pourrez offrir l'une de ces récompenses : - De l'expérience dans le système de [niveaux](/docs/engagement/niveaux). @@ -26,7 +27,7 @@ Pour chaque giveaway, vous pourrez offrir l'une de ces récompenses : Vous pouvez participer à un giveaway en cours en cliquant sur le bouton "**Participer**" en dessous des détails de celui-ci. -![Exemple de giveaway non terminé](../assets/giveaways/simple_giveaway.png) +![Exemple de giveaway non terminé](./assets/giveaways/simple_giveaway.png) Votre participation est alors prise en compte pour le tirage au sort à la fin du giveaway. @@ -42,7 +43,7 @@ Si vous avez décidé de rejoindre un giveaway, mais que vous ne souhaitez plus Une confirmation est alors demandée, cliquez sur le bouton "**Se désinscrire**" pour confirmer. -![Demande de confirmation de désinscription](../assets/giveaways/confirm_desinscription.png) +![Demande de confirmation de désinscription](./assets/giveaways/confirm_desinscription.png) ::hint{ type="warning" } Si une condition de collecte (rôle, argent ou objet) est définie sur le giveaway et que vous décidez de vous désinscrire, l'élément collecté ne vous sera pas restitué. @@ -52,7 +53,7 @@ Une confirmation est alors demandée, cliquez sur le bouton "**Se désinscrire** Si le créateur du giveaway l'a autorisé, vous pouvez voir la liste des participants en cliquant sur le bouton "**Participants**" du giveaway. -![Interface de visualisation des participants d'un giveaway](../assets/giveaways/giveaway_participants_member.png) +![Interface de visualisation des participants d'un giveaway](./assets/giveaways/giveaway_participants_member.png) L'interface se découpe en pages suivant le nombre de participants. Vous pouvez alors cliquer sur les boutons "**Précédent**", "**Suivant**" ou choisir le numéro de page avec le bouton "**Page**". @@ -97,13 +98,13 @@ Vous pouvez créer un giveaway en utilisant la commande \, en Une fois la commande \ exécutée, la récompense du giveaway vous est demandée : -![Formulaire de saisie pour une récompense de rôle](../assets/giveaways/modal_reward_role.png) +![Formulaire de saisie pour une récompense de rôle](./assets/giveaways/modal_reward_role.png) ### Prévisualiser le giveaway Lorsque la récompense a été définie, une prévisualisation du giveaway vous est affichée. Elle vous permet de le configurer et de le modifier avant sa publication. -![Interface de prévisualisation et de configuration d'un giveaway](../assets/giveaways/giveaway_config.png) +![Interface de prévisualisation et de configuration d'un giveaway](./assets/giveaways/giveaway_config.png) ### Configurer les options @@ -131,7 +132,7 @@ Vous pouvez définir un titre qui est utilisé dans le message du giveaway ainsi Vous pouvez également définir une description pour décrire votre récompense aux participants. -![Giveaway avec un titre et une description personnalisée](../assets/giveaways/giveaway_description_title.png) +![Giveaway avec un titre et une description personnalisée](./assets/giveaways/giveaway_description_title.png) ### Durée @@ -175,7 +176,7 @@ Vous devez définir un salon textuel pour envoyer le giveaway. Vous avez le choi Vous pouvez sélectionner un salon existant à l'aide du sélecteur de salon. -![Sélection d'un salon existant](../assets/giveaways/exist_channel_choose.png) +![Sélection d'un salon existant](./assets/giveaways/exist_channel_choose.png) ::hint{ type="warning" } Le créateur du giveaway et <@DraftBot> doivent disposer des permissions **Envoyer des messages** et **Voir le salon**. <@DraftBot> doit également disposer de la permission **Intégrer des liens**. @@ -189,13 +190,13 @@ Vous pouvez sélectionner un salon existant à l'aide du sélecteur de salon. Vous pouvez demander à <@DraftBot> la création d'un salon dédié lors de la publication en cliquant sur le bouton "Nouveau salon dédié". Vous pouvez alors définir un nom personnalisé et sa catégorie. -![Création d'un salon lors de la publication du giveaway](../assets/giveaways/create_new_channel.png) +![Création d'un salon lors de la publication du giveaway](./assets/giveaways/create_new_channel.png) ### Organisateur L'organisateur permet de signaler aux participants quel membre offre la récompense. -![Giveaway avec un organisateur défini](../assets/giveaways/giveaway_with_host.png) +![Giveaway avec un organisateur défini](./assets/giveaways/giveaway_with_host.png) ::hint{ type="warning" } L'organisateur doit être présent sur le serveur au moment de la configuration pour être sélectionné. @@ -224,13 +225,13 @@ Vous pouvez définir une condition d'accès pour participer au giveaway : Vous pouvez ajouter une vignette ainsi qu'une image principale à votre giveaway pour l'égayer. -![Giveaway avec image et vignette (en haut à droite) configurées](../assets/giveaways/giveaway_image_thumbnail.png) +![Giveaway avec image et vignette (en haut à droite) configurées](./assets/giveaways/giveaway_image_thumbnail.png) ### Mentions Vous pouvez définir des rôles à notifier lors de la publication du giveaway. -![Giveaway avec deux rôles mentionnés](../assets/giveaways/giveaway_with_mentions.png) +![Giveaway avec deux rôles mentionnés](./assets/giveaways/giveaway_with_mentions.png) ::hint{ type="info" } - Vous pouvez définir jusqu'à **10** rôles mentionnés. @@ -245,17 +246,17 @@ Vous pouvez définir des rôles à notifier lors de la publication du giveaway. Vous pouvez configurer la couleur latérale de l'embed pour correspondre à la charte de votre serveur ou de la récompense. -![Giveaway avec une couleur personnalisée](../assets/giveaways/giveaway_custom_color.png) +![Giveaway avec une couleur personnalisée](./assets/giveaways/giveaway_custom_color.png) ### Bouton Participants Le bouton "**Participants**", activé par défaut, permet aux membres de [consulter la liste des participants](#voir-les-participants). -![Giveaway avec le bouton Participants activé](../assets/giveaways/simple_giveaway.png) +![Giveaway avec le bouton Participants activé](./assets/giveaways/simple_giveaway.png) Il est possible de retirer ce bouton. Les membres ne verront alors que le nombre total de participants. -![Giveaway sans bouton Participants](../assets/giveaways/giveaway_no_participants_button.png) +![Giveaway sans bouton Participants](./assets/giveaways/giveaway_no_participants_button.png) ::hint{ type="info" } Les administrateurs du serveur pourront toujours voir la liste des participants avec la commande \. @@ -285,7 +286,7 @@ Pour désigner un nouveau gagnant sur un giveaway terminé, vous pouvez utiliser Vous pouvez retirer un participant d'un giveaway avec la commande \ ou le bouton "**Participants**" (si activé), puis cliquez sur "**Retirer un participant**". -![Interface de gestion des participants pour les administrateurs](../assets/giveaways/giveaway_participants_admin.png) +![Interface de gestion des participants pour les administrateurs](./assets/giveaways/giveaway_participants_admin.png) ::hint{ type="info" } Le membre retiré ne reçoit **pas de notification**, mais il conserve la possibilité de s'**inscrire à nouveau** avant la fin du tirage. diff --git a/docs/4.jeux-et-evenements/1.calendrier-de-l-avent.md b/docs/fr/4.games-and-events/1.advent-calendar.md similarity index 98% rename from docs/4.jeux-et-evenements/1.calendrier-de-l-avent.md rename to docs/fr/4.games-and-events/1.advent-calendar.md index acf09fb83..e856af6d9 100644 --- a/docs/4.jeux-et-evenements/1.calendrier-de-l-avent.md +++ b/docs/fr/4.games-and-events/1.advent-calendar.md @@ -1,4 +1,5 @@ --- +slug: /jeux-et-evenements/calendrier-de-l-avent title: Calendrier de l'Avent description: Offrez une expérience festive unique à vos membres avec le calendrier de l'Avent de DraftBot ! Créez des surprises quotidiennes personnalisées et récompensez les membres les plus réguliers grâce au système d'ouvertures consécutives. navigation.icon: 'twemoji:christmas-tree' @@ -15,7 +16,7 @@ updatedAt: '2025-11-23' Pour ouvrir votre case du jour, utilisez la commande \ pendant le mois de décembre. -![Exemple du calendrier](../assets/calendrier-de-l-avent/bot_calendar.png) +![Exemple du calendrier](./assets/advent-calendar/bot_calendar.png) ::hint{ type="success" } Chaque membre peut ouvrir **une seule case par jour**, correspondant à la date actuelle. Les cases ouvertes sont laissées ouvertes, tandis que celles manquées sont marquées d'une croix. diff --git a/docs/4.jeux-et-evenements/2.route-infini.md b/docs/fr/4.games-and-events/2.infinite-road.md similarity index 94% rename from docs/4.jeux-et-evenements/2.route-infini.md rename to docs/fr/4.games-and-events/2.infinite-road.md index 43e0e3b28..f47f14f53 100644 --- a/docs/4.jeux-et-evenements/2.route-infini.md +++ b/docs/fr/4.games-and-events/2.infinite-road.md @@ -1,4 +1,5 @@ --- +slug: /jeux-et-evenements/route-infini title: Route de l'Infini description: Créez un défi de comptage collaboratif sur votre serveur ! Les membres comptent ensemble jusqu'à l'infini, en respectant les règles que vous définissez. navigation.icon: 'twemoji:infinity' @@ -29,7 +30,7 @@ La Route de l'Infini est un jeu de comptage collaboratif où les membres de votr Le nombre actuel et les statistiques de la Route de l'Infini sont consultables via la commande \. :: -![Exemple](../assets/route-infini/message_counting.png) +![Exemple](./assets/infinite-road/message_counting.png) ### Discussions autorisées @@ -37,7 +38,7 @@ Parce que compter c'est bien, si on peut discuter, c'est encore mieux ! Si votre serveur autorise les discussions (activé par défaut), vous pouvez ajouter du texte après le nombre : -![Exemple avec discussion](../assets/route-infini/message_counting_discussion.png) +![Exemple avec discussion](./assets/infinite-road/message_counting_discussion.png) ::hint{ type="info" } Les discussions peuvent être configurées pour autoriser ou interdire les sauts de ligne dans vos messages. Par défaut, les sauts de ligne sont **interdits**. @@ -47,7 +48,7 @@ Si votre serveur autorise les discussions (activé par défaut), vous pouvez ajo Pour consulter votre progression et le classement du serveur, utilisez la commande \. -![Interface de la Route de l'Infini](../assets/route-infini/bot_infiniteroad_command.png) +![Interface de la Route de l'Infini](./assets/infinite-road/bot_infiniteroad_command.png) La commande affiche : - Le prochain nombre à envoyer @@ -117,7 +118,7 @@ Pour garder un effet de surprise, vous pouvez masquer une partie d'une récompen Vous pouvez masquer l'un des deux éléments, ou les deux. -![Affichage d'une récompense mystère via la commande /route-infini](../assets/route-infini/bot_mystery_gift.png) +![Affichage d'une récompense mystère via la commande /route-infini](./assets/infinite-road/bot_mystery_gift.png) ::hint{ type="info" } Contrairement aux options ci-dessus, le masquage est disponible sur **tous les serveurs**, et pour les deux types d'objectif (nombre spécifique ou multiple). @@ -129,7 +130,7 @@ Vous pouvez masquer l'un des deux éléments, ou les deux. Lors de la création ou de la modification d'une récompense, la partie **"Masquer dans /route-infini"** apparaît dès que vous avez choisi le type de récompense. Activez les éléments que vous souhaitez cacher à vos membres. - ![Options de masquage dans la configuration d'une récompense sur le panel](../assets/route-infini/panel_hide_elements.png) + ![Options de masquage dans la configuration d'une récompense sur le panel](./assets/infinite-road/panel_hide_elements.png) ::hint{ type="warning" } N'oubliez pas de valider avec le bouton "Créer" (ou "Modifier"), puis d'enregistrer vos modifications avec le bouton "Enregistrer" situé en bas de page ! @@ -144,7 +145,7 @@ Vous pouvez masquer l'un des deux éléments, ou les deux. En modifiant une récompense, le bouton **"Éléments masqués"** vous permet de sélectionner ce que vous souhaitez cacher. - ![Bouton "Éléments masqués" lors de la modification d'une récompense](../assets/route-infini/config_hide_elements.png) + ![Bouton "Éléments masqués" lors de la modification d'une récompense](./assets/infinite-road/config_hide_elements.png) :: :: @@ -220,13 +221,13 @@ Le message envoyé lors de la réinitialisation est personnalisable (**1000 cara Activez l'option "Réinitialiser la route de l'infini en cas d'erreur" : la partie "Message de réinitialisation personnalisé" apparaît alors juste en dessous. - ![Configuration du message de réinitialisation sur le panel](../assets/route-infini/panel_reset_message.png) + ![Configuration du message de réinitialisation sur le panel](./assets/infinite-road/panel_reset_message.png) :: ::tab{ label="Via la commande /config" } Rendez-vous dans la commande \, puis dans l'onglet "Route de l'Infini". Appuyez ensuite sur le bouton "Erreurs", puis sur "Message de réinitialisation". - ![Réponse de DraftBot après avoir appuyé sur le bouton "Message de réinitialisation"](../assets/route-infini/bot_reset_message.png) + ![Réponse de DraftBot après avoir appuyé sur le bouton "Message de réinitialisation"](./assets/infinite-road/bot_reset_message.png) :: :: @@ -329,7 +330,7 @@ Au-delà de cette limite, l'erreur **Messages consécutifs** est déclenchée co Pour activer le module, la première étape est de cliquer sur "Configurer en quelques secondes" et faire la configuration rapide : - ![Mise en place de la Route de l'Infini depuis le Panel](../assets/route-infini/panel_setup.png) + ![Mise en place de la Route de l'Infini depuis le Panel](./assets/infinite-road/panel_setup.png) Un assistant de configuration vous guide ensuite à travers les étapes de mise en place : @@ -340,7 +341,7 @@ Au-delà de cette limite, l'erreur **Messages consécutifs** est déclenchée co Une fois configuré, l'ensemble des fonctionnalités apparaît : - ![Module Route de l'Infini activé sur le Panel](../assets/route-infini/panel_home.png) + ![Module Route de l'Infini activé sur le Panel](./assets/infinite-road/panel_home.png) ::hint{type="warning"} Une fois vos modifications terminées, n'oubliez pas d'enregistrer vos modifications avec le bouton "Enregistrer" situé en bas de page ! @@ -351,7 +352,7 @@ Au-delà de cette limite, l'erreur **Messages consécutifs** est déclenchée co Si vous souhaitez effectuer toute la configuration directement depuis Discord, vous pouvez le faire via la commande \, puis en vous rendant dans l'onglet "Route de l'Infini". Le menu ressemble alors à ceci : - ![Module Route de l'Infini via la commande /config](../assets/route-infini/config_home.png) + ![Module Route de l'Infini via la commande /config](./assets/infinite-road/config_home.png) Le corps du **message** vous permet de consulter en un coup d'œil l'**état actuel** de votre Route de l'Infini, tandis que les **boutons** situés au-dessous vous permettent d'en **modifier la configuration**. @@ -369,7 +370,7 @@ Au-delà de cette limite, l'erreur **Messages consécutifs** est déclenchée co - Ignorer ou sanctionner les messages sans nombres - Autoriser plusieurs messages consécutifs d'un même membre, et définir combien - ![Menu "Discussions" via la commande /config](../assets/route-infini/config_discussions.png) + ![Menu "Discussions" via la commande /config](./assets/infinite-road/config_discussions.png) :: ::collapse{ label="Erreurs" } @@ -382,7 +383,7 @@ Au-delà de cette limite, l'erreur **Messages consécutifs** est déclenchée co - Montant retiré par erreur - **Rôle temporaire** : Attribuer un rôle de sanction temporaire - ![Menu "Erreurs" via la commande /config](../assets/route-infini/config_errors.png) + ![Menu "Erreurs" via la commande /config](./assets/infinite-road/config_errors.png) :: ::collapse{ label="Déclencheurs" } @@ -391,7 +392,7 @@ Au-delà de cette limite, l'erreur **Messages consécutifs** est déclenchée co - Choisir les actions (message temporaire, réaction, épinglage) - Personnaliser le message avec des variables - ![Menu "Déclencheurs" via la commande /config](../assets/route-infini/config_triggers.png) + ![Menu "Déclencheurs" via la commande /config](./assets/infinite-road/config_triggers.png) :: ::collapse{ label="Récompenses" } @@ -401,7 +402,7 @@ Au-delà de cette limite, l'erreur **Messages consécutifs** est déclenchée co - Configurer les annonces de récompenses - Personnaliser le message d'annonce - ![Menu "Récompenses" via la commande /config](../assets/route-infini/config_rewards.png) + ![Menu "Récompenses" via la commande /config](./assets/infinite-road/config_rewards.png) :: ::hint{ type="info" } @@ -442,13 +443,13 @@ Configurez où et comment annoncer l'obtention d'une récompense (désactivé pa Dans la section "Récompenses", cliquez sur **"Créer une récompense"** : - ![Création de récompense depuis le panel](../assets/route-infini/panel_rewards.png) + ![Création de récompense depuis le panel](./assets/infinite-road/panel_rewards.png) :: ::tab{ label="Via la commande /config" } Via la commande \, accédez au menu "Route de l'Infini" > "Récompenses" > "Créer une récompense", puis suivez les étapes de configuration. - ![Création de récompense via /config](../assets/route-infini/config_rewards.png) + ![Création de récompense via /config](./assets/infinite-road/config_rewards.png) :: :: @@ -531,7 +532,7 @@ Configurez où et comment annoncer l'obtention d'une récompense (désactivé pa Si vous utilisiez déjà la Route de l'Infini via Countr, vous pouvez importer les données de comptage de vos membres vers DraftBot ! -![Bouton d'importation Countr](../assets/route-infini/config_import.png) +![Bouton d'importation Countr](./assets/infinite-road/config_import.png) 1. Sur votre serveur Discord, utilisez la commande Countr : \ 2. Countr vous enverra un fichier JSON contenant toutes les données diff --git a/docs/4.jeux-et-evenements/3.bingo.md b/docs/fr/4.games-and-events/3.bingo.md similarity index 96% rename from docs/4.jeux-et-evenements/3.bingo.md rename to docs/fr/4.games-and-events/3.bingo.md index 6976484e6..ccc7b0899 100644 --- a/docs/4.jeux-et-evenements/3.bingo.md +++ b/docs/fr/4.games-and-events/3.bingo.md @@ -1,4 +1,5 @@ --- +slug: /jeux-et-evenements/bingo title: Bingo description: Organisez des parties de bingo captivantes où vos membres doivent deviner un nombre secret ! navigation.icon: 'twemoji:bullseye' @@ -23,7 +24,7 @@ Lorsqu'une partie de bingo est lancée dans un salon, vous verrez apparaître un - La **durée** (si mode Chrono) - Une **récompense** potentielle (optionnel) -![Partie de Bingo en cours](../assets/bingo/bot_start.png) +![Partie de Bingo en cours](./assets/bingo/bot_start.png) ### Faire une tentative @@ -56,7 +57,7 @@ Si les **indices réactions** sont activés, DraftBot peut réagir avec des émo Le **premier joueur à deviner** le nombre secret remporte la partie ! Un message de victoire célèbre votre réussite. -![Message de victoire](../assets/bingo/bot_victory.png) +![Message de victoire](./assets/bingo/bot_victory.png) ::hint{ type="warning" } Les personnes ayant accès au **tableau de bord admin** (créateur et administrateurs) ne peuvent **pas participer** à la partie après avoir vu le nombre secret. @@ -66,7 +67,7 @@ Le **premier joueur à deviner** le nombre secret remporte la partie ! Un messag Pendant la partie, des **indices** peuvent être donnés **manuellement par l'organisateur** via le [tableau de bord admin](#tableau-de-bord-admin) pour aider les joueurs à se rapprocher du nombre secret. -![Indices dynamiques dans le tableau de bord](../assets/bingo/bot_dashboard_hints.png) +![Indices dynamiques dans le tableau de bord](./assets/bingo/bot_dashboard_hints.png) | Type d'indice | Description | Exemple | |---------------|-------------|---------| @@ -114,13 +115,13 @@ Les joueurs ont un **temps limité** (configurable de 1 à 120 minutes) pour tro À la fin de chaque partie, des statistiques détaillées sont affichées pour tous les joueurs : -![Message de victoire avec statistiques](../assets/bingo/bot_victory.png) +![Message de victoire avec statistiques](./assets/bingo/bot_victory.png) ## Organiser une partie Pour organiser une partie de bingo sur votre serveur, utilisez la commande \. -![Interface de configuration du Bingo](../assets/bingo/config_home.png) +![Interface de configuration du Bingo](./assets/bingo/config_home.png) ::hint{ type="warning" } Le Bingo n'est **pas compatible** avec la **Route de l'infini**. Vous ne pouvez pas lancer une partie de bingo dans un salon utilisé pour la [Route de l'infini](/docs/jeux-et-evenements/route-infini). @@ -213,7 +214,7 @@ Pour les serveurs très actifs, activez le **verrouillage du salon** qui se déc Le créateur de la partie et les administrateurs du serveur ont accès à un **tableau de bord admin** en utilisant \ pendant qu'une partie est en cours. -![Tableau de bord admin](../assets/bingo/config_dashboard.png) +![Tableau de bord admin](./assets/bingo/config_dashboard.png) ::hint{ type="info" } Le tableau de bord se **rafraîchit automatiquement toutes les 3 secondes** pour afficher des données en temps réel. diff --git a/docs/4.jeux-et-evenements/4.stats-de-jeux.md b/docs/fr/4.games-and-events/4.game-stats.md similarity index 90% rename from docs/4.jeux-et-evenements/4.stats-de-jeux.md rename to docs/fr/4.games-and-events/4.game-stats.md index c04a57d5c..997160f50 100644 --- a/docs/4.jeux-et-evenements/4.stats-de-jeux.md +++ b/docs/fr/4.games-and-events/4.game-stats.md @@ -1,4 +1,5 @@ --- +slug: /jeux-et-evenements/stats-de-jeux title: Statistiques de jeux description: Connaissez-vous vos statistiques de jeux ? Grâce à ces commandes, vous allez les connaître ! navigation.icon: 'twemoji:memo' @@ -11,7 +12,7 @@ updatedAt: '2025-03-18' ## Profil de jeux La commande \ affiche votre profil et les pseudos de jeux que vous y avez associés. Pour consulter celui de quelqu'un d'autre, indiquez-le dans l'option `membre`. -![Aperçu de la commande /profil](../assets/stats-de-jeux/apercu_profil.png) +![Aperçu de la commande /profil](./assets/game-stats/apercu_profil.png) ## Relier vos pseudos à DraftBot @@ -28,13 +29,13 @@ Voici les deux méthodes pour le faire. Ensuite, vous descendez vers le bas et vous pourrez lier vos différents jeux. - ![Aperçu du panel](../assets/stats-de-jeux/panel_jeux.png) + ![Aperçu du panel](./assets/game-stats/panel_jeux.png) :: ::tab{ label="Via la commande /profiljeux" } Pour relier votre jeu à votre profil Discord, vous devez exécuter la commande \ puis sélectionnez votre `jeu`, votre `pseudo` ainsi que la `plateforme`. - ![Aperçu de la commande](../assets/stats-de-jeux/apercu_profiljeux.png) + ![Aperçu de la commande](./assets/game-stats/apercu_profiljeux.png) :: :: @@ -79,7 +80,7 @@ Pour obtenir les différentes statistiques de brawlhalla, effectuez la commande - **Meilleure arme** : L'arme avec laquelle le joueur a obtenu le plus de succès ou qu'il préfère utiliser. -![Aperçu de la commande /stats brawlhalla](../assets/stats-de-jeux/apercu_brawlhalla.png) +![Aperçu de la commande /stats brawlhalla](./assets/game-stats/apercu_brawlhalla.png) ### /stats brawlstars @@ -93,7 +94,7 @@ Pour obtenir les différentes statistiques de Brawlstars, effectuez la commande - **Le nombre de blings** : Une monnaie dans le jeu utilisée pour acheter des skins et d'autres objets cosmétiques pour personnaliser les brawlers. -![Aperçu de la commande /stats brawlstars](../assets/stats-de-jeux/apercu_brawlstars.png) +![Aperçu de la commande /stats brawlstars](./assets/game-stats/apercu_brawlstars.png) ### /stats clashofclans @@ -129,7 +130,7 @@ Pour obtenir les différentes statistiques de Clash of Clans, effectuez la comma - **Sorts** : Les différents sorts. -![Aperçu de la commande /stats clashofclans](../assets/stats-de-jeux/stat_clashofclans.png) +![Aperçu de la commande /stats clashofclans](./assets/game-stats/stat_clashofclans.png) ### /stats clashroyale @@ -148,7 +149,7 @@ Pour obtenir les différentes statistiques de Clash Royale, effectuez la command - **Les défaites** : Nombre de matchs perdus. - **Les égalités** : Nombre de matchs se terminant sans vainqueur. -![Aperçu de la commande /stats clashroyale](../assets/stats-de-jeux/stat_clashroyale.png) +![Aperçu de la commande /stats clashroyale](./assets/game-stats/stat_clashroyale.png) ### /stats osu @@ -162,7 +163,7 @@ Pour obtenir les différentes statistiques d'osu, effectuez la commande \ vous permet d'accéder à ce jeu à **deux joueurs**. C' Vous pouvez jouer à ce jeu avec la personne de **votre choix**, de façon **aléatoire**, ou avec **DraftBot**. -![Aperçu du jeu "Morpion" en mode "Normale"](../assets/commandes-jeux-fun/morpion.png) +![Aperçu du jeu "Morpion" en mode "Normale"](./assets/fun-commands/morpion.png) ::hint{ type="info" } Vous avez la possibilité de choisir le mode de difficulté : "Facile", "Normale" ou "Difficile". En fonction de votre choix, DraftBot sera plus compliqué à vaincre. @@ -61,7 +62,7 @@ La commande \ vous permet d'accéder à ce jeu de réflexion **d'un seul En cas d'erreur, **un petit bonhomme** se dessine petit à petit et s'il est complété, cela signifie que vous êtes pendu et que vous avez perdu. -![Aperçu du jeu "Pendu"](../assets/commandes-jeux-fun/pendu.png) +![Aperçu du jeu "Pendu"](./assets/fun-commands/pendu.png) ::hint{ type="info" } Même si le jeu est pour un seul joueur, d'autres membres peuvent vous aider à trouver le mot secret. @@ -73,7 +74,7 @@ La commande \ vous permet d'accéder à ce jeu à **deux joueurs**. Vous pouvez jouer à ce jeu avec le membre de **votre choix**, de façon **aléatoire**, ou avec **DraftBot**. -![Aperçu du jeu "Puissance 4" entre deux utilisateurs](../assets/commandes-jeux-fun/puissance4.png) +![Aperçu du jeu "Puissance 4" entre deux utilisateurs](./assets/fun-commands/puissance4.png) ::hint{ type="info" } Vous avez la possibilité de choisir le mode de difficulté : "Facile", "Normale" ou "Difficile". En fonction de votre choix, DraftBot sera plus compliqué à vaincre. @@ -85,7 +86,7 @@ La commande \ vous permet d'accéder à ce jeu de réflexion **d'un s Le jeu fournit des indices basés sur **le nombre** de mines présentes dans les cases voisines. -![Aperçu du jeu "Démineur" en mode "Facile"](../assets/commandes-jeux-fun/demineur.png) +![Aperçu du jeu "Démineur" en mode "Facile"](./assets/fun-commands/demineur.png) ::hint{ type="info" } Vous avez la possibilité de choisir le mode de difficulté : "Facile", "Normale" ou "Difficile". En fonction de votre choix, la grille s'agrandira. @@ -95,7 +96,7 @@ Le jeu fournit des indices basés sur **le nombre** de mines présentes dans les La commande \ vous permet d'accéder à ce jeu de logique pour **un seul joueur**. Il est l'équivalent du jeu **Mastermind**, le but consiste à trouver la bonne combinaison de couleurs. -![Aperçu du jeu "ColorMind" en mode "Difficile"](../assets/commandes-jeux-fun/colormind.png) +![Aperçu du jeu "ColorMind" en mode "Difficile"](./assets/fun-commands/colormind.png) ::hint{ type="info" } Vous avez la possibilité de choisir le mode de difficulté : "Facile", "Normale" ou "Difficile". En fonction de votre choix, le nombre de couleurs à trouver augmentera. @@ -121,9 +122,9 @@ Lors de la création du sondage avec la commande \, vous allez Vous avez la possibilité, si vous le souhaitez, de définir la durée du sondage et de choisir le salon où le sondage sera lancé. :: -![Aperçu de la commande /sondage créer](../assets/commandes-jeux-fun/command-survey.png) +![Aperçu de la commande /sondage créer](./assets/fun-commands/command-survey.png) -![Aperçu du résultat de la commande /sondage créer](../assets/commandes-jeux-fun/command-survey2.png) +![Aperçu du résultat de la commande /sondage créer](./assets/fun-commands/command-survey2.png) ### /evenement @@ -141,13 +142,13 @@ Pour participer, les membres devront cliquer sur **la réaction** qui apparaîtr Vous avez la possibilité, si vous le souhaitez, de définir un rôle que vos membres recevront à la fin de l'évènement afin de prouver leur participation et de choisir le salon où l'évènement sera lancé. :: -![Aperçu de la commande /evenement](../assets/commandes-jeux-fun/event.png) +![Aperçu de la commande /evenement](./assets/fun-commands/event.png) ### /couple La commande \ vous permet tout simplement de **créer un couple** sur votre serveur. DraftBot récupérera les avatars du **"Roméo"** et de la **"Juliette"** choisis, et il donnera par la même occasion un nom au couple défini. -![Aperçu de la commande /couple](../assets/commandes-jeux-fun/couple.png) +![Aperçu de la commande /couple](./assets/fun-commands/couple.png) ### /blague @@ -161,7 +162,7 @@ Vous avez trois sous-commandes à votre disposition : Les différents types de blagues sont : Tout public, Humour noir, Développeur, 18+, Beauf, Blondes. -![Aperçu de la commande /blague](../assets/commandes-jeux-fun/blague.png) +![Aperçu de la commande /blague](./assets/fun-commands/blague.png) ::hint{ type="info" } Chaque blague affichée dispose d'un bouton 🤍 permettant de l'ajouter à vos **favoris**. Cliquez à nouveau sur le bouton ❤️ pour la retirer. Vous pouvez sauvegarder jusqu'à **200 blagues favorites** et les consulter à tout moment via \. @@ -186,7 +187,7 @@ La commande \ vous permet d'effectuer un lancer de dés. Indiquez - Vous pouvez ajouter un modificateur (Z) (`+`, `-` ou `x`) (Ex : 1d10 **+5**). - Vous pouvez compléter avec des options : `-H` pour ne garder que le plus haut ou `-L` pour le plus bas (Ex : 3d10+5 **-L**). -![Aperçu de la commande /lancer-dés](../assets/commandes-jeux-fun/lancer-des.png) +![Aperçu de la commande /lancer-dés](./assets/fun-commands/lancer-des.png) ::hint{ type="info" } Le nombre de dés ne peut pas dépasser 100. @@ -204,7 +205,7 @@ Vous recevrez les informations suivantes : - La date de sortie. - La note moyenne donnée par les utilisateurs. -![Aperçu de la commande /tv](../assets/commandes-jeux-fun/tv.png) +![Aperçu de la commande /tv](./assets/fun-commands/tv.png) ### /interact diff --git a/docs/4.jeux-et-evenements/_dir.yml b/docs/fr/4.games-and-events/_dir.yml similarity index 83% rename from docs/4.jeux-et-evenements/_dir.yml rename to docs/fr/4.games-and-events/_dir.yml index 6f1dac6c3..9f9c340a2 100644 --- a/docs/4.jeux-et-evenements/_dir.yml +++ b/docs/fr/4.games-and-events/_dir.yml @@ -1,3 +1,4 @@ +slug: /jeux-et-evenements/_dir title: Jeux & événements description: Les jeux, animations et événements que DraftBot fait vivre sur votre serveur. navigation.icon: 'twemoji:game-die' diff --git a/docs/fr/4.games-and-events/assets/advent-calendar/bot_calendar.png b/docs/fr/4.games-and-events/assets/advent-calendar/bot_calendar.png new file mode 100644 index 000000000..f9accfdbf Binary files /dev/null and b/docs/fr/4.games-and-events/assets/advent-calendar/bot_calendar.png differ diff --git a/docs/fr/4.games-and-events/assets/bingo/bot_dashboard_hints.png b/docs/fr/4.games-and-events/assets/bingo/bot_dashboard_hints.png new file mode 100644 index 000000000..7964b5eaf Binary files /dev/null and b/docs/fr/4.games-and-events/assets/bingo/bot_dashboard_hints.png differ diff --git a/docs/fr/4.games-and-events/assets/bingo/bot_start.png b/docs/fr/4.games-and-events/assets/bingo/bot_start.png new file mode 100644 index 000000000..20b72b113 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/bingo/bot_start.png differ diff --git a/docs/fr/4.games-and-events/assets/bingo/bot_victory.png b/docs/fr/4.games-and-events/assets/bingo/bot_victory.png new file mode 100644 index 000000000..0ffe113ba Binary files /dev/null and b/docs/fr/4.games-and-events/assets/bingo/bot_victory.png differ diff --git a/docs/fr/4.games-and-events/assets/bingo/config_dashboard.png b/docs/fr/4.games-and-events/assets/bingo/config_dashboard.png new file mode 100644 index 000000000..131787c48 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/bingo/config_dashboard.png differ diff --git a/docs/fr/4.games-and-events/assets/bingo/config_home.png b/docs/fr/4.games-and-events/assets/bingo/config_home.png new file mode 100644 index 000000000..cf99720c6 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/bingo/config_home.png differ diff --git a/docs/fr/4.games-and-events/assets/fun-commands/blague.png b/docs/fr/4.games-and-events/assets/fun-commands/blague.png new file mode 100644 index 000000000..10ae07017 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/fun-commands/blague.png differ diff --git a/docs/fr/4.games-and-events/assets/fun-commands/chifumi.png b/docs/fr/4.games-and-events/assets/fun-commands/chifumi.png new file mode 100644 index 000000000..4464a62b7 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/fun-commands/chifumi.png differ diff --git a/docs/fr/4.games-and-events/assets/fun-commands/colormind.png b/docs/fr/4.games-and-events/assets/fun-commands/colormind.png new file mode 100644 index 000000000..0d159d97f Binary files /dev/null and b/docs/fr/4.games-and-events/assets/fun-commands/colormind.png differ diff --git a/docs/fr/4.games-and-events/assets/fun-commands/command-survey.png b/docs/fr/4.games-and-events/assets/fun-commands/command-survey.png new file mode 100644 index 000000000..408c3de31 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/fun-commands/command-survey.png differ diff --git a/docs/fr/4.games-and-events/assets/fun-commands/command-survey2.png b/docs/fr/4.games-and-events/assets/fun-commands/command-survey2.png new file mode 100644 index 000000000..d06de4f52 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/fun-commands/command-survey2.png differ diff --git a/docs/fr/4.games-and-events/assets/fun-commands/couple.png b/docs/fr/4.games-and-events/assets/fun-commands/couple.png new file mode 100644 index 000000000..ae59a85b5 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/fun-commands/couple.png differ diff --git a/docs/fr/4.games-and-events/assets/fun-commands/demineur.png b/docs/fr/4.games-and-events/assets/fun-commands/demineur.png new file mode 100644 index 000000000..f077ed141 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/fun-commands/demineur.png differ diff --git a/docs/fr/4.games-and-events/assets/fun-commands/event.png b/docs/fr/4.games-and-events/assets/fun-commands/event.png new file mode 100644 index 000000000..4e49b46c7 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/fun-commands/event.png differ diff --git a/docs/fr/4.games-and-events/assets/fun-commands/lancer-des.png b/docs/fr/4.games-and-events/assets/fun-commands/lancer-des.png new file mode 100644 index 000000000..5456f4d8e Binary files /dev/null and b/docs/fr/4.games-and-events/assets/fun-commands/lancer-des.png differ diff --git a/docs/fr/4.games-and-events/assets/fun-commands/morpion.png b/docs/fr/4.games-and-events/assets/fun-commands/morpion.png new file mode 100644 index 000000000..21ba7cf58 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/fun-commands/morpion.png differ diff --git a/docs/fr/4.games-and-events/assets/fun-commands/pendu.png b/docs/fr/4.games-and-events/assets/fun-commands/pendu.png new file mode 100644 index 000000000..c7c7724fb Binary files /dev/null and b/docs/fr/4.games-and-events/assets/fun-commands/pendu.png differ diff --git a/docs/fr/4.games-and-events/assets/fun-commands/puissance4.png b/docs/fr/4.games-and-events/assets/fun-commands/puissance4.png new file mode 100644 index 000000000..df7f6720f Binary files /dev/null and b/docs/fr/4.games-and-events/assets/fun-commands/puissance4.png differ diff --git a/docs/fr/4.games-and-events/assets/fun-commands/tv.png b/docs/fr/4.games-and-events/assets/fun-commands/tv.png new file mode 100644 index 000000000..f7aa22193 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/fun-commands/tv.png differ diff --git a/docs/fr/4.games-and-events/assets/game-stats/apercu_brawlhalla.png b/docs/fr/4.games-and-events/assets/game-stats/apercu_brawlhalla.png new file mode 100644 index 000000000..d2fd41729 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/game-stats/apercu_brawlhalla.png differ diff --git a/docs/fr/4.games-and-events/assets/game-stats/apercu_brawlstars.png b/docs/fr/4.games-and-events/assets/game-stats/apercu_brawlstars.png new file mode 100644 index 000000000..e83703987 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/game-stats/apercu_brawlstars.png differ diff --git a/docs/fr/4.games-and-events/assets/game-stats/apercu_chess.png b/docs/fr/4.games-and-events/assets/game-stats/apercu_chess.png new file mode 100644 index 000000000..87b490b3a Binary files /dev/null and b/docs/fr/4.games-and-events/assets/game-stats/apercu_chess.png differ diff --git a/docs/fr/4.games-and-events/assets/game-stats/apercu_paladins.png b/docs/fr/4.games-and-events/assets/game-stats/apercu_paladins.png new file mode 100644 index 000000000..eff324508 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/game-stats/apercu_paladins.png differ diff --git a/docs/fr/4.games-and-events/assets/game-stats/apercu_profil.png b/docs/fr/4.games-and-events/assets/game-stats/apercu_profil.png new file mode 100644 index 000000000..09bfc1d81 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/game-stats/apercu_profil.png differ diff --git a/docs/fr/4.games-and-events/assets/game-stats/apercu_profiljeux.png b/docs/fr/4.games-and-events/assets/game-stats/apercu_profiljeux.png new file mode 100644 index 000000000..dacc13273 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/game-stats/apercu_profiljeux.png differ diff --git a/docs/fr/4.games-and-events/assets/game-stats/apercu_wolfy.png b/docs/fr/4.games-and-events/assets/game-stats/apercu_wolfy.png new file mode 100644 index 000000000..f374460c4 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/game-stats/apercu_wolfy.png differ diff --git a/docs/fr/4.games-and-events/assets/game-stats/panel_jeux.png b/docs/fr/4.games-and-events/assets/game-stats/panel_jeux.png new file mode 100644 index 000000000..44fcaa85c Binary files /dev/null and b/docs/fr/4.games-and-events/assets/game-stats/panel_jeux.png differ diff --git a/docs/fr/4.games-and-events/assets/game-stats/stat_clashofclans.png b/docs/fr/4.games-and-events/assets/game-stats/stat_clashofclans.png new file mode 100644 index 000000000..d20622e99 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/game-stats/stat_clashofclans.png differ diff --git a/docs/fr/4.games-and-events/assets/game-stats/stat_clashroyale.png b/docs/fr/4.games-and-events/assets/game-stats/stat_clashroyale.png new file mode 100644 index 000000000..524ab1e15 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/game-stats/stat_clashroyale.png differ diff --git a/docs/fr/4.games-and-events/assets/game-stats/stat_osu.png b/docs/fr/4.games-and-events/assets/game-stats/stat_osu.png new file mode 100644 index 000000000..12c2f10dd Binary files /dev/null and b/docs/fr/4.games-and-events/assets/game-stats/stat_osu.png differ diff --git a/docs/fr/4.games-and-events/assets/giveaways/confirm_desinscription.png b/docs/fr/4.games-and-events/assets/giveaways/confirm_desinscription.png new file mode 100644 index 000000000..573db256a Binary files /dev/null and b/docs/fr/4.games-and-events/assets/giveaways/confirm_desinscription.png differ diff --git a/docs/fr/4.games-and-events/assets/giveaways/create_new_channel.png b/docs/fr/4.games-and-events/assets/giveaways/create_new_channel.png new file mode 100644 index 000000000..318466bf1 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/giveaways/create_new_channel.png differ diff --git a/docs/fr/4.games-and-events/assets/giveaways/exist_channel_choose.png b/docs/fr/4.games-and-events/assets/giveaways/exist_channel_choose.png new file mode 100644 index 000000000..1ba405174 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/giveaways/exist_channel_choose.png differ diff --git a/docs/fr/4.games-and-events/assets/giveaways/giveaway_config.png b/docs/fr/4.games-and-events/assets/giveaways/giveaway_config.png new file mode 100644 index 000000000..4d091e01d Binary files /dev/null and b/docs/fr/4.games-and-events/assets/giveaways/giveaway_config.png differ diff --git a/docs/fr/4.games-and-events/assets/giveaways/giveaway_custom_color.png b/docs/fr/4.games-and-events/assets/giveaways/giveaway_custom_color.png new file mode 100644 index 000000000..fa423226b Binary files /dev/null and b/docs/fr/4.games-and-events/assets/giveaways/giveaway_custom_color.png differ diff --git a/docs/fr/4.games-and-events/assets/giveaways/giveaway_description_title.png b/docs/fr/4.games-and-events/assets/giveaways/giveaway_description_title.png new file mode 100644 index 000000000..384414ce7 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/giveaways/giveaway_description_title.png differ diff --git a/docs/fr/4.games-and-events/assets/giveaways/giveaway_image_thumbnail.png b/docs/fr/4.games-and-events/assets/giveaways/giveaway_image_thumbnail.png new file mode 100644 index 000000000..c953063e8 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/giveaways/giveaway_image_thumbnail.png differ diff --git a/docs/fr/4.games-and-events/assets/giveaways/giveaway_no_participants_button.png b/docs/fr/4.games-and-events/assets/giveaways/giveaway_no_participants_button.png new file mode 100644 index 000000000..b0d773e13 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/giveaways/giveaway_no_participants_button.png differ diff --git a/docs/fr/4.games-and-events/assets/giveaways/giveaway_participants_admin.png b/docs/fr/4.games-and-events/assets/giveaways/giveaway_participants_admin.png new file mode 100644 index 000000000..ccc52ddbe Binary files /dev/null and b/docs/fr/4.games-and-events/assets/giveaways/giveaway_participants_admin.png differ diff --git a/docs/fr/4.games-and-events/assets/giveaways/giveaway_participants_member.png b/docs/fr/4.games-and-events/assets/giveaways/giveaway_participants_member.png new file mode 100644 index 000000000..90927d097 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/giveaways/giveaway_participants_member.png differ diff --git a/docs/fr/4.games-and-events/assets/giveaways/giveaway_with_host.png b/docs/fr/4.games-and-events/assets/giveaways/giveaway_with_host.png new file mode 100644 index 000000000..d830b97ab Binary files /dev/null and b/docs/fr/4.games-and-events/assets/giveaways/giveaway_with_host.png differ diff --git a/docs/fr/4.games-and-events/assets/giveaways/giveaway_with_mentions.png b/docs/fr/4.games-and-events/assets/giveaways/giveaway_with_mentions.png new file mode 100644 index 000000000..471db3965 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/giveaways/giveaway_with_mentions.png differ diff --git a/docs/fr/4.games-and-events/assets/giveaways/modal_reward_role.png b/docs/fr/4.games-and-events/assets/giveaways/modal_reward_role.png new file mode 100644 index 000000000..26ccf7ed8 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/giveaways/modal_reward_role.png differ diff --git a/docs/fr/4.games-and-events/assets/giveaways/preview_giveaway.png b/docs/fr/4.games-and-events/assets/giveaways/preview_giveaway.png new file mode 100644 index 000000000..faad93b5f Binary files /dev/null and b/docs/fr/4.games-and-events/assets/giveaways/preview_giveaway.png differ diff --git a/docs/fr/4.games-and-events/assets/giveaways/simple_giveaway.png b/docs/fr/4.games-and-events/assets/giveaways/simple_giveaway.png new file mode 100644 index 000000000..cf68263cd Binary files /dev/null and b/docs/fr/4.games-and-events/assets/giveaways/simple_giveaway.png differ diff --git a/docs/fr/4.games-and-events/assets/infinite-road/bot_infiniteroad_command.png b/docs/fr/4.games-and-events/assets/infinite-road/bot_infiniteroad_command.png new file mode 100644 index 000000000..6b4c676c8 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/infinite-road/bot_infiniteroad_command.png differ diff --git a/docs/fr/4.games-and-events/assets/infinite-road/bot_mystery_gift.png b/docs/fr/4.games-and-events/assets/infinite-road/bot_mystery_gift.png new file mode 100644 index 000000000..8d0b0a32e Binary files /dev/null and b/docs/fr/4.games-and-events/assets/infinite-road/bot_mystery_gift.png differ diff --git a/docs/fr/4.games-and-events/assets/infinite-road/bot_reset_message.png b/docs/fr/4.games-and-events/assets/infinite-road/bot_reset_message.png new file mode 100644 index 000000000..55cfee410 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/infinite-road/bot_reset_message.png differ diff --git a/docs/fr/4.games-and-events/assets/infinite-road/config_discussions.png b/docs/fr/4.games-and-events/assets/infinite-road/config_discussions.png new file mode 100644 index 000000000..a3c73e75f Binary files /dev/null and b/docs/fr/4.games-and-events/assets/infinite-road/config_discussions.png differ diff --git a/docs/fr/4.games-and-events/assets/infinite-road/config_errors.png b/docs/fr/4.games-and-events/assets/infinite-road/config_errors.png new file mode 100644 index 000000000..977e78af3 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/infinite-road/config_errors.png differ diff --git a/docs/fr/4.games-and-events/assets/infinite-road/config_hide_elements.png b/docs/fr/4.games-and-events/assets/infinite-road/config_hide_elements.png new file mode 100644 index 000000000..18ff0c9dc Binary files /dev/null and b/docs/fr/4.games-and-events/assets/infinite-road/config_hide_elements.png differ diff --git a/docs/fr/4.games-and-events/assets/infinite-road/config_home.png b/docs/fr/4.games-and-events/assets/infinite-road/config_home.png new file mode 100644 index 000000000..e239950fc Binary files /dev/null and b/docs/fr/4.games-and-events/assets/infinite-road/config_home.png differ diff --git a/docs/fr/4.games-and-events/assets/infinite-road/config_import.png b/docs/fr/4.games-and-events/assets/infinite-road/config_import.png new file mode 100644 index 000000000..0aedf71cd Binary files /dev/null and b/docs/fr/4.games-and-events/assets/infinite-road/config_import.png differ diff --git a/docs/fr/4.games-and-events/assets/infinite-road/config_rewards.png b/docs/fr/4.games-and-events/assets/infinite-road/config_rewards.png new file mode 100644 index 000000000..1cf1aa87f Binary files /dev/null and b/docs/fr/4.games-and-events/assets/infinite-road/config_rewards.png differ diff --git a/docs/fr/4.games-and-events/assets/infinite-road/config_triggers.png b/docs/fr/4.games-and-events/assets/infinite-road/config_triggers.png new file mode 100644 index 000000000..ec68f5dd4 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/infinite-road/config_triggers.png differ diff --git a/docs/fr/4.games-and-events/assets/infinite-road/message_counting.png b/docs/fr/4.games-and-events/assets/infinite-road/message_counting.png new file mode 100644 index 000000000..d90b1a554 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/infinite-road/message_counting.png differ diff --git a/docs/fr/4.games-and-events/assets/infinite-road/message_counting_discussion.png b/docs/fr/4.games-and-events/assets/infinite-road/message_counting_discussion.png new file mode 100644 index 000000000..5fd187276 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/infinite-road/message_counting_discussion.png differ diff --git a/docs/fr/4.games-and-events/assets/infinite-road/panel_hide_elements.png b/docs/fr/4.games-and-events/assets/infinite-road/panel_hide_elements.png new file mode 100644 index 000000000..40748da97 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/infinite-road/panel_hide_elements.png differ diff --git a/docs/fr/4.games-and-events/assets/infinite-road/panel_home.png b/docs/fr/4.games-and-events/assets/infinite-road/panel_home.png new file mode 100644 index 000000000..97b6bbcf1 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/infinite-road/panel_home.png differ diff --git a/docs/fr/4.games-and-events/assets/infinite-road/panel_reset_message.png b/docs/fr/4.games-and-events/assets/infinite-road/panel_reset_message.png new file mode 100644 index 000000000..69f994932 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/infinite-road/panel_reset_message.png differ diff --git a/docs/fr/4.games-and-events/assets/infinite-road/panel_rewards.png b/docs/fr/4.games-and-events/assets/infinite-road/panel_rewards.png new file mode 100644 index 000000000..7bede54d0 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/infinite-road/panel_rewards.png differ diff --git a/docs/fr/4.games-and-events/assets/infinite-road/panel_setup.png b/docs/fr/4.games-and-events/assets/infinite-road/panel_setup.png new file mode 100644 index 000000000..2924a5fa6 Binary files /dev/null and b/docs/fr/4.games-and-events/assets/infinite-road/panel_setup.png differ diff --git a/docs/5.communaute/0.suggestions.md b/docs/fr/5.community/0.suggestions.md similarity index 85% rename from docs/5.communaute/0.suggestions.md rename to docs/fr/5.community/0.suggestions.md index 72681adce..1a283e9ea 100644 --- a/docs/5.communaute/0.suggestions.md +++ b/docs/fr/5.community/0.suggestions.md @@ -1,4 +1,5 @@ --- +slug: /communaute/suggestions title: Suggestions description: Récoltez simplement les suggestions et avis de vos membres avec DraftBot ! navigation.icon: 'twemoji:light-bulb' @@ -20,18 +21,18 @@ Ouvrez le [menu des suggestions](#menu-des-suggestions) avec la commande \ vous permet d’afficher un classement des - Filtre : Permet de trier les suggestions par un mot-clé. -![Affichage des suggestions en attente triées par note décroissante](../assets/suggestions/bot_suggests_list.png) +![Affichage des suggestions en attente triées par note décroissante](./assets/suggestions/bot_suggests_list.png) ## Recherche par mots-clés La commande \ vous permet de rechercher des suggestions à partir de leur titre. ([premium](/premium) <:icon_premium:1096140508625125417>) -![Recherche de suggestions par mot-clé](../assets/suggestions/bot_suggestmod_search.png) +![Recherche de suggestions par mot-clé](./assets/suggestions/bot_suggestmod_search.png) ## Configuration @@ -188,7 +189,7 @@ La commande \ vous permet de rechercher des suggestions Pour activer le module, cliquez sur le bouton en haut à droite. L'ensemble des options de configuration apparaît alors et reste accessible en quelques clics. - ![Vue du module via le panel web](../assets/suggestions/panel_home.png) + ![Vue du module via le panel web](./assets/suggestions/panel_home.png) ::hint{ type="warning" } Une fois vos modifications terminées, n'oubliez pas de les enregistrer avec le bouton "Enregistrer" situé en bas de page ! @@ -204,7 +205,7 @@ La commande \ vous permet de rechercher des suggestions - des **informations** sur l'état actuel du module, - des **boutons d'action** pour modifier chaque partie de la configuration (détaillées dans les sections ci-dessous). - ![Menu de configuration du module 💡Suggestions, via la commande /config](../assets/suggestions/config_home.png) + ![Menu de configuration du module 💡Suggestions, via la commande /config](./assets/suggestions/config_home.png) :: :: @@ -220,7 +221,7 @@ La commande \ vous permet de rechercher des suggestions Pour modifier le \<#salon> dans lequel les suggestions envoyées par les membres devront être postées, choisissez-le dans le sélecteur du panel. - ![Choisir le salon de réception des suggestions depuis le panel](../assets/suggestions/panel_channel.png) + ![Choisir le salon de réception des suggestions depuis le panel](./assets/suggestions/panel_channel.png) ::hint{ type="info" } Si vous ne trouvez pas le salon dans la liste, pensez à réactualiser la page ! @@ -230,7 +231,7 @@ La commande \ vous permet de rechercher des suggestions ::tab{ label="Via la commande /config" } Cliquez sur le bouton "Salon de réception", puis renseignez le \<#salon> désiré : - ![Bouton "Salon de réception" depuis la commande /config](../assets/suggestions/config_buttons_channel.png) + ![Bouton "Salon de réception" depuis la commande /config](./assets/suggestions/config_buttons_channel.png) :: :: @@ -246,13 +247,13 @@ La commande \ vous permet de rechercher des suggestions Sélectionnez le rôle à mentionner lors de la publication d'une nouvelle suggestion. - ![Choisir le rôle à mentionner, depuis le panel](../assets/suggestions/panel_mention.png) + ![Choisir le rôle à mentionner, depuis le panel](./assets/suggestions/panel_mention.png) :: ::tab{ label="Via la commande /config" } Cliquez sur le bouton "Mention" pour définir le rôle à mentionner. Le rôle sélectionné recevra une notification à chaque nouvelle suggestion postée. - ![Bouton "Mention" depuis la commande /config](../assets/suggestions/config_buttons_mention.png) + ![Bouton "Mention" depuis la commande /config](./assets/suggestions/config_buttons_mention.png) :: :: @@ -264,7 +265,7 @@ La commande \ vous permet de rechercher des suggestions **DraftBot** permet de mettre en place un **nombre de suggestions** autorisées sur une période définie (par exemple 1 suggestion toutes les 30 minutes, ou 3 par jour), mais aussi des rôles immunisés, qui ne seront pas pris en compte dans cette restriction. - ![Configuration sur le panel](../assets/suggestions/panel_delai.png) + ![Configuration sur le panel](./assets/suggestions/panel_delai.png) :: ::tab{ label="Via la commande /config" } @@ -274,7 +275,7 @@ La commande \ vous permet de rechercher des suggestions - Définir un délai entre deux suggestions - Définir des rôles immunisés à ce délai - ![Menu "Membres", via la commande /config](../assets/suggestions/config_membres.png) + ![Menu "Membres", via la commande /config](./assets/suggestions/config_membres.png) :: :: @@ -286,7 +287,7 @@ La commande \ vous permet de rechercher des suggestions **DraftBot** permet de faire varier automatiquement la couleur d'une suggestion en fonction du ratio votes positifs / votes neutres / votes négatifs. - ![Gérer les variations de couleurs, depuis le panel](../assets/suggestions/panel_colors.png) + ![Gérer les variations de couleurs, depuis le panel](./assets/suggestions/panel_colors.png) ::hint{ type="info" } Les serveurs [premium](/premium) <:icon_premium:1096140508625125417> peuvent personnaliser le dégradé utilisé pour indiquer la popularité d'une suggestion. @@ -296,13 +297,13 @@ La commande \ vous permet de rechercher des suggestions ::tab{ label="Via la commande /config" } Cliquez sur le bouton "Couleur en fonction des votes" pour ouvrir le menu de gestion des couleurs. - ![Bouton "Couleur en fonction des votes" depuis la commande /config](../assets/suggestions/config_buttons_colors.png) + ![Bouton "Couleur en fonction des votes" depuis la commande /config](./assets/suggestions/config_buttons_colors.png) Depuis ce menu, vous pouvez : - Activer / Désactiver le dégradé automatique des suggestions - Modifier les couleurs <:icon_premium:1096140508625125417> - ![Menu "Couleur en fonction des votes", depuis la commande /config](../assets/suggestions/config_votes_color.png) + ![Menu "Couleur en fonction des votes", depuis la commande /config](./assets/suggestions/config_votes_color.png) :: :: @@ -318,23 +319,23 @@ La commande \ vous permet de rechercher des suggestions Choisissez les émojis qui représenteront les votes des membres. - ![Gérer les réactions utilisées pour les suggestions, depuis le panel](../assets/suggestions/panel_reactions.png) + ![Gérer les réactions utilisées pour les suggestions, depuis le panel](./assets/suggestions/panel_reactions.png) Vous pouvez également décider de masquer les réactions de la suggestion une fois qu'elle est traitée. - ![Activer / Désactiver le retrait des réactions, depuis le panel](../assets/suggestions/panel_delete_reactions.png) + ![Activer / Désactiver le retrait des réactions, depuis le panel](./assets/suggestions/panel_delete_reactions.png) :: ::tab{ label="Via la commande /config" } Cliquez sur le bouton "Réactions" pour ouvrir le menu de configuration. - ![Bouton "Réactions" depuis la commande /config](../assets/suggestions/config_buttons_reactions.png) + ![Bouton "Réactions" depuis la commande /config](./assets/suggestions/config_buttons_reactions.png) Depuis ce menu, vous pouvez : - Activer / Désactiver la suppression des réactions après traitement - Définir les émojis à utiliser pour les votes favorables, neutres et défavorables - ![Configuration des réactions, via la commande /config](../assets/suggestions/config_reactions.png) + ![Configuration des réactions, via la commande /config](./assets/suggestions/config_reactions.png) :: :: @@ -352,19 +353,19 @@ La commande \ vous permet de rechercher des suggestions - Choisir si l'auteur d'une suggestion doit ou non la confirmer *avant* envoi - Personnaliser le message de confirmation envoyé au membre *après* la publication de sa suggestion - ![Gérer les confirmations pour les suggestions, depuis le panel](../assets/suggestions/panel_confirmation.png) + ![Gérer les confirmations pour les suggestions, depuis le panel](./assets/suggestions/panel_confirmation.png) :: ::tab{ label="Via la commande /config" } Cliquez sur le bouton "Confirmation" pour ouvrir le menu de configuration. - ![Bouton "Confirmation" depuis la commande /config](../assets/suggestions/config_buttons_confirmation.png) + ![Bouton "Confirmation" depuis la commande /config](./assets/suggestions/config_buttons_confirmation.png) Depuis ce menu, vous pouvez : - Choisir si l'auteur d'une suggestion doit la confirmer *avant* envoi - Personnaliser le message de confirmation envoyé au membre *après* la publication de sa suggestion - ![Menu "Confirmation", via la commande /config](../assets/suggestions/config_confirmation.png) + ![Menu "Confirmation", via la commande /config](./assets/suggestions/config_confirmation.png) :: :: @@ -399,15 +400,15 @@ Cette section vous permet de : ::tab{ label="Depuis le panel" } [⫸ Accéder au panel de **DraftBot**](/dashboard/first/suggestions) - ![Gérer la modération des suggestions, depuis le panel](../assets/suggestions/panel_moderation.png) + ![Gérer la modération des suggestions, depuis le panel](./assets/suggestions/panel_moderation.png) :: ::tab{ label="Via la commande /config" } Cliquez sur le bouton "Modération" pour ouvrir le menu de configuration. - ![Bouton "Modération" depuis la commande /config](../assets/suggestions/config_buttons_moderation.png) + ![Bouton "Modération" depuis la commande /config](./assets/suggestions/config_buttons_moderation.png) - ![Menu "Modération", via la commande /config](../assets/suggestions/config_moderation.png) + ![Menu "Modération", via la commande /config](./assets/suggestions/config_moderation.png) :: :: @@ -424,7 +425,7 @@ Cette section permet de : Réglez la limite désirée en faisant varier la jauge, et activez ou non l'option "Suppression par l'auteur". - ![Gérer les restrictions générales des suggestions, depuis le panel](../assets/suggestions/panel_membres.png) + ![Gérer les restrictions générales des suggestions, depuis le panel](./assets/suggestions/panel_membres.png) ::hint{ type="success" } Par défaut, le nombre de suggestions en attente simultanément par membre est illimité ! @@ -434,9 +435,9 @@ Cette section permet de : ::tab{ label="Via la commande /config" } Cliquez sur le bouton "Membres" pour ouvrir le menu de configuration. - ![Bouton "Membres", via la commande /config](../assets/suggestions/config_buttons_membres.png) + ![Bouton "Membres", via la commande /config](./assets/suggestions/config_buttons_membres.png) - ![Menu "Membres", via la commande /config](../assets/suggestions/config_membres.png) + ![Menu "Membres", via la commande /config](./assets/suggestions/config_membres.png) :: :: @@ -460,13 +461,13 @@ Le nom du fil peut être personnalisé avec la variable suivante : ::tab{ label="Depuis le panel" } [⫸ Accéder au panel de **DraftBot**](/dashboard/first/suggestions) - ![Gérer les fils automatiques, depuis le panel](../assets/suggestions/panel_threads_auto.png) + ![Gérer les fils automatiques, depuis le panel](./assets/suggestions/panel_threads_auto.png) :: ::tab{ label="Via la commande /config" } - ![Bouton "Fils de discussion automatiques", via la commande /config](../assets/suggestions/config_buttons_threads_auto.png) + ![Bouton "Fils de discussion automatiques", via la commande /config](./assets/suggestions/config_buttons_threads_auto.png) - ![Menu "Fils de discussion automatiques", via la commande /config](../assets/suggestions/config_threads_auto.png) + ![Menu "Fils de discussion automatiques", via la commande /config](./assets/suggestions/config_threads_auto.png) :: :: @@ -486,13 +487,13 @@ Cette fonctionnalité vous permet de définir des limites de suggestions en atte ::tab{ label="Depuis le panel" } [⫸ Accéder au panel de **DraftBot**](/dashboard/first/suggestions) - ![Gérer les limites par rôle, depuis le panel](../assets/suggestions/panel_suggests_limits_per_roles.png) + ![Gérer les limites par rôle, depuis le panel](./assets/suggestions/panel_suggests_limits_per_roles.png) :: ::tab{ label="Via la commande /config" } - ![Bouton "Limite par rôle", via la commande /config](../assets/suggestions/config_buttons_limits_per_roles.png) + ![Bouton "Limite par rôle", via la commande /config](./assets/suggestions/config_buttons_limits_per_roles.png) - ![Menu "Limite par rôle", via la commande /config](../assets/suggestions/config_limits_per_roles.png) + ![Menu "Limite par rôle", via la commande /config](./assets/suggestions/config_limits_per_roles.png) :: :: @@ -508,11 +509,11 @@ Cette option permet d'activer l'indexation des suggestions, ce qui rend possible ::tab{ label="Depuis le panel" } [⫸ Accéder au panel de **DraftBot**](/dashboard/first/suggestions) - ![Bouton "Tri et recherche", depuis le panel](../assets/suggestions/panel_sort_and_search.png) + ![Bouton "Tri et recherche", depuis le panel](./assets/suggestions/panel_sort_and_search.png) :: ::tab{ label="Via la commande /config" } - ![Bouton "Tri et recherche", via la commande /config](../assets/suggestions/config_buttons_sort_and_search.png) + ![Bouton "Tri et recherche", via la commande /config](./assets/suggestions/config_buttons_sort_and_search.png) :: :: @@ -535,13 +536,13 @@ Lors de la création, vous définissez : Dans la section "Récompenses", cliquez sur "Créer une récompense" : - ![Création de récompense depuis le panel](../assets/suggestions/panel_create_reward.png) + ![Création de récompense depuis le panel](./assets/suggestions/panel_create_reward.png) :: ::tab{ label="Via la commande /config" } Accédez au menu "Suggestions" > "Récompenses" > "Créer une récompense", puis suivez les étapes de configuration. - ![Création de récompense via /config](../assets/suggestions/config_buttons_rewards.png) + ![Création de récompense via /config](./assets/suggestions/config_buttons_rewards.png) :: :: @@ -620,7 +621,7 @@ Lors de la création, vous définissez : Une fois vos récompenses créées, configurez où et comment annoncer leur obtention. -![Annonce d'une récompense de suggestions](../assets/suggestions/bot_reward_announce.png) +![Annonce d'une récompense de suggestions](./assets/suggestions/bot_reward_announce.png) - **Salon dédié** : Choisissez un salon spécifique pour les annonces. - **Message personnalisé** : Personnalisez le message avec les [variables disponibles globalement](/docs/autres/variables), ainsi que `{reward}`, `{target.count}` et `{target.type}` pour afficher la récompense obtenue. @@ -633,13 +634,13 @@ Une fois vos récompenses créées, configurez où et comment annoncer leur obte Dans la section "Récompenses" : - ![Configuration des annonces depuis le panel](../assets/suggestions/panel_rewards_announces.png) + ![Configuration des annonces depuis le panel](./assets/suggestions/panel_rewards_announces.png) :: ::tab{ label="Via la commande /config" } Accédez au menu "Suggestions" > "Récompenses" > "Annonces de récompenses". - ![Configuration des annonces via /config](../assets/suggestions/config_rewards_announces.png) + ![Configuration des annonces via /config](./assets/suggestions/config_rewards_announces.png) :: :: diff --git a/docs/5.communaute/1.tickets.md b/docs/fr/5.community/1.tickets.md similarity index 96% rename from docs/5.communaute/1.tickets.md rename to docs/fr/5.community/1.tickets.md index 663152642..c26e02273 100644 --- a/docs/5.communaute/1.tickets.md +++ b/docs/fr/5.community/1.tickets.md @@ -1,4 +1,5 @@ --- +slug: /communaute/tickets title: Tickets description: Offrez à vos membres la possibilité de créer des tickets afin d'avoir une discussion privée avec l'équipe de votre serveur. navigation.icon: 'twemoji:admission-tickets' @@ -7,7 +8,7 @@ contributors: ['toutouille-db', 'imroxxor', 'rababio4579'] updatedAt: '2023-06-16' --- -![Menu de configuration](../assets/tickets/config_menu.png) +![Menu de configuration](./assets/tickets/config_menu.png) ### Créer un ticket @@ -40,7 +41,7 @@ Le salon de réception des tickets permet de recevoir les demandes de tickets de [⫸ Accéder au panel de **DraftBot**](/dashboard/first/tickets) - ![Menu de configuration](../assets/tickets/panel_config.png) + ![Menu de configuration](./assets/tickets/panel_config.png) Sur le panel, dans la catégorie **Communautaire**, vous retrouverez sur la partie des **Tickets**, les mêmes possibilités de configuration qu'avec les commandes Slash sur Discord. Le message d'ouverture sera prochainement configurable sur le panel. @@ -66,7 +67,7 @@ Le salon de réception des tickets permet de recevoir les demandes de tickets de Si le système n'est pas configuré, un seul bouton "Configurer le système" sera visible. Cliquez dessus pour commencer la configuration. :: - ![Menu de configuration de départ](../assets/tickets/menu_config.png) + ![Menu de configuration de départ](./assets/tickets/menu_config.png) > **Catégorie** ➜ Permet de définir la catégorie de création des tickets. Vous pouvez demander à DraftBot de la créer automatiquement pour vous ou bien d'en utiliser une existante. @@ -98,7 +99,7 @@ Le salon de réception des tickets permet de recevoir les demandes de tickets de ### Message d'ouverture -![Configuration du message d'ouverture](../assets/tickets/config_reason.png) +![Configuration du message d'ouverture](./assets/tickets/config_reason.png) Le message d'ouverture permet aux membres de sélectionner une raison d'ouverture prédéfinie à partir d'un bouton ou sélecteur pour demander un ticket. Il peut être utilisé comme alternative ou complément de la commande \. Lors de sa première configuration, depuis la commande \ dans la section **Tickets** puis en cliquant sur "Message d'ouverture", vous devrez sélectionner le type de message d'ouverture souhaité : diff --git a/docs/5.communaute/2.starboards.md b/docs/fr/5.community/2.starboards.md similarity index 90% rename from docs/5.communaute/2.starboards.md rename to docs/fr/5.community/2.starboards.md index 78dca48e3..e067ac01b 100644 --- a/docs/5.communaute/2.starboards.md +++ b/docs/fr/5.community/2.starboards.md @@ -1,4 +1,5 @@ --- +slug: /communaute/starboards title: Starboards description: Mettez en avant les meilleurs messages de votre serveur dans un salon dédié en interagissant avec une réaction. navigation.icon: 'twemoji:star' @@ -23,19 +24,19 @@ Le système de starboard met en avant les messages recevant un certain nombre de Descendez dans la liste des systèmes et vous trouverez la section dédiée aux starboards. - ![La configuration via le panel](../assets/starboards/panel_view.png) + ![La configuration via le panel](./assets/starboards/panel_view.png) ### Créer un starboard Pour créer un starboard, descendez dans la partie dédiée aux starboards et cliquez sur "Créer un hub". Par la suite, DraftBot vous proposera une sorte de menu de configuration pour configurer votre premier starboard. - ![Menu de création](../assets/starboards/panel_create.png) + ![Menu de création](./assets/starboards/panel_create.png) ::hint{ type="info" } Vous pourrez ensuite modifier ou supprimer les starboards existants via les boutons "Modifier" et "Supprimer". Vous pouvez aussi désactiver votre starboard tout en le conservant en décochant la case à gauche du bouton "Modifier". - ![La configuration via le panel](../assets/starboards/panel_hub_line.png) + ![La configuration via le panel](./assets/starboards/panel_hub_line.png) :: :: @@ -48,7 +49,7 @@ Le système de starboard met en avant les messages recevant un certain nombre de Vous pouvez notamment définir le salon du starboard, ainsi que son nom. La personnalisation de l'émoji est réservée aux serveurs [premium](/premium) <:icon_premium:1096140508625125417>. - ![La configuration via la commande /config](../assets/starboards/config_example.png) + ![La configuration via la commande /config](./assets/starboards/config_example.png) ::hint{ type="info" } Vous pourrez ensuite modifier ou supprimer les starboards existants via les boutons "Modifier" et "Supprimer". @@ -108,11 +109,11 @@ Vous pouvez personnaliser le message qui sera envoyé dans le salon configuré a ::tabs ::tab{ label="Message via un Embed" } - ![Message via un Embed](../assets/starboards/bot_message.png) + ![Message via un Embed](./assets/starboards/bot_message.png) :: ::tab{ label="Message sans Embed" } - ![Message sans Embed](../assets/starboards/bot_message_2.png) + ![Message sans Embed](./assets/starboards/bot_message_2.png) :: :: diff --git a/docs/5.communaute/3.roles-reactions.md b/docs/fr/5.community/3.reaction-roles.md similarity index 91% rename from docs/5.communaute/3.roles-reactions.md rename to docs/fr/5.community/3.reaction-roles.md index b0295aa8f..966a42807 100644 --- a/docs/5.communaute/3.roles-reactions.md +++ b/docs/fr/5.community/3.reaction-roles.md @@ -1,4 +1,5 @@ --- +slug: /communaute/roles-reactions title: Rôles-Réactions description: Avec le système de rôles-réactions, vos membres pourront facilement choisir des rôles depuis des réactions. navigation.icon: 'twemoji:radio-button' @@ -11,7 +12,7 @@ updatedAt: '2023-10-08' Un message avec des rôles-réactions vous permet de mettre à disposition de vos utilisateurs un message accompagné de réactions permettant de s'auto-attribuer des rôles. -![Exemple de rôle réaction](../assets/roles-reactions/bot_view.png) +![Exemple de rôle réaction](./assets/reaction-roles/bot_view.png) ## Créer un rôle-réaction @@ -39,16 +40,16 @@ Un message avec des rôles-réactions vous permet de mettre à disposition de vo ::hint{ type="info" } Vous pouvez nommer vos rôles-réactions. Pour ce faire, rendez-vous dans la liste contenant les rôles-réactions existants puis modifiez le nom du rôle-réaction en cliquant sur "SANS NOM". - ![Zone de texte de l'encadré d'un rôle-réaction](../assets/roles-reactions/panel_rename.png) + ![Zone de texte de l'encadré d'un rôle-réaction](./assets/reaction-roles/panel_rename.png) :: - ![Panel de création d'un nouveau rôle-réaction](../assets/roles-reactions/panel_view.png) + ![Panel de création d'un nouveau rôle-réaction](./assets/reaction-roles/panel_view.png) :: ::tab{ label="Via la commande /config" } Pour créer un rôle-réaction, rendez-vous dans \ puis dans la rubrique "🧿 Rôles-Réactions" (*dans le sélecteur*). Ensuite, cliquez sur "Créer un nouveau rôle-réaction". - ![Configuration des rôles-réactions via /config](../assets/roles-reactions/config_view.png) + ![Configuration des rôles-réactions via /config](./assets/reaction-roles/config_view.png) Une fois cela fait, plusieurs choix s'offriront à vous : @@ -66,7 +67,7 @@ Un message avec des rôles-réactions vous permet de mettre à disposition de vo - **Depuis l'Embed Creator du [panel](/dashboard/first/messages)** : Permet la création complète et facile d'un message ou d'un embed entièrement personnalisable. :: - ![Message de création d'un nouveau rôle-réaction](../assets/roles-reactions/config_target_message.png) + ![Message de création d'un nouveau rôle-réaction](./assets/reaction-roles/config_target_message.png) ::hint{ type="warning" } Les rôles-réactions ne peuvent être ajoutés qu'aux messages envoyés par **DraftBot**. @@ -104,7 +105,7 @@ Un message avec des rôles-réactions vous permet de mettre à disposition de vo Enfin, cliquez sur "Modifier" : votre rôle-réaction est modifié ! :: - ![Modifier un rôle-réaction](../assets/roles-reactions/panel_edit.png) + ![Modifier un rôle-réaction](./assets/reaction-roles/panel_edit.png) :: ::tab{ label="Via la commande /config" } @@ -136,7 +137,7 @@ Un message avec des rôles-réactions vous permet de mettre à disposition de vo - **Ajout du rôle définitif** : Retrait de la réaction de l'utilisateur lors de l'ajout du rôle et impossibilité de retirer le rôle. - **Retrait du rôle définitif** : Retrait de la réaction de l'utilisateur lors du retrait du rôle et impossibilité de se remettre le rôle. - ![Message de gestion des rôles-réactions](../assets/roles-reactions/config_manage.png) + ![Message de gestion des rôles-réactions](./assets/reaction-roles/config_manage.png) ::hint{ type="success" } Vous savez maintenant comment gérer votre rôle-réaction ! diff --git a/docs/5.communaute/4.interserveurs.md b/docs/fr/5.community/4.interserver.md similarity index 94% rename from docs/5.communaute/4.interserveurs.md rename to docs/fr/5.community/4.interserver.md index 10dede691..7601f3cb8 100644 --- a/docs/5.communaute/4.interserveurs.md +++ b/docs/fr/5.community/4.interserver.md @@ -1,4 +1,5 @@ --- +slug: /communaute/interserveurs title: Interserveurs description: Des salons interserveurs permettent de communiquer entre deux serveurs, DraftBot prenant l'apparence de l'utilisateur, il transmet les messages. navigation.icon: 'twemoji:clockwise-vertical-arrows' @@ -24,7 +25,7 @@ La commande \ [crée une **fréquence unique**](#créer Chaque fréquence est propre à un salon et ne peut pas être dupliquée. :: -![Réponse de DraftBot lors de la génération](../assets/interserveurs/config_generate.png) +![Réponse de DraftBot lors de la génération](./assets/interserver/config_generate.png) ### /interserveur lier @@ -34,7 +35,7 @@ Une fois la fréquence créée, utilisez \ dans le **deuxiè Les messages envoyés dans un salon seront automatiquement répliqués dans l'autre salon via DraftBot. :: -![Exemple de la commande à effectuer lors de la liaison des deux salons](../assets/interserveurs/config_link.png) +![Exemple de la commande à effectuer lors de la liaison des deux salons](./assets/interserver/config_link.png) ### /interserveur gérer diff --git a/docs/5.communaute/5.salons-vocaux-temporaires.md b/docs/fr/5.community/5.temporary-voice-channels.md similarity index 98% rename from docs/5.communaute/5.salons-vocaux-temporaires.md rename to docs/fr/5.community/5.temporary-voice-channels.md index a4df075ea..9217b7853 100644 --- a/docs/5.communaute/5.salons-vocaux-temporaires.md +++ b/docs/fr/5.community/5.temporary-voice-channels.md @@ -1,4 +1,5 @@ --- +slug: /communaute/salons-vocaux-temporaires title: Salons vocaux temporaires description: Les salons vocaux temporaires offrent la possibilité à vos membres de créer des salons qu'ils pourront personnaliser et configurer selon leurs goûts. navigation.icon: 'twemoji:speaker-high-volume' @@ -15,13 +16,13 @@ Lorsque vous créerez un salon vocal temporaire, vous aurez la possibilité de c Lorsque le dernier membre présent dans le salon se déconnectera, le salon temporaire sera automatiquement supprimé par **DraftBot**. -![Démonstration du système](../assets/salons-vocaux-temporaires/view_guide.gif) +![Démonstration du système](./assets/temporary-voice-channels/view_guide.gif) ## Utilisation de l'embed de réglages Lorsque vous créez un salon vocal, un embed apparaît dans le **salon textuel du vocal**. Il contient toutes les permissions de modération liées au salon vocal. -![Illustration des boutons du configurateur](../assets/salons-vocaux-temporaires/view_button.png) +![Illustration des boutons du configurateur](./assets/temporary-voice-channels/view_button.png) - **Ouvert** : Cette fonction permet d'ouvrir le salon à tous les membres, excepté ceux de la **liste noire** et des dérogations par défaut. @@ -84,13 +85,13 @@ La configuration du système de salons vocaux temporaires peut se faire depuis l Vous devez vous rendre sur le panel puis dans la catégorie [Communautaire](/dashboard/first/community). - ![Aperçu du panel](../assets/salons-vocaux-temporaires/panel_hub.png) + ![Aperçu du panel](./assets/temporary-voice-channels/panel_hub.png) :: ::tab{ label="Via la commande /config" } Exécutez la commande \, puis sélectionnez depuis le menu déroulant `Salons vocaux temporaires` ➔ `Créer un hub`. - ![Aperçu de la commande /config](../assets/salons-vocaux-temporaires/config_hub.png) + ![Aperçu de la commande /config](./assets/temporary-voice-channels/config_hub.png) :: :: @@ -556,7 +557,7 @@ Lorsque cette option est activée, les membres présents dans un salon vocal tem ### Sauvegardes Cette option permet d'activer ou de désactiver le système de **sauvegardes de configuration** pour les salons vocaux temporaires. -![Menu d'une sauvegarde](../assets/salons-vocaux-temporaires/saves.png) +![Menu d'une sauvegarde](./assets/temporary-voice-channels/saves.png) ::hint{ type="info" } Cette fonctionnalité est réservée aux serveurs [premium](/premium) <:icon_premium:1096140508625125417>. diff --git a/docs/5.communaute/6.messages.md b/docs/fr/5.community/6.messages.md similarity index 93% rename from docs/5.communaute/6.messages.md rename to docs/fr/5.community/6.messages.md index 0eb45d2d1..25bc5ed6a 100644 --- a/docs/5.communaute/6.messages.md +++ b/docs/fr/5.community/6.messages.md @@ -1,4 +1,5 @@ --- +slug: /communaute/messages title: Messages description: Créez des messages interactifs, avec une identité personnalisée et des actions configurables ! navigation.icon: 'twemoji:pen' @@ -13,7 +14,7 @@ Vous pouvez créer un message sur le panel en [**`cliquant ici`**](/dashboard/fi Le panel vous offre la possibilité de créer et envoyer des messages 100% personnalisables en fonction de vos besoins. -![Menu de départ pour rédiger votre message](../assets/messages/panel_view.png) +![Menu de départ pour rédiger votre message](./assets/messages/panel_view.png) En haut de l'éditeur, vous choisissez d'abord le **format** de votre message : - **Embeds :** le format classique, décrit ci-dessous. Vous composez votre message avec du contenu, des embeds, des images, des boutons et des sélecteurs. @@ -35,7 +36,7 @@ En appuyant sur le bouton **Contenu** vous pourrez rédiger un message classique Vous pouvez générer des horaires dynamiques ([timestamp](/docs/autres/timestamps)) facilement avec le bouton <:editor_timestamp:1520828760524591154>. Ces horaires s'adapteront automatiquement aux fuseaux horaires des utilisateurs de votre serveur. -![Comparez ici la différence entre l'édition et le rendu final](../assets/messages/panel_content.png) +![Comparez ici la différence entre l'édition et le rendu final](./assets/messages/panel_content.png) ::hint{ type="info" } En raison de restrictions imposées par Discord, le contenu est limité à 2000 caractères. @@ -58,7 +59,7 @@ En tapant un caractère déclencheur dans n'importe quel champ de texte, **Draft En appuyant sur le bouton **Image** vous pourrez alors ajouter une image directement dans votre message. En cliquant dessus, vous pourrez choisir d'importer une image depuis votre appareil, ou depuis un lien. -![Le sélecteur d'image avec les options de description et de spoiler](../assets/messages/panel_image_options.png) +![Le sélecteur d'image avec les options de description et de spoiler](./assets/messages/panel_image_options.png) Pour chaque image, deux options sont disponibles : - **Description (texte alternatif) :** un texte qui décrit l'image. Il améliore l'accessibilité (lecteurs d'écran) et s'affiche si l'image ne peut pas être chargée. La description est limitée à `1024` caractères. @@ -74,7 +75,7 @@ Vous pouvez aussi regrouper plusieurs images dans une **galerie**, jusqu'à `10` En appuyant sur le bouton **Embed** vous pourrez rédiger un message détaillé regroupant plusieurs informations. -![Comparez ici la différence entre l'édition et le rendu final](../assets/messages/panel_embed.png) +![Comparez ici la différence entre l'édition et le rendu final](./assets/messages/panel_embed.png) Voici la signification de chaque zone de texte : - **Nom de l'auteur :** Vous pouvez y insérer du texte pour présenter l'auteur, votre pseudonyme ou le nom de votre serveur. @@ -113,7 +114,7 @@ Plusieurs boutons sont situés à droite et à gauche de l'éditeur d'embed : Lorsque votre message contient des mentions (un membre, un rôle, `@everyone` ou `@here`), le bouton **Mentions** vous permet de contrôler précisément qui sera réellement notifié. C'est pratique pour écrire une mention sans pour autant envoyer une notification à tout le monde. -![Menu de configuration des mentions du message](../assets/messages/panel_mentions.png) +![Menu de configuration des mentions du message](./assets/messages/panel_mentions.png) ::hint{ type="info" } Seules les mentions déjà présentes dans le texte de votre message apparaissent dans ce menu. Ce réglage ne sert pas à ajouter des mentions, mais à décider lesquelles déclenchent une notification. @@ -145,7 +146,7 @@ Votre message a été envoyé selon vos paramétrages. ### Récupérer un message Vous pouvez récupérer un message en appuyant sur le bouton orange `Récupérer un message` situé en haut à droite de la page. Un menu apparaîtra alors pour retrouver le message via l'identifiant du message et son salon d'origine. Vous pouvez également retrouver le message via le lien du message. -![Menu pour récupérer un message envoyé avec DraftBot](../assets/messages/panel_fetch_message.png) +![Menu pour récupérer un message envoyé avec DraftBot](./assets/messages/panel_fetch_message.png) ::hint{ type="warning" } Vous ne pouvez pas récupérer un message supprimé du salon. @@ -163,7 +164,7 @@ Ce format est tout indiqué lorsque le format Embeds vous bride : pour une mise Pour l'activer, utilisez le sélecteur de format en haut de l'éditeur et choisissez **Avancé**. -![L'éditeur de message en mode Avancé](../assets/messages/panel_advanced_editor.png) +![L'éditeur de message en mode Avancé](./assets/messages/panel_advanced_editor.png) ::hint{ type="warning" } Basculer entre **Embeds** et **Avancé** réinitialise le contenu en cours : cette action est irréversible. Une confirmation vous est demandée dès qu'il y a du contenu à perdre. @@ -179,7 +180,7 @@ Comme au format Embeds, le bouton **Mentions** reste disponible en mode Avancé Une barre de boutons vous permet d'ajouter les blocs suivants à votre message : -![La barre d'ajout de blocs du mode Avancé](../assets/messages/panel_advanced_blocks.png) +![La barre d'ajout de blocs du mode Avancé](./assets/messages/panel_advanced_blocks.png) ::hint{ type="info" } Tous les blocs se réorganisent par glisser-déposer (y compris dans ou hors d'un conteneur) et peuvent être dupliqués ou supprimés. Un message ne peut pas dépasser `40` composants. @@ -195,7 +196,7 @@ Depuis un bloc de texte, vous pouvez aussi ajouter une **image** (sous forme de Ajoute une ou plusieurs images sous forme de **galerie**, disposées automatiquement en grille. Une galerie peut contenir jusqu'à `10` images. Comme dans le mode Embeds, chaque image peut recevoir une **description** (texte alternatif, `1024` caractères maximum) et être marquée comme **spoiler**. -![Visualisation d'une galerie d'images](../assets/messages/panel_advanced_images.png) +![Visualisation d'une galerie d'images](./assets/messages/panel_advanced_images.png) ### Séparateur @@ -207,7 +208,7 @@ Insère un espace entre deux blocs pour aérer votre message. Vous pouvez : Le conteneur (bouton **Container**) regroupe plusieurs blocs (texte, images, séparateurs, boutons...) à l'intérieur d'un cadre, à la manière d'un embed. Vous pouvez lui donner une **couleur d'accentuation** (la barre colorée à gauche) ou n'en mettre aucune, et masquer l'ensemble de son contenu derrière un **spoiler**. -![Container dans l'éditeur](../assets/messages/panel_advanced_container.png) +![Container dans l'éditeur](./assets/messages/panel_advanced_container.png) ::hint{ type="info" } Un conteneur ne peut pas en contenir un autre. @@ -233,7 +234,7 @@ Vous avez la possibilité de créer des **boutons** et **sélecteurs** que les m Pour créer un bouton, cliquez sur le bouton intitulé `Bouton` dans l'éditeur. -![Menu pour configurer un bouton](../assets/messages/panel_bouton_interaction.png) +![Menu pour configurer un bouton](./assets/messages/panel_bouton_interaction.png) Ce menu vous permet de configurer : - Le **nom** du bouton (il sera affiché sur le bouton, et visible par tous) ; @@ -245,7 +246,7 @@ Ce menu vous permet de configurer : Un sélecteur est un bouton affichant un menu déroulant lorsqu'on clique dessus. Chaque ligne de ce menu peut déclencher une action distincte. -![Menu pour configurer un sélecteur](../assets/messages/panel_selector_interaction.png) +![Menu pour configurer un sélecteur](./assets/messages/panel_selector_interaction.png) Pour créer un sélecteur interactif, il faut cliquer sur le bouton intitulé `Sélecteur`. Vous pouvez définir le texte qui sera affiché sur votre sélecteur (par défaut : "*Choisissez une option*"). Ensuite, vous avez le choix entre deux modes de sélecteur : - **Mode simple** : toutes les options du sélecteur déclenchent le même type d'action parmi : @@ -282,7 +283,7 @@ Dans le menu "Type de cible", vous pouvez choisir la manière dont le message se - **Message privé** : DraftBot enverra alors le message directement à l'utilisateur, dans ses messages privés. Une fois votre choix fait, vous pouvez créer votre message en utilisant l'éditeur inclus directement dans le menu de configuration du sélecteur : -![Vous pouvez rédiger votre message ici.](../assets/messages/panel_interaction_send_message_preview.png) +![Vous pouvez rédiger votre message ici.](./assets/messages/panel_interaction_send_message_preview.png) #### Envoyer un message sauvegardé @@ -337,11 +338,11 @@ Cette action permet de rediriger l’utilisateur vers l’URL de votre choix lor Un profil de message est un utilisateur fictif à part entière avec lequel il vous sera possible d'envoyer des messages. -![Un message inspirant d'un utilisateur fictif...](../assets/messages/bot_profil.png) +![Un message inspirant d'un utilisateur fictif...](./assets/messages/bot_profil.png) Vous pouvez accéder aux profils en cliquant sur la photo de profil de DraftBot. Une fois dans le menu, la création de nouveaux profils sera possible depuis le bouton <:edit:1389714236418298017>. -![Menu pour ajouter un nouveau profil](../assets/messages/panel_create_profil.png) +![Menu pour ajouter un nouveau profil](./assets/messages/panel_create_profil.png) Vous pourrez alors importer une photo de profil ou fournir le lien d'une image. Vous devrez aussi ajouter un pseudo. Une fois votre profil créé, celui-ci sera utilisable dans la conception de vos messages, que ce soit via le panel ou les commandes \ ou \. @@ -357,7 +358,7 @@ En plus du panel, deux commandes vous permettent d'envoyer un message directemen ### La commande /envoyer Avec cette commande, vous avez la possibilité d'envoyer un message rapidement dans un salon de votre serveur. Pour l'utiliser, vous devez posséder la permission **Administrateur** ou une dérogation d'utilisation de la commande. -![La commande /envoyer avec les arguments](../assets/messages/bot_send_command.png) +![La commande /envoyer avec les arguments](./assets/messages/bot_send_command.png) Voici ce que signifient ces paramètres : - **Contenu** : Le texte à faire dire à DraftBot, sous forme de message classique. - **Image :** Vous pouvez joindre une image à votre message. @@ -366,13 +367,13 @@ Voici ce que signifient ces paramètres : ### La commande /embed -![La commande /embed avec les paramètres d'envoi](../assets/messages/bot_embed_command.png) +![La commande /embed avec les paramètres d'envoi](./assets/messages/bot_embed_command.png) Voici ce que signifient ces paramètres : - **Salon :** Dans quel salon **DraftBot** devra-t-il envoyer le message ? Laissez vide si c'est le même salon que celui depuis lequel vous lancez la commande. - **Modifier :** Si vous souhaitez modifier un message, utilisez ce champ supplémentaire en y incluant le lien du message à modifier. Une fois la commande lancée, un menu va apparaître. C'est dans ce menu que vous allez devoir rédiger votre message. -![Menu qui apparaît une fois la commande lancée](../assets/messages/bot_embed_modal.png) +![Menu qui apparaît une fois la commande lancée](./assets/messages/bot_embed_modal.png) Chaque zone de texte correspond à un type de contenu : - **Contenu :** Le texte de **DraftBot** apparaîtra sous forme de message classique. - **Titre de l'embed :** Ce sera le titre de votre embed. diff --git a/docs/5.communaute/7.messages-recurrents.md b/docs/fr/5.community/7.recurring-messages.md similarity index 93% rename from docs/5.communaute/7.messages-recurrents.md rename to docs/fr/5.community/7.recurring-messages.md index 98636e742..02f0ff255 100644 --- a/docs/5.communaute/7.messages-recurrents.md +++ b/docs/fr/5.community/7.recurring-messages.md @@ -1,4 +1,5 @@ --- +slug: /communaute/messages-recurrents title: Messages récurrents description: DraftBot vous permet de créer des messages qui s'envoient de manière récurrente, avec quelques fonctionnalités supplémentaires. navigation.icon: 'twemoji:bell' @@ -58,7 +59,7 @@ updatedAt: '2025-01-21' - `"Message dupliqué"` ➜ Une fois cette option activée, le message récurrent ne s'enverra pas s'il n'y a pas eu de message depuis le dernier envoi. - `"Message collant"` ➜ Lors de l'envoi du message récurrent, le bot supprimera automatiquement le message précédent ([premium](/premium/) <:icon_premium:1096140508625125417>) - ![Visuel de l'interface](../assets/messages-recurrents/panel_view.png) + ![Visuel de l'interface](./assets/recurring-messages/panel_view.png) :: ::tab{ label="Via la commande /config" } @@ -69,7 +70,7 @@ updatedAt: '2025-01-21' Pour commencer, exécutez la commande \ puis sélectionnez ":alarm_clock: Messages récurrents" dans le sélecteur. Pour terminer, cliquez sur `"Créer"`. DraftBot vous guidera tout au long de la procédure : - ![Aperçu du système de configuration des messages récurrents](../assets/messages-recurrents/config_view.png) + ![Aperçu du système de configuration des messages récurrents](./assets/recurring-messages/config_view.png) ### Nommer votre message récurrent @@ -87,7 +88,7 @@ updatedAt: '2025-01-21' ***Ciblé** : Envoi du message à un jour et une heure ciblée.* - ![Aperçu de la sélection du type d'intervalle d'envoi](../assets/messages-recurrents/config_target_time.png) + ![Aperçu de la sélection du type d'intervalle d'envoi](./assets/recurring-messages/config_target_time.png) ::tabs ::tab{ label="Relatif" } @@ -106,7 +107,7 @@ updatedAt: '2025-01-21' Vous pouvez également décider de limiter l'envoi de votre message récurrent à certains jours. Pour ce faire, choisissez les jours où le message **doit être envoyé** dans le sélecteur. - ![Aperçu du sélecteur de configuration des jours d'envoi.](../assets/messages-recurrents/config_days.png) + ![Aperçu du sélecteur de configuration des jours d'envoi.](./assets/recurring-messages/config_days.png) :: ::tab{ label="Ciblé" } @@ -123,7 +124,7 @@ updatedAt: '2025-01-21' ### Jours d'envoi Vous pouvez également décider de limiter l'envoi de votre message récurrent à certains jours. Pour ce faire, choisissez les jours où le message __doit être envoyé__ dans le sélecteur. - ![Aperçu du sélecteur de configuration des jours d'envoi.](../assets/messages-recurrents/config_days.png) + ![Aperçu du sélecteur de configuration des jours d'envoi.](./assets/recurring-messages/config_days.png) :: :: @@ -142,7 +143,7 @@ updatedAt: '2025-01-21' Ce message est assez peu personnalisable. C'est pourquoi nous vous conseillons de créer un message entièrement customisé depuis le [panel](/dashboard/first/messages) et de le sélectionner par la suite grâce à son [identifiant](/docs/autres/recuperer-un-identifiant#identifiant-dun-message). :: - ![Aperçu des différents types de messages](../assets/messages-recurrents/config_target_message.png) + ![Aperçu des différents types de messages](./assets/recurring-messages/config_target_message.png) #### Sélectionner le salon diff --git a/docs/5.communaute/8.notifications-sociales.md b/docs/fr/5.community/8.social-notifications.md similarity index 90% rename from docs/5.communaute/8.notifications-sociales.md rename to docs/fr/5.community/8.social-notifications.md index d11b3fc49..6aff85175 100644 --- a/docs/5.communaute/8.notifications-sociales.md +++ b/docs/fr/5.community/8.social-notifications.md @@ -1,4 +1,5 @@ --- +slug: /communaute/notifications-sociales title: Notifications sociales description: Rendez publique votre activité sur les autres réseaux sociaux ! navigation.icon: 'twemoji:inbox-tray' @@ -12,7 +13,7 @@ updatedAt: '2025-07-31' Ce module permet **d'afficher** un message lors de la **publication d'une vidéo [`YouTube`](https://www.youtube.com/).** -![Notification sociale YouTube](../assets/notifications-sociales/bot_youtube.png) +![Notification sociale YouTube](./assets/social-notifications/bot_youtube.png) L'annonce est entièrement **personnalisable**. Cela permet donc aux administrateurs de configurer **un rôle notifié**, activer **la publication sur d'autres serveurs**, choisir la **couleur** de l'embed d'annonce ([premium](/premium) <:icon_premium:1096140508625125417>), ainsi que d'autres éléments visuels. @@ -22,7 +23,7 @@ L'annonce est entièrement **personnalisable**. Cela permet donc aux administrat Vous avez la possibilité de sélectionner les **types de vidéos** qui seront publiées, dans la configuration de la chaîne YouTube. Ainsi, vous pouvez ajouter les vidéos, les shorts et les lives. -![Éléments autorisés](../assets/notifications-sociales/panel_youtube_allowed.png) +![Éléments autorisés](./assets/social-notifications/panel_youtube_allowed.png) Vous pouvez personnaliser le message d'annonce avec différentes variables : @@ -42,7 +43,7 @@ Vous pouvez personnaliser le message d'annonce avec différentes variables : **Les notifications sociales Twitch** permettent d'envoyer un message **personnalisable** lors du **lancement d'un live**. Un serveur peut configurer jusqu'à **5 notifications sociales Twitch différentes** . -![Notification sociale Twitch](../assets/notifications-sociales/bot_twitch.png) +![Notification sociale Twitch](./assets/social-notifications/bot_twitch.png) ::hint{ type="info" } Afin d'éviter un spam d'embed, un délai de 30 minutes a été mis en place entre deux annonces de la même personne. @@ -71,7 +72,7 @@ Ce module permet d'afficher une notification lors d'une publication dans un **su Voici un exemple de message de notification : -![Notification sociale Reddit](../assets/notifications-sociales/bot_reddit.png) +![Notification sociale Reddit](./assets/social-notifications/bot_reddit.png) ::hint{ type="info" } Dans le but de rendre opérationnelle l'option **Upvotes minimum** pour l'ensemble des serveurs, un délai minimal de **15** minutes entre la publication sur Reddit et l'annonce par DraftBot a été instauré. @@ -96,7 +97,7 @@ Ce module permet d'envoyer une annonce lorsqu'un jeu gratuit est disponible sur Le rôle mentionné, la couleur de l'annonce ainsi que le salon d'envoi peuvent être personnalisés. :: -![Notification sociale Epic Games](../assets/notifications-sociales/bot_epicgames.png) +![Notification sociale Epic Games](./assets/social-notifications/bot_epicgames.png) ### Steam @@ -106,7 +107,7 @@ Ce module permet d'envoyer une annonce lorsqu'un jeu gratuit est disponible sur Le rôle mentionné, la couleur de l'annonce ainsi que le salon d'envoi peuvent être personnalisés. :: -![Notification sociale Steam](../assets/notifications-sociales/bot_steam.png) +![Notification sociale Steam](./assets/social-notifications/bot_steam.png) ### GOG @@ -115,7 +116,7 @@ Ce module permet d'envoyer une annonce lorsqu'un jeu gratuit est disponible sur ::hint{ type="info" } Le rôle mentionné, la couleur de l'annonce ainsi que le salon d'envoi peuvent être personnalisés. :: -![Notification sociale GOG](../assets/notifications-sociales/bot_gog.png) +![Notification sociale GOG](./assets/social-notifications/bot_gog.png) ### Dealabs @@ -129,7 +130,7 @@ Ce module permet d'envoyer une notification lorsqu'une réduction devient "hot" Le rôle mentionné, la couleur de l'annonce ainsi que le salon d'envoi peuvent être personnalisés. :: -![Notification Sociale Dealabs](../assets/notifications-sociales/bot_dealabs.png) +![Notification Sociale Dealabs](./assets/social-notifications/bot_dealabs.png) ### Flux RSS @@ -181,13 +182,13 @@ Vous pouvez activer séparément tous les types de notifications sociales. - Les **onglets**, qui peuvent être configurés pour plusieurs chaînes ou forums. - Les **modules**, qui activent des notifications ne demandant que très peu de configuration. - ![Configuration via le panel](../assets/notifications-sociales/panel_view.png) + ![Configuration via le panel](./assets/social-notifications/panel_view.png) :: ::tab{ label="Via la commande /config" } Pour ajouter une annonce lors d'un évènement (publication d'une vidéo, d'un post, lancement d'un live, etc.), exécutez la commande \ et sélectionnez le système **Notifications sociales**. Vous accéderez alors à l'onglet ci-dessous. - ![/config > Notifications Sociales](../assets/notifications-sociales/config_view.png) + ![/config > Notifications Sociales](./assets/social-notifications/config_view.png) Sélectionnez la plateforme de votre choix et configurez-la en vous laissant guider. :: diff --git a/docs/5.communaute/_dir.yml b/docs/fr/5.community/_dir.yml similarity index 87% rename from docs/5.communaute/_dir.yml rename to docs/fr/5.community/_dir.yml index 09d9ade1c..58dff1238 100644 --- a/docs/5.communaute/_dir.yml +++ b/docs/fr/5.community/_dir.yml @@ -1,3 +1,4 @@ +slug: /communaute/_dir title: Communauté description: Les espaces d'échange entre vos membres et les outils pour les faire vivre. navigation.icon: 'twemoji:busts-in-silhouette' diff --git a/docs/fr/5.community/assets/interserver/config_generate.png b/docs/fr/5.community/assets/interserver/config_generate.png new file mode 100644 index 000000000..3ec0ea3a5 Binary files /dev/null and b/docs/fr/5.community/assets/interserver/config_generate.png differ diff --git a/docs/fr/5.community/assets/interserver/config_link.png b/docs/fr/5.community/assets/interserver/config_link.png new file mode 100644 index 000000000..9c19758ba Binary files /dev/null and b/docs/fr/5.community/assets/interserver/config_link.png differ diff --git a/docs/fr/5.community/assets/messages/bot_embed_command.png b/docs/fr/5.community/assets/messages/bot_embed_command.png new file mode 100644 index 000000000..9c46b61bf Binary files /dev/null and b/docs/fr/5.community/assets/messages/bot_embed_command.png differ diff --git a/docs/fr/5.community/assets/messages/bot_embed_modal.png b/docs/fr/5.community/assets/messages/bot_embed_modal.png new file mode 100644 index 000000000..fec13c998 Binary files /dev/null and b/docs/fr/5.community/assets/messages/bot_embed_modal.png differ diff --git a/docs/fr/5.community/assets/messages/bot_profil.png b/docs/fr/5.community/assets/messages/bot_profil.png new file mode 100644 index 000000000..a0f706a43 Binary files /dev/null and b/docs/fr/5.community/assets/messages/bot_profil.png differ diff --git a/docs/fr/5.community/assets/messages/bot_send_command.png b/docs/fr/5.community/assets/messages/bot_send_command.png new file mode 100644 index 000000000..dae6a6870 Binary files /dev/null and b/docs/fr/5.community/assets/messages/bot_send_command.png differ diff --git a/docs/fr/5.community/assets/messages/panel_advanced_blocks.png b/docs/fr/5.community/assets/messages/panel_advanced_blocks.png new file mode 100644 index 000000000..e42c92209 Binary files /dev/null and b/docs/fr/5.community/assets/messages/panel_advanced_blocks.png differ diff --git a/docs/fr/5.community/assets/messages/panel_advanced_container.png b/docs/fr/5.community/assets/messages/panel_advanced_container.png new file mode 100644 index 000000000..88eb3f79d Binary files /dev/null and b/docs/fr/5.community/assets/messages/panel_advanced_container.png differ diff --git a/docs/fr/5.community/assets/messages/panel_advanced_editor.png b/docs/fr/5.community/assets/messages/panel_advanced_editor.png new file mode 100644 index 000000000..a6940e724 Binary files /dev/null and b/docs/fr/5.community/assets/messages/panel_advanced_editor.png differ diff --git a/docs/fr/5.community/assets/messages/panel_advanced_images.png b/docs/fr/5.community/assets/messages/panel_advanced_images.png new file mode 100644 index 000000000..479a60045 Binary files /dev/null and b/docs/fr/5.community/assets/messages/panel_advanced_images.png differ diff --git a/docs/fr/5.community/assets/messages/panel_bouton_interaction.png b/docs/fr/5.community/assets/messages/panel_bouton_interaction.png new file mode 100644 index 000000000..9a614cac8 Binary files /dev/null and b/docs/fr/5.community/assets/messages/panel_bouton_interaction.png differ diff --git a/docs/fr/5.community/assets/messages/panel_content.png b/docs/fr/5.community/assets/messages/panel_content.png new file mode 100644 index 000000000..eb165ec6e Binary files /dev/null and b/docs/fr/5.community/assets/messages/panel_content.png differ diff --git a/docs/fr/5.community/assets/messages/panel_create_profil.png b/docs/fr/5.community/assets/messages/panel_create_profil.png new file mode 100644 index 000000000..577f68231 Binary files /dev/null and b/docs/fr/5.community/assets/messages/panel_create_profil.png differ diff --git a/docs/fr/5.community/assets/messages/panel_embed.png b/docs/fr/5.community/assets/messages/panel_embed.png new file mode 100644 index 000000000..16b8298c7 Binary files /dev/null and b/docs/fr/5.community/assets/messages/panel_embed.png differ diff --git a/docs/fr/5.community/assets/messages/panel_fetch_message.png b/docs/fr/5.community/assets/messages/panel_fetch_message.png new file mode 100644 index 000000000..8cb429c3b Binary files /dev/null and b/docs/fr/5.community/assets/messages/panel_fetch_message.png differ diff --git a/docs/fr/5.community/assets/messages/panel_image_options.png b/docs/fr/5.community/assets/messages/panel_image_options.png new file mode 100644 index 000000000..ff72a9c61 Binary files /dev/null and b/docs/fr/5.community/assets/messages/panel_image_options.png differ diff --git a/docs/fr/5.community/assets/messages/panel_interaction_send_message_preview.png b/docs/fr/5.community/assets/messages/panel_interaction_send_message_preview.png new file mode 100644 index 000000000..0fa03b438 Binary files /dev/null and b/docs/fr/5.community/assets/messages/panel_interaction_send_message_preview.png differ diff --git a/docs/fr/5.community/assets/messages/panel_mentions.png b/docs/fr/5.community/assets/messages/panel_mentions.png new file mode 100644 index 000000000..ed7ab5cb0 Binary files /dev/null and b/docs/fr/5.community/assets/messages/panel_mentions.png differ diff --git a/docs/fr/5.community/assets/messages/panel_selector_interaction.png b/docs/fr/5.community/assets/messages/panel_selector_interaction.png new file mode 100644 index 000000000..e2d000257 Binary files /dev/null and b/docs/fr/5.community/assets/messages/panel_selector_interaction.png differ diff --git a/docs/fr/5.community/assets/messages/panel_view.png b/docs/fr/5.community/assets/messages/panel_view.png new file mode 100644 index 000000000..e7b623604 Binary files /dev/null and b/docs/fr/5.community/assets/messages/panel_view.png differ diff --git a/docs/fr/5.community/assets/reaction-roles/bot_view.png b/docs/fr/5.community/assets/reaction-roles/bot_view.png new file mode 100644 index 000000000..9961d2bd6 Binary files /dev/null and b/docs/fr/5.community/assets/reaction-roles/bot_view.png differ diff --git a/docs/fr/5.community/assets/reaction-roles/config_manage.png b/docs/fr/5.community/assets/reaction-roles/config_manage.png new file mode 100644 index 000000000..47aa44fcd Binary files /dev/null and b/docs/fr/5.community/assets/reaction-roles/config_manage.png differ diff --git a/docs/fr/5.community/assets/reaction-roles/config_target_message.png b/docs/fr/5.community/assets/reaction-roles/config_target_message.png new file mode 100644 index 000000000..8e6b98c0d Binary files /dev/null and b/docs/fr/5.community/assets/reaction-roles/config_target_message.png differ diff --git a/docs/fr/5.community/assets/reaction-roles/config_view.png b/docs/fr/5.community/assets/reaction-roles/config_view.png new file mode 100644 index 000000000..5773f9648 Binary files /dev/null and b/docs/fr/5.community/assets/reaction-roles/config_view.png differ diff --git a/docs/fr/5.community/assets/reaction-roles/panel_edit.png b/docs/fr/5.community/assets/reaction-roles/panel_edit.png new file mode 100644 index 000000000..465239401 Binary files /dev/null and b/docs/fr/5.community/assets/reaction-roles/panel_edit.png differ diff --git a/docs/fr/5.community/assets/reaction-roles/panel_rename.png b/docs/fr/5.community/assets/reaction-roles/panel_rename.png new file mode 100644 index 000000000..4584163eb Binary files /dev/null and b/docs/fr/5.community/assets/reaction-roles/panel_rename.png differ diff --git a/docs/fr/5.community/assets/reaction-roles/panel_view.png b/docs/fr/5.community/assets/reaction-roles/panel_view.png new file mode 100644 index 000000000..4c428d234 Binary files /dev/null and b/docs/fr/5.community/assets/reaction-roles/panel_view.png differ diff --git a/docs/fr/5.community/assets/recurring-messages/config_days.png b/docs/fr/5.community/assets/recurring-messages/config_days.png new file mode 100644 index 000000000..ad0d4b00d Binary files /dev/null and b/docs/fr/5.community/assets/recurring-messages/config_days.png differ diff --git a/docs/fr/5.community/assets/recurring-messages/config_target_message.png b/docs/fr/5.community/assets/recurring-messages/config_target_message.png new file mode 100644 index 000000000..0e1538205 Binary files /dev/null and b/docs/fr/5.community/assets/recurring-messages/config_target_message.png differ diff --git a/docs/fr/5.community/assets/recurring-messages/config_target_time.png b/docs/fr/5.community/assets/recurring-messages/config_target_time.png new file mode 100644 index 000000000..9d5fcfe00 Binary files /dev/null and b/docs/fr/5.community/assets/recurring-messages/config_target_time.png differ diff --git a/docs/fr/5.community/assets/recurring-messages/config_view.png b/docs/fr/5.community/assets/recurring-messages/config_view.png new file mode 100644 index 000000000..01fba4d1f Binary files /dev/null and b/docs/fr/5.community/assets/recurring-messages/config_view.png differ diff --git a/docs/fr/5.community/assets/recurring-messages/panel_view.png b/docs/fr/5.community/assets/recurring-messages/panel_view.png new file mode 100644 index 000000000..d53c7f01a Binary files /dev/null and b/docs/fr/5.community/assets/recurring-messages/panel_view.png differ diff --git a/docs/fr/5.community/assets/social-notifications/bot_dealabs.png b/docs/fr/5.community/assets/social-notifications/bot_dealabs.png new file mode 100644 index 000000000..5a0d66b2d Binary files /dev/null and b/docs/fr/5.community/assets/social-notifications/bot_dealabs.png differ diff --git a/docs/fr/5.community/assets/social-notifications/bot_epicgames.png b/docs/fr/5.community/assets/social-notifications/bot_epicgames.png new file mode 100644 index 000000000..9494eb909 Binary files /dev/null and b/docs/fr/5.community/assets/social-notifications/bot_epicgames.png differ diff --git a/docs/fr/5.community/assets/social-notifications/bot_gog.png b/docs/fr/5.community/assets/social-notifications/bot_gog.png new file mode 100644 index 000000000..3670e2127 Binary files /dev/null and b/docs/fr/5.community/assets/social-notifications/bot_gog.png differ diff --git a/docs/fr/5.community/assets/social-notifications/bot_reddit.png b/docs/fr/5.community/assets/social-notifications/bot_reddit.png new file mode 100644 index 000000000..cc406cd5a Binary files /dev/null and b/docs/fr/5.community/assets/social-notifications/bot_reddit.png differ diff --git a/docs/fr/5.community/assets/social-notifications/bot_steam.png b/docs/fr/5.community/assets/social-notifications/bot_steam.png new file mode 100644 index 000000000..ad57d6b65 Binary files /dev/null and b/docs/fr/5.community/assets/social-notifications/bot_steam.png differ diff --git a/docs/fr/5.community/assets/social-notifications/bot_twitch.png b/docs/fr/5.community/assets/social-notifications/bot_twitch.png new file mode 100644 index 000000000..deca14d75 Binary files /dev/null and b/docs/fr/5.community/assets/social-notifications/bot_twitch.png differ diff --git a/docs/fr/5.community/assets/social-notifications/bot_youtube.png b/docs/fr/5.community/assets/social-notifications/bot_youtube.png new file mode 100644 index 000000000..d549ec2a4 Binary files /dev/null and b/docs/fr/5.community/assets/social-notifications/bot_youtube.png differ diff --git a/docs/fr/5.community/assets/social-notifications/config_view.png b/docs/fr/5.community/assets/social-notifications/config_view.png new file mode 100644 index 000000000..843a74735 Binary files /dev/null and b/docs/fr/5.community/assets/social-notifications/config_view.png differ diff --git a/docs/fr/5.community/assets/social-notifications/panel_view.png b/docs/fr/5.community/assets/social-notifications/panel_view.png new file mode 100644 index 000000000..a56bb156b Binary files /dev/null and b/docs/fr/5.community/assets/social-notifications/panel_view.png differ diff --git a/docs/fr/5.community/assets/social-notifications/panel_youtube_allowed.png b/docs/fr/5.community/assets/social-notifications/panel_youtube_allowed.png new file mode 100644 index 000000000..dad9e5395 Binary files /dev/null and b/docs/fr/5.community/assets/social-notifications/panel_youtube_allowed.png differ diff --git a/docs/fr/5.community/assets/starboards/bot_message.png b/docs/fr/5.community/assets/starboards/bot_message.png new file mode 100644 index 000000000..7dcbbec9c Binary files /dev/null and b/docs/fr/5.community/assets/starboards/bot_message.png differ diff --git a/docs/fr/5.community/assets/starboards/bot_message_2.png b/docs/fr/5.community/assets/starboards/bot_message_2.png new file mode 100644 index 000000000..4456a209b Binary files /dev/null and b/docs/fr/5.community/assets/starboards/bot_message_2.png differ diff --git a/docs/fr/5.community/assets/starboards/config_example.png b/docs/fr/5.community/assets/starboards/config_example.png new file mode 100644 index 000000000..3b7e14b9a Binary files /dev/null and b/docs/fr/5.community/assets/starboards/config_example.png differ diff --git a/docs/fr/5.community/assets/starboards/panel_create.png b/docs/fr/5.community/assets/starboards/panel_create.png new file mode 100644 index 000000000..342679246 Binary files /dev/null and b/docs/fr/5.community/assets/starboards/panel_create.png differ diff --git a/docs/fr/5.community/assets/starboards/panel_hub_line.png b/docs/fr/5.community/assets/starboards/panel_hub_line.png new file mode 100644 index 000000000..f833e6a57 Binary files /dev/null and b/docs/fr/5.community/assets/starboards/panel_hub_line.png differ diff --git a/docs/fr/5.community/assets/starboards/panel_view.png b/docs/fr/5.community/assets/starboards/panel_view.png new file mode 100644 index 000000000..3358293a1 Binary files /dev/null and b/docs/fr/5.community/assets/starboards/panel_view.png differ diff --git a/docs/fr/5.community/assets/suggestions/bot_accept_suggest.png b/docs/fr/5.community/assets/suggestions/bot_accept_suggest.png new file mode 100644 index 000000000..78cb99143 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/bot_accept_suggest.png differ diff --git a/docs/fr/5.community/assets/suggestions/bot_comment_modal.png b/docs/fr/5.community/assets/suggestions/bot_comment_modal.png new file mode 100644 index 000000000..7da138055 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/bot_comment_modal.png differ diff --git a/docs/fr/5.community/assets/suggestions/bot_new_suggest_confirm.png b/docs/fr/5.community/assets/suggestions/bot_new_suggest_confirm.png new file mode 100644 index 000000000..960782b73 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/bot_new_suggest_confirm.png differ diff --git a/docs/fr/5.community/assets/suggestions/bot_new_suggest_modal.png b/docs/fr/5.community/assets/suggestions/bot_new_suggest_modal.png new file mode 100644 index 000000000..da06533ef Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/bot_new_suggest_modal.png differ diff --git a/docs/fr/5.community/assets/suggestions/bot_reward_announce.png b/docs/fr/5.community/assets/suggestions/bot_reward_announce.png new file mode 100644 index 000000000..738983425 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/bot_reward_announce.png differ diff --git a/docs/fr/5.community/assets/suggestions/bot_suggest_comment.png b/docs/fr/5.community/assets/suggestions/bot_suggest_comment.png new file mode 100644 index 000000000..da9fc970d Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/bot_suggest_comment.png differ diff --git a/docs/fr/5.community/assets/suggestions/bot_suggest_commented.png b/docs/fr/5.community/assets/suggestions/bot_suggest_commented.png new file mode 100644 index 000000000..73ba93e72 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/bot_suggest_commented.png differ diff --git a/docs/fr/5.community/assets/suggestions/bot_suggest_delete.png b/docs/fr/5.community/assets/suggestions/bot_suggest_delete.png new file mode 100644 index 000000000..22ac0da24 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/bot_suggest_delete.png differ diff --git a/docs/fr/5.community/assets/suggestions/bot_suggest_menu.png b/docs/fr/5.community/assets/suggestions/bot_suggest_menu.png new file mode 100644 index 000000000..0686dcaeb Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/bot_suggest_menu.png differ diff --git a/docs/fr/5.community/assets/suggestions/bot_suggest_planned.png b/docs/fr/5.community/assets/suggestions/bot_suggest_planned.png new file mode 100644 index 000000000..353fc4217 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/bot_suggest_planned.png differ diff --git a/docs/fr/5.community/assets/suggestions/bot_suggest_refuse.png b/docs/fr/5.community/assets/suggestions/bot_suggest_refuse.png new file mode 100644 index 000000000..47f4377f4 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/bot_suggest_refuse.png differ diff --git a/docs/fr/5.community/assets/suggestions/bot_suggestmod_search.png b/docs/fr/5.community/assets/suggestions/bot_suggestmod_search.png new file mode 100644 index 000000000..68a456b0d Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/bot_suggestmod_search.png differ diff --git a/docs/fr/5.community/assets/suggestions/bot_suggests_list.png b/docs/fr/5.community/assets/suggestions/bot_suggests_list.png new file mode 100644 index 000000000..86a64ec65 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/bot_suggests_list.png differ diff --git a/docs/fr/5.community/assets/suggestions/bot_upload_panel.png b/docs/fr/5.community/assets/suggestions/bot_upload_panel.png new file mode 100644 index 000000000..05eb0b92a Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/bot_upload_panel.png differ diff --git a/docs/fr/5.community/assets/suggestions/config_buttons_channel.png b/docs/fr/5.community/assets/suggestions/config_buttons_channel.png new file mode 100644 index 000000000..4a9c24daf Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/config_buttons_channel.png differ diff --git a/docs/fr/5.community/assets/suggestions/config_buttons_colors.png b/docs/fr/5.community/assets/suggestions/config_buttons_colors.png new file mode 100644 index 000000000..0d01c0aa3 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/config_buttons_colors.png differ diff --git a/docs/fr/5.community/assets/suggestions/config_buttons_confirmation.png b/docs/fr/5.community/assets/suggestions/config_buttons_confirmation.png new file mode 100644 index 000000000..2289cd06d Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/config_buttons_confirmation.png differ diff --git a/docs/fr/5.community/assets/suggestions/config_buttons_limits_per_roles.png b/docs/fr/5.community/assets/suggestions/config_buttons_limits_per_roles.png new file mode 100644 index 000000000..c610db14d Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/config_buttons_limits_per_roles.png differ diff --git a/docs/fr/5.community/assets/suggestions/config_buttons_membres.png b/docs/fr/5.community/assets/suggestions/config_buttons_membres.png new file mode 100644 index 000000000..94404810c Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/config_buttons_membres.png differ diff --git a/docs/fr/5.community/assets/suggestions/config_buttons_mention.png b/docs/fr/5.community/assets/suggestions/config_buttons_mention.png new file mode 100644 index 000000000..7bdfa6981 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/config_buttons_mention.png differ diff --git a/docs/fr/5.community/assets/suggestions/config_buttons_moderation.png b/docs/fr/5.community/assets/suggestions/config_buttons_moderation.png new file mode 100644 index 000000000..a163172c4 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/config_buttons_moderation.png differ diff --git a/docs/fr/5.community/assets/suggestions/config_buttons_reactions.png b/docs/fr/5.community/assets/suggestions/config_buttons_reactions.png new file mode 100644 index 000000000..0edddfaf5 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/config_buttons_reactions.png differ diff --git a/docs/fr/5.community/assets/suggestions/config_buttons_rewards.png b/docs/fr/5.community/assets/suggestions/config_buttons_rewards.png new file mode 100644 index 000000000..5d15f1500 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/config_buttons_rewards.png differ diff --git a/docs/fr/5.community/assets/suggestions/config_buttons_sort_and_search.png b/docs/fr/5.community/assets/suggestions/config_buttons_sort_and_search.png new file mode 100644 index 000000000..3ed2bf570 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/config_buttons_sort_and_search.png differ diff --git a/docs/fr/5.community/assets/suggestions/config_buttons_threads_auto.png b/docs/fr/5.community/assets/suggestions/config_buttons_threads_auto.png new file mode 100644 index 000000000..d19cb6ffe Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/config_buttons_threads_auto.png differ diff --git a/docs/fr/5.community/assets/suggestions/config_confirmation.png b/docs/fr/5.community/assets/suggestions/config_confirmation.png new file mode 100644 index 000000000..254ecbd90 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/config_confirmation.png differ diff --git a/docs/fr/5.community/assets/suggestions/config_home.png b/docs/fr/5.community/assets/suggestions/config_home.png new file mode 100644 index 000000000..072614c68 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/config_home.png differ diff --git a/docs/fr/5.community/assets/suggestions/config_home_to_delete.png b/docs/fr/5.community/assets/suggestions/config_home_to_delete.png new file mode 100644 index 000000000..902114ed3 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/config_home_to_delete.png differ diff --git a/docs/fr/5.community/assets/suggestions/config_limits_per_roles.png b/docs/fr/5.community/assets/suggestions/config_limits_per_roles.png new file mode 100644 index 000000000..d047c9766 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/config_limits_per_roles.png differ diff --git a/docs/fr/5.community/assets/suggestions/config_membres.png b/docs/fr/5.community/assets/suggestions/config_membres.png new file mode 100644 index 000000000..2d9b371df Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/config_membres.png differ diff --git a/docs/fr/5.community/assets/suggestions/config_moderation.png b/docs/fr/5.community/assets/suggestions/config_moderation.png new file mode 100644 index 000000000..add128b3a Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/config_moderation.png differ diff --git a/docs/fr/5.community/assets/suggestions/config_reactions.png b/docs/fr/5.community/assets/suggestions/config_reactions.png new file mode 100644 index 000000000..d1dd3b857 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/config_reactions.png differ diff --git a/docs/fr/5.community/assets/suggestions/config_rewards_announces.png b/docs/fr/5.community/assets/suggestions/config_rewards_announces.png new file mode 100644 index 000000000..90ecd26f1 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/config_rewards_announces.png differ diff --git a/docs/fr/5.community/assets/suggestions/config_threads_auto.png b/docs/fr/5.community/assets/suggestions/config_threads_auto.png new file mode 100644 index 000000000..ba60f6083 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/config_threads_auto.png differ diff --git a/docs/fr/5.community/assets/suggestions/config_votes_color.png b/docs/fr/5.community/assets/suggestions/config_votes_color.png new file mode 100644 index 000000000..eeb747b01 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/config_votes_color.png differ diff --git a/docs/fr/5.community/assets/suggestions/panel_channel.png b/docs/fr/5.community/assets/suggestions/panel_channel.png new file mode 100644 index 000000000..8efd932fd Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/panel_channel.png differ diff --git a/docs/fr/5.community/assets/suggestions/panel_colors.png b/docs/fr/5.community/assets/suggestions/panel_colors.png new file mode 100644 index 000000000..6e0bf3c00 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/panel_colors.png differ diff --git a/docs/fr/5.community/assets/suggestions/panel_confirmation.png b/docs/fr/5.community/assets/suggestions/panel_confirmation.png new file mode 100644 index 000000000..375129de8 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/panel_confirmation.png differ diff --git a/docs/fr/5.community/assets/suggestions/panel_create_reward.png b/docs/fr/5.community/assets/suggestions/panel_create_reward.png new file mode 100644 index 000000000..90a9401ee Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/panel_create_reward.png differ diff --git a/docs/fr/5.community/assets/suggestions/panel_delai.png b/docs/fr/5.community/assets/suggestions/panel_delai.png new file mode 100644 index 000000000..2df82141c Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/panel_delai.png differ diff --git a/docs/fr/5.community/assets/suggestions/panel_delete_reactions.png b/docs/fr/5.community/assets/suggestions/panel_delete_reactions.png new file mode 100644 index 000000000..0db6cbf28 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/panel_delete_reactions.png differ diff --git a/docs/fr/5.community/assets/suggestions/panel_home.png b/docs/fr/5.community/assets/suggestions/panel_home.png new file mode 100644 index 000000000..e52d92091 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/panel_home.png differ diff --git a/docs/fr/5.community/assets/suggestions/panel_membres.png b/docs/fr/5.community/assets/suggestions/panel_membres.png new file mode 100644 index 000000000..a1aaffc71 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/panel_membres.png differ diff --git a/docs/fr/5.community/assets/suggestions/panel_mention.png b/docs/fr/5.community/assets/suggestions/panel_mention.png new file mode 100644 index 000000000..0041056d2 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/panel_mention.png differ diff --git a/docs/fr/5.community/assets/suggestions/panel_moderation.png b/docs/fr/5.community/assets/suggestions/panel_moderation.png new file mode 100644 index 000000000..7d8722d24 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/panel_moderation.png differ diff --git a/docs/fr/5.community/assets/suggestions/panel_reactions.png b/docs/fr/5.community/assets/suggestions/panel_reactions.png new file mode 100644 index 000000000..30c22f480 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/panel_reactions.png differ diff --git a/docs/fr/5.community/assets/suggestions/panel_rewards_announces.png b/docs/fr/5.community/assets/suggestions/panel_rewards_announces.png new file mode 100644 index 000000000..c9b7d8d0a Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/panel_rewards_announces.png differ diff --git a/docs/fr/5.community/assets/suggestions/panel_sort_and_search.png b/docs/fr/5.community/assets/suggestions/panel_sort_and_search.png new file mode 100644 index 000000000..6376dce55 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/panel_sort_and_search.png differ diff --git a/docs/fr/5.community/assets/suggestions/panel_suggests_limits_per_roles.png b/docs/fr/5.community/assets/suggestions/panel_suggests_limits_per_roles.png new file mode 100644 index 000000000..61ccf8602 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/panel_suggests_limits_per_roles.png differ diff --git a/docs/fr/5.community/assets/suggestions/panel_threads_auto.png b/docs/fr/5.community/assets/suggestions/panel_threads_auto.png new file mode 100644 index 000000000..6cd1c8ed7 Binary files /dev/null and b/docs/fr/5.community/assets/suggestions/panel_threads_auto.png differ diff --git a/docs/fr/5.community/assets/temporary-voice-channels/config_hub.png b/docs/fr/5.community/assets/temporary-voice-channels/config_hub.png new file mode 100644 index 000000000..fc6d38c1b Binary files /dev/null and b/docs/fr/5.community/assets/temporary-voice-channels/config_hub.png differ diff --git a/docs/fr/5.community/assets/temporary-voice-channels/panel_hub.png b/docs/fr/5.community/assets/temporary-voice-channels/panel_hub.png new file mode 100644 index 000000000..217e23a6b Binary files /dev/null and b/docs/fr/5.community/assets/temporary-voice-channels/panel_hub.png differ diff --git a/docs/fr/5.community/assets/temporary-voice-channels/saves.png b/docs/fr/5.community/assets/temporary-voice-channels/saves.png new file mode 100644 index 000000000..f2a32dedc Binary files /dev/null and b/docs/fr/5.community/assets/temporary-voice-channels/saves.png differ diff --git a/docs/fr/5.community/assets/temporary-voice-channels/view_button.png b/docs/fr/5.community/assets/temporary-voice-channels/view_button.png new file mode 100644 index 000000000..b7e8337e6 Binary files /dev/null and b/docs/fr/5.community/assets/temporary-voice-channels/view_button.png differ diff --git a/docs/fr/5.community/assets/temporary-voice-channels/view_guide.gif b/docs/fr/5.community/assets/temporary-voice-channels/view_guide.gif new file mode 100644 index 000000000..502ec4391 Binary files /dev/null and b/docs/fr/5.community/assets/temporary-voice-channels/view_guide.gif differ diff --git a/docs/fr/5.community/assets/tickets/config_menu.png b/docs/fr/5.community/assets/tickets/config_menu.png new file mode 100644 index 000000000..4583bd42d Binary files /dev/null and b/docs/fr/5.community/assets/tickets/config_menu.png differ diff --git a/docs/fr/5.community/assets/tickets/config_reason.png b/docs/fr/5.community/assets/tickets/config_reason.png new file mode 100644 index 000000000..09d1f2355 Binary files /dev/null and b/docs/fr/5.community/assets/tickets/config_reason.png differ diff --git a/docs/fr/5.community/assets/tickets/menu_config.png b/docs/fr/5.community/assets/tickets/menu_config.png new file mode 100644 index 000000000..d1e5c6373 Binary files /dev/null and b/docs/fr/5.community/assets/tickets/menu_config.png differ diff --git a/docs/fr/5.community/assets/tickets/panel_config.png b/docs/fr/5.community/assets/tickets/panel_config.png new file mode 100644 index 000000000..042c918c9 Binary files /dev/null and b/docs/fr/5.community/assets/tickets/panel_config.png differ diff --git a/docs/6.securite/0.moderation.md b/docs/fr/6.security/0.moderation.md similarity index 89% rename from docs/6.securite/0.moderation.md rename to docs/fr/6.security/0.moderation.md index 041e53bbd..6468d460b 100644 --- a/docs/6.securite/0.moderation.md +++ b/docs/fr/6.security/0.moderation.md @@ -1,4 +1,5 @@ --- +slug: /securite/moderation title: Modération description: Certains de vos membres vous posent quelques problèmes ? Alors configurez les outils de modération de DraftBot ! navigation.icon: 'twemoji:hammer' @@ -27,7 +28,7 @@ Après avoir choisi l'utilisateur et donné une raison, plusieurs options facult | `[image2]` | pour uploader une deuxième image | | `[image3]` | pour uploader une troisième image | -![Bannissement d'un utilisateur](../assets/moderation/bot_ban_confirm.png) +![Bannissement d'un utilisateur](./assets/moderation/bot_ban_confirm.png) Si vous souhaitez révoquer le bannissement d'un membre, vous pouvez le débannir avec la commande \ ou bien depuis l'onglet **`"Bannissement"`** de votre serveur Discord. @@ -45,7 +46,7 @@ Expulser un membre le fait quitter le serveur, mais il pourra y revenir avec une **Vous pouvez expulser un membre** de votre serveur avec la commande \. -![Expulsion d'un membre](../assets/moderation/bot_kick_confirm.png) +![Expulsion d'un membre](./assets/moderation/bot_kick_confirm.png) ::hint{ type="info" } **DraftBot** peut expulser un membre uniquement si vous disposez de la permission **`"Expulser des membres"`** ou que l'un de vos rôles peut utiliser la commande \ sur votre serveur. @@ -67,7 +68,7 @@ Expulser un membre le fait quitter le serveur, mais il pourra y revenir avec une Le membre recevra son avertissement par message privé uniquement s'il accepte les messages privés venant du serveur. :: -![Avertissement donné à un membre](../assets/moderation/bot_warn.png) +![Avertissement donné à un membre](./assets/moderation/bot_warn.png) ::hint{ type="info" } **DraftBot** peut donner un avertissement à un membre uniquement si vous disposez de la permission **`"Gérer les messages"`** ou que l'un de vos rôles peut utiliser la commande \ sur votre serveur. @@ -85,7 +86,7 @@ Expulser un membre le fait quitter le serveur, mais il pourra y revenir avec une Vous pourrez, si vous le souhaitez, acquitter un membre de sa réduction au silence avec la commande \. :: -![Rendre muet un membre](../assets/moderation/bot_mute_confirm.png) +![Rendre muet un membre](./assets/moderation/bot_mute_confirm.png) ::hint{ type="info" } **DraftBot** peut appliquer un mute à un membre uniquement si vous disposez de la permission **`"Exclure temporairement des membres"`** ou que l'un de vos rôles peut utiliser la commande \ sur votre serveur. @@ -108,7 +109,7 @@ Expulser un membre le fait quitter le serveur, mais il pourra y revenir avec une **Vous pouvez ajouter une note à un membre dans son historique de sanctions** avec \. Cela permet d'ajouter un commentaire à un membre, visible par les modérateurs, sans avertir le membre en message privé. -![Note donnée à un membre](../assets/moderation/bot_note_confirm.png) +![Note donnée à un membre](./assets/moderation/bot_note_confirm.png) ::hint{ type="info" } **DraftBot** peut donner une note à un membre uniquement si vous disposez de la permission **`"Gérer les messages"`** ou que l'un de vos rôles peut utiliser la commande \ sur votre serveur. @@ -133,7 +134,7 @@ La commande propose plusieurs options de filtrage pour affiner votre recherche : | `[recherche]` | Rechercher dans les motifs des sanctions | | `[modérateur]` | Afficher uniquement les sanctions appliquées par un modérateur spécifique | -![Historique de sanctions d'un membre](../assets/moderation/bot_history.png) +![Historique de sanctions d'un membre](./assets/moderation/bot_history.png) L'interface interactive permet de naviguer entre les sanctions avec des boutons de pagination. Depuis cette liste, vous pouvez : @@ -142,7 +143,7 @@ L'interface interactive permet de naviguer entre les sanctions avec des boutons | **Voir** | Afficher les détails complets d'une sanction | | **Afficher** | Partager publiquement la sanction dans le salon (bouton masqué si l'option [Afficher les sanctions publiquement par défaut](#options) est déjà activée) | -![Détails d'une sanction](../assets/moderation/bot_sanctions_view.png) +![Détails d'une sanction](./assets/moderation/bot_sanctions_view.png) ### Retirer des sanctions @@ -156,7 +157,7 @@ Vous pouvez **enlever une sanction à un membre** de votre serveur avec la comma Notez que les commandes \ et \ sont irréversibles. :: -![Suppression d'une sanction](../assets/moderation/bot_sanction_remove.png) +![Suppression d'une sanction](./assets/moderation/bot_sanction_remove.png) ### Modifier une sanction @@ -182,7 +183,7 @@ Vous pourrez ensuite : Lorsqu'une sanction comme un mute ou un bannissement temporaire est **toujours active**, alors vous pourrez y "**Modifier la durée**". -![Modifier la durée d'une sanction active](../assets/moderation/bot_sanction_edit.png) +![Modifier la durée d'une sanction active](./assets/moderation/bot_sanction_edit.png) Une fenêtre s'ouvre alors, dans laquelle vous pourrez renseigner : - **Une nouvelle durée** : la durée restante que vous souhaitez attribuer à la sanction (par exemple : 30m, 1h, 3j). @@ -204,7 +205,7 @@ Grâce aux options de modération, vous pourrez configurer divers aspects de la Une fois sur le panel de **DraftBot**, rendez-vous dans la rubrique modération et dans les options. Vous n'aurez plus qu'à activer les options voulues ! - ![Configuration des options de modération](../assets/moderation/panel_confidentiality_options.png) + ![Configuration des options de modération](./assets/moderation/panel_confidentiality_options.png) Si l'option "**Envoyer un MP lors d'une sanction**" est active, alors l'utilisateur recevra un message privé à chaque sanction à son égard. @@ -216,9 +217,9 @@ Grâce aux options de modération, vous pourrez configurer divers aspects de la ::tab{ label="Via la commande /config" } Rendez-vous d'abord dans la catégorie `"🔨 Modération"` de la commande \ puis appuyez sur **`"MP des sanctions"`**. - ![Options de modération](../assets/moderation/config_confidentiality_options.png) + ![Options de modération](./assets/moderation/config_confidentiality_options.png) - ![MP des sanctions](../assets/moderation/config_confidentiality_sanctionsmp.png) + ![MP des sanctions](./assets/moderation/config_confidentiality_sanctionsmp.png) Si l'option "**MP envoyé lors d'une sanction**" est active, alors l'utilisateur recevra un message privé à chaque sanction à son égard. :: @@ -232,11 +233,11 @@ Grâce aux options de modération, vous pourrez configurer divers aspects de la Une fois sur le panel de **DraftBot**, rendez-vous dans la rubrique modération et dans les options. - ![Configuration des options de modération](../assets/moderation/panel_confidentiality_options.png) + ![Configuration des options de modération](./assets/moderation/panel_confidentiality_options.png) Vous pourrez ensuite configurer les **MP personnalisés des sanctions** que vous voudrez : - ![Configuration du MP personnalisé](../assets/moderation/panel_confidentiality_sanctionsmp.png) + ![Configuration du MP personnalisé](./assets/moderation/panel_confidentiality_sanctionsmp.png) - **Sanction :** Le message qui sera envoyé en MP selon la sanction choisie. - **Message personnalisé :** Le texte qui sera dans la description de l'embed. @@ -254,9 +255,9 @@ Grâce aux options de modération, vous pourrez configurer divers aspects de la ::tab{ label="Via la commande /config" } Rendez-vous d'abord dans la catégorie `"🔨 Modération"` de la commande \ puis appuyez sur **`"MP des sanctions"`**. - ![Options de modération](../assets/moderation/config_confidentiality_options.png) + ![Options de modération](./assets/moderation/config_confidentiality_options.png) - ![MP des sanctions](../assets/moderation/config_confidentiality_sanctionsmp.png) + ![MP des sanctions](./assets/moderation/config_confidentiality_sanctionsmp.png) En appuyant sur le sélecteur avec écrit **`"Avertissement"`**, vous pourrez alors choisir la sanction que vous souhaiteriez configurer. @@ -286,7 +287,7 @@ Grâce aux options de modération, vous pourrez configurer divers aspects de la Une fois sur le panel de **DraftBot**, rendez-vous dans la rubrique modération et dans les options. - ![Configuration des options de modération](../assets/moderation/panel_confidentiality_options.png) + ![Configuration des options de modération](./assets/moderation/panel_confidentiality_options.png) Si l'option "**Masquer les réponses des commandes de modération**" est active, alors lorsqu'un modérateur fera une action de modération comme \ ou \, la réponse du bot restera **invisible** des autres utilisateurs. @@ -298,7 +299,7 @@ Grâce aux options de modération, vous pourrez configurer divers aspects de la ::tab{ label="Via la commande /config" } Rendez-vous d'abord dans la catégorie `"🔨 Modération"` de la commande \ puis appuyez sur **`"Options"`**. - ![Options de modération](../assets/moderation/config_confidentiality_options.png) + ![Options de modération](./assets/moderation/config_confidentiality_options.png) Si l'option "**Cacher les réponses des commandes**" est active, alors lorsqu'un modérateur fera une action de modération comme \ ou \, la réponse du bot restera **invisible** des autres utilisateurs. :: @@ -312,7 +313,7 @@ Grâce aux options de modération, vous pourrez configurer divers aspects de la Une fois sur le panel de **DraftBot**, rendez-vous dans la rubrique modération et dans les options. - ![Configuration des options de modération](../assets/moderation/panel_confidentiality_options.png) + ![Configuration des options de modération](./assets/moderation/panel_confidentiality_options.png) Si l'option "**Afficher les sanctions publiquement par défaut**" est active, alors lorsqu'un modérateur fera une commande du type \, la réponse du bot sera **visible** par tous les membres du salon. Si elle est inactive, la réponse ne sera visible que par le modérateur qui a lancé la commande. @@ -324,7 +325,7 @@ Grâce aux options de modération, vous pourrez configurer divers aspects de la ::tab{ label="Via la commande /config" } Rendez-vous d'abord dans la catégorie `"🔨 Modération"` de la commande \ puis appuyez sur **`"Options"`**. - ![Options de modération](../assets/moderation/config_confidentiality_options.png) + ![Options de modération](./assets/moderation/config_confidentiality_options.png) Si l'option "**Afficher les sanctions par défaut**" est active, alors lorsqu'un modérateur fera une commande du type \, la réponse du bot sera **visible** par tous les membres du salon. Si elle est inactive, la réponse ne sera visible que par le modérateur qui a lancé la commande. :: @@ -344,13 +345,13 @@ Une sanction prédéfinie est **une sanction préconfigurée servant à centrali Exemple : le rôle A peut appliquer l'expulsion pour publicité sans qu'il n'ait la permission d'expulser des membres. - ![Création d'une sanction prédéfinie](../assets/moderation/panel_predefined_sanctions.png) + ![Création d'une sanction prédéfinie](./assets/moderation/panel_predefined_sanctions.png) ::hint{ type="info" } Si la sanction choisie est un **bannissement** *(permanent ou temporaire)*, une option "**Suppression des messages**" apparaît. :: - ![Création d'une sanction prédéfinie si bannissement](../assets/moderation/panel_predefined_sanctions_ban.png) + ![Création d'une sanction prédéfinie si bannissement](./assets/moderation/panel_predefined_sanctions_ban.png) ::hint{ type="warning" } Une fois fini, n'oubliez pas d'enregistrer vos modifications avec le bouton `"Sauvegarder"` en bas de la page. @@ -364,7 +365,7 @@ Une sanction prédéfinie est **une sanction préconfigurée servant à centrali ::tab{ label="Via la commande /config" } Rendez-vous d'abord dans la catégorie `"🔨 Modération"` de la commande \ puis appuyez sur **`"Sanctions prédéfinies"`**. - ![Menu de configuration des sanctions prédéfinies](../assets/moderation/config_predefined_sanctions.png) + ![Menu de configuration des sanctions prédéfinies](./assets/moderation/config_predefined_sanctions.png) #### Création d'une sanction prédéfinie @@ -376,7 +377,7 @@ Une sanction prédéfinie est **une sanction préconfigurée servant à centrali Si vous avez choisi un **bannissement** *(permanent ou temporaire)*, **DraftBot** vous demandera en plus la période sur laquelle supprimer les messages du membre. - ![Demande sur la période pour laquelle supprimer les messages](../assets/moderation/config_predefined_sanctions_ban.png) + ![Demande sur la période pour laquelle supprimer les messages](./assets/moderation/config_predefined_sanctions_ban.png) #### Gestion d'une sanction prédéfinie existante @@ -384,7 +385,7 @@ Une sanction prédéfinie est **une sanction préconfigurée servant à centrali Pour modifier une sanction prédéfinie existante, cliquez sur `"Modifier"` : vous pourrez y changer son nom, sa raison, sa sanction et ses rôles autorisés. - ![Menu pour modifier une sanction prédéfinie](../assets/moderation/config_predefined_sanctions_edit.png) + ![Menu pour modifier une sanction prédéfinie](./assets/moderation/config_predefined_sanctions_edit.png) ::hint{ type="info" } Vous aurez également la possibilité de retirer toutes les sanctions prédéfinies en cliquant sur `"réinitialiser"`. diff --git a/docs/6.securite/1.auto-moderation.md b/docs/fr/6.security/1.auto-moderation.md similarity index 95% rename from docs/6.securite/1.auto-moderation.md rename to docs/fr/6.security/1.auto-moderation.md index 88447541e..8047fd113 100644 --- a/docs/6.securite/1.auto-moderation.md +++ b/docs/fr/6.security/1.auto-moderation.md @@ -1,4 +1,5 @@ --- +slug: /securite/auto-moderation title: Auto-Modération description: L'auto-modération bloque les mauvais comportements tels que les spams, les publicités ou encore les insultes, et les sanctionne, le tout sans intervention de votre part. navigation.icon: 'twemoji:shield' @@ -17,7 +18,7 @@ Les **infractions** correspondent à un déclenchement de l'auto-modération : e Rendez-vous dans la rubrique **`🛡️ Auto-Modération`**. - ![Détection d'infractions via le panel web](../assets/auto-moderation/panel_infractions.png) + ![Détection d'infractions via le panel web](./assets/auto-moderation/panel_infractions.png) Cliquez sur l'icône :gear: d'un module pour le configurer et activez-le avec le bouton placé à droite du :gear:. @@ -31,12 +32,12 @@ Les **infractions** correspondent à un déclenchement de l'auto-modération : e Vous pourrez ensuite configurer les différents modules : - ![Menu de configuration de l'auto-modération](../assets/auto-moderation/config_infractions.png) + ![Menu de configuration de l'auto-modération](./assets/auto-moderation/config_infractions.png) ::hint{ type="info" } Une fois dans le module de votre choix, **n'oubliez pas d'activer le système** via le premier bouton : - ![Bouton pour activer le système](../assets/auto-moderation/config_enable.png) + ![Bouton pour activer le système](./assets/auto-moderation/config_enable.png) :: :: :: @@ -183,7 +184,7 @@ Les sanctions automatiques permettent d'appliquer automatiquement des actions de Vous pourrez ensuite configurer les sanctions automatiques. - ![Sanctions automatiques via le panel web](../assets/auto-moderation/panel_auto_sanctions.png) + ![Sanctions automatiques via le panel web](./assets/auto-moderation/panel_auto_sanctions.png) ::hint{ type="warning" } Une fois vos modifications effectuées, n'oubliez pas de les enregistrer avec le bouton **`Sauvegarder`** à droite de la page. @@ -195,7 +196,7 @@ Les sanctions automatiques permettent d'appliquer automatiquement des actions de Vous pourrez ensuite configurer les sanctions automatiques : - ![Sanctions automatiques via le /config](../assets/auto-moderation/config_autosanctions.png) + ![Sanctions automatiques via le /config](./assets/auto-moderation/config_autosanctions.png) :: :: diff --git a/docs/6.securite/2.gestion-des-messages.md b/docs/fr/6.security/2.message-management.md similarity index 99% rename from docs/6.securite/2.gestion-des-messages.md rename to docs/fr/6.security/2.message-management.md index 6d75a8332..f7e21414f 100644 --- a/docs/6.securite/2.gestion-des-messages.md +++ b/docs/fr/6.security/2.message-management.md @@ -1,4 +1,5 @@ --- +slug: /securite/gestion-des-messages title: Gestion des messages description: Des messages nuisibles sur votre serveur ? Alors toutes ces commandes de DraftBot vont vous aider ! navigation.icon: 'twemoji:speech-balloon' diff --git a/docs/6.securite/3.signalements.md b/docs/fr/6.security/3.reports.md similarity index 96% rename from docs/6.securite/3.signalements.md rename to docs/fr/6.security/3.reports.md index 15dfb2ac7..c50290e09 100644 --- a/docs/6.securite/3.signalements.md +++ b/docs/fr/6.security/3.reports.md @@ -1,4 +1,5 @@ --- +slug: /securite/signalements title: Signalements description: Un utilisateur remarque des agissements inappropriés sur votre serveur ? Permettez-lui de vous les signaler avec le système de signalement de DraftBot ! navigation.icon: 'twemoji:police-car-light' @@ -11,7 +12,7 @@ updatedAt: '2026-05-24' Pour effectuer un signalement, il suffit d'exécuter la commande \. Vous sélectionnez l'utilisateur ou le message qui ne respecte pas les règles qui ont été instaurées sur le serveur. -![Signalement d'un utilisateur via la commande](../assets/signalements/bot_command_report_user.png) +![Signalement d'un utilisateur via la commande](./assets/reports/bot_command_report_user.png) Lors du signalement d'un **utilisateur**, l'option `source` permet d'indiquer où l'infraction a été constatée (salon textuel, vocal, message privé ou autre). @@ -21,13 +22,13 @@ Si le message signalé a été publié par une application, DraftBot identifie e Vous pouvez aussi passer par le menu contextuel de Discord : clic droit sur un membre → **Applications** → **Signaler cet utilisateur**, ou clic droit sur un message → **Applications** → **Signaler ce message**. Un formulaire s'ouvre alors pour saisir la raison et la source (pour un utilisateur). -![Signalement d'un utilisateur via l'application](../assets/signalements/bot_app_report_user.png) +![Signalement d'un utilisateur via l'application](./assets/reports/bot_app_report_user.png) ## Gestion des signalements Une fois qu'une personne a signalé un utilisateur ou un message, vous recevrez un **message de signalement** dans le salon que vous aurez défini auparavant : -![Message de signalement](../assets/signalements/bot_report.png) +![Message de signalement](./assets/reports/bot_report.png) Le message regroupe les informations utiles sur le membre signalé (date d'arrivée sur le serveur, date de création du compte, accès rapide à l'historique des sanctions via le bouton **Voir les sanctions**, affiché uniquement au membre qui clique) ainsi que le contexte du signalement (salon, source, lien vers le message signalé). @@ -103,7 +104,7 @@ Avant toute chose, pour que vos membres aient la possibilité de signaler un uti Vous trouverez ensuite un bouton gris à gauche, sur la même ligne que le titre. Cliquez dessus pour l’activer. - ![Aperçu du système depuis le panel](../assets/signalements/panel_view.png) + ![Aperçu du système depuis le panel](./assets/reports/panel_view.png) :: ::tab{ label="Via la commande /config" } @@ -111,7 +112,7 @@ Avant toute chose, pour que vos membres aient la possibilité de signaler un uti Vous trouverez ensuite un bouton bleu indiquant `Activer le système`. Cliquez dessus pour l’activer. - ![Aperçu du système depuis la commande /config](../assets/signalements/config_view.png) + ![Aperçu du système depuis la commande /config](./assets/reports/config_view.png) :: :: @@ -131,7 +132,7 @@ Vous pouvez configurer une réaction qui avertit les autres membres ou le destin :: :: -![Aperçu d'un message signalé avec la réaction](../assets/signalements/message_reaction.png) +![Aperçu d'un message signalé avec la réaction](./assets/reports/message_reaction.png) ### Fil automatique diff --git a/docs/6.securite/4.roles-securises.md b/docs/fr/6.security/4.secure-roles.md similarity index 95% rename from docs/6.securite/4.roles-securises.md rename to docs/fr/6.security/4.secure-roles.md index ea8f6bf42..5d8e0fe1f 100644 --- a/docs/6.securite/4.roles-securises.md +++ b/docs/fr/6.security/4.secure-roles.md @@ -1,4 +1,5 @@ --- +slug: /securite/roles-securises title: Rôles sécurisés description: Vos permissions sensibles restent éteintes tant que personne ne s'est authentifié. Un compte de modérateur volé ne donne plus accès à rien. navigation.icon: 'twemoji:key' @@ -62,11 +63,11 @@ Vous pouvez sécuriser **2 rôles**, ou **10** sur les serveurs [premium](/premi ::tab{ label="Depuis le panel" } [⫸ Accéder au panel de **DraftBot**](/dashboard/first/permguard) - ![Aperçu d'un rôle à risque](../assets/roles-securises/panel_risky_roles.png) + ![Aperçu d'un rôle à risque](./assets/secure-roles/panel_risky_roles.png) :: ::tab{ label="Via la commande /config" } - ![Menu de configuration des rôles sécurisés](../assets/roles-securises/config_menu.png) + ![Menu de configuration des rôles sécurisés](./assets/secure-roles/config_menu.png) :: :: @@ -105,7 +106,7 @@ Ce que chaque stratégie autorise : Vous pouvez changer de stratégie plus tard, mais passer en **Garder les permissions** désactive l'authentification à l'usage sur ce rôle. **DraftBot** vous indique combien de membres sont concernés avant d'appliquer. :: -![Aperçu de l'interface pour sécuriser un rôle](../assets/roles-securises/panel_risky_role_setup.png) +![Aperçu de l'interface pour sécuriser un rôle](./assets/secure-roles/panel_risky_role_setup.png) Deux étapes complémentaires apparaissent ensuite selon le rôle traité, et méritent d'être comprises plutôt que validées machinalement : @@ -134,7 +135,7 @@ Il existe deux façons pour un membre d'activer ses permissions, et le choix cha **L'authentification à l'usage ne couvre que les commandes DraftBot.** Pour agir directement via l'interface Discord *(glisser un rôle sur un membre, supprimer un salon, bannir depuis le clic droit)*, le membre doit d'abord ouvrir une session avec \. C'est la nuance la plus souvent mal comprise du système. :: -![Aperçu du menu secure-roles connecté](../assets/roles-securises/bot_connected.png) +![Aperçu du menu secure-roles connecté](./assets/secure-roles/bot_connected.png) Pour rendre les commandes visibles sans donner les permissions, **DraftBot** a besoin d'une autorisation Discord dédiée, limitée au serveur concerné et à la seule gestion de la visibilité des commandes. Elle n'est demandée qu'une fois, dans une fenêtre qui s'ouvre au moment de l'activation. @@ -152,7 +153,7 @@ Vous pouvez désactiver l'authentification à l'usage à tout moment, et la réa Chaque membre configure sa méthode **une seule fois**, depuis \ ou l'espace [Sécurité](/dashboard/user/security) du panel. Elle est ensuite valable sur tous les serveurs où il a un accès. -![Panel sécurité via le panel](../assets/roles-securises/panel_security.png) +![Panel sécurité via le panel](./assets/secure-roles/panel_security.png) | Méthode | Niveau | En pratique | |---------|--------|-------------| @@ -167,25 +168,25 @@ Chaque membre configure sa méthode **une seule fois**, depuis \ ::tabs ::tab{ label="Clé d'accès" } - ![Configuration de la sécurité par clé d'accès](../assets/roles-securises/panel_passkeys.png) + ![Configuration de la sécurité par clé d'accès](./assets/secure-roles/panel_passkeys.png) Vous pouvez enregistrer **plusieurs clés**, par exemple une sur votre téléphone et une sur votre ordinateur. Chacune se renomme et se supprime individuellement. :: ::tab{ label="Application d'authentification" } - ![Configuration de la sécurité par application d'authentification](../assets/roles-securises/panel_security_2fa.png) + ![Configuration de la sécurité par application d'authentification](./assets/secure-roles/panel_security_2fa.png) Un QR code vous est présenté, ainsi qu'un code de saisie manuelle si votre application ne peut pas scanner ou n'est pas sur votre téléphone. :: ::tab{ label="Code PIN" } - ![Configuration de la sécurité par code PIN](../assets/roles-securises/panel_security_pin.png) + ![Configuration de la sécurité par code PIN](./assets/secure-roles/panel_security_pin.png) Les codes trop prévisibles *(123456, 000000)* sont refusés. :: ::tab{ label="Mot de passe" } - ![Configuration de la sécurité par mot de passe](../assets/roles-securises/panel_security_password.png) + ![Configuration de la sécurité par mot de passe](./assets/secure-roles/panel_security_password.png) :: :: @@ -221,7 +222,7 @@ Les réglages sont expliqués directement dans l'interface. Voici plutôt commen - **Consultation des sessions :** Permet à un rôle de lire le journal des sessions en lecture seule, sans lui donner *Gérer le serveur*. Utile pour une équipe de supervision ou d'anciens administrateurs qui gardent un droit de regard. -![Section accès des membres](../assets/roles-securises/panel_role_access.png) +![Section accès des membres](./assets/secure-roles/panel_role_access.png) La section **Accès des membres** sert aux cas particuliers : accorder une permission à quelqu'un sans lui donner le rôle d'affichage, ou traiter un membre différemment du reste de l'équipe. Chaque accès hérite des réglages du rôle et peut les **surcharger** : un badge signale alors la valeur modifiée, et un bouton remet celle du rôle. Comptez jusqu'à **10 accès par rôle**, ou **25** en [premium](/premium) <:icon_premium:1096140508625125417>. @@ -246,7 +247,7 @@ Les deux options sont indépendantes et se combinent. Dans tous les cas, les acc **DraftBot** ne se contente pas de bloquer, il vous prévient. Les alertes des rôles sécurisés partent dans vos **logs d'urgence**, indépendamment du module de logs classique, et mentionnent vos administrateurs. -![Historique des sessions](../assets/roles-securises/panel_history.png) +![Historique des sessions](./assets/secure-roles/panel_history.png) Le **journal des sessions** répond à la question qui compte après coup : qui a fait quoi, quand, et avec quelle permission. Chaque session liste ses actions horodatées, leur cible, leur raison, les changements de pseudonyme, et un niveau de risque coloré. Vous pouvez filtrer par membre, période, catégorie d'action, méthode d'authentification ou rôle. diff --git a/docs/6.securite/5.logs.md b/docs/fr/6.security/5.logs.md similarity index 95% rename from docs/6.securite/5.logs.md rename to docs/fr/6.security/5.logs.md index b37e15e0d..fca26e5c1 100644 --- a/docs/6.securite/5.logs.md +++ b/docs/fr/6.security/5.logs.md @@ -1,4 +1,5 @@ --- +slug: /securite/logs title: Logs description: Besoin de recenser les actions faites sur votre serveur ? Les logs sont là pour vous ! navigation.icon: 'twemoji:card-file-box' @@ -26,7 +27,7 @@ Les logs sont des embeds qui sont envoyés non pas par **DraftBot**, mais par de Vous pouvez configurer la couleur par défaut des logs avec la palette de peinture, le salon par défaut avec le menu déroulant et les salons ignorés en appuyant sur "+". - ![Configuration générale des logs depuis le panel](../assets/logs/panel_view.png) + ![Configuration générale des logs depuis le panel](./assets/logs/panel_view.png) :: ::tab{ label="Via la commande /config" } @@ -61,7 +62,7 @@ Les logs sont des embeds qui sont envoyés non pas par **DraftBot**, mais par de Les boutons bleus signifient que leur configuration doit être entièrement réalisée pour que le système de logs soit opérationnel, lors de la première configuration. :: - ![Configuration générale des logs via la commande /config](../assets/logs/config_view.png) + ![Configuration générale des logs via la commande /config](./assets/logs/config_view.png) :: :: @@ -77,7 +78,7 @@ Les logs sont des embeds qui sont envoyés non pas par **DraftBot**, mais par de Activez alors individuellement les logs que vous souhaitez mettre en place pour accéder à leur configuration. - ![Activation des modules de logs depuis le panel](../assets/logs/panel_activate.png) + ![Activation des modules de logs depuis le panel](./assets/logs/panel_activate.png) Vous aurez alors la possibilité de configurer votre module : - Pour changer le salon d'envoi : ouvrez le menu déroulant et sélectionnez le salon voulu. @@ -88,11 +89,11 @@ Les logs sont des embeds qui sont envoyés non pas par **DraftBot**, mais par de Les fonctionnalités accompagnées du symbole <:icon_premium:1096140508625125417> sont réservées aux serveurs [premium](/premium) <:icon_premium:1096140508625125417>. :: - ![Configuration d'un module de log depuis le panel](../assets/logs/panel_module.png) + ![Configuration d'un module de log depuis le panel](./assets/logs/panel_module.png) Exemple de log de modération reçu sur le serveur : - ![Exemple de log de modération](../assets/logs/bot_log.png) + ![Exemple de log de modération](./assets/logs/bot_log.png) :: ::tab{ label="Via la commande /config" } @@ -100,7 +101,7 @@ Les logs sont des embeds qui sont envoyés non pas par **DraftBot**, mais par de Dans les boutons en dessous du message, sélectionnez "Modules". - ![Configuration d'un module de log via la commande /config](../assets/logs/config_modules.png) + ![Configuration d'un module de log via la commande /config](./assets/logs/config_modules.png) Une fois le module sélectionné, laissez-vous guider par **DraftBot** pour terminer la configuration du module ! - Pour changer le salon d'envoi : Indiquez la mention ou l'identifiant du salon voulu. @@ -118,7 +119,7 @@ Les logs sont des embeds qui sont envoyés non pas par **DraftBot**, mais par de Exemple de log de modération reçu sur le serveur : - ![Exemple de log de modération](../assets/logs/bot_log.png) + ![Exemple de log de modération](./assets/logs/bot_log.png) :: :: diff --git a/docs/6.securite/_dir.yml b/docs/fr/6.security/_dir.yml similarity index 87% rename from docs/6.securite/_dir.yml rename to docs/fr/6.security/_dir.yml index a621ec00b..ac815c2dc 100644 --- a/docs/6.securite/_dir.yml +++ b/docs/fr/6.security/_dir.yml @@ -1,3 +1,4 @@ +slug: /securite/_dir title: Sécurité description: La modération, la protection de votre serveur et le suivi de ce qu'il s'y passe. navigation.icon: 'twemoji:shield' diff --git a/docs/fr/6.security/assets/auto-moderation/config_autosanctions.png b/docs/fr/6.security/assets/auto-moderation/config_autosanctions.png new file mode 100644 index 000000000..c108d2d38 Binary files /dev/null and b/docs/fr/6.security/assets/auto-moderation/config_autosanctions.png differ diff --git a/docs/fr/6.security/assets/auto-moderation/config_enable.png b/docs/fr/6.security/assets/auto-moderation/config_enable.png new file mode 100644 index 000000000..67449fd90 Binary files /dev/null and b/docs/fr/6.security/assets/auto-moderation/config_enable.png differ diff --git a/docs/fr/6.security/assets/auto-moderation/config_infractions.png b/docs/fr/6.security/assets/auto-moderation/config_infractions.png new file mode 100644 index 000000000..b175b1af8 Binary files /dev/null and b/docs/fr/6.security/assets/auto-moderation/config_infractions.png differ diff --git a/docs/fr/6.security/assets/auto-moderation/panel_auto_sanctions.png b/docs/fr/6.security/assets/auto-moderation/panel_auto_sanctions.png new file mode 100644 index 000000000..2f459dacd Binary files /dev/null and b/docs/fr/6.security/assets/auto-moderation/panel_auto_sanctions.png differ diff --git a/docs/fr/6.security/assets/auto-moderation/panel_infractions.png b/docs/fr/6.security/assets/auto-moderation/panel_infractions.png new file mode 100644 index 000000000..733fe5148 Binary files /dev/null and b/docs/fr/6.security/assets/auto-moderation/panel_infractions.png differ diff --git a/docs/fr/6.security/assets/logs/bot_log.png b/docs/fr/6.security/assets/logs/bot_log.png new file mode 100644 index 000000000..88433ad24 Binary files /dev/null and b/docs/fr/6.security/assets/logs/bot_log.png differ diff --git a/docs/fr/6.security/assets/logs/config_modules.png b/docs/fr/6.security/assets/logs/config_modules.png new file mode 100644 index 000000000..34d476f01 Binary files /dev/null and b/docs/fr/6.security/assets/logs/config_modules.png differ diff --git a/docs/fr/6.security/assets/logs/config_view.png b/docs/fr/6.security/assets/logs/config_view.png new file mode 100644 index 000000000..0af015989 Binary files /dev/null and b/docs/fr/6.security/assets/logs/config_view.png differ diff --git a/docs/fr/6.security/assets/logs/panel_activate.png b/docs/fr/6.security/assets/logs/panel_activate.png new file mode 100644 index 000000000..b1cdf514b Binary files /dev/null and b/docs/fr/6.security/assets/logs/panel_activate.png differ diff --git a/docs/fr/6.security/assets/logs/panel_module.png b/docs/fr/6.security/assets/logs/panel_module.png new file mode 100644 index 000000000..4967373e9 Binary files /dev/null and b/docs/fr/6.security/assets/logs/panel_module.png differ diff --git a/docs/fr/6.security/assets/logs/panel_view.png b/docs/fr/6.security/assets/logs/panel_view.png new file mode 100644 index 000000000..3cc5bcc7e Binary files /dev/null and b/docs/fr/6.security/assets/logs/panel_view.png differ diff --git a/docs/fr/6.security/assets/moderation/bot_ban_confirm.png b/docs/fr/6.security/assets/moderation/bot_ban_confirm.png new file mode 100644 index 000000000..cc0c47bc5 Binary files /dev/null and b/docs/fr/6.security/assets/moderation/bot_ban_confirm.png differ diff --git a/docs/fr/6.security/assets/moderation/bot_history.png b/docs/fr/6.security/assets/moderation/bot_history.png new file mode 100644 index 000000000..28239cf0d Binary files /dev/null and b/docs/fr/6.security/assets/moderation/bot_history.png differ diff --git a/docs/fr/6.security/assets/moderation/bot_kick_confirm.png b/docs/fr/6.security/assets/moderation/bot_kick_confirm.png new file mode 100644 index 000000000..b3dc823ec Binary files /dev/null and b/docs/fr/6.security/assets/moderation/bot_kick_confirm.png differ diff --git a/docs/fr/6.security/assets/moderation/bot_mute_confirm.png b/docs/fr/6.security/assets/moderation/bot_mute_confirm.png new file mode 100644 index 000000000..15e178c39 Binary files /dev/null and b/docs/fr/6.security/assets/moderation/bot_mute_confirm.png differ diff --git a/docs/fr/6.security/assets/moderation/bot_note_confirm.png b/docs/fr/6.security/assets/moderation/bot_note_confirm.png new file mode 100644 index 000000000..077efcb8f Binary files /dev/null and b/docs/fr/6.security/assets/moderation/bot_note_confirm.png differ diff --git a/docs/fr/6.security/assets/moderation/bot_sanction_edit.png b/docs/fr/6.security/assets/moderation/bot_sanction_edit.png new file mode 100644 index 000000000..4229d9b45 Binary files /dev/null and b/docs/fr/6.security/assets/moderation/bot_sanction_edit.png differ diff --git a/docs/fr/6.security/assets/moderation/bot_sanction_remove.png b/docs/fr/6.security/assets/moderation/bot_sanction_remove.png new file mode 100644 index 000000000..26241dd76 Binary files /dev/null and b/docs/fr/6.security/assets/moderation/bot_sanction_remove.png differ diff --git a/docs/fr/6.security/assets/moderation/bot_sanctions_view.png b/docs/fr/6.security/assets/moderation/bot_sanctions_view.png new file mode 100644 index 000000000..430ae03ce Binary files /dev/null and b/docs/fr/6.security/assets/moderation/bot_sanctions_view.png differ diff --git a/docs/fr/6.security/assets/moderation/bot_warn.png b/docs/fr/6.security/assets/moderation/bot_warn.png new file mode 100644 index 000000000..89a342d34 Binary files /dev/null and b/docs/fr/6.security/assets/moderation/bot_warn.png differ diff --git a/docs/fr/6.security/assets/moderation/config_confidentiality_options.png b/docs/fr/6.security/assets/moderation/config_confidentiality_options.png new file mode 100644 index 000000000..d5bbdb74c Binary files /dev/null and b/docs/fr/6.security/assets/moderation/config_confidentiality_options.png differ diff --git a/docs/fr/6.security/assets/moderation/config_confidentiality_sanctionsmp.png b/docs/fr/6.security/assets/moderation/config_confidentiality_sanctionsmp.png new file mode 100644 index 000000000..c89b4f2e4 Binary files /dev/null and b/docs/fr/6.security/assets/moderation/config_confidentiality_sanctionsmp.png differ diff --git a/docs/fr/6.security/assets/moderation/config_predefined_sanctions.png b/docs/fr/6.security/assets/moderation/config_predefined_sanctions.png new file mode 100644 index 000000000..59ce70241 Binary files /dev/null and b/docs/fr/6.security/assets/moderation/config_predefined_sanctions.png differ diff --git a/docs/fr/6.security/assets/moderation/config_predefined_sanctions_ban.png b/docs/fr/6.security/assets/moderation/config_predefined_sanctions_ban.png new file mode 100644 index 000000000..265e29553 Binary files /dev/null and b/docs/fr/6.security/assets/moderation/config_predefined_sanctions_ban.png differ diff --git a/docs/fr/6.security/assets/moderation/config_predefined_sanctions_edit.png b/docs/fr/6.security/assets/moderation/config_predefined_sanctions_edit.png new file mode 100644 index 000000000..507a708b2 Binary files /dev/null and b/docs/fr/6.security/assets/moderation/config_predefined_sanctions_edit.png differ diff --git a/docs/fr/6.security/assets/moderation/panel_confidentiality_options.png b/docs/fr/6.security/assets/moderation/panel_confidentiality_options.png new file mode 100644 index 000000000..bf25cfa88 Binary files /dev/null and b/docs/fr/6.security/assets/moderation/panel_confidentiality_options.png differ diff --git a/docs/fr/6.security/assets/moderation/panel_confidentiality_sanctionsmp.png b/docs/fr/6.security/assets/moderation/panel_confidentiality_sanctionsmp.png new file mode 100644 index 000000000..79fd14d21 Binary files /dev/null and b/docs/fr/6.security/assets/moderation/panel_confidentiality_sanctionsmp.png differ diff --git a/docs/fr/6.security/assets/moderation/panel_predefined_sanctions.png b/docs/fr/6.security/assets/moderation/panel_predefined_sanctions.png new file mode 100644 index 000000000..94e6e956e Binary files /dev/null and b/docs/fr/6.security/assets/moderation/panel_predefined_sanctions.png differ diff --git a/docs/fr/6.security/assets/moderation/panel_predefined_sanctions_ban.png b/docs/fr/6.security/assets/moderation/panel_predefined_sanctions_ban.png new file mode 100644 index 000000000..932e7e1cb Binary files /dev/null and b/docs/fr/6.security/assets/moderation/panel_predefined_sanctions_ban.png differ diff --git a/docs/fr/6.security/assets/reports/bot_app_report_user.png b/docs/fr/6.security/assets/reports/bot_app_report_user.png new file mode 100644 index 000000000..c2fd4b1c5 Binary files /dev/null and b/docs/fr/6.security/assets/reports/bot_app_report_user.png differ diff --git a/docs/fr/6.security/assets/reports/bot_command_report_user.png b/docs/fr/6.security/assets/reports/bot_command_report_user.png new file mode 100644 index 000000000..8294d2288 Binary files /dev/null and b/docs/fr/6.security/assets/reports/bot_command_report_user.png differ diff --git a/docs/fr/6.security/assets/reports/bot_report.png b/docs/fr/6.security/assets/reports/bot_report.png new file mode 100644 index 000000000..13e5315ea Binary files /dev/null and b/docs/fr/6.security/assets/reports/bot_report.png differ diff --git a/docs/fr/6.security/assets/reports/config_view.png b/docs/fr/6.security/assets/reports/config_view.png new file mode 100644 index 000000000..247e38315 Binary files /dev/null and b/docs/fr/6.security/assets/reports/config_view.png differ diff --git a/docs/fr/6.security/assets/reports/message_reaction.png b/docs/fr/6.security/assets/reports/message_reaction.png new file mode 100644 index 000000000..1a3fc5622 Binary files /dev/null and b/docs/fr/6.security/assets/reports/message_reaction.png differ diff --git a/docs/fr/6.security/assets/reports/panel_view.png b/docs/fr/6.security/assets/reports/panel_view.png new file mode 100644 index 000000000..743c7e95e Binary files /dev/null and b/docs/fr/6.security/assets/reports/panel_view.png differ diff --git a/docs/fr/6.security/assets/secure-roles/bot_connected.png b/docs/fr/6.security/assets/secure-roles/bot_connected.png new file mode 100644 index 000000000..bef59ea1b Binary files /dev/null and b/docs/fr/6.security/assets/secure-roles/bot_connected.png differ diff --git a/docs/fr/6.security/assets/secure-roles/config_menu.png b/docs/fr/6.security/assets/secure-roles/config_menu.png new file mode 100644 index 000000000..0e4596155 Binary files /dev/null and b/docs/fr/6.security/assets/secure-roles/config_menu.png differ diff --git a/docs/fr/6.security/assets/secure-roles/panel_history.png b/docs/fr/6.security/assets/secure-roles/panel_history.png new file mode 100644 index 000000000..9ba0a191f Binary files /dev/null and b/docs/fr/6.security/assets/secure-roles/panel_history.png differ diff --git a/docs/fr/6.security/assets/secure-roles/panel_passkeys.png b/docs/fr/6.security/assets/secure-roles/panel_passkeys.png new file mode 100644 index 000000000..5b2147a00 Binary files /dev/null and b/docs/fr/6.security/assets/secure-roles/panel_passkeys.png differ diff --git a/docs/fr/6.security/assets/secure-roles/panel_risky_role_setup.png b/docs/fr/6.security/assets/secure-roles/panel_risky_role_setup.png new file mode 100644 index 000000000..dec860049 Binary files /dev/null and b/docs/fr/6.security/assets/secure-roles/panel_risky_role_setup.png differ diff --git a/docs/fr/6.security/assets/secure-roles/panel_risky_roles.png b/docs/fr/6.security/assets/secure-roles/panel_risky_roles.png new file mode 100644 index 000000000..f62d83a51 Binary files /dev/null and b/docs/fr/6.security/assets/secure-roles/panel_risky_roles.png differ diff --git a/docs/fr/6.security/assets/secure-roles/panel_role_access.png b/docs/fr/6.security/assets/secure-roles/panel_role_access.png new file mode 100644 index 000000000..4e2ad45c0 Binary files /dev/null and b/docs/fr/6.security/assets/secure-roles/panel_role_access.png differ diff --git a/docs/fr/6.security/assets/secure-roles/panel_security.png b/docs/fr/6.security/assets/secure-roles/panel_security.png new file mode 100644 index 000000000..76fdcb342 Binary files /dev/null and b/docs/fr/6.security/assets/secure-roles/panel_security.png differ diff --git a/docs/fr/6.security/assets/secure-roles/panel_security_2fa.png b/docs/fr/6.security/assets/secure-roles/panel_security_2fa.png new file mode 100644 index 000000000..561f10339 Binary files /dev/null and b/docs/fr/6.security/assets/secure-roles/panel_security_2fa.png differ diff --git a/docs/fr/6.security/assets/secure-roles/panel_security_password.png b/docs/fr/6.security/assets/secure-roles/panel_security_password.png new file mode 100644 index 000000000..52131d269 Binary files /dev/null and b/docs/fr/6.security/assets/secure-roles/panel_security_password.png differ diff --git a/docs/fr/6.security/assets/secure-roles/panel_security_pin.png b/docs/fr/6.security/assets/secure-roles/panel_security_pin.png new file mode 100644 index 000000000..41dede47d Binary files /dev/null and b/docs/fr/6.security/assets/secure-roles/panel_security_pin.png differ diff --git a/docs/7.utilitaires/0.commandes-informations.md b/docs/fr/7.utilities/0.info-commands.md similarity index 89% rename from docs/7.utilitaires/0.commandes-informations.md rename to docs/fr/7.utilities/0.info-commands.md index 631b1de0f..825981f4e 100644 --- a/docs/7.utilitaires/0.commandes-informations.md +++ b/docs/fr/7.utilities/0.info-commands.md @@ -1,4 +1,5 @@ --- +slug: /utilitaires/commandes-informations title: Commandes d'informations description: Découvrez toutes les commandes à votre disposition pour obtenir des informations détaillées sur un sujet précis. navigation.icon: 'twemoji:card-index' @@ -17,7 +18,7 @@ La commande \ vous permet d'obtenir les informations détaill - Les badges de DraftBot : le premium, les membres de l'équipe de DraftBot. - Les badges de Discord : la HypeSquad, le partenaire, le développeur actif, le développeur de bot certifié de la première heure, etc. -![Aperçu de la commande /info utilisateur](../assets/commandes-informations/infouser.png) +![Aperçu de la commande /info utilisateur](./assets/info-commands/infouser.png) ::hint{ type="info" } Si l'utilisateur n'est pas présent sur votre serveur, la date d'arrivée et les rôles ne seront pas affichés. @@ -39,7 +40,7 @@ La commande \ vous permet d'obtenir les informations détaillées - La date de création du serveur. - La date d'arrivée de DraftBot sur le serveur. -![Aperçu de la commande /info serveur](../assets/commandes-informations/infoserver.png) +![Aperçu de la commande /info serveur](./assets/info-commands/infoserver.png) ## /info rôle @@ -53,7 +54,7 @@ La commande \ vous permet d'obtenir les informations détaillées s - Les permissions qu'il possède. - Sa position hiérarchique parmi les autres rôles. -![Aperçu de la commande /info rôle](../assets/commandes-informations/inforole.png) +![Aperçu de la commande /info rôle](./assets/info-commands/inforole.png) ## /info salon @@ -67,7 +68,7 @@ La commande \ vous permet d'obtenir les informations détaillées s - Les permissions de DraftBot. - La date de création du salon ou de la catégorie. -![Aperçu de la commande /info salon](../assets/commandes-informations/infochannel.png) +![Aperçu de la commande /info salon](./assets/info-commands/infochannel.png) ::hint{ type="info" } Pour distinguer les différents types de salons et catégories, une icône apparaîtra à côté de leur nom : une icône "#" pour les salons textuels, une icône "📁" pour les catégories, une icône "🔊" pour les salons vocaux, une icône "📢" pour les salons d'annonces. @@ -86,7 +87,7 @@ La commande \ vous permet d'obtenir les informations détaillées sur l - La date de création du compte. - La date d'arrivée sur le serveur. -![Aperçu de la commande /profil](../assets/commandes-informations/profil.png) +![Aperçu de la commande /profil](./assets/info-commands/profil.png) ::hint{ type="info" } Vous pouvez ajouter une description sur votre profil avec la commande \. diff --git a/docs/7.utilitaires/1.commandes-personnalisees.md b/docs/fr/7.utilities/1.custom-commands.md similarity index 89% rename from docs/7.utilitaires/1.commandes-personnalisees.md rename to docs/fr/7.utilities/1.custom-commands.md index 93faee017..1d8a5aded 100644 --- a/docs/7.utilitaires/1.commandes-personnalisees.md +++ b/docs/fr/7.utilities/1.custom-commands.md @@ -1,4 +1,5 @@ --- +slug: /utilitaires/commandes-personnalisees title: Commandes personnalisées description: Avec DraftBot, vous avez la possibilité de créer vos propres commandes ! navigation.icon: 'twemoji:magic-wand' @@ -15,7 +16,7 @@ updatedAt: '2025-03-02' Remplissez les divers champs (nom, description, actions...), cliquez sur le bouton "Créer", et votre commande personnalisée est immédiatement prête à l'emploi ! - ![Panel de configuration des commandes personnalisées](../assets/commandes-personnalisees/panel_view.png) + ![Panel de configuration des commandes personnalisées](./assets/custom-commands/panel_view.png) ::hint{ type="success" } Pour plus de personnalisation, déroulez le menu "**avancé**" ! @@ -26,7 +27,7 @@ updatedAt: '2025-03-02' Pas de problème ! Cliquez sur "Modifier" ou "Supprimer" : - ![Boutons de modification ou suppression d'une commande personnalisée](../assets/commandes-personnalisees/panel_edit_command.png) + ![Boutons de modification ou suppression d'une commande personnalisée](./assets/custom-commands/panel_edit_command.png) :: :: @@ -65,11 +66,11 @@ Les actions sont le cœur de votre commande personnalisée, et se répartissent ::collapse{ label="Afficher un exemple :" } Voici une action **Envoyer un message**, configurée depuis le [Panel](/dashboard/first/custom-commands) : - ![Exemple d'action Envoyer un Message, avec Embed et variables](../assets/commandes-personnalisees/panel_action_send_message.png) + ![Exemple d'action Envoyer un Message, avec Embed et variables](./assets/custom-commands/panel_action_send_message.png) À l'exécution de la commande, voici ce qu'on obtient : - ![Résultat de la commande sur Discord](../assets/commandes-personnalisees/panel_sent_message_example.png) + ![Résultat de la commande sur Discord](./assets/custom-commands/panel_sent_message_example.png) :: :: @@ -81,7 +82,7 @@ Les actions sont le cœur de votre commande personnalisée, et se répartissent ::collapse{ label="Afficher un exemple :" } Voici une commande faisant appel à l'action **"Ajouter des rôles"** : - ![Exemple d'action Ajouter des rôles](../assets/commandes-personnalisees/panel_action_add_role.png) + ![Exemple d'action Ajouter des rôles](./assets/custom-commands/panel_action_add_role.png) ::hint{ type="success" } Si j'écris sur Discord `!role-a @DraftBot`, le membre DraftBot reçoit le rôle \<@A> ! @@ -99,7 +100,7 @@ Les actions sont le cœur de votre commande personnalisée, et se répartissent ::collapse{ label="Afficher un exemple :" } Depuis le [Panel](/dashboard/first/custom-commands), il est très facile de régler avec précision la durée souhaitée : - ![Exemple d'action Ajouter des rôles](../assets/commandes-personnalisees/panel_action_add_temprole.png) + ![Exemple d'action Ajouter des rôles](./assets/custom-commands/panel_action_add_temprole.png) ::hint{ type="success" } Si j'écris sur Discord `!role-temp`, je reçois le rôle \<@C> ! @@ -115,7 +116,7 @@ Les actions sont le cœur de votre commande personnalisée, et se répartissent ::collapse{ label="Afficher un exemple :" } Voici une fonction qui permet de retirer à un membre le rôle \<@A>, en le mentionnant : - ![Exemple d'action Retirer des rôles](../assets/commandes-personnalisees/panel_action_remove_role.png) + ![Exemple d'action Retirer des rôles](./assets/custom-commands/panel_action_remove_role.png) ::hint{ type="success" } Si j'écris sur Discord `!retrograde-a @DraftBot`, le membre \<@DraftBot> perd instantanément le rôle \<@A> ! @@ -125,7 +126,7 @@ Les actions sont le cœur de votre commande personnalisée, et se répartissent ::hint{ type="info" } Si vous souhaitez que la commande s'applique directement au membre qui l'utilise, il suffit de décocher la case "cibler un autre membre". - ![Cibler un autre membre](../assets/commandes-personnalisees/panel_target_mentionned_member.png) + ![Cibler un autre membre](./assets/custom-commands/panel_target_mentionned_member.png) :: :: @@ -137,7 +138,7 @@ Les actions sont le cœur de votre commande personnalisée, et se répartissent ::collapse{ label="Afficher un exemple :" } La commande suivante permet l'achat d'un item par son utilisateur : - ![Exemple d'action Article de la boutique](../assets/commandes-personnalisees/panel_action_buy_article.png) + ![Exemple d'action Article de la boutique](./assets/custom-commands/panel_action_buy_article.png) ::hint{ type="success" } Si j'écris sur Discord `!renard`, l'objet **"🦊 Renard en peluche"** apparaît dans mon inventaire (et son prix est déduit de mon argent) ! @@ -157,7 +158,7 @@ Les actions sont le cœur de votre commande personnalisée, et se répartissent ::collapse{ label="Afficher un exemple :" } Voici une commande `!donation`, qui permet d'ajouter 10💰 à un membre mentionné : - ![Exemple d'action Ajouter de l'argent](../assets/commandes-personnalisees/panel_action_add_money.png) + ![Exemple d'action Ajouter de l'argent](./assets/custom-commands/panel_action_add_money.png) ::hint{ type="success" } Si j'écris sur Discord `!donation @DraftBot`, le membre \<@DraftBot> reçoit instantanément 10💰 ! @@ -178,7 +179,7 @@ Les actions sont le cœur de votre commande personnalisée, et se répartissent ::tab{ label="Depuis le panel" } ::hint{ type="info" } Depuis le [Panel](/dashboard/first/custom-commands), vous pouvez faire apparaître ces options en cliquant sur "Avancé", en dessous de vos actions. - ![Développer le menu des options avancées](../assets/commandes-personnalisees/panel_advanced_button.png) + ![Développer le menu des options avancées](./assets/custom-commands/panel_advanced_button.png) :: :: @@ -214,14 +215,14 @@ On peut regrouper les options avancées en 4 catégories : Le mode actif est écrit en blanc, tandis que l'autre est grisé. - ![Dans cette configuration, si j'ajoute des rôles/salons, ils n'auront pas accès à la commande.](../assets/commandes-personnalisees/panel_channels_roles_restrict.png) + ![Dans cette configuration, si j'ajoute des rôles/salons, ils n'auront pas accès à la commande.](./assets/custom-commands/panel_channels_roles_restrict.png) :: :: ::tab{ label="Masquage" } Si vous ne souhaitez pas que la commande apparaisse dans le \, vous pouvez activer ce bouton : - ![Option permettant de cacher la commande](../assets/commandes-personnalisees/panel_command_hidden.png) + ![Option permettant de cacher la commande](./assets/custom-commands/panel_command_hidden.png) ::hint{ type="warning" } Lorsque la commande est cachée, elle ne renverra pas de message d'erreur en cas de mauvaise utilisation ! @@ -233,14 +234,14 @@ On peut regrouper les options avancées en 4 catégories : - `Nombre d'utilisations` : le nombre d'utilisations par le même utilisateur avant de déclencher un temps de rechargement - `Durée du mode lent` : la durée de rechargement avant que l'utilisateur puisse utiliser de nouveau la commande. - ![Le Panel offre une interface intuitive pour régler le mode lent. ](../assets/commandes-personnalisees/panel_cooldown.png) + ![Le Panel offre une interface intuitive pour régler le mode lent. ](./assets/custom-commands/panel_cooldown.png) ::hint{ type="success" } Si vous êtes modérateur/administrateur, vous pouvez réinitialiser votre propre nombre d'utilisations d'une commande ! Pour cela, rendez-vous sur le [Panel](/dashboard/first/custom-commands), cliquez sur "**Modifier**" à côté de la commande en question. Un bouton "**Réinitialiser mon mode lent**" apparaîtra en bas à gauche de l'écran : - ![Réinitialiser son mode lent depuis le panel](../assets/commandes-personnalisees/panel_reset_cooldown.png) + ![Réinitialiser son mode lent depuis le panel](./assets/custom-commands/panel_reset_cooldown.png) :: :: @@ -256,7 +257,7 @@ On peut regrouper les options avancées en 4 catégories : ::hint{ type="success" } Grâce au [Panel](/dashboard/first/custom-commands), vous pouvez configurer tout ça en quelques clics : - ![Liste des conditions possibles](../assets/commandes-personnalisees/panel_conditions.png) + ![Liste des conditions possibles](./assets/custom-commands/panel_conditions.png) :: :: :: diff --git a/docs/7.utilitaires/2.rappels.md b/docs/fr/7.utilities/2.reminders.md similarity index 95% rename from docs/7.utilitaires/2.rappels.md rename to docs/fr/7.utilities/2.reminders.md index 0da060084..831a9d2a0 100644 --- a/docs/7.utilitaires/2.rappels.md +++ b/docs/fr/7.utilities/2.reminders.md @@ -1,4 +1,5 @@ --- +slug: /utilitaires/rappels title: Rappels description: Cette fonctionnalité vous permet, grâce à DraftBot, de créer un rappel et ainsi de vous rappeler quelque chose après un certain temps en vous mentionnant. navigation.icon: 'twemoji:alarm-clock' @@ -14,7 +15,7 @@ Pour créer un rappel, vous devez effectuer la commande \. Draft - **Le temps** : dans combien de temps souhaitez-vous recevoir votre rappel. - **La destination** : où souhaitez-vous le recevoir, entre vos messages privés ou dans le salon où le rappel a été créé. -![Aperçu de la commande](../assets/rappels/rappel_create.png) +![Aperçu de la commande](./assets/reminders/rappel_create.png) ::hint{ type="warning" } Vous pouvez créer jusqu'à 3 rappels en simultané. Les serveurs [premium](/premium) <:icon_premium:1096140508625125417> peuvent en avoir jusqu'à 10 simultanément. diff --git a/docs/7.utilitaires/3.salons-de-statistiques.md b/docs/fr/7.utilities/3.statistics-channels.md similarity index 93% rename from docs/7.utilitaires/3.salons-de-statistiques.md rename to docs/fr/7.utilities/3.statistics-channels.md index 63b46e6bc..25bd45e00 100644 --- a/docs/7.utilitaires/3.salons-de-statistiques.md +++ b/docs/fr/7.utilities/3.statistics-channels.md @@ -1,4 +1,5 @@ --- +slug: /utilitaires/salons-de-statistiques title: Salons de statistiques description: Les salons de statistiques permettent d'afficher en temps réel différentes informations sur votre serveur (membres, bots, rôles, salons…), directement dans des salons vocaux ou des catégories. navigation.icon: 'twemoji:abacus' @@ -11,11 +12,11 @@ updatedAt: '2026-01-13' ### Salons vocaux -![Aperçu d'un salon vocal de statistiques](../assets/salons-de-statistiques/bot_vocalcount.png) +![Aperçu d'un salon vocal de statistiques](./assets/statistics-channels/bot_vocalcount.png) ### Catégorie -![Aperçu d'une catégorie de statistiques](../assets/salons-de-statistiques/bot_categorycount.png) +![Aperçu d'une catégorie de statistiques](./assets/statistics-channels/bot_categorycount.png) ::hint{ type="info" } Les salons de statistiques s'actualisent toutes les **15 minutes**. Les serveurs [premium](/premium) <:icon_premium:1096140508625125417> ont une actualisation de **10 minutes**. @@ -87,13 +88,13 @@ updatedAt: '2026-01-13' ### Salon -![Aperçu d'un salon vocal de statistiques](../assets/salons-de-statistiques/bot_vocalcount.png) +![Aperçu d'un salon vocal de statistiques](./assets/statistics-channels/bot_vocalcount.png) Vous pouvez modifier le nom d'un salon vocal en mettant ce que vous souhaitez, à condition qu'il soit placé avant le " : ". ### Catégorie -![Aperçu d'une catégorie de statistiques](../assets/salons-de-statistiques/bot_categorycount.png) +![Aperçu d'une catégorie de statistiques](./assets/statistics-channels/bot_categorycount.png) Vous pouvez modifier le nom d'une catégorie en mettant ce que vous souhaitez, à condition qu'il soit placé avant le " – ". diff --git a/docs/7.utilitaires/4.sauvegardes-du-serveur.md b/docs/fr/7.utilities/4.server-backups.md similarity index 84% rename from docs/7.utilitaires/4.sauvegardes-du-serveur.md rename to docs/fr/7.utilities/4.server-backups.md index a970e623a..5908f61fd 100644 --- a/docs/7.utilitaires/4.sauvegardes-du-serveur.md +++ b/docs/fr/7.utilities/4.server-backups.md @@ -1,4 +1,5 @@ --- +slug: /utilitaires/sauvegardes-du-serveur title: Sauvegardes description: Sécurisez la structure de votre serveur en créant et en restaurant des sauvegardes complètes de votre serveur. navigation.icon: 'twemoji:package' @@ -32,7 +33,7 @@ Vous aurez à disposition l'option `nom` qui permettra de définir un nom person Les noms de sauvegardes ne peuvent dépasser **30** caractères. :: -![Panel de confirmation](../assets/sauvegardes-du-serveur/bot_create.png) +![Panel de confirmation](./assets/server-backups/bot_create.png) ::hint{ type="success" } **Félicitations !** Vous avez réussi à créer une sauvegarde ! @@ -47,7 +48,7 @@ La liste affiche : - Le **nom** - La **date de création** -![Liste de toutes les sauvegardes effectuées](../assets/sauvegardes-du-serveur/bot_list.png) +![Liste de toutes les sauvegardes effectuées](./assets/server-backups/bot_list.png) ## Restaurer une sauvegarde @@ -59,7 +60,7 @@ Vous aurez à disposition l'option `sauvegarde` qui permettra de sélectionner l **Attention :** Lorsque vous demandez une restauration de votre serveur, vous devrez obligatoirement avoir **désactivé** l'option communautaire de votre serveur si ce n'est déjà fait. :: -![Image de l'avertissement pour expliquer que la communauté doit être désactivée](../assets/sauvegardes-du-serveur/bot_warncommunity.png) +![Image de l'avertissement pour expliquer que la communauté doit être désactivée](./assets/server-backups/bot_warncommunity.png) ## Supprimer une sauvegarde @@ -68,13 +69,13 @@ La commande \ permet de supprimer une sauvegarde spécifiqu ::hint{ type="info" } Lorsque vous faites la commande, une confirmation est demandée avant suppression. :: -![Confirmation de la suppression d'une sauvegarde](../assets/sauvegardes-du-serveur/bot_delete_confirmation.png) +![Confirmation de la suppression d'une sauvegarde](./assets/server-backups/bot_delete_confirmation.png) ## Réinitialiser toutes les sauvegardes La commande \ permet de supprimer l'ensemble des sauvegardes du serveur. -![Le panel de confirmation de réinitialisation](../assets/sauvegardes-du-serveur/bot_reset_confirmation.png) +![Le panel de confirmation de réinitialisation](./assets/server-backups/bot_reset_confirmation.png) ::hint{ type="danger" } Si vous acceptez de supprimer toutes les sauvegardes, cette action sera **irréversible**. diff --git a/docs/7.utilitaires/_dir.yml b/docs/fr/7.utilities/_dir.yml similarity index 84% rename from docs/7.utilitaires/_dir.yml rename to docs/fr/7.utilities/_dir.yml index 8ea558577..6a294b41d 100644 --- a/docs/7.utilitaires/_dir.yml +++ b/docs/fr/7.utilities/_dir.yml @@ -1,3 +1,4 @@ +slug: /utilitaires/_dir title: Utilitaires description: Les commandes et outils du quotidien pour vous et vos membres. navigation.icon: 'twemoji:toolbox' diff --git a/docs/fr/7.utilities/assets/custom-commands/panel_action_add_money.png b/docs/fr/7.utilities/assets/custom-commands/panel_action_add_money.png new file mode 100644 index 000000000..6ec830124 Binary files /dev/null and b/docs/fr/7.utilities/assets/custom-commands/panel_action_add_money.png differ diff --git a/docs/fr/7.utilities/assets/custom-commands/panel_action_add_role.png b/docs/fr/7.utilities/assets/custom-commands/panel_action_add_role.png new file mode 100644 index 000000000..460d0d2ec Binary files /dev/null and b/docs/fr/7.utilities/assets/custom-commands/panel_action_add_role.png differ diff --git a/docs/fr/7.utilities/assets/custom-commands/panel_action_add_temprole.png b/docs/fr/7.utilities/assets/custom-commands/panel_action_add_temprole.png new file mode 100644 index 000000000..48faf19cb Binary files /dev/null and b/docs/fr/7.utilities/assets/custom-commands/panel_action_add_temprole.png differ diff --git a/docs/fr/7.utilities/assets/custom-commands/panel_action_buy_article.png b/docs/fr/7.utilities/assets/custom-commands/panel_action_buy_article.png new file mode 100644 index 000000000..a8b634e16 Binary files /dev/null and b/docs/fr/7.utilities/assets/custom-commands/panel_action_buy_article.png differ diff --git a/docs/fr/7.utilities/assets/custom-commands/panel_action_remove_role.png b/docs/fr/7.utilities/assets/custom-commands/panel_action_remove_role.png new file mode 100644 index 000000000..908cde9f5 Binary files /dev/null and b/docs/fr/7.utilities/assets/custom-commands/panel_action_remove_role.png differ diff --git a/docs/fr/7.utilities/assets/custom-commands/panel_action_send_message.png b/docs/fr/7.utilities/assets/custom-commands/panel_action_send_message.png new file mode 100644 index 000000000..34a63a66e Binary files /dev/null and b/docs/fr/7.utilities/assets/custom-commands/panel_action_send_message.png differ diff --git a/docs/fr/7.utilities/assets/custom-commands/panel_advanced_button.png b/docs/fr/7.utilities/assets/custom-commands/panel_advanced_button.png new file mode 100644 index 000000000..e1c0021e4 Binary files /dev/null and b/docs/fr/7.utilities/assets/custom-commands/panel_advanced_button.png differ diff --git a/docs/fr/7.utilities/assets/custom-commands/panel_channels_roles_restrict.png b/docs/fr/7.utilities/assets/custom-commands/panel_channels_roles_restrict.png new file mode 100644 index 000000000..e006d3da3 Binary files /dev/null and b/docs/fr/7.utilities/assets/custom-commands/panel_channels_roles_restrict.png differ diff --git a/docs/fr/7.utilities/assets/custom-commands/panel_command_hidden.png b/docs/fr/7.utilities/assets/custom-commands/panel_command_hidden.png new file mode 100644 index 000000000..5e67199af Binary files /dev/null and b/docs/fr/7.utilities/assets/custom-commands/panel_command_hidden.png differ diff --git a/docs/fr/7.utilities/assets/custom-commands/panel_conditions.png b/docs/fr/7.utilities/assets/custom-commands/panel_conditions.png new file mode 100644 index 000000000..8dd3944f7 Binary files /dev/null and b/docs/fr/7.utilities/assets/custom-commands/panel_conditions.png differ diff --git a/docs/fr/7.utilities/assets/custom-commands/panel_cooldown.png b/docs/fr/7.utilities/assets/custom-commands/panel_cooldown.png new file mode 100644 index 000000000..6195479ae Binary files /dev/null and b/docs/fr/7.utilities/assets/custom-commands/panel_cooldown.png differ diff --git a/docs/fr/7.utilities/assets/custom-commands/panel_edit_command.png b/docs/fr/7.utilities/assets/custom-commands/panel_edit_command.png new file mode 100644 index 000000000..bb2c68976 Binary files /dev/null and b/docs/fr/7.utilities/assets/custom-commands/panel_edit_command.png differ diff --git a/docs/fr/7.utilities/assets/custom-commands/panel_reset_cooldown.png b/docs/fr/7.utilities/assets/custom-commands/panel_reset_cooldown.png new file mode 100644 index 000000000..3750435dc Binary files /dev/null and b/docs/fr/7.utilities/assets/custom-commands/panel_reset_cooldown.png differ diff --git a/docs/fr/7.utilities/assets/custom-commands/panel_sent_message_example.png b/docs/fr/7.utilities/assets/custom-commands/panel_sent_message_example.png new file mode 100644 index 000000000..5863572f2 Binary files /dev/null and b/docs/fr/7.utilities/assets/custom-commands/panel_sent_message_example.png differ diff --git a/docs/fr/7.utilities/assets/custom-commands/panel_target_mentionned_member.png b/docs/fr/7.utilities/assets/custom-commands/panel_target_mentionned_member.png new file mode 100644 index 000000000..2c682ba1a Binary files /dev/null and b/docs/fr/7.utilities/assets/custom-commands/panel_target_mentionned_member.png differ diff --git a/docs/fr/7.utilities/assets/custom-commands/panel_view.png b/docs/fr/7.utilities/assets/custom-commands/panel_view.png new file mode 100644 index 000000000..7d8bacc62 Binary files /dev/null and b/docs/fr/7.utilities/assets/custom-commands/panel_view.png differ diff --git a/docs/fr/7.utilities/assets/info-commands/infochannel.png b/docs/fr/7.utilities/assets/info-commands/infochannel.png new file mode 100644 index 000000000..9f7dedd76 Binary files /dev/null and b/docs/fr/7.utilities/assets/info-commands/infochannel.png differ diff --git a/docs/fr/7.utilities/assets/info-commands/inforole.png b/docs/fr/7.utilities/assets/info-commands/inforole.png new file mode 100644 index 000000000..a6691bd9d Binary files /dev/null and b/docs/fr/7.utilities/assets/info-commands/inforole.png differ diff --git a/docs/fr/7.utilities/assets/info-commands/infoserver.png b/docs/fr/7.utilities/assets/info-commands/infoserver.png new file mode 100644 index 000000000..b54083452 Binary files /dev/null and b/docs/fr/7.utilities/assets/info-commands/infoserver.png differ diff --git a/docs/fr/7.utilities/assets/info-commands/infouser.png b/docs/fr/7.utilities/assets/info-commands/infouser.png new file mode 100644 index 000000000..a9745a952 Binary files /dev/null and b/docs/fr/7.utilities/assets/info-commands/infouser.png differ diff --git a/docs/fr/7.utilities/assets/info-commands/profil.png b/docs/fr/7.utilities/assets/info-commands/profil.png new file mode 100644 index 000000000..a59835974 Binary files /dev/null and b/docs/fr/7.utilities/assets/info-commands/profil.png differ diff --git a/docs/fr/7.utilities/assets/reminders/rappel_create.png b/docs/fr/7.utilities/assets/reminders/rappel_create.png new file mode 100644 index 000000000..c0c253090 Binary files /dev/null and b/docs/fr/7.utilities/assets/reminders/rappel_create.png differ diff --git a/docs/fr/7.utilities/assets/server-backups/bot_create.png b/docs/fr/7.utilities/assets/server-backups/bot_create.png new file mode 100644 index 000000000..21586d096 Binary files /dev/null and b/docs/fr/7.utilities/assets/server-backups/bot_create.png differ diff --git a/docs/fr/7.utilities/assets/server-backups/bot_delete_confirmation.png b/docs/fr/7.utilities/assets/server-backups/bot_delete_confirmation.png new file mode 100644 index 000000000..29af9ce41 Binary files /dev/null and b/docs/fr/7.utilities/assets/server-backups/bot_delete_confirmation.png differ diff --git a/docs/fr/7.utilities/assets/server-backups/bot_list.png b/docs/fr/7.utilities/assets/server-backups/bot_list.png new file mode 100644 index 000000000..8dd73e5f0 Binary files /dev/null and b/docs/fr/7.utilities/assets/server-backups/bot_list.png differ diff --git a/docs/fr/7.utilities/assets/server-backups/bot_reset_confirmation.png b/docs/fr/7.utilities/assets/server-backups/bot_reset_confirmation.png new file mode 100644 index 000000000..a176f739a Binary files /dev/null and b/docs/fr/7.utilities/assets/server-backups/bot_reset_confirmation.png differ diff --git a/docs/fr/7.utilities/assets/server-backups/bot_warncommunity.png b/docs/fr/7.utilities/assets/server-backups/bot_warncommunity.png new file mode 100644 index 000000000..fe191e79b Binary files /dev/null and b/docs/fr/7.utilities/assets/server-backups/bot_warncommunity.png differ diff --git a/docs/fr/7.utilities/assets/statistics-channels/bot_categorycount.png b/docs/fr/7.utilities/assets/statistics-channels/bot_categorycount.png new file mode 100644 index 000000000..56da8ebf6 Binary files /dev/null and b/docs/fr/7.utilities/assets/statistics-channels/bot_categorycount.png differ diff --git a/docs/fr/7.utilities/assets/statistics-channels/bot_vocalcount.png b/docs/fr/7.utilities/assets/statistics-channels/bot_vocalcount.png new file mode 100644 index 000000000..3e4e96832 Binary files /dev/null and b/docs/fr/7.utilities/assets/statistics-channels/bot_vocalcount.png differ diff --git a/docs/8.autres/0.recuperer-un-identifiant.md b/docs/fr/8.misc/0.finding-an-id.md similarity index 93% rename from docs/8.autres/0.recuperer-un-identifiant.md rename to docs/fr/8.misc/0.finding-an-id.md index 100d62c58..0674c1899 100644 --- a/docs/8.autres/0.recuperer-un-identifiant.md +++ b/docs/fr/8.misc/0.finding-an-id.md @@ -1,4 +1,5 @@ --- +slug: /autres/recuperer-un-identifiant title: Récupérer un identifiant description: Chaque message, rôle, membre, serveur et émoji dispose d'un identifiant qui leur est unique. Il peut être utile pour la configuration de certains modules. navigation.icon: 'material-symbols:filter-none-outline' @@ -20,7 +21,7 @@ Pour récupérer l'identifiant d'un message, vous devez : - Laisser appuyer ou cliquer droit sur un message - Puis appuyer sur **Copier l'identifiant** -![Exemple de récupération sur ordinateur de l'identifiant d'un message](../assets/autres/message_id.gif) +![Exemple de récupération sur ordinateur de l'identifiant d'un message](./assets/misc/message_id.gif) ## Identifiant d'un rôle @@ -35,7 +36,7 @@ Afin de récupérer l'identifiant d'un rôle, vous devez : - Appuyer ou cliquer sur un membre qui possède le rôle dont vous souhaitez récupérer l'identifiant - Puis appuyer longtemps sur le rôle (smartphone) ou bien cliquer droit sur le rôle et sur **Copier l'identifiant** (ordinateur). -![Exemple de récupération sur ordinateur de l'identifiant d'un rôle](../assets/autres/role_id.gif) +![Exemple de récupération sur ordinateur de l'identifiant d'un rôle](./assets/misc/role_id.gif) Si vous avez besoin de mentionner un rôle (ex: panel web), il vous suffit de faire `<@&[ID-Role]>`. @@ -53,7 +54,7 @@ Pour récupérer l'identifiant d'un membre, vous devez : - Si vous êtes sur smartphone, cliquez sur les trois petits points en haut à droite - Puis appuyez sur **Copier l'identifiant**. -![Exemple de récupération sur ordinateur de l'identifiant d'un membre](../assets/autres/member_id.gif) +![Exemple de récupération sur ordinateur de l'identifiant d'un membre](./assets/misc/member_id.gif) Si vous avez besoin de mentionner un membre (ex: panel web), vous pouvez écrire `<@ID-Membre>`. @@ -65,7 +66,7 @@ Pour obtenir l'identifiant d'un émoji, il vous suffit : - Avant l’émoji, mettez un antislash - Puis envoyez votre message. -![Exemple de récupération sur ordinateur de l'identifiant d'un émoji](../assets/autres/emoji_id.gif) +![Exemple de récupération sur ordinateur de l'identifiant d'un émoji](./assets/misc/emoji_id.gif) ::hint{ type="info" } Si vous êtes sur **Android**, pour récupérer l'identifiant d'un émoji : @@ -87,7 +88,7 @@ Pour obtenir l'identifiant d'un salon, vous pouvez : - Appuyer ou faire clic droit sur le nom d'un salon - Puis d'appuyer sur **Copier l'identifiant**. -![Exemple de récupération sur ordinateur de l'identifiant d'un salon](../assets/autres/channel_id.gif) +![Exemple de récupération sur ordinateur de l'identifiant d'un salon](./assets/misc/channel_id.gif) Si vous avez besoin de mentionner un salon (ex: panel web), vous devez écrire `<#ID-Salon>` @@ -104,6 +105,6 @@ Si vous souhaitez récupérer l'identifiant d'un serveur, il vous suffit : - De faire un clic droit ou appuyer sur l'image/nom du serveur - Puis d'appuyer sur **Copier l'identifiant**. -![Exemple de récupération sur ordinateur de l'identifiant d'un serveur](../assets/autres/guild_id.gif) +![Exemple de récupération sur ordinateur de l'identifiant d'un serveur](./assets/misc/guild_id.gif) diff --git a/docs/8.autres/2.markdown.md b/docs/fr/8.misc/2.markdown.md similarity index 87% rename from docs/8.autres/2.markdown.md rename to docs/fr/8.misc/2.markdown.md index ffb30e0dd..854bde066 100644 --- a/docs/8.autres/2.markdown.md +++ b/docs/fr/8.misc/2.markdown.md @@ -1,4 +1,5 @@ --- +slug: /autres/markdown title: Markdown description: Découvrez et utilisez le markdown Discord dans vos messages. navigation.icon: 'material-symbols:markdown-outline' @@ -33,7 +34,7 @@ Plus vous utilisez de `#` (maximum 3) pour faire un titre, plus le titre est pet ## Titre 2 ### Titre 3 ``` -![Aperçu des titres](../assets/markdown/titre.png) +![Aperçu des titres](./assets/markdown/titre.png) ::hint{ type="info" } N'oubliez pas de mettre un espace entre votre titre et le code. @@ -49,7 +50,7 @@ Vous pouvez mettre du texte en sous-texte pour qu'il soit affiché plus petit qu ``` -# Texte ``` -![Aperçu d'un sous-texte](../assets/markdown/soustexte.png) +![Aperçu d'un sous-texte](./assets/markdown/soustexte.png) ### Lien masqué @@ -59,7 +60,7 @@ Vous pouvez intégrer un lien hypertexte masqué, cliquable, dans un texte. ``` [Texte](lien hypertexte) ``` -![Aperçu d'un lien masqué](../assets/markdown/lien_masque.png) +![Aperçu d'un lien masqué](./assets/markdown/lien_masque.png) ### Liste @@ -72,7 +73,7 @@ Vous pouvez également faire un alinéa dans votre liste en ajoutant un espace a - Ligne 2 ... ``` -![Aperçu d'une liste](../assets/markdown/liste.png) +![Aperçu d'une liste](./assets/markdown/liste.png) ### Citation @@ -84,7 +85,7 @@ ou sur plusieurs lignes ``` -![Aperçu d'une citation](../assets/markdown/citation.png) +![Aperçu d'une citation](./assets/markdown/citation.png) ### Spoiler @@ -94,7 +95,7 @@ Vous pouvez masquer votre texte, pour qu'il ne soit visible qu'en cliquant dessu ``` ||Texte|| ``` -![Aperçu d'un spoiler](../assets/markdown/spoiler.png) +![Aperçu d'un spoiler](./assets/markdown/spoiler.png) ### Code en bloc @@ -104,7 +105,7 @@ Vous pouvez masquer votre texte, pour qu'il ne soit visible qu'en cliquant dessu Texte Texte``` ``` -![Aperçu d'un code en bloc](../assets/markdown/code_block.png) +![Aperçu d'un code en bloc](./assets/markdown/code_block.png) ### Code de langage @@ -114,7 +115,7 @@ Texte``` + ajout - suppression``` ``` -![Aperçu du code](../assets/markdown/code_diff.png) +![Aperçu du code](./assets/markdown/code_diff.png) ::collapse{ label="Voir les différents codes possibles" } | Code | Caractéristique | @@ -169,4 +170,4 @@ Texte``` ou ``Texte`` ``` -![Aperçu d'un code en ligne](../assets/markdown/code_ligne.png) \ No newline at end of file +![Aperçu d'un code en ligne](./assets/markdown/code_ligne.png) \ No newline at end of file diff --git a/docs/8.autres/3.premium.md b/docs/fr/8.misc/3.premium.md similarity index 90% rename from docs/8.autres/3.premium.md rename to docs/fr/8.misc/3.premium.md index 7cc77b014..ea84acdfa 100644 --- a/docs/8.autres/3.premium.md +++ b/docs/fr/8.misc/3.premium.md @@ -1,4 +1,5 @@ --- +slug: /autres/premium title: Abonnement premium description: Vous trouverez ici l’ensemble des informations essentielles sur le fonctionnement, la gestion et l'activation du premium de DraftBot. navigation.icon: 'material-symbols:diamond-outline' @@ -16,7 +17,7 @@ Depuis le [panel](/dashboard/user/premium), vous pourrez retrouver toutes les in - L'historique des paiements - Vos serveurs activés -![Aperçu de l'interface panel](../assets/premium/interface_panel_premium.png) +![Aperçu de l'interface panel](./assets/premium/interface_panel_premium.png) - **Gérer l'abonnement** : vous permet de gérer le renouvellement de votre abonnement et de consulter vos factures d'achat. @@ -36,13 +37,13 @@ Lors de l'achat du premium, il est directement associé à votre compte Discord. Pour activer le premium sur un serveur, cliquez sur l’icône du serveur souhaité, puis validez. - ![Aperçu de l'interface d'activation](../assets/premium/apercu_serveur.png) + ![Aperçu de l'interface d'activation](./assets/premium/apercu_serveur.png) :: ::tab{ label="Via une commande" } Pour activer le premium sur votre serveur, exécutez simplement la commande \ pour l'activer sur votre serveur. - ![Message de la commande /premium activer](../assets/premium/premium_enable_command.png) + ![Message de la commande /premium activer](./assets/premium/premium_enable_command.png) :: :: @@ -56,7 +57,7 @@ Si vous avez reçu un code premium d’un tiers ou que vous l'avez acheté depui Rendez-vous sur le **[panel](/dashboard/user/premium)**, accédez à la rubrique **"inventaire"** puis sélectionnez **"Utilisez un code"** et entrez le code. Le code se trouve dans votre inventaire. Vous pouvez le garder ou l’activer immédiatement afin de bénéficier des avantages. -![Aperçu de l'inventaire](../assets/premium/inventaire_apercu.png) +![Aperçu de l'inventaire](./assets/premium/inventaire_apercu.png) ::hint{ type="info" } Il n'est pas nécessaire d'être sur le serveur ni de disposer d'une permission particulière. @@ -87,7 +88,7 @@ Si vous souscrivez à un premium en ayant déjà un abonnement actif, ce nouvel - **L'activer à la fin de l'actuel :** Avec cette option, vous pouvez prolonger votre abonnement Premium sur la durée. -![Aperçu de la fenêtre lors de l'activation de votre code](../assets/premium/apercu_popup_accumulation.png) +![Aperçu de la fenêtre lors de l'activation de votre code](./assets/premium/apercu_popup_accumulation.png) ## Désactivation du premium diff --git a/docs/8.autres/6.variables.md b/docs/fr/8.misc/6.variables.md similarity index 99% rename from docs/8.autres/6.variables.md rename to docs/fr/8.misc/6.variables.md index 586a516f1..6c54182b9 100644 --- a/docs/8.autres/6.variables.md +++ b/docs/fr/8.misc/6.variables.md @@ -1,4 +1,5 @@ --- +slug: /autres/variables title: Variables description: Le système de variables permet d'insérer dynamiquement des informations contextuelles dans vos messages. Ces variables suivent un format spécifique et peuvent être enrichies avec des paramètres et modificateurs pour personnaliser l'affichage. navigation.icon: 'material-symbols:data-object' diff --git a/docs/8.autres/7.timestamps.md b/docs/fr/8.misc/7.timestamps.md similarity index 98% rename from docs/8.autres/7.timestamps.md rename to docs/fr/8.misc/7.timestamps.md index e8c8185ee..6fc60f6f2 100644 --- a/docs/8.autres/7.timestamps.md +++ b/docs/fr/8.misc/7.timestamps.md @@ -1,4 +1,5 @@ --- +slug: /autres/timestamps title: Timestamps description: Les timestamps permettent d’afficher une date ou une heure dynamique, directement interprétée par Discord. Ils s'adaptent automatiquement à la langue de l’utilisateur, à son fuseau horaire et au moment où le message est consulté. navigation.icon: 'material-symbols:schedule' diff --git a/docs/fr/8.misc/_dir.yml b/docs/fr/8.misc/_dir.yml new file mode 100644 index 000000000..9a222e240 --- /dev/null +++ b/docs/fr/8.misc/_dir.yml @@ -0,0 +1,2 @@ +slug: /autres/_dir +title: Autres diff --git a/docs/fr/8.misc/assets/markdown/citation.png b/docs/fr/8.misc/assets/markdown/citation.png new file mode 100644 index 000000000..83819a6f5 Binary files /dev/null and b/docs/fr/8.misc/assets/markdown/citation.png differ diff --git a/docs/fr/8.misc/assets/markdown/code_block.png b/docs/fr/8.misc/assets/markdown/code_block.png new file mode 100644 index 000000000..70d476f27 Binary files /dev/null and b/docs/fr/8.misc/assets/markdown/code_block.png differ diff --git a/docs/fr/8.misc/assets/markdown/code_diff.png b/docs/fr/8.misc/assets/markdown/code_diff.png new file mode 100644 index 000000000..dfd89d0a6 Binary files /dev/null and b/docs/fr/8.misc/assets/markdown/code_diff.png differ diff --git a/docs/fr/8.misc/assets/markdown/code_ligne.png b/docs/fr/8.misc/assets/markdown/code_ligne.png new file mode 100644 index 000000000..16635e91c Binary files /dev/null and b/docs/fr/8.misc/assets/markdown/code_ligne.png differ diff --git a/docs/fr/8.misc/assets/markdown/lien_masque.png b/docs/fr/8.misc/assets/markdown/lien_masque.png new file mode 100644 index 000000000..071aca64b Binary files /dev/null and b/docs/fr/8.misc/assets/markdown/lien_masque.png differ diff --git a/docs/fr/8.misc/assets/markdown/liste.png b/docs/fr/8.misc/assets/markdown/liste.png new file mode 100644 index 000000000..0157e51ca Binary files /dev/null and b/docs/fr/8.misc/assets/markdown/liste.png differ diff --git a/docs/fr/8.misc/assets/markdown/soustexte.png b/docs/fr/8.misc/assets/markdown/soustexte.png new file mode 100644 index 000000000..365d7dfe9 Binary files /dev/null and b/docs/fr/8.misc/assets/markdown/soustexte.png differ diff --git a/docs/fr/8.misc/assets/markdown/spoiler.png b/docs/fr/8.misc/assets/markdown/spoiler.png new file mode 100644 index 000000000..32f7d26ea Binary files /dev/null and b/docs/fr/8.misc/assets/markdown/spoiler.png differ diff --git a/docs/fr/8.misc/assets/markdown/titre.png b/docs/fr/8.misc/assets/markdown/titre.png new file mode 100644 index 000000000..03ca99c55 Binary files /dev/null and b/docs/fr/8.misc/assets/markdown/titre.png differ diff --git a/docs/fr/8.misc/assets/misc/channel_id.gif b/docs/fr/8.misc/assets/misc/channel_id.gif new file mode 100644 index 000000000..9da5f2cbf Binary files /dev/null and b/docs/fr/8.misc/assets/misc/channel_id.gif differ diff --git a/docs/fr/8.misc/assets/misc/emoji_id.gif b/docs/fr/8.misc/assets/misc/emoji_id.gif new file mode 100644 index 000000000..ca160e96a Binary files /dev/null and b/docs/fr/8.misc/assets/misc/emoji_id.gif differ diff --git a/docs/fr/8.misc/assets/misc/guild_id.gif b/docs/fr/8.misc/assets/misc/guild_id.gif new file mode 100644 index 000000000..8821b93dd Binary files /dev/null and b/docs/fr/8.misc/assets/misc/guild_id.gif differ diff --git a/docs/fr/8.misc/assets/misc/member_id.gif b/docs/fr/8.misc/assets/misc/member_id.gif new file mode 100644 index 000000000..385657b03 Binary files /dev/null and b/docs/fr/8.misc/assets/misc/member_id.gif differ diff --git a/docs/fr/8.misc/assets/misc/message_id.gif b/docs/fr/8.misc/assets/misc/message_id.gif new file mode 100644 index 000000000..71efd51f3 Binary files /dev/null and b/docs/fr/8.misc/assets/misc/message_id.gif differ diff --git a/docs/fr/8.misc/assets/misc/role_id.gif b/docs/fr/8.misc/assets/misc/role_id.gif new file mode 100644 index 000000000..365f7e75d Binary files /dev/null and b/docs/fr/8.misc/assets/misc/role_id.gif differ diff --git a/docs/fr/8.misc/assets/premium/apercu_popup_accumulation.png b/docs/fr/8.misc/assets/premium/apercu_popup_accumulation.png new file mode 100644 index 000000000..75fb48ff5 Binary files /dev/null and b/docs/fr/8.misc/assets/premium/apercu_popup_accumulation.png differ diff --git a/docs/fr/8.misc/assets/premium/apercu_serveur.png b/docs/fr/8.misc/assets/premium/apercu_serveur.png new file mode 100644 index 000000000..4cfe53c48 Binary files /dev/null and b/docs/fr/8.misc/assets/premium/apercu_serveur.png differ diff --git a/docs/fr/8.misc/assets/premium/interface_panel_premium.png b/docs/fr/8.misc/assets/premium/interface_panel_premium.png new file mode 100644 index 000000000..8c5d505e3 Binary files /dev/null and b/docs/fr/8.misc/assets/premium/interface_panel_premium.png differ diff --git a/docs/fr/8.misc/assets/premium/inventaire_apercu.png b/docs/fr/8.misc/assets/premium/inventaire_apercu.png new file mode 100644 index 000000000..06959dd49 Binary files /dev/null and b/docs/fr/8.misc/assets/premium/inventaire_apercu.png differ diff --git a/docs/fr/8.misc/assets/premium/premium_enable_command.png b/docs/fr/8.misc/assets/premium/premium_enable_command.png new file mode 100644 index 000000000..5b1ed81d4 Binary files /dev/null and b/docs/fr/8.misc/assets/premium/premium_enable_command.png differ diff --git a/docs/9.annexes/0.changelog/1.2026.md b/docs/fr/9.appendices/0.changelog/1.2026.md similarity index 99% rename from docs/9.annexes/0.changelog/1.2026.md rename to docs/fr/9.appendices/0.changelog/1.2026.md index bea1dac1f..201ce71af 100644 --- a/docs/9.annexes/0.changelog/1.2026.md +++ b/docs/fr/9.appendices/0.changelog/1.2026.md @@ -1,9 +1,11 @@ --- +slug: /annexes/changelog/2026 title: 2026 description: Voici la liste de tous les changements effectués, datés et décris en 2026. contributors: ['imroxxor'] updatedAt: '2026-07-19' noindex: true +translate: false --- diff --git a/docs/9.annexes/0.changelog/2.2025.md b/docs/fr/9.appendices/0.changelog/2.2025.md similarity index 99% rename from docs/9.annexes/0.changelog/2.2025.md rename to docs/fr/9.appendices/0.changelog/2.2025.md index bdc4a9d85..798836050 100644 --- a/docs/9.annexes/0.changelog/2.2025.md +++ b/docs/fr/9.appendices/0.changelog/2.2025.md @@ -1,10 +1,12 @@ --- +slug: /annexes/changelog/2025 title: 2025 description: Voici la liste de tous les changements effectués, datés et décris en 2025. redactors: ['ls62'] contributors: ['draftproducts', 'awakno', 'theorik', 'imroxxor'] updatedAt: '2025-12-04' noindex: true +translate: false --- diff --git a/docs/9.annexes/0.changelog/3.2024.md b/docs/fr/9.appendices/0.changelog/3.2024.md similarity index 99% rename from docs/9.annexes/0.changelog/3.2024.md rename to docs/fr/9.appendices/0.changelog/3.2024.md index 3831dff31..d4f60b6bc 100644 --- a/docs/9.annexes/0.changelog/3.2024.md +++ b/docs/fr/9.appendices/0.changelog/3.2024.md @@ -1,10 +1,12 @@ --- +slug: /annexes/changelog/2024 title: 2024 description: Liste de tous les changements effectués, datés et décris en 2024. redactors: ['draftproducts'] contributors: ['wernouxe', 'erwangit', 'rababio4579'] updatedAt: '2025-01-06' noindex: true +translate: false --- ## 5.7.4 - 20/12/2024 diff --git a/docs/9.annexes/0.changelog/4.2023.md b/docs/fr/9.appendices/0.changelog/4.2023.md similarity index 99% rename from docs/9.annexes/0.changelog/4.2023.md rename to docs/fr/9.appendices/0.changelog/4.2023.md index 1b6029dd7..b8b09c17c 100644 --- a/docs/9.annexes/0.changelog/4.2023.md +++ b/docs/fr/9.appendices/0.changelog/4.2023.md @@ -1,10 +1,12 @@ --- +slug: /annexes/changelog/2023 title: 2023 description: Liste de tous les changements effectués, datés et décris en 2023. redactors: ['draftproducts'] contributors: ['wernouxe'] updatedAt: '2025-01-06' noindex: true +translate: false --- ## 5.4.4 - 09/12/2023 diff --git a/docs/9.annexes/0.changelog/5.2022.md b/docs/fr/9.appendices/0.changelog/5.2022.md similarity index 99% rename from docs/9.annexes/0.changelog/5.2022.md rename to docs/fr/9.appendices/0.changelog/5.2022.md index 55c3c3b36..a90a9f195 100644 --- a/docs/9.annexes/0.changelog/5.2022.md +++ b/docs/fr/9.appendices/0.changelog/5.2022.md @@ -1,10 +1,12 @@ --- +slug: /annexes/changelog/2022 title: 2022 description: Liste de tous les changements effectués, datés et décris en 2022. redactors: ['draftproducts'] contributors: ['sagipierre'] updatedAt: '2025-01-06' noindex: true +translate: false --- ## 5.0.4 - 28/11/2022 diff --git a/docs/9.annexes/0.changelog/6.2021.md b/docs/fr/9.appendices/0.changelog/6.2021.md similarity index 99% rename from docs/9.annexes/0.changelog/6.2021.md rename to docs/fr/9.appendices/0.changelog/6.2021.md index 97ba31cfa..0ca2a8e03 100644 --- a/docs/9.annexes/0.changelog/6.2021.md +++ b/docs/fr/9.appendices/0.changelog/6.2021.md @@ -1,10 +1,12 @@ --- +slug: /annexes/changelog/2021 title: 2021 description: Liste de tous les changements effectués, datés et décris en 2021. redactors: ['draftproducts'] contributors: ['sagipierre'] updatedAt: '2025-01-06' noindex: true +translate: false --- ## 4.14.6 - 28/12/2021 diff --git a/docs/9.annexes/0.changelog/7.2020.md b/docs/fr/9.appendices/0.changelog/7.2020.md similarity index 99% rename from docs/9.annexes/0.changelog/7.2020.md rename to docs/fr/9.appendices/0.changelog/7.2020.md index ca4c5a177..482235876 100644 --- a/docs/9.annexes/0.changelog/7.2020.md +++ b/docs/fr/9.appendices/0.changelog/7.2020.md @@ -1,10 +1,12 @@ --- +slug: /annexes/changelog/2020 title: 2020 description: Liste de tous les changements effectués, datés et décris en 2020. redactors: ['draftproducts'] contributors: ['sagipierre'] updatedAt: '2025-01-06' noindex: true +translate: false --- ## 4.11.6 - 24/12/2020 diff --git a/docs/9.annexes/0.changelog/8.2019.md b/docs/fr/9.appendices/0.changelog/8.2019.md similarity index 98% rename from docs/9.annexes/0.changelog/8.2019.md rename to docs/fr/9.appendices/0.changelog/8.2019.md index 238b4aa00..866e0436c 100644 --- a/docs/9.annexes/0.changelog/8.2019.md +++ b/docs/fr/9.appendices/0.changelog/8.2019.md @@ -1,9 +1,11 @@ --- +slug: /annexes/changelog/2019 title: 2019 description: Liste des derniers changements ayant pu été récupérés pour l'année 2019. contributors: ['sagipierre', 'draftproducts'] updatedAt: '2025-01-06' noindex: true +translate: false --- ## 4.9.7 - 28/12/2019 diff --git a/docs/9.annexes/0.changelog/_dir.yml b/docs/fr/9.appendices/0.changelog/_dir.yml similarity index 79% rename from docs/9.annexes/0.changelog/_dir.yml rename to docs/fr/9.appendices/0.changelog/_dir.yml index 7c3377877..7794e4476 100644 --- a/docs/9.annexes/0.changelog/_dir.yml +++ b/docs/fr/9.appendices/0.changelog/_dir.yml @@ -1,4 +1,6 @@ +slug: /annexes/changelog/_dir title: Mises à jour navigation.icon: "material-symbols:article-outline" description: Liste de tous les changements effectués, datés et décris depuis fin 2019. noindex: true +translate: false diff --git a/docs/9.annexes/1.contribute.md b/docs/fr/9.appendices/1.contribute.md similarity index 86% rename from docs/9.annexes/1.contribute.md rename to docs/fr/9.appendices/1.contribute.md index 776fed5d5..b6f11ccd6 100644 --- a/docs/9.annexes/1.contribute.md +++ b/docs/fr/9.appendices/1.contribute.md @@ -1,4 +1,5 @@ --- +slug: /annexes/contribute title: 'Page de référence' description: Voici la page de référence de la documentation pour l'intégration et le développement navigation.icon: material-symbols:edit-document-outline @@ -109,7 +110,7 @@ Afin d'être en harmonie avec le reste de la documentation : 2. Utilisez exclusivement le thème Discord appelé "Sombre". -![Thème sombre](../assets/contribute/discord_theme.png) +![Thème sombre](./assets/contribute/discord_theme.png) ### Liens vers le panel @@ -224,6 +225,88 @@ icon: twemoji:locked navigation.icon: material-symbols:edit-document-outline ``` +## Structure multilingue + +La documentation existe en français et en anglais. Le français fait autorité : +toute page est d'abord écrite en français, puis traduite. + +### Où placer un fichier + +Les pages françaises vivent sous `docs/fr/`, les anglaises sous `docs/en/`. +**Les noms de fichiers et de dossiers sont en anglais et identiques dans les +deux langues** — c'est ce qui permet d'apparier une page et sa traduction. +Une page française s'appelle donc `docs/fr/3.engagement/0.levels.md`, et non +`0.niveaux.md`. + +Les préfixes numériques déterminent l'ordre d'affichage dans le menu. + +### Déclarer l'adresse d'une page + +L'adresse d'une page ne vient plus de son nom de fichier mais de son +frontmatter : + +```yaml +--- +title: Niveaux +slug: /engagement/niveaux +--- +``` + +Le `slug` est le chemin complet, sans le préfixe `/docs/fr`. Il doit +commencer par le `slug` du fichier `_dir.yml` de son dossier, privé de son +suffixe `/_dir`. + +Les fichiers `_dir.yml` en portent un aussi, terminé par `/_dir` : + +```yaml +slug: /engagement/_dir +title: Engagement +``` + +### Images + +Les images d'une page vivent dans le dossier `assets/` de sa catégorie, dans +un sous-dossier au nom de la page : + +``` +docs/fr/3.engagement/ +├─ assets/levels/panel.png +└─ 0.levels.md ![Légende](./assets/levels/panel.png) +``` + +### Vérifier son travail + +```bash +node scripts/check-translations.mjs # slugs, doublons et traductions à jour +node scripts/check-links.mjs # images et liens internes introuvables +``` + +### Traductions + +Vous n'avez pas à traduire vous-même. Quand une page française change, une +pull request de traduction est ouverte automatiquement — elle a besoin d'être +relue, pas écrite. En attendant sa relecture, la documentation anglaise +affiche la version française à jour plutôt qu'une traduction dépassée. + +### Exclure une page de la traduction + +Une page qui n'a pas vocation à exister en anglais porte `translate: false` +dans son frontmatter : + +```yaml +--- +title: 2026 +slug: /annexes/changelog/2026 +translate: false +--- +``` + +Elle sort alors de la liste des pages à traduire. C'est le cas du changelog, +qui reste en français. + +Cette clé ne se propage pas : la poser dans un `_dir.yml` n'exclut que ce +fichier, pas les pages du dossier. Chaque page à exclure doit la porter. + ## Outils de structuration Organisez votre contenu de manière logique. Utilisez des titres, des sous-titres, des onglets et des captures d'écran de manière à ce qu'il soit facile à suivre. diff --git a/docs/fr/9.appendices/_dir.yml b/docs/fr/9.appendices/_dir.yml new file mode 100644 index 000000000..574733f14 --- /dev/null +++ b/docs/fr/9.appendices/_dir.yml @@ -0,0 +1,2 @@ +slug: /annexes/_dir +title: Annexes diff --git a/docs/fr/9.appendices/assets/contribute/discord_theme.png b/docs/fr/9.appendices/assets/contribute/discord_theme.png new file mode 100644 index 000000000..73794d244 Binary files /dev/null and b/docs/fr/9.appendices/assets/contribute/discord_theme.png differ diff --git a/docs/fr/_dir.yml b/docs/fr/_dir.yml new file mode 100644 index 000000000..8a64693ad --- /dev/null +++ b/docs/fr/_dir.yml @@ -0,0 +1,2 @@ +slug: /_dir +title: Docs diff --git a/docs/fr/assets/installation/add.jpg b/docs/fr/assets/installation/add.jpg new file mode 100644 index 000000000..15f23db72 Binary files /dev/null and b/docs/fr/assets/installation/add.jpg differ diff --git a/docs/fr/assets/installation/preview_integrations.png b/docs/fr/assets/installation/preview_integrations.png new file mode 100644 index 000000000..37c4a4c8c Binary files /dev/null and b/docs/fr/assets/installation/preview_integrations.png differ diff --git a/docs/fr/assets/installation/role.png b/docs/fr/assets/installation/role.png new file mode 100644 index 000000000..5d2365397 Binary files /dev/null and b/docs/fr/assets/installation/role.png differ diff --git a/glossaire.json b/glossaire.json new file mode 100644 index 000000000..c24c3101b --- /dev/null +++ b/glossaire.json @@ -0,0 +1,489 @@ +{ + "/envoyer": "/say", + "✅ Signalements résolus": "✅ Solved reports", + "✅ Suggestions acceptées": "✅ Suggestions accepted", + "✉️ MP des sanctions": "✉️ Sanction DMs", + "❌ Actions d'erreurs": "❌ Error actions", + "❌ Signalements refusés": "❌ Rejected reports", + "❌ Suggestions refusées": "❌ Suggestions refused", + "➕ Créer votre salon": "➕ Create your channel", + "🎨 Personnalisation": "🎨 Customization", + "🎯 Déclencheurs": "🎯 Triggers", + "🏆 Récompenses": "🏆 Rewards", + "📝 Ouverture des tickets": "📝 Ticket opening", + "🔖 Sanctions prédéfinies": "🔖 Predefined sanctions", + "🔧 Configuration de base": "🔧 Basic configuration", + "🔧 Configuration sur le serveur": "🔧 Server configuration", + "🔨 Sanctions automatiques": "🔨 Automatic sanctions", + "🔨 Signalements sanctionnés": "🔨 Sanctioned reports", + "🗑️ Clôture des tickets": "🗑️ Closing tickets", + "🛡️ Détection d'infractions": "🛡️ Infractions detection", + "À chaque multiple": "At each multiple", + "accepter": "accept", + "Accès automatique": "Automatic access", + "Accueil": "Home", + "action": "action", + "activer": "enable", + "adminanniversaire": "adminbirthday", + "adminargent": "adminmoney", + "admininventaire": "admininventory", + "adminreinitialiser": "adminreset", + "adminxp": "adminxp", + "aide": "help", + "ajouter": "add", + "Ajouter de l'argent": "Add money", + "Ajouter de l'expérience": "Add experience", + "Ajouter des rôles": "Add roles", + "Ajouter un objet d'inventaire": "Add an inventory item", + "Ajouter un rôle temporaire": "Add a temporary role", + "Ajouter une action": "Add action", + "aléatoire": "random", + "anniversaire": "birthday", + "Anniversaire": "Birthday", + "anniversaires": "birthdays", + "Anniversaires": "Birthdays", + "Annonces d'anniversaires": "Birthday announcements", + "Annonces personnalisées": "Custom announcements", + "annuler": "cancel", + "après": "after", + "argent": "money", + "Argent": "Money", + "Arrivées & départs": "Welcome & goodbye", + "Arrivées & Départs": "Joins & Leaves", + "Article de boutique": "Shop article", + "attente": "pending", + "Aucune récompense": "No reward", + "Auteur": "Author", + "auteur de la commande": "command author", + "Auto-Modération": "Auto-Moderation", + "Autocollant": "Sticker", + "Autocollants": "Stickers", + "Avancé": "Advanced", + "avatar": "avatar", + "avertir": "warn", + "baka": "baka", + "ban": "ban", + "bingo": "bingo", + "bisou-volant": "blow-kiss", + "blague": "joke", + "Blagues favorites": "Favorite jokes", + "blottir": "cuddle", + "bonk": "bonk", + "botinfo": "botinfo", + "botter": "kick", + "boutique": "shop", + "Bouton": "Button", + "brawler": "brawler", + "caché": "hidden", + "Cadeaux d'anniversaire": "Birthday gifts", + "calendrier": "calendar", + "Calendrier de l'Avent": "Advent calendar", + "caliner": "hug", + "caresser": "pat", + "Cases du calendrier": "Calendar slots", + "catapulter": "yeet", + "Catégories d'actions": "Action categories", + "Chaînes annoncées": "Channels announced", + "chatouiller": "tickle", + "chifumi": "chifumi", + "cible": "target", + "citer": "quote", + "classement": "top", + "Classique": "Classic", + "clin-doeil": "wink", + "Clôture": "Closure", + "Code d'authentification": "Authentication code", + "Code PIN": "PIN code", + "Code premium": "Premium code", + "colormind": "colormind", + "commande": "command", + "Commandes personnalisées": "Custom commands", + "Commandes Slash": "Slash Commands", + "Commentaire": "Comment", + "Comptes annoncés": "Announced accounts", + "Conférences": "Stages", + "config": "config", + "Configuration - Anniversaires": "Configuration - Birthdays", + "Configuration - Annonces d'anniversaires": "Configuration - Birthday Announcements", + "Configuration - Annonces d'anniversaires personnalisées": "Configuration - Custom birthday announcements", + "Configuration - Arrivées & départs": "Configuration - Welcome & goodbye", + "Configuration - Cadeaux d'anniversaire": "Configuration ➔ Birthday gifts", + "Configuration - Calendrier de l'Avent": "Configuration - Advent calendar", + "Configuration - Commandes personnalisées": "Configuration - Custom Commands", + "Configuration - Détection d'infractions": "Configuration - Infractions detection", + "Configuration - Économie": "Configuration - Economy", + "Configuration - Message d'au revoir": "Configuration - Goodbye message", + "Configuration - Message de bienvenue": "Configuration - Welcome message", + "Configuration - Messages récurrents": "Configuration - Recurring messages", + "Configuration - Modération": "Configuration - Moderation", + "Configuration - MP des sanctions": "Configuration - Sanction DMs", + "Configuration - Niveaux": "Configuration - Levels", + "Configuration - Notifications sociales": "Configuration - Social Notifications", + "Configuration - Réactions de mots": "Configuration - Word Reactions", + "Configuration - Rôle d'anniversaire": "Configuration - Birthday role", + "Configuration - Rôles automatiques": "Configuration - Automatic roles", + "Configuration - Rôles sécurisés": "Configuration - Secure Roles", + "Configuration - Rôles-Réactions": "Configuration - Reaction-Roles", + "Configuration - Rôles-Réactions ➔ Gestion": "Configuration - Reaction-Roles ➔ Management", + "Configuration - Salons de statistiques": "Configuration - Statistics channels", + "Configuration - Salons vocaux temporaires": "Configuration - Temporary voice channels", + "Configuration - Sanctions automatiques": "Configuration - Automatic sanctions", + "Configuration - Sanctions prédéfinies": "Configuration - Predefined Sanctions", + "Configuration - Signalements": "Configuration - Reports", + "Configuration - Suggestions ➔ Membres": "Configuration - Suggestions ➔ Members", + "Configuration - Suggestions ➔ Réactions": "Configuration - Suggestions ➔ Reactions", + "Configuration › Modération › Options": "Configuration › Moderation › Options", + "Configuration actuelle": "Current configuration", + "Configuration de base": "Basic configuration", + "Configuration de l'embed de réglages": "Settings embed configuration", + "Configuration du rôle": "Role configuration", + "contenu": "content", + "Contenu du message": "Message content", + "Contexte (optionnel)": "Context (optional)", + "conversation": "conversation", + "copier": "copy", + "Copier RAW": "Copy RAW", + "couleur": "color", + "Couleur (optionnelle)": "Color (optional)", + "couple": "couple", + "créer": "create", + "danser": "dance", + "date": "date", + "De l'argent": "Money", + "De l'expérience": "Experience", + "deban": "unban", + "définir": "set", + "Délai en secondes (5-300)": "Delay in seconds (5-300)", + "Demandes de tickets": "Ticket requests", + "demineur": "minesweeper", + "demute": "unmute", + "deplacer": "move", + "dernier_message": "last_message", + "désactiver": "disable", + "description": "description", + "Description (texte alternatif)": "Description (alt text)", + "Description de l'embed": "Embed description", + "destination": "destination", + "diagnostic": "diagnosis", + "difficulté": "difficulty", + "donner": "give", + "drop": "drop", + "dropargent": "dropmoney", + "dropobjet": "dropitem", + "dropxp": "dropxp", + "durée": "duration", + "Durée": "Duration", + "Durée (en minutes)": "Duration (in minutes)", + "Durée de la sanction": "Sanction duration", + "Durée du rôle temporaire (optionnel)": "Temporary role duration (optional)", + "échanger": "exchange", + "Économie": "Economy", + "Édition - Salon de statistiques": "Editing - Statistics Channel", + "Édition - Starboard": "Edition - Starboard", + "Édition - Starboard ➔ Options": "Edition - Starboard ➔ Options", + "effacer": "delete", + "embed": "embed", + "embrasser": "kiss", + "émoji": "emoji", + "emojiperm": "emojiperm", + "Émojis": "Emojis", + "Émotions": "Emotions", + "enregistrer": "save", + "envoyer": "say", + "Envoyer un message": "Send a message", + "evenement": "event", + "Événements": "Events", + "Exemptions d'Auto-Modération": "AutoMod exemptions", + "expérience": "experience", + "Expérience": "Experience", + "expression": "expression", + "expulser": "kick", + "favoris": "favorites", + "Fermer": "Close", + "Fils": "Threads", + "filtre": "filter", + "fixer": "stare", + "Flux RSS annoncés": "Announced RSS Feeds", + "Footer de l'embed": "Embed footer", + "format": "format", + "formule": "formula", + "frapper": "punch", + "fréquence": "frequency", + "fusionner": "merge", + "gagnant": "winner", + "gagnants": "winners", + "Gagnants": "Winners", + "Général": "General", + "générer": "generate", + "gérer": "manage", + "gifler": "slap", + "giveaway": "giveaway", + "guild-flags": "guild-flags", + "Heure": "Time", + "image": "picture", + "Image (optionnel)": "Image (optional)", + "Image (optionnelle)": "Image (optional)", + "Image ou vidéo (optionnelle)": "Image or video (optional)", + "image1": "image1", + "image2": "image2", + "image3": "image3", + "Images (optionnelles)": "Images (optional)", + "info": "info", + "infos": "infos", + "infractions": "infractions", + "interact": "interact", + "interserveur": "interserver", + "inventaire": "inventory", + "inventaires": "inventory", + "Inventaires": "Inventories", + "item": "item", + "jeu": "game", + "Jeux": "Games", + "journalier": "daily", + "juliette": "juliette", + "lancer-dés": "rolldice", + "lien": "link", + "lier": "link", + "Lieu de l'infraction": "Location of the infraction", + "liste": "list", + "lister": "list", + "localité": "locality", + "manage-bot": "manage-bot", + "Marché noir": "Black market", + "Marquer comme spoiler": "Mark as spoiler", + "maths": "maths", + "membre": "member", + "membre-ou-pseudo": "member-or-username", + "membre-ou-tag": "member-or-tag", + "Membres": "Members", + "mention": "mention", + "Mentions de membres": "Members mentions", + "Mentions de rôles": "Roles mentions", + "message": "message", + "Message d'au revoir": "Goodbye message", + "Message de bienvenue": "Welcome message", + "messages": "messages", + "Messages récurrents": "Repeat messages", + "messages_supprimés": "deleted_messages", + "Méthode d'authentification": "Authentication method", + "Méthodes de connexion": "Login methods", + "mod": "mod", + "Mode Chrono": "Timed Mode", + "Mode Normal": "Normal Mode", + "moderateur": "moderator", + "Modérateur": "Moderator", + "Modération": "Moderation", + "Modération des suggestions": "Sorting suggestions", + "Modification d'accès": "Edit access", + "Modification d'une sanction automatique": "Editing an automatic sanction", + "Modification du rôle configuré": "Editing the configured role", + "modifier": "edit", + "montant": "amount", + "mordre": "bite", + "morpion": "tictactoe", + "Mot de passe": "Password", + "mot-de-passe": "password", + "motif": "motif", + "mute": "mute", + "niveau": "level", + "niveaux": "levels", + "Niveaux": "Levels", + "nom": "name", + "Nom": "Name", + "Nom de l'objet": "Item name", + "Nom de l'option": "Option name", + "Nom de la chaîne Twitch": "Twitch channel name", + "Nom de la chaîne YouTube": "YouTube channel name", + "Nom de la clé d'accès": "Security key name", + "Nom du flux RSS": "RSS feed name", + "Nom du salon": "Channel name", + "Nom du salon parent": "Parent channel name", + "Nom du serveur": "Server name", + "nombre": "number", + "Non validé": "Not validated", + "normaliser": "normalize", + "note": "note", + "Notifications sociales": "Social notifications", + "nourrir": "feed", + "Nouveau niveau": "New level", + "Nouveau nom": "New name", + "objet": "item", + "Objet": "Item", + "ordre": "order", + "Organisateur (optionnel)": "Host (optional)", + "Ouverture": "Opening", + "ouvrir": "open", + "Page à afficher": "Page to display", + "panel": "dashboard", + "participants": "participants", + "payer": "pay", + "pendu": "hangman", + "Période": "Period", + "Permissions protégées": "Protected permissions", + "Personnalisation": "Customization", + "Personnalisé": "Custom", + "ping": "ping", + "plateforme": "platform", + "poke": "poke", + "porter": "carry", + "pour": "for", + "premier_message": "first_message", + "premium": "premium", + "prevue": "planned", + "Prochaine saison": "Next season", + "profil": "profile", + "profiljeux": "gameprofile", + "Profils": "Profiles", + "pseudo": "username", + "Pseudos": "Nicknames", + "puissance4": "connect4", + "qrcode": "qrcode", + "quantité": "quantity", + "Quantité de l'objet": "Item quantity", + "Quantité souhaitée": "Desired quantity", + "question": "question", + "raison": "reason", + "Raison": "Reason", + "Raison d'acceptation": "Acceptance reason", + "Raison de la sanction": "Reason for the sanction", + "Raison du refus": "Refusal reason", + "rappel": "reminder", + "Réactions": "Reactions", + "Réactions de mots": "Word reactions", + "reagir": "react", + "recherche": "research", + "Recherche (optionnel)": "Search (optional)", + "rechercher": "search", + "Récompense gagnée": "Reward earned", + "recompenses": "rewards", + "Récompenses": "Rewards", + "record": "record", + "Rédigez votre meilleure description": "Write your best description", + "refuser": "refuse", + "règle": "rule", + "reglement": "rules", + "réinitialiser": "reset", + "réinitialiser-délai": "reset-delay", + "relancer": "reroll", + "renommer": "rename", + "réponses": "answers", + "Responsables des logs urgents": "Emergency logs managers", + "restaurer": "restore", + "résultats": "results", + "retirer": "remove", + "Retirer des rôles": "Remove roles", + "retirer-le-role": "remove-the-role", + "retirer-les-roles": "remove-the-roles", + "rire": "laugh", + "role": "role", + "rôle": "role", + "Rôle": "Role", + "Rôle Cumulable": "Cumulative Role", + "Rôle d'anniversaire": "Birthday role", + "Rôle Evolutif": "Evolving Role", + "Rôle temporaire": "Temporary role", + "role-ou-membre": "role-or-member", + "role-temporaire": "temprole", + "rôles": "roles", + "Rôles": "Roles", + "Rôles automatiques": "Automatic roles", + "Rôles mentionnés (optionnels)": "Mentioned roles (optional)", + "Rôles sécurisés": "Secure Roles", + "roles-permanents": "sticky-roles", + "Rôles-Réactions": "Reaction-Roles", + "roméo": "romeo", + "Route de l'Infini": "Counter", + "Route infinie : animateurs": "Infinite road: hosts", + "route-de-l-infini": "counter", + "route-infini": "counter", + "salon": "channel", + "Salon": "Channel", + "Salons": "Channels", + "Salons concernés": "Affected channels", + "Salons de statistiques": "Statistics channels", + "Salons vocaux": "Voice channels", + "Salons vocaux temporaires": "Temporary voice channels", + "Salons vocaux temporaires : modérateurs": "Temporary voice channels: moderators", + "saluer": "wave", + "sanction": "sanction", + "sanctions": "sanctions", + "sauvegarde": "backup", + "secure-roles": "secure-roles", + "Sélecteur": "Selector", + "Sélecteur de saturation et luminosité": "Saturation and brightness selector", + "Sélecteur de teinte": "Tint selector", + "Sélectionnez les types autorisés": "Select allowed types", + "serie": "streak", + "serrer-la-main": "handshake", + "serveur": "server", + "Signalements": "Reports", + "signaler": "report", + "Signaler ce message": "Report this message", + "Signaler cet utilisateur": "Report this user", + "sondage": "survey", + "source": "source", + "starboard": "starboard", + "Statistiques": "Statistics", + "stats": "stats", + "statut": "status", + "statuts": "status", + "Subreddits annoncés": "Announced Subredits", + "suggestion": "suggest", + "Suggestion acceptée": "Suggestion accepted", + "Suggestion prévue": "Planned suggestion", + "Suggestion refusée": "Suggestion refused", + "suggestmod": "suggestmod", + "support": "support", + "supprimer": "delete", + "Supprimer les derniers messages": "Delete recent messages", + "supprimer_conversation": "delete_conversation", + "système": "system", + "Système de sanction": "Sanction system", + "taille": "size", + "temps": "time", + "tenir-la-main": "hold-hands", + "terminer": "finish", + "texte": "text", + "ticket": "ticket", + "ticketmod": "ticketmod", + "Tickets : modérateurs": [ + "Tickets: moderators", + "Tickets: staff" + ], + "timestamp": "timestamp", + "tirer": "shoot", + "titre": "title", + "Titre": "Title", + "Titre de l'embed": "Embed title", + "top": "top", + "topargent": "topmoney", + "tope-la": "high-five", + "topitems": "topitems", + "topniveau": "toplevel", + "tours": "turns", + "tous": "all", + "transférer": "transfer", + "tri": "sort", + "tv": "tv", + "type": "type", + "Type de sanction": "Sanction type", + "Un article personnalisé": "A customized article", + "Un cadeau personnalisé": "A custom gift", + "Un objet d'inventaire": "An inventory item", + "Un rôle": "A role", + "Un rôle temporaire": "A temporary role", + "Une récompense personnalisée": "A custom reward", + "Une seule fois": "Only once", + "utilisateur": "user", + "Utilisateur sanctionné": "Sanctioned user", + "Utilitaires": "Utilities", + "vendre": "sell", + "vérification": "verification", + "verrouillage": "lock", + "vider-salon": "clear-channel", + "Vignette (optionnelle)": "Thumbnail (optional)", + "Vocal": "Voice", + "voir": "view", + "votes": "votes", + "wifi": "wifi" +} diff --git a/scripts/build-glossary.mjs b/scripts/build-glossary.mjs new file mode 100755 index 000000000..cfa418aa3 --- /dev/null +++ b/scripts/build-glossary.mjs @@ -0,0 +1,36 @@ +#!/usr/bin/env node +// scripts/build-glossary.mjs +// +// Lit les fichiers de langue du bot et du panel, deja entierement traduits, +// et en tire les correspondances FR -> EN des termes d'interface. +// +// Usage : node scripts/build-glossary.mjs +import { readFile, writeFile } from 'node:fs/promises' +import { dirname, join } from 'node:path' +import { fileURLToPath } from 'node:url' +import { buildGlossary, buildImplicitCommandNames, loadDirectory, mergeGlossaries } from './lib/glossary.mjs' + +const [botDir, panelDir] = process.argv.slice(2) +if (!botDir || !panelDir) { + console.error('Usage : node scripts/build-glossary.mjs ') + process.exit(1) +} + +const glossary = mergeGlossaries( + buildGlossary( + await loadDirectory(join(botDir, 'languages/fr')), + await loadDirectory(join(botDir, 'languages/en')), + ), + await buildImplicitCommandNames(botDir), + buildGlossary( + JSON.parse(await readFile(join(panelDir, 'languages/fr.json'), 'utf8')), + JSON.parse(await readFile(join(panelDir, 'languages/en.json'), 'utf8')), + ), +) + +const sorted = Object.fromEntries(Object.entries(glossary).sort(([a], [b]) => a.localeCompare(b))) +// Resolu depuis le script, comme les deux verificateurs : lance depuis un autre +// repertoire, l'ecriture relative deposait le glossaire hors du depot. +const outFile = join(dirname(fileURLToPath(import.meta.url)), '..', 'glossaire.json') +await writeFile(outFile, JSON.stringify(sorted, null, 2) + '\n') +console.log(`${Object.keys(sorted).length} termes`) diff --git a/scripts/check-links.mjs b/scripts/check-links.mjs new file mode 100755 index 000000000..d44c80530 --- /dev/null +++ b/scripts/check-links.mjs @@ -0,0 +1,12 @@ +#!/usr/bin/env node +// scripts/check-links.mjs +import { dirname, join } from 'node:path' +import { fileURLToPath } from 'node:url' +import { findBrokenLinks } from './lib/links.mjs' + +const docsDir = join(dirname(fileURLToPath(import.meta.url)), '..', 'docs') +const broken = await findBrokenLinks(docsDir) + +for (const entry of broken) console.error(`Cible introuvable : ${entry}`) +console.log(`${broken.length} reference(s) cassee(s)`) +process.exit(broken.length ? 1 : 0) diff --git a/scripts/check-translations.mjs b/scripts/check-translations.mjs new file mode 100755 index 000000000..154c72bde --- /dev/null +++ b/scripts/check-translations.mjs @@ -0,0 +1,51 @@ +#!/usr/bin/env node +import { appendFile } from 'node:fs/promises' +import { dirname, join } from 'node:path' +import { fileURLToPath } from 'node:url' +import { findIssues, listPages } from './lib/pages.mjs' + +const docsDir = join(dirname(fileURLToPath(import.meta.url)), '..', 'docs') +const args = process.argv.slice(2) + +if (args.includes('--print-paths')) { + for (const locale of ['fr', 'en']) { + for (const page of await listPages(docsDir, locale)) { + if (page.data.slug) console.log(`/docs/${locale}${page.data.slug}`) + } + } + process.exit(0) +} + +const { untranslated, stale, orphaned, slugErrors } = await findIssues(docsDir) + +if (slugErrors.length) { + console.error('Slugs incoherents :') + for (const error of slugErrors) console.error(` ${error}`) +} +if (orphaned.length) { + console.error('Pages anglaises sans source francaise (a renommer ou a supprimer) :') + for (const relPath of orphaned) console.error(` ${relPath}`) +} +if (untranslated.length) console.log(`Non traduites : ${untranslated.length}`) +if (stale.length) console.log(`Perimees : ${stale.join(' ')}`) + +// Une execution de traduction est bornee en tours (--max-turns) : lui passer +// les 43 pages en attente, soit ~63 000 mots, ne peut pas aboutir. Le lot +// suivant part a la synchronisation suivante — le workflow se declenche sur +// tout push touchant docs/fr, et workflow_dispatch permet de resorber +// l'arriere sans attendre une modification francaise. +const BATCH_SIZE = 5 + +if (args.includes('--github-output') && process.env.GITHUB_OUTPUT) { + const queue = [...stale, ...untranslated] + const batch = queue.slice(0, BATCH_SIZE) + await appendFile(process.env.GITHUB_OUTPUT, `pages=${batch.join(' ')}\n`) + console.log(`Lot envoye : ${batch.length} page(s)`) + // Sans ce compte, une synchronisation qui ne traite que son lot passerait + // pour un travail termine. + if (queue.length > batch.length) { + console.log(`Reste en attente au-dela du lot : ${queue.length - batch.length} page(s)`) + } +} + +process.exit(slugErrors.length ? 1 : 0) diff --git a/scripts/content-hash.mjs b/scripts/content-hash.mjs new file mode 100755 index 000000000..e56b91534 --- /dev/null +++ b/scripts/content-hash.mjs @@ -0,0 +1,12 @@ +#!/usr/bin/env node +// Empreinte d'un fichier Markdown, telle que la definit le contrat partage +// avec le site : sha256 du fichier brut, fins de ligne normalisees. +import { readFile } from 'node:fs/promises' +import { contentHash } from './lib/frontmatter.mjs' + +const [path] = process.argv.slice(2) +if (!path) { + console.error('Usage : node scripts/content-hash.mjs ') + process.exit(1) +} +console.log(contentHash(await readFile(path, 'utf8'))) diff --git a/scripts/lib/frontmatter.mjs b/scripts/lib/frontmatter.mjs new file mode 100644 index 000000000..678ddba1a --- /dev/null +++ b/scripts/lib/frontmatter.mjs @@ -0,0 +1,30 @@ +import { createHash } from 'node:crypto' + +const BLOCK = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?/ + +// Parseur volontairement minimal : le frontmatter de ce dépôt n'utilise que des +// scalaires sur une ligne. Une valeur multi-ligne ou une liste imbriquée serait +// ignorée silencieusement — check-translations la signale via les slugs manquants. +export function parseFrontmatter(raw) { + const match = raw.match(BLOCK) + if (!match) return { data: {}, body: raw } + + const data = {} + for (const line of match[1].split(/\r?\n/)) { + const pair = line.match(/^([A-Za-z_][\w.-]*):\s*(.*)$/) + if (!pair) continue + let value = pair[2].trim() + if ( + (value.startsWith("'") && value.endsWith("'")) || + (value.startsWith('"') && value.endsWith('"')) + ) { + value = value.slice(1, -1) + } + data[pair[1]] = value + } + return { data, body: raw.slice(match[0].length) } +} + +export function contentHash(raw) { + return createHash('sha256').update(raw.replace(/\r\n|\r/g, '\n'), 'utf8').digest('hex') +} diff --git a/scripts/lib/frontmatter.test.mjs b/scripts/lib/frontmatter.test.mjs new file mode 100644 index 000000000..974780a5f --- /dev/null +++ b/scripts/lib/frontmatter.test.mjs @@ -0,0 +1,30 @@ +import assert from 'node:assert/strict' +import { test } from 'node:test' +import { contentHash, parseFrontmatter } from './frontmatter.mjs' + +test('parseFrontmatter extrait les paires clé/valeur', () => { + const raw = '---\ntitle: Niveaux\nslug: /engagement/niveaux\n---\n\nDu contenu.\n' + const { data, body } = parseFrontmatter(raw) + assert.equal(data.title, 'Niveaux') + assert.equal(data.slug, '/engagement/niveaux') + assert.equal(body, '\nDu contenu.\n') +}) + +test('parseFrontmatter retire les guillemets encadrants', () => { + const raw = "---\nnavigation.icon: 'twemoji:shield'\n---\n" + assert.equal(parseFrontmatter(raw).data['navigation.icon'], 'twemoji:shield') +}) + +test('parseFrontmatter rend un objet vide sans frontmatter', () => { + const { data, body } = parseFrontmatter('Juste du texte.\n') + assert.deepEqual(data, {}) + assert.equal(body, 'Juste du texte.\n') +}) + +test('contentHash normalise les fins de ligne', () => { + assert.equal(contentHash('a\r\nb'), contentHash('a\nb')) +}) + +test('contentHash rend 64 caracteres hexadecimaux', () => { + assert.match(contentHash('contenu'), /^[0-9a-f]{64}$/) +}) diff --git a/scripts/lib/glossary.mjs b/scripts/lib/glossary.mjs new file mode 100644 index 000000000..b88024e28 --- /dev/null +++ b/scripts/lib/glossary.mjs @@ -0,0 +1,132 @@ +// scripts/lib/glossary.mjs +import { readFile, readdir } from 'node:fs/promises' +import { join } from 'node:path' + +// Au-dela de cette longueur, une valeur est une phrase et non un terme +// d'interface : la traduire mot a mot nuirait plus qu'elle n'aiderait. +const MAX_TERM_LENGTH = 60 + +// Segments de cle dont la valeur est systematiquement un libelle d'interface +// (nom de commande, option, bouton) plutot qu'un message adresse au joueur. +// Mesure sur les locales du bot : `title`, `description` et `log` sont a plus +// de 55% des phrases completes (elles se terminent par un point) alors que +// ces trois-la n'en portent quasiment aucune. +const TERM_SEGMENTS = ['name', 'label', 'author'] + +// Un nom de commande, de sous-commande ou d'option Discord ne peut porter ni +// majuscule, ni espace, ni emoji. Le format distingue donc `couple` ou +// `secure-roles` des libelles affiches qui partagent la meme cle `name` +// (« Logs », « 🔧 Base ») parmi les fichiers de commandes du bot. +const COMMAND_ID = /^[\p{Ll}\p{N}_-]{1,32}$/u + +function isCommandName(key, french, english) { + return key.startsWith('commands/') + && key.split('.').at(-1) === 'name' + && COMMAND_ID.test(french) + && COMMAND_ID.test(english) +} + +export function flattenLocale(obj, prefix = '', out = new Map()) { + for (const [key, value] of Object.entries(obj ?? {})) { + const path = prefix ? `${prefix}.${key}` : key + if (typeof value === 'string') out.set(path, value) + else if (value && typeof value === 'object' && !Array.isArray(value)) { + flattenLocale(value, path, out) + } + } + return out +} + +export function buildGlossary(fr, en) { + const flatFr = flattenLocale(fr) + const flatEn = flattenLocale(en) + const glossary = {} + for (const [key, rawFrench] of flatFr) { + const rawEnglish = flatEn.get(key) + if (!rawEnglish) continue + if (!TERM_SEGMENTS.includes(key.split('.').at(-1))) continue + // Les fichiers de langue portent des espaces et des sauts de ligne de mise + // en forme : sans trim, le glossaire retient « \nAbonnement » comme un + // terme distinct, qu'aucune recherche dans une page ne retrouvera. + const french = rawFrench.trim() + const english = rawEnglish.trim() + if (!french || !english) continue + // Une commande dont le nom ne change pas de langue doit figurer au + // glossaire : sans entree, le traducteur ne distingue pas « rien a + // traduire » de « terme absent », et /couple — dont le fichier source + // s'appelle love.json — invite a ecrire /love. + if (french === english && !isCommandName(key, french, english)) continue + // Un point, une exclamation ou une interrogation finale marque une phrase, + // pas un terme d'interface. + if (/[.!?]$/.test(french) || /[.!?]$/.test(english)) continue + // Une accolade signale un gabarit d'interpolation ({count}, {{URL}}) : un + // libelle d'interface n'en porte pas. + if (french.includes('{') || english.includes('{')) continue + if (french.split(/\s+/).length > 5) continue + if (french.length > MAX_TERM_LENGTH || english.length > MAX_TERM_LENGTH) continue + glossary[french] = english + } + return glossary +} + +// Une quinzaine de commandes — dont /config, la plus citée de la +// documentation — n'ont pas de clé `name` dans leurs fichiers de langue. +// `framework/command/registry.ts` retombe alors sur le nom déclaré en code, +// le même dans toutes les langues, et `buildGlossary` ne les voit pas. +// L'existence d'un fichier source homonyme sous `src/commands-slash` +// distingue une vraie commande d'un espace de noms comme `suggest-context`, +// qui porte des libellés de menu contextuel et non une commande. +export async function buildImplicitCommandNames(botDir) { + const sources = new Set() + const collect = async (dir) => { + for (const entry of await readdir(dir, { withFileTypes: true })) { + if (entry.isDirectory()) await collect(join(dir, entry.name)) + else if (entry.name.endsWith('.ts')) sources.add(entry.name.replace(/\.ts$/, '')) + } + } + await collect(join(botDir, 'src/commands-slash')) + + const commandsDir = join(botDir, 'languages/fr/commands') + const glossary = {} + for (const entry of await readdir(commandsDir, { withFileTypes: true })) { + if (!entry.isFile() || !entry.name.endsWith('.json')) continue + const name = entry.name.replace(/\.json$/, '') + if (!sources.has(name)) continue + const locale = JSON.parse(await readFile(join(commandsDir, entry.name), 'utf8')) + if (typeof locale.name === 'string' && locale.name.trim()) continue + glossary[name] = name + } + return glossary +} + +// Deux sources peuvent traduire le même terme différemment (le bot dit +// « Infinite road », le panel dit « Counter »). Écraser l'une par l'autre +// impose un choix invisible : on expose les variantes à la place. +export function mergeGlossaries(...glossaries) { + const merged = {} + for (const glossary of glossaries) { + for (const [french, english] of Object.entries(glossary)) { + const known = merged[french] + if (known === undefined) { + merged[french] = english + continue + } + const variants = new Set([known, english].flat()) + merged[french] = variants.size === 1 ? [...variants][0] : [...variants] + } + } + return merged +} + +export async function loadDirectory(dir, prefix = '') { + const merged = {} + for (const entry of await readdir(dir, { withFileTypes: true })) { + const key = prefix ? `${prefix}/${entry.name}` : entry.name + if (entry.isDirectory()) { + Object.assign(merged, await loadDirectory(join(dir, entry.name), key)) + } else if (entry.name.endsWith('.json')) { + merged[key.replace(/\.json$/, '')] = JSON.parse(await readFile(join(dir, entry.name), 'utf8')) + } + } + return merged +} diff --git a/scripts/lib/glossary.test.mjs b/scripts/lib/glossary.test.mjs new file mode 100644 index 000000000..10d8e721c --- /dev/null +++ b/scripts/lib/glossary.test.mjs @@ -0,0 +1,147 @@ +// scripts/lib/glossary.test.mjs +import assert from 'node:assert/strict' +import { mkdir, mkdtemp, writeFile } from 'node:fs/promises' +import { tmpdir } from 'node:os' +import { join } from 'node:path' +import { test } from 'node:test' +import { + buildGlossary, + buildImplicitCommandNames, + flattenLocale, + loadDirectory, + mergeGlossaries, +} from './glossary.mjs' + +test('flattenLocale aplatit les objets imbriques', () => { + const flat = flattenLocale({ levels: { title: 'Niveaux', reward: 'Recompense' } }) + assert.equal(flat.get('levels.title'), 'Niveaux') + assert.equal(flat.get('levels.reward'), 'Recompense') +}) + +test('flattenLocale ignore les valeurs non textuelles', () => { + const flat = flattenLocale({ a: 'Texte', b: 42, c: null, d: ['x'] }) + assert.deepEqual([...flat.keys()], ['a']) +}) + +test('buildGlossary apparie les termes par cle commune', () => { + const glossary = buildGlossary({ commands: { levels: { name: 'niveaux' } } }, { commands: { levels: { name: 'levels' } } }) + assert.equal(glossary.niveaux, 'levels') +}) + +test('buildGlossary ignore les cles absentes d un cote', () => { + const glossary = buildGlossary({ a: { name: 'Seul' } }, { b: { name: 'Alone' } }) + assert.deepEqual(glossary, {}) +}) + +test('buildGlossary ecarte les cles dont le dernier segment n est pas retenu', () => { + const glossary = buildGlossary({ a: { description: 'Un terme' } }, { a: { description: 'A term' } }) + assert.deepEqual(glossary, {}) +}) + +test('buildGlossary ecarte les termes trop longs pour etre du vocabulaire', () => { + const long = 'Anticonstitutionnellement anticonstitutionnellement anticonstitutionnellement' + const glossary = buildGlossary({ a: { name: long } }, { a: { name: 'Whatever' } }) + assert.deepEqual(glossary, {}) +}) + +test('buildGlossary ecarte les termes identiques dans les deux langues', () => { + assert.deepEqual(buildGlossary({ a: { name: 'Premium' } }, { a: { name: 'Premium' } }), {}) +}) + +test('buildGlossary retient un nom de commande identique dans les deux langues', () => { + const glossary = buildGlossary( + { 'commands/love': { name: 'couple', options: { juliette: { name: 'juliette' } } } }, + { 'commands/love': { name: 'couple', options: { juliette: { name: 'juliette' } } } }, + ) + assert.deepEqual(glossary, { couple: 'couple', juliette: 'juliette' }) +}) + +test('buildGlossary ecarte un libelle affiche identique porte par une cle name de commande', () => { + const glossary = buildGlossary( + { 'commands/config/logs': { name: 'Logs', modules: { messages: { name: 'Messages' } } } }, + { 'commands/config/logs': { name: 'Logs', modules: { messages: { name: 'Messages' } } } }, + ) + assert.deepEqual(glossary, {}) +}) + +test('buildGlossary ecarte un terme identique hors des fichiers de commandes', () => { + assert.deepEqual(buildGlossary({ 'modules/levels': { name: 'premium' } }, { 'modules/levels': { name: 'premium' } }), {}) +}) + +test('buildGlossary ecarte une valeur qui se termine par un point, une exclamation ou une interrogation', () => { + assert.deepEqual(buildGlossary({ a: { name: 'Termine.' } }, { a: { name: 'Ended.' } }), {}) + assert.deepEqual(buildGlossary({ a: { name: 'Termine !' } }, { a: { name: 'Ended!' } }), {}) + assert.deepEqual(buildGlossary({ a: { name: 'Termine ?' } }, { a: { name: 'Ended?' } }), {}) +}) + +test('buildGlossary ecarte une valeur qui contient un gabarit d interpolation', () => { + const glossary = buildGlossary( + { pure: { name: '{count}' }, mixed: { name: '{count} membre' } }, + { pure: { name: '{amount}' }, mixed: { name: '{count} member' } }, + ) + assert.deepEqual(glossary, {}) +}) + +test('buildGlossary ecarte une valeur francaise de plus de cinq mots', () => { + const glossary = buildGlossary({ a: { name: 'un deux trois quatre cinq six' } }, { a: { name: 'one two three four five six' } }) + assert.deepEqual(glossary, {}) +}) + +test('buildGlossary retient une cle profondement imbriquee dont le dernier segment est name', () => { + const glossary = buildGlossary( + { commands: { premium: { options: { duree: { name: 'duree' } } } } }, + { commands: { premium: { options: { duree: { name: 'duration' } } } } }, + ) + assert.equal(glossary.duree, 'duration') +}) + +test('buildGlossary detoure les espaces de mise en forme des deux cotes', () => { + const glossary = buildGlossary({ a: { name: '\nNiveaux ' } }, { a: { name: ' Levels\n' } }) + assert.deepEqual(glossary, { Niveaux: 'Levels' }) +}) + +test('buildGlossary ecarte un terme reduit a des espaces', () => { + assert.deepEqual(buildGlossary({ a: { name: ' ' } }, { a: { name: 'Levels' } }), {}) +}) + +test('loadDirectory prefixe les cles par leur chemin relatif pour eviter les collisions entre sous-dossiers', async () => { + const dir = await mkdtemp(join(tmpdir(), 'glossary-test-')) + await mkdir(join(dir, 'commands')) + await mkdir(join(dir, 'modules')) + await writeFile(join(dir, 'commands', 'config.json'), JSON.stringify({ a: 'Un' })) + await writeFile(join(dir, 'modules', 'config.json'), JSON.stringify({ a: 'Deux' })) + const merged = await loadDirectory(dir) + assert.equal(merged['commands/config'].a, 'Un') + assert.equal(merged['modules/config'].a, 'Deux') +}) + +test('buildImplicitCommandNames retient les commandes sans cle name et rejette le reste', async () => { + const dir = await mkdtemp(join(tmpdir(), 'glossary-test-')) + await mkdir(join(dir, 'src', 'commands-slash', 'bot'), { recursive: true }) + await mkdir(join(dir, 'languages', 'fr', 'commands', 'config'), { recursive: true }) + for (const source of ['config.ts', 'profil.ts']) { + await writeFile(join(dir, 'src', 'commands-slash', 'bot', source), '') + } + await writeFile(join(dir, 'languages', 'fr', 'commands', 'config.json'), JSON.stringify({ description: 'Configurer' })) + await writeFile(join(dir, 'languages', 'fr', 'commands', 'profil.json'), JSON.stringify({ name: 'profil' })) + await writeFile(join(dir, 'languages', 'fr', 'commands', 'suggest-context.json'), JSON.stringify({ accept: { name: 'Acceptee' } })) + await writeFile(join(dir, 'languages', 'fr', 'commands', 'config', 'logs.json'), JSON.stringify({ description: 'Journaux' })) + + const glossary = await buildImplicitCommandNames(dir) + assert.deepEqual(glossary, { config: 'config' }) +}) + +test('mergeGlossaries garde une chaine quand les sources concordent', () => { + const merged = mergeGlossaries({ Niveaux: 'Levels' }, { Niveaux: 'Levels' }) + assert.equal(merged.Niveaux, 'Levels') +}) + +test('mergeGlossaries expose les deux formes quand les sources divergent', () => { + const merged = mergeGlossaries({ 'Route de l Infini': 'Infinite road' }, { 'Route de l Infini': 'Counter' }) + assert.deepEqual(merged['Route de l Infini'], ['Infinite road', 'Counter']) +}) + +test('mergeGlossaries cumule trois variantes sans doublon', () => { + const merged = mergeGlossaries({ a: 'X' }, { a: 'Y' }, { a: 'X' }) + assert.deepEqual(merged.a, ['X', 'Y']) +}) diff --git a/scripts/lib/links.mjs b/scripts/lib/links.mjs new file mode 100644 index 000000000..cb4a4c212 --- /dev/null +++ b/scripts/lib/links.mjs @@ -0,0 +1,88 @@ +// scripts/lib/links.mjs +import { access } from 'node:fs/promises' +import { dirname, resolve } from 'node:path' +import { listPages } from './pages.mjs' + +const IMAGE = /!\[[^\]]*\]\(([^)]+)\)/g +const DOCS_LINK = /\]\((\/docs[^)]*)\)/g + +// Un bloc de code montre de la syntaxe, pas une reference : le guide de +// redaction cite des chemins d'exemple qui n'ont pas vocation a exister. +// Le suivi se fait ligne a ligne : un delimiteur Markdown ouvre ou ferme un +// bloc uniquement en debut de ligne, alors qu'un ``` cite en pleine phrase +// n'est que du texte. Les lignes retirees sont remplacees par du vide plutot +// que supprimees, pour ne pas decaler ce qui suit. +function stripCode(body) { + let inFence = false + return body + .split('\n') + .map(line => { + const fence = line.match(/^\s*`{3,}(.*)$/) + if (fence) { + // Une fence fermante ne porte pas d'info-string (CommonMark) : ```js ouvre + // un bloc, ``` seul le ferme. Sans cette regle, un bloc citant la syntaxe + // d'un autre bloc — la page Markdown le fait — desynchronise le suivi. + if (!inFence) inFence = true + else if (fence[1].trim() === '') inFence = false + return '' + } + return inFence ? '' : line.replace(/`[^`\n]*`/g, '') + }) + .join('\n') +} + +export function extractImagePaths(body) { + const out = [] + for (const match of stripCode(body).matchAll(IMAGE)) { + const path = match[1].trim() + if (/^(https?:)?\/\//.test(path)) continue + out.push(path) + } + return out +} + +export function extractDocsLinks(body) { + const out = [] + for (const match of stripCode(body).matchAll(DOCS_LINK)) { + // Un titre de lien suit la cible apres une espace : [texte](/docs/x "titre"). + out.push(match[1].trim().split(/\s+/)[0]) + } + return out +} + +export async function findBrokenLinks(docsDir) { + const broken = [] + const pagesByLocale = new Map() + // Les URLs publiques ne portent pas de segment de locale : draftbot.fr sert le + // francais et draftbot.gg l'anglais sur des chemins independants. Un lien + // /docs/ est donc valide des qu'une locale declare ce slug. + const slugs = new Set() + for (const locale of ['fr', 'en']) { + const pages = await listPages(docsDir, locale) + pagesByLocale.set(locale, pages) + for (const page of pages) if (page.data.slug) slugs.add(page.data.slug) + } + + for (const [locale, pages] of pagesByLocale) { + for (const page of pages) { + if (!page.relPath.endsWith('.md')) continue + for (const ref of extractImagePaths(page.raw)) { + const target = resolve(dirname(page.absPath), ref.split('#')[0]) + try { + await access(target) + } catch { + broken.push(`image ${locale}/${page.relPath} -> ${ref}`) + } + } + for (const ref of extractDocsLinks(page.raw)) { + const target = ref.replace(/[#?].*$/, '').replace(/\/$/, '') + // La racine de la documentation n'est la page d'aucun slug. + if (target === '/docs') continue + if (!slugs.has(target.slice('/docs'.length))) { + broken.push(`lien ${locale}/${page.relPath} -> ${ref}`) + } + } + } + } + return broken +} diff --git a/scripts/lib/links.test.mjs b/scripts/lib/links.test.mjs new file mode 100644 index 000000000..c5c4f9823 --- /dev/null +++ b/scripts/lib/links.test.mjs @@ -0,0 +1,123 @@ +// scripts/lib/links.test.mjs +import assert from 'node:assert/strict' +import { mkdtemp, mkdir, writeFile } from 'node:fs/promises' +import { tmpdir } from 'node:os' +import { dirname, join } from 'node:path' +import { test } from 'node:test' +import { extractDocsLinks, extractImagePaths, findBrokenLinks } from './links.mjs' + +test('extractImagePaths trouve les images markdown', () => { + const body = '![Une legende](./assets/levels/panel.png)\n\n![Autre](../assets/x.jpg)\n' + assert.deepEqual(extractImagePaths(body), ['./assets/levels/panel.png', '../assets/x.jpg']) +}) + +test('extractImagePaths ignore les URLs absolues', () => { + assert.deepEqual(extractImagePaths('![x](https://example.com/a.png)'), []) +}) + +test('extractImagePaths ignore une image dans un bloc de code', () => { + const body = '![Vraie](./assets/a.png)\n\n```\n![Exemple](./assets/inexistant.png)\n```\n' + assert.deepEqual(extractImagePaths(body), ['./assets/a.png']) +}) + +test('extractImagePaths ignore une image en code inline', () => { + assert.deepEqual(extractImagePaths('Ecrivez `![Legende](./assets/x.png)` pour une image.'), []) +}) + +test('extractImagePaths ne bascule pas sur un delimiteur cite en pleine phrase', () => { + const body = 'Fermez avec ``` en fin de bloc.\n\n![Vraie](./assets/a.png)\n' + assert.deepEqual(extractImagePaths(body), ['./assets/a.png']) +}) + +test('extractImagePaths detecte les images avant et apres un bloc', () => { + const body = '![Avant](./assets/a.png)\n\n```\ncode\n```\n\n![Apres](./assets/b.png)\n' + assert.deepEqual(extractImagePaths(body), ['./assets/a.png', './assets/b.png']) +}) + +test('extractImagePaths ignore ce qui suit un bloc non ferme', () => { + const body = '![Avant](./assets/a.png)\n\n```\n![Dedans](./assets/x.png)\n' + assert.deepEqual(extractImagePaths(body), ['./assets/a.png']) +}) + +test('extractImagePaths ne ferme pas un bloc sur un delimiteur avec info-string', () => { + const body = '```\n```Texte\ncontenu\n```\n![Apres](./assets/a.png)\n' + assert.deepEqual(extractImagePaths(body), ['./assets/a.png']) +}) + +test('extractDocsLinks trouve les liens internes, ancre et titre compris', () => { + const body = 'Voir [les niveaux](/docs/engagement/niveaux) et [la boutique](/docs/engagement/economie#la-boutique "Boutique").\n' + assert.deepEqual(extractDocsLinks(body), [ + '/docs/engagement/niveaux', + '/docs/engagement/economie#la-boutique', + ]) +}) + +test('extractDocsLinks ignore un lien dans un bloc de code', () => { + const body = '```\n[exemple](/docs/inexistant)\n```\n[vrai](/docs/engagement/niveaux)\n' + assert.deepEqual(extractDocsLinks(body), ['/docs/engagement/niveaux']) +}) + +test('extractDocsLinks ignore les liens externes et relatifs', () => { + const body = '[a](https://www.draftbot.fr/docs/x) [b](./autre.md) [c](/premium)\n' + assert.deepEqual(extractDocsLinks(body), []) +}) + +async function linksFixture(pages) { + const dir = await mkdtemp(join(tmpdir(), 'links-')) + for (const [relPath, content] of Object.entries(pages)) { + await mkdir(dirname(join(dir, relPath)), { recursive: true }) + await writeFile(join(dir, relPath), content) + } + return dir +} + +test('findBrokenLinks signale un lien interne vers un slug inconnu', async () => { + const dir = await linksFixture({ + 'fr/3.engagement/0.levels.md': + '---\nslug: /engagement/niveaux\n---\nVoir [ceci](/docs/engagement/disparu).\n', + }) + const broken = await findBrokenLinks(dir) + assert.equal(broken.length, 1) + assert.match(broken[0], /lien fr\/3\.engagement\/0\.levels\.md -> \/docs\/engagement\/disparu/) +}) + +test('findBrokenLinks accepte un lien vers un slug declare, ancre comprise', async () => { + const dir = await linksFixture({ + 'fr/3.engagement/0.levels.md': + '---\nslug: /engagement/niveaux\n---\nVoir [ceci](/docs/engagement/economie#la-boutique).\n', + 'fr/3.engagement/1.economy.md': '---\nslug: /engagement/economie\n---\nFR\n', + }) + assert.deepEqual(await findBrokenLinks(dir), []) +}) + +test('findBrokenLinks accepte un lien vers un slug declare par l autre locale', async () => { + const dir = await linksFixture({ + 'fr/3.engagement/0.levels.md': + '---\nslug: /engagement/niveaux\n---\nVoir [ceci](/docs/engagement/economy).\n', + 'en/3.engagement/1.economy.md': '---\nslug: /engagement/economy\n---\nEN\n', + }) + assert.deepEqual(await findBrokenLinks(dir), []) +}) + +test('findBrokenLinks signale une image absente', async () => { + const dir = await mkdtemp(join(tmpdir(), 'links-')) + await mkdir(join(dir, 'fr/3.engagement'), { recursive: true }) + await writeFile( + join(dir, 'fr/3.engagement/0.levels.md'), + '---\nslug: /engagement/niveaux\n---\n![x](./assets/levels/panel.png)\n', + ) + const broken = await findBrokenLinks(dir) + assert.equal(broken.length, 1) + assert.match(broken[0], /panel\.png/) +}) + +test('findBrokenLinks ne signale rien quand l image existe', async () => { + const dir = await mkdtemp(join(tmpdir(), 'links-')) + await mkdir(join(dir, 'fr/3.engagement/assets/levels'), { recursive: true }) + await writeFile(join(dir, 'fr/3.engagement/assets/levels/panel.png'), 'x') + await writeFile( + join(dir, 'fr/3.engagement/0.levels.md'), + '---\nslug: /engagement/niveaux\n---\n![x](./assets/levels/panel.png)\n', + ) + assert.deepEqual(await findBrokenLinks(dir), []) +}) diff --git a/scripts/lib/pages.mjs b/scripts/lib/pages.mjs new file mode 100644 index 000000000..eb69268b9 --- /dev/null +++ b/scripts/lib/pages.mjs @@ -0,0 +1,126 @@ +import { readFile, readdir } from 'node:fs/promises' +import { dirname, join, posix } from 'node:path' +import { contentHash, parseFrontmatter } from './frontmatter.mjs' + +const LOCALES = ['fr', 'en'] +const DEFAULT_LOCALE = 'fr' + +export function slugFromPath(relPath) { + const segments = relPath.split('/').map(segment => segment.replace(/^\d+\./, '')) + const last = segments.pop().replace(/\.(md|yml)$/, '') + return '/' + [...segments, last].join('/') +} + +async function walk(dir, base = dir) { + const out = [] + let entries + try { + entries = await readdir(dir, { withFileTypes: true }) + } catch (error) { + // Un dossier de locale absent est normal (docs/en avant sa creation) ; + // toute autre erreur doit remonter plutot que de rendre une liste vide. + if (error.code !== 'ENOENT') throw error + return out + } + for (const entry of entries) { + const full = join(dir, entry.name) + if (entry.isDirectory()) { + if (entry.name === 'assets') continue + out.push(...(await walk(full, base))) + } else if (/\.(md|yml)$/.test(entry.name)) { + out.push(posix.join(...full.slice(base.length + 1).split(/[/\\]/))) + } + } + return out +} + +export async function listPages(docsDir, locale) { + const localeDir = join(docsDir, locale) + const relPaths = (await walk(localeDir)).sort() + return Promise.all( + relPaths.map(async relPath => { + const absPath = join(localeDir, relPath) + const raw = await readFile(absPath, 'utf8') + const { data } = relPath.endsWith('.yml') + ? parseFrontmatter(`---\n${raw}\n---\n`) + : parseFrontmatter(raw) + return { relPath, absPath, raw, data } + }), + ) +} + +export async function findIssues(docsDir) { + const targetLocale = LOCALES.find(l => l !== DEFAULT_LOCALE) + const source = await listPages(docsDir, DEFAULT_LOCALE) + const target = await listPages(docsDir, targetLocale) + const byRelPath = new Map(target.map(page => [page.relPath, page])) + + const untranslated = [] + const stale = [] + const orphaned = [] + const slugErrors = [] + + const dirSlugs = new Map() + for (const page of [...source, ...target]) { + if (page.relPath.endsWith('_dir.yml') && page.data.slug) { + dirSlugs.set(dirname(page.absPath), page.data.slug.replace(/\/_dir$/, '')) + } + } + + for (const [locale, pages] of [ + [DEFAULT_LOCALE, source], + [targetLocale, target], + ]) { + // Deux locales peuvent declarer le meme slug sans collision : le plugin + // prefixe l'URL finale par /docs/. L'unicite se controle donc par + // locale, pas sur l'ensemble des pages. + const relPathBySlug = new Map() + for (const page of pages) { + if (!page.data.slug) { + slugErrors.push(`${locale}/${page.relPath} : slug manquant`) + continue + } + const parentSlug = dirSlugs.get(dirname(page.absPath)) + // Le _dir.yml racine a pour slug "/_dir", donc un parentSlug vide : la + // comparaison se reduit alors au "/" initial, qu'un slug racine malforme + // n'a pas. Tester la presence de la cle et non sa verite, sinon ce cas + // sort de la verification. + if (parentSlug !== undefined && !page.data.slug.startsWith(parentSlug + '/')) { + slugErrors.push( + `${locale}/${page.relPath} : slug "${page.data.slug}" ne commence pas par "${parentSlug}/"`, + ) + } + const twin = relPathBySlug.get(page.data.slug) + if (twin) { + slugErrors.push( + `${locale}/${page.relPath} : slug "${page.data.slug}" deja declare par ${twin}`, + ) + } else { + relPathBySlug.set(page.data.slug, page.relPath) + } + } + } + + for (const page of source) { + if (page.relPath.endsWith('_dir.yml')) continue + // Le frontmatter est parse en chaines : `translate: false` arrive en "false". + // Un _dir.yml qui la porte ne couvre que lui-meme, aucune cascade n'existe + // ici : la cle doit etre posee sur chaque page a exclure. + if (page.data.translate?.trim() === 'false') continue + const translated = byRelPath.get(page.relPath) + if (!translated) { + untranslated.push(page.relPath) + } else if (translated.data.sourceHash !== contentHash(page.raw)) { + stale.push(page.relPath) + } + } + + // Une page francaise renommee laisse sa traduction en place : sans ce + // controle, l'ancienne page anglaise resterait servie indefiniment. + const sourceRelPaths = new Set(source.map(page => page.relPath)) + for (const page of target) { + if (!sourceRelPaths.has(page.relPath)) orphaned.push(page.relPath) + } + + return { untranslated, stale, orphaned, slugErrors } +} diff --git a/scripts/lib/pages.test.mjs b/scripts/lib/pages.test.mjs new file mode 100644 index 000000000..4214cd820 --- /dev/null +++ b/scripts/lib/pages.test.mjs @@ -0,0 +1,149 @@ +import assert from 'node:assert/strict' +import { mkdtemp, mkdir, writeFile } from 'node:fs/promises' +import { tmpdir } from 'node:os' +import { join } from 'node:path' +import { test } from 'node:test' +import { contentHash } from './frontmatter.mjs' +import { findIssues, listPages, slugFromPath } from './pages.mjs' + +test('slugFromPath retire les prefixes numeriques et l extension', () => { + assert.equal(slugFromPath('3.engagement/0.levels.md'), '/engagement/levels') + assert.equal(slugFromPath('0.home.md'), '/home') +}) + +test('slugFromPath conserve le suffixe _dir', () => { + assert.equal(slugFromPath('3.engagement/_dir.yml'), '/engagement/_dir') + assert.equal(slugFromPath('_dir.yml'), '/_dir') +}) + +async function fixture() { + const dir = await mkdtemp(join(tmpdir(), 'docs-')) + await mkdir(join(dir, 'fr/3.engagement'), { recursive: true }) + await mkdir(join(dir, 'en/3.engagement'), { recursive: true }) + return dir +} + +test('listPages rend les pages d une locale avec leur frontmatter', async () => { + const dir = await fixture() + await writeFile(join(dir, 'fr/3.engagement/0.levels.md'), '---\nslug: /engagement/niveaux\n---\nFR\n') + const pages = await listPages(dir, 'fr') + assert.equal(pages.length, 1) + assert.equal(pages[0].relPath, '3.engagement/0.levels.md') + assert.equal(pages[0].data.slug, '/engagement/niveaux') +}) + +test('findIssues signale une page non traduite', async () => { + const dir = await fixture() + await writeFile(join(dir, 'fr/3.engagement/0.levels.md'), '---\nslug: /engagement/niveaux\n---\nFR\n') + const issues = await findIssues(dir) + assert.deepEqual(issues.untranslated, ['3.engagement/0.levels.md']) + assert.deepEqual(issues.stale, []) +}) + +test('findIssues signale une traduction perimee', async () => { + const dir = await fixture() + const fr = '---\nslug: /engagement/niveaux\n---\nFR modifie\n' + await writeFile(join(dir, 'fr/3.engagement/0.levels.md'), fr) + await writeFile( + join(dir, 'en/3.engagement/0.levels.md'), + '---\nslug: /engagement/levels\nsourceHash: ' + contentHash('autre chose') + '\n---\nEN\n', + ) + const issues = await findIssues(dir) + assert.deepEqual(issues.stale, ['3.engagement/0.levels.md']) + assert.deepEqual(issues.untranslated, []) +}) + +test('findIssues ne signale rien quand la traduction est a jour', async () => { + const dir = await fixture() + const fr = '---\nslug: /engagement/niveaux\n---\nFR\n' + await writeFile(join(dir, 'fr/3.engagement/0.levels.md'), fr) + await writeFile( + join(dir, 'en/3.engagement/0.levels.md'), + '---\nslug: /engagement/levels\nsourceHash: ' + contentHash(fr) + '\n---\nEN\n', + ) + const issues = await findIssues(dir) + assert.deepEqual(issues.stale, []) + assert.deepEqual(issues.untranslated, []) +}) + +test('findIssues signale un slug incoherent avec son dossier parent', async () => { + const dir = await fixture() + await writeFile(join(dir, 'fr/3.engagement/_dir.yml'), 'slug: /engagement/_dir\ntitle: Engagement\n') + await writeFile(join(dir, 'fr/3.engagement/0.levels.md'), '---\nslug: /autre/niveaux\n---\nFR\n') + const issues = await findIssues(dir) + assert.equal(issues.slugErrors.length, 1) + assert.match(issues.slugErrors[0], /0\.levels\.md/) +}) + +test('findIssues signale un slug racine malforme', async () => { + const dir = await fixture() + await writeFile(join(dir, 'fr/_dir.yml'), 'slug: /_dir\ntitle: Documentation\n') + await writeFile(join(dir, 'fr/0.home.md'), '---\nslug: accueil\n---\nFR\n') + const issues = await findIssues(dir) + assert.equal(issues.slugErrors.length, 1) + assert.match(issues.slugErrors[0], /0\.home\.md/) +}) + +test('findIssues signale deux pages d une meme locale declarant le meme slug', async () => { + const dir = await fixture() + await writeFile(join(dir, 'fr/3.engagement/0.levels.md'), '---\nslug: /engagement/niveaux\n---\nFR\n') + await writeFile(join(dir, 'fr/3.engagement/1.economy.md'), '---\nslug: /engagement/niveaux\n---\nFR\n') + const issues = await findIssues(dir) + assert.equal(issues.slugErrors.length, 1) + assert.match(issues.slugErrors[0], /1\.economy\.md .*deja declare par 3\.engagement\/0\.levels\.md/) +}) + +test('findIssues accepte le meme slug dans deux locales differentes', async () => { + const dir = await fixture() + const fr = '---\nslug: /engagement/levels\n---\nFR\n' + await writeFile(join(dir, 'fr/3.engagement/0.levels.md'), fr) + await writeFile( + join(dir, 'en/3.engagement/0.levels.md'), + '---\nslug: /engagement/levels\nsourceHash: ' + contentHash(fr) + '\n---\nEN\n', + ) + const issues = await findIssues(dir) + assert.deepEqual(issues.slugErrors, []) +}) + +test('findIssues signale une page anglaise sans source francaise', async () => { + const dir = await fixture() + await writeFile(join(dir, 'fr/3.engagement/0.levels.md'), '---\nslug: /engagement/niveaux\n---\nFR\n') + await writeFile(join(dir, 'en/3.engagement/9.removed.md'), '---\nslug: /engagement/removed\n---\nEN\n') + const issues = await findIssues(dir) + assert.deepEqual(issues.orphaned, ['3.engagement/9.removed.md']) +}) + +test('findIssues ignore une page source portant translate: false', async () => { + const dir = await fixture() + await writeFile( + join(dir, 'fr/3.engagement/0.levels.md'), + '---\nslug: /engagement/niveaux\ntranslate: false\n---\nFR\n', + ) + const issues = await findIssues(dir) + assert.deepEqual(issues.untranslated, []) + assert.deepEqual(issues.stale, []) +}) + +// Le dispositif lit chaque fichier isolement : aucune cascade ne descend d'un +// _dir.yml vers ses pages. La cle doit donc etre posee page par page. +test('findIssues ne propage pas le translate: false d un _dir.yml aux pages', async () => { + const dir = await fixture() + await writeFile(join(dir, 'fr/3.engagement/_dir.yml'), 'slug: /engagement/_dir\ntranslate: false\n') + await writeFile(join(dir, 'fr/3.engagement/0.levels.md'), '---\nslug: /engagement/niveaux\n---\nFR\n') + const issues = await findIssues(dir) + assert.deepEqual(issues.untranslated, ['3.engagement/0.levels.md']) +}) + +test('findIssues signale un slug manquant', async () => { + const dir = await fixture() + await writeFile(join(dir, 'fr/3.engagement/0.levels.md'), '---\ntitle: Niveaux\n---\nFR\n') + const issues = await findIssues(dir) + assert.equal(issues.slugErrors.length, 1) + assert.match(issues.slugErrors[0], /slug manquant/) +}) + +test('listPages propage une erreur autre qu un dossier absent', async () => { + const dir = await mkdtemp(join(tmpdir(), 'docs-')) + await writeFile(join(dir, 'fr'), 'ceci est un fichier, pas un dossier') + await assert.rejects(() => listPages(dir, 'fr'), { code: 'ENOTDIR' }) +})