Configuration initiale
/setup init
La commande /setup init cree automatiquement l'infrastructure de salons necessaire au bot.
Salons crees
| Categorie | Salon | Cle GuildConfig | Fonction |
|---|---|---|---|
| Nekobot | commands | helpChannelId | Guide des commandes public |
| Nekobot | suggestions | suggestionChannelId | Suggestions |
| Nekobot | clips | clipChannelId | Clips gaming |
| Staff | admin-commands | staffChannelId | Guide des commandes staff |
| Staff | logs | logChannelId | Logs admin |
| Staff | admin-logs | moderationLogChannelId | Logs de moderation |
Comportement
- Pour chaque categorie, le bot cherche une categorie existante du meme nom. Si elle n'existe pas, il la cree.
- Pour chaque salon, le bot cherche un salon textuel existant du meme nom :
- S'il existe, il est deplace dans la bonne categorie si necessaire, et son ID est reutilise.
- S'il n'existe pas, il est cree dans la categorie.
- Tous les IDs sont sauvegardes dans
GuildConfigvia upsert. - Les messages d'aide sont postes (ou mis a jour) dans les salons
commandsetadmin-commands.
Un embed recapitulatif est affiche a la fin avec la liste des salons crees et reutilises.
/setup level-roles
Cree les 13 roles de niveau du systeme de gamification. Voir Systeme d'XP pour le detail des roles.
Comportement :
- Si un role du meme nom existe deja, il est reutilise (pas de doublon).
- Les roles sont crees avec
hoist: falseetmentionable: false. - Le mapping
{ "niveau": "roleId" }est sauvegarde dansGuildConfig.levelRoles.
Messages d'aide persistants
Les messages d'aide (public et staff) sont des embeds Discord postes dans les salons configures. Ils sont edites plutot que renvoyes a chaque modification.
Fonctionnement :
- Lors du premier setup, les embeds sont postes et les
messageIdsont stockes dansGuildConfig(helpMessageId,staffMessageId). - Au redemarrage du bot, la fonction
refreshHelpMessages()est appelee dans le handlerclientReady. Elle recupere les messages par leur ID et les edite avec le contenu a jour. - Si un message a ete supprime, un nouveau est poste et l'ID est mis a jour.
Contenu du guide public
6 embeds couvrant : general, social/events, gamification/XP, gaming, communaute.
Contenu du guide staff
3 embeds couvrant : introduction, moderation (warn/kick/ban/modhistory), administration (setup + admin).
/help
La commande /help affiche les embeds d'aide directement dans le salon ou elle est executee :
- Tous les membres voient les commandes publiques.
- Les moderateurs (permission
ModerateMembers) voient en plus les commandes staff.
La detection se fait via la fonction isModerator() qui verifie PermissionsBitField.Flags.ModerateMembers.
Verification du proprietaire
Toutes les commandes /setup et /admin sont protegees par la fonction isOwner() :
export function isOwner(interaction: ChatInputCommandInteraction): boolean {
return !!env.BOT_OWNER_ID && interaction.user.id === env.BOT_OWNER_ID;
}Seul l'utilisateur dont le Discord ID correspond a BOT_OWNER_ID dans le .env peut executer ces commandes. Meme les administrateurs Discord se voient refuser l'acces sans cette correspondance.
