Un template moderne et modulaire pour développer des bots Discord en TypeScript avec une architecture propre et extensible.
- 🏗️ Architecture modulaire - Template avec système de commandes et d'événements facilement extensible
- 🌐 Support multilingue - Système de traduction intégré et configurable
- 🎨 Console stylisée - Système de logs colorés et formatés avec tableaux et encadrés
- ⚡ Hot reload - Configuration prête pour le développement avec rechargement automatique
- 🔧 TypeScript - Template entièrement typé avec IntelliSense complet
- 📦 Handlers automatiques - Système de chargement automatique des commandes et événements
- 🛡️ Gestion des permissions - Support complet et prêt à l'emploi des permissions Discord
- 🎯 Multi-types de commandes - Support natif des commandes préfixées, slash et menus contextuels
- 🚀 Prêt à l'emploi - Configuration minimale requise pour démarrer votre projet
-
Clonez le repository
git clone https://github.com/Soren-git/discord-bot-typescript.git cd discord-bot-typescript -
Installez les dépendances
pnpm install # ou npm install -
Configurez l'environnement
cp .env.example .env
Éditez le fichier
.envet ajoutez votre token :TOKEN=votre_token_discord_ici
-
Configurez le bot
Modifiez
src/config.tsselon vos besoins :const config: Config = { language: "en", // Langue du bot prefix: "$", // Préfixe des commandes status: "dnd", // Statut du bot activities: [ // Activités du bot { name: ".gg/zproject", type: ActivityType.Custom, }, ], };
pnpm dev
# ou
npm run dev# Compilation TypeScript
pnpm build
# ou
npm run build
# Démarrage en production
node dist/bot.jsLe template est conçu pour être facilement extensible. Ajoutez simplement vos fichiers dans les dossiers appropriés et ils seront automatiquement chargés !
src/
├── commands/ # Commandes du bot
│ └── ping.ts # Exemple de commande
├── events/ # Événements Discord
│ └── message-create.ts
├── handlers/ # Gestionnaires de commandes et événements
│ ├── commands.ts
│ └── events.ts
├── locales/ # Fichiers de traduction
│ └── en.json
├── types/ # Définitions TypeScript
├── utils/ # Utilitaires
│ ├── console/ # Système de console stylisée
│ └── translator.ts # Système de traduction
├── constants/ # Constantes
├── config.ts # Configuration du bot
└── bot.ts # Point d'entrée
Créez un fichier dans src/commands/ :
import { Command } from "@src/handlers/commands";
import { Client, Message } from "discord.js";
const command = new Command<[Client, Message, string[]]>(
"basic",
"hello",
"Say hello to the user",
null,
[],
async (client, message, args) => {
const user = args[0] ? `<@${args[0]}>` : message.author.toString();
message.reply(`Hello ${user}! 👋`);
}
);
export default command;import { Command } from "@src/handlers/commands";
import { Client, CommandInteraction } from "discord.js";
const command = new Command<[Client, CommandInteraction]>(
"slash",
"greet",
"Greet a user",
null,
[
{
type: "User",
name: "user",
description: "User to greet",
required: true,
choices: []
}
],
async (client, interaction) => {
const user = interaction.options.getUser("user");
await interaction.reply(`Hello ${user}! 👋`);
}
);
export default command;import { Command } from "@src/handlers/commands";
import { Client, ContextMenuCommandInteraction, ContextMenuCommandType } from "discord.js";
const command = new Command<[Client, ContextMenuCommandInteraction]>(
"context",
"User Info",
"Get user information",
null,
[],
async (client, interaction) => {
const user = interaction.targetUser;
await interaction.reply(`User: ${user.tag}\nID: ${user.id}`);
},
ContextMenuCommandType.User
);
export default command;Créez un fichier dans src/events/ :
import { Event } from "@src/handlers/events";
import { Client, GuildMember } from "discord.js";
const event = new Event<[Client, GuildMember]>(
"guildMemberAdd",
async (client, member) => {
console.log(`${member.user.tag} joined ${member.guild.name}`);
// Votre logique de bienvenue ici
}
);
export default event;- Créez un fichier JSON dans
src/locales/(ex:fr.json) - Ajoutez vos traductions :
{ "welcome": "Bienvenue {username}!", "goodbye": "Au revoir!" } - Utilisez dans votre code :
import { _T } from "@src/utils/translator"; const message = _T("welcome", { username: "John" });
Le bot inclut un système de console avancé avec couleurs et formatage :
import { Console } from "@src/utils/console/namespace";
// Encadré avec icônes
Console.box("^g", "Success", [
{ type: "success", content: "Operation completed!" },
{ type: "info", content: "Details: ^y42^R files processed" }
]);
// Tableau formaté
Console.table({
color: "^b",
title: "Statistics",
headers: ["Name", "Count"],
rows: [["Users", 150], ["Servers", 5]],
comment: "Updated every hour"
});^rRouge,^gVert,^bBleu,^yJaune^cCyan,^mMagenta,^wBlanc,^0Noir^BGras,^USouligné,^RReset
Les commandes supportent les permissions Discord :
import { PermissionFlagsBits } from "discord.js";
const command = new Command(
"slash",
"admin",
"Admin command",
PermissionFlagsBits.Administrator, // Seuls les admins peuvent utiliser
// ...
);Le bot utilise les intents suivants (configurés dans bot.ts) :
- Guilds
- Guild Messages
- Message Content
- Et autres selon vos besoins
| Script | Description |
|---|---|
pnpm dev / npm run dev |
Démarre en mode développement avec hot reload |
pnpm build / npm run build |
Compile le TypeScript vers JavaScript |
node dist/bot.js |
Démarre le bot compilé en production |
- Compilez le projet :
pnpm build - Configurez vos variables d'environnement
- Utilisez
node dist/bot.jspour démarrer - Considérez un process manager comme PM2
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
- 💬 Discord: Rejoignez notre serveur
- 🐛 Issues: GitHub Issues
Un grand merci à tous ceux qui rendent ce template possible :
- Discord.js - La meilleure bibliothèque Discord pour Node.js
- TypeScript - JavaScript avec types statiques
- La communauté Discord.js - Pour l'aide, les ressources et l'inspiration
- Tous les contributeurs - Chaque contribution compte !
Ce template utilise uniquement des dépendances modernes et maintenues :
- Discord.js v14 pour l'interaction avec l'API Discord
- TypeScript pour la sécurité des types
- ts-node-dev pour le développement avec hot reload
- dotenv pour la gestion des variables d'environnement
Si ce template vous a aidé à créer votre bot Discord, n'hésitez pas à :
⭐ Mettre une étoile au projet
🔄 Partager avec d'autres développeurs
💝 Contribuer au développement
Créé avec ❤️ par Soren | Template Discord Bot TypeScript