> ## Documentation Index
> Fetch the complete documentation index at: https://www.chapterjs.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Créer le projet

> Créer un projet en une commande, lui donner votre token, le lancer, et lire ce que dit le terminal ligne par ligne

Vous avez un compte bot et un serveur de test. Cette page en fait un bot en ligne, avec une première commande à essayer. Tout se passe dans un terminal.

## Créer le projet

Ouvrez un terminal dans le dossier où vous rangez vos projets, et lancez la commande de votre gestionnaire de paquets :

```bash pnpm theme={"theme":{"light":"github-light","dark":"vesper"}}
pnpm create chapterjs
```

```bash npm theme={"theme":{"light":"github-light","dark":"vesper"}}
npm create chapterjs@latest
```

```bash yarn theme={"theme":{"light":"github-light","dark":"vesper"}}
yarn create chapterjs
```

```bash bun theme={"theme":{"light":"github-light","dark":"vesper"}}
bun create chapterjs
```

Elle pose jusqu’à trois questions :

1. **Où créer le projet.** Un nom de dossier, comme `buddy`. Le dossier ne doit pas encore exister, ou être vide. (`.` veut dire « ici même », pour un dossier que vous avez déjà créé.)
2. **Quel gestionnaire de paquets utiliser.** Seuls ceux installés sur votre ordinateur peuvent être choisis, et celui avec lequel vous avez lancé la commande est présélectionné : appuyez sur Entrée.
3. **Quel modèle utiliser.** Prenez `minimal`, présélectionné : un fichier, assez pour voir le bot en ligne, et ce tutoriel ajoute le reste. Les autres (`tickets`, `moderation`, `levels`, `giveaways`) sont des bots complets à lire une fois le framework connu : voir [Modèles](https://www.chapterjs.org/fr/setup/project-structure.md#modèles).

Ensuite, elle copie le modèle, installe les dépendances (c’est l’étape qui prend un moment) et affiche la suite. Une question avec une seule réponse possible n’est jamais posée : le framework prend la réponse et le dit avec `ℹ`. Vous verrez cette habitude partout.

> [!TIP]
>
> Passez le nom du dossier pour sauter la première question : `pnpm create chapterjs buddy`.

Entrez dans le dossier et ouvrez-le dans votre éditeur :

```bash theme={"theme":{"light":"github-light","dark":"vesper"}}
cd buddy
```

## Lui donner votre bot

Le projet contient un fichier appelé `.env.example` :

```bash .env.example theme={"theme":{"light":"github-light","dark":"vesper"}}
# Your bot token: https://discord.com/developers/applications → your app → Bot → Reset Token
BOT_TOKEN=
# The ID of the server used by `chapterjs dev` (right-click the server → Copy Server ID)
DEV_GUILD_ID=
```

Copiez-le dans un fichier appelé `.env` (même dossier, sans `.example`), et remplissez les deux valeurs de la page précédente : le token après `BOT_TOKEN=`, l’identifiant du serveur après `DEV_GUILD_ID=`, sans guillemets, sans espaces.

Pourquoi deux fichiers ? `.env.example` est commité dans git et montre ce dont le projet a besoin, avec des valeurs vides. `.env` contient les vraies valeurs et est ignoré par git (regardez `.gitignore` : il y est déjà). Ainsi, votre token ne se retrouve jamais dans un dépôt, même privé, et quiconque récupère le projet sait quoi remplir.

> [!WARNING]
>
> Si vous voyez un jour votre token dans un terminal, une capture d’écran ou un commit, réinitialisez-le immédiatement dans le Developer Portal. L’ancien cesse de fonctionner, et personne ne peut plus faire tourner votre bot avec.

## Le lancer

```bash pnpm theme={"theme":{"light":"github-light","dark":"vesper"}}
pnpm dev
```

```bash npm theme={"theme":{"light":"github-light","dark":"vesper"}}
npm run dev
```

```bash yarn theme={"theme":{"light":"github-light","dark":"vesper"}}
yarn dev
```

```bash bun theme={"theme":{"light":"github-light","dark":"vesper"}}
bun dev
```

La première fois, le bot n’est pas encore dans votre serveur de test, alors le terminal vous donne un lien et attend :

```text theme={"theme":{"light":"github-light","dark":"vesper"}}
⚠ Your bot is not in your dev server yet (DEV_GUILD_ID=123456789012345678).
  Open this link to add it:
  https://discord.com/oauth2/authorize?client_id=...&scope=bot+applications.commands&permissions=8&guild_id=123456789012345678&disable_guild_select=true
  If the link shows another server, DEV_GUILD_ID is not the ID of a server you manage.
  Waiting for the bot to be added...
```

Les messages du terminal sont en anglais : c’est ce que ChapterJS affiche, et ce tutoriel les cite tels quels pour que vous les reconnaissiez.

Ouvrez le lien dans votre navigateur, vérifiez qu’il affiche votre serveur de test, et confirmez. Le lien ajoute le bot à ce serveur uniquement, avec toutes les permissions : un serveur de test est un terrain de jeu, et tout donner au bot là-bas veut dire qu’une permission manquante ne vous gênera jamais pendant que vous apprenez. En production, ce sont les gens qui ajoutent votre bot qui choisissent ce qu’ils lui donnent.

De retour dans le terminal, la commande continue toute seule :

```text theme={"theme":{"light":"github-light","dark":"vesper"}}
✓ The bot joined My Server
✓ Connected to My Server as buddy
ℹ Intents computed from your files: GUILDS
✓ a presence loaded
```

Regardez votre serveur de test : le bot est en ligne, avec « Getting ready » sous son nom. Il ne fait rien d’autre pour l’instant : le modèle est un fichier, et les pages suivantes ajoutent tout le reste.

## Lire le terminal

Chaque ligne de cette sortie vous dit quelque chose, et le symbole devant indique de quel type :

| Symbole | Signification |
| - | - |
| `✓` | Quelque chose a fonctionné |
| `ℹ` | Quelque chose à savoir, rien à faire |
| `↻` | Un rechargement ou une reconnexion |
| `⚠` | Quelque chose à regarder ; le bot continue de tourner |
| `✗` | Quelque chose a échoué : ce qui s’est passé, puis quoi faire |

Maintenant les lignes, une par une :

* **`✓ Connected to My Server as buddy`** : le programme s’est connecté avec votre token, et a trouvé votre serveur de test. « My Server » est le nom du serveur de `DEV_GUILD_ID`.
* **`ℹ Intents computed from your files: GUILDS`** : les intents du chapitre précédent. Le framework a lu vos fichiers et demandé à Discord ce dont ils ont besoin. `GUILDS` est celui dont tout bot a besoin pour connaître ses serveurs ; rien dans le modèle n’en demande davantage.
* **`✓ a presence loaded`** : les fichiers de `src/` ont été lus : une présence, et rien d’autre pour l’instant. C’est le seul fichier du modèle, `src/presence.ts`, et c’est pourquoi « Getting ready » s’affiche sous le nom du bot. Commandes, événements, boutons, langues : chacun est un chapitre de ce tutoriel.

## Arrêter

Appuyez sur `Ctrl+C` dans le terminal. Le bot se déconnecte proprement et passe hors ligne immédiatement :

```text theme={"theme":{"light":"github-light","dark":"vesper"}}
✓ Disconnected
```

Appuyez une fois et attendez cette ligne. Un second `Ctrl+C` tue le programme sans dire au revoir, et Discord affiche alors le bot en ligne un moment, jusqu’à ce qu’il remarque que plus personne n’est au bout du fil.

## Quand quelque chose ne va pas

Chaque valeur de `.env` est vérifiée avant toute autre chose, et chaque problème est affiché d’un coup avec quoi faire :

```text theme={"theme":{"light":"github-light","dark":"vesper"}}
✗ .env: BOT_TOKEN is empty.
  Copy the token of your bot from https://discord.com/developers/applications → your application → Bot → Reset Token.
✗ .env: DEV_GUILD_ID is "my-server", which is not a server ID (an ID only has digits).
  In Discord, right-click your test server → Copy Server ID.
```

Un token que Discord ne reconnaît pas est refusé dès la première requête :

```text theme={"theme":{"light":"github-light","dark":"vesper"}}
✗ Discord refused the bot token. Copy it again from the Developer Portal (your application → Bot → Reset Token) into BOT_TOKEN in your .env file.
```

Cela veut généralement dire que le token a été réinitialisé depuis que vous l’avez copié. Réinitialisez-le à nouveau, copiez le nouveau et relancez. Chaque message que le bot peut afficher est rassemblé dans [Dépannage](https://www.chapterjs.org/fr/run/troubleshooting.md), avec quoi faire.

## Récapitulatif

* `pnpm create chapterjs` (ou la commande de votre gestionnaire de paquets) crée le projet et l’installe.
* `.env` contient `BOT_TOKEN` et `DEV_GUILD_ID`, et git l’ignore.
* `pnpm dev` fait tourner le bot sur votre serveur de test ; la première fois, un lien l’y ajoute.
* Le symbole de chaque ligne dit de quel type de message il s’agit ; `✗` vient toujours avec quoi faire.
* `Ctrl+C` une fois, puis attendez `✓ Disconnected`.

> [card] [Visite du projet](https://www.chapterjs.org/fr/tutorial/tour.md)
>
> À quoi sert chaque fichier, et la règle derrière tous.

> [card] [Guide : Démarrage rapide](https://www.chapterjs.org/fr/quickstart.md)
>
> Les mêmes étapes sur une seule page.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.