Skip to content

Configuration initiale

/setup init

La commande /setup init cree automatiquement l'infrastructure de salons necessaire au bot.

Salons crees

CategorieSalonCle GuildConfigFonction
NekobotcommandshelpChannelIdGuide des commandes public
NekobotsuggestionssuggestionChannelIdSuggestions
NekobotclipsclipChannelIdClips gaming
Staffadmin-commandsstaffChannelIdGuide des commandes staff
StafflogslogChannelIdLogs admin
Staffadmin-logsmoderationLogChannelIdLogs de moderation

Comportement

  1. Pour chaque categorie, le bot cherche une categorie existante du meme nom. Si elle n'existe pas, il la cree.
  2. 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.
  3. Tous les IDs sont sauvegardes dans GuildConfig via upsert.
  4. Les messages d'aide sont postes (ou mis a jour) dans les salons commands et admin-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: false et mentionable: false.
  • Le mapping { "niveau": "roleId" } est sauvegarde dans GuildConfig.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 :

  1. Lors du premier setup, les embeds sont postes et les messageId sont stockes dans GuildConfig (helpMessageId, staffMessageId).
  2. Au redemarrage du bot, la fonction refreshHelpMessages() est appelee dans le handler clientReady. Elle recupere les messages par leur ID et les edite avec le contenu a jour.
  3. 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() :

typescript
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.