ArkaMod

ArkaMod

Bot de modération pensé pour les communautés qui gèrent plusieurs serveurs Discord liés entre eux. Il centralise les sanctions et leur historique, partage une blacklist commune entre serveurs pour repérer rapidement les utilisateurs problématiques, et propose un système de support par tickets entièrement configurable. Toute la configuration — rôles, permissions par commande, salons, embeds — se fait depuis ce tableau de bord, sans avoir besoin de mémoriser une seule commande Discord.

⚙️ Configuration

/setup — Assistant de configuration Discord en 3 étapes, réservé au propriétaire du serveur :
1. Salon sanction.
2. Salons blacklist réseau, demandes d'appel et patch notes (optionnel).
3. Doubles comptes : salon d'alerte et critères de détection.
Chaque sélection est enregistrée immédiatement.

Site web — toute la configuration avancée (permissions par rôle et par commande, et l'intégralité du système de tickets — templates, salons, rôles, motifs, embeds) se fait exclusivement via le site. L'admin principal du serveur y a accès de plein droit, et peut déléguer chaque onglet aux rôles de son choix (sanctions, notes, doubles comptes, salons, tickets, comptes liés, embeds, transcripts) — sauf l'onglet Permissions, qui lui reste réservé. Les onglets y sont rangés par thématique : modération, configuration, utilitaires.

Tableau de bord — la page d'accueil de chaque serveur résume ce qui attend l'équipe (appels en attente, tickets sans prise en charge, signalements de doubles comptes), l'état du serveur (sanctions en cours, verrouillage anti-raid, comptes liés) et l'activité des 30 derniers jours. Elle signale aussi les configurations incohérentes. Chaque bloc n'apparaît que si l'onglet correspondant t'a été accordé.

Transcripts — toutes les conversations archivées par le bot (tickets supprimés, purges, quarantaines, bans avec purge) sont désormais retrouvables depuis le site, avec recherche et filtres. Avant, un transcript n'était atteignable que par le lien posté au moment de sa création.

/legals — Affiche en privé les conditions d'utilisation et la politique de confidentialité, avec des liens vers leur version intégrale. Accessible à tous.

/status — Indique si ce serveur est autorisé à écrire dans la blacklist réseau (liste fixée manuellement par l'administrateur réseau). Si non, précise qui contacter pour une demande d'habilitation.

🔨 Sanctions

Toutes les commandes de sanction partagent : un contrôle hiérarchique (impossible d'agir sur un rôle égal/supérieur ou sur le propriétaire du serveur), la création d'un case numéroté par serveur, et la publication du résultat dans chan-sanction.

/warn — Avertissement.
/ban / /unban — Banni l'utilisateur du serveur. Possibilité de purger les messages qu'il a envoyé — ils sont alors archivés dans un transcript hébergé, lié depuis le rapport de sanction, sauf si l'option transcript est mise à Non. Durée optionnelle (vide = permanent). Après un ban permanent sur un serveur habilité, le bot demande au modérateur s'il souhaite inscrire l'utilisateur dans la blacklist réseau. /unban révoque cette entrée et rediffuse une alerte de déban aux autres serveurs.
/timeout / /untimeout — Timeout l'utilisateur
/mute / /unmute — Mute vocal serveur. Réappliqué automatiquement si l'utilisateur se reconnecte en vocal.
/quarantine / /unquarantine — Purge les messages des dernières 24h (limité aux 100 derniers messages par salon) et applique un timeout fixe de 24h. Les messages supprimés sont archivés dans un transcript hébergé, lié depuis le rapport de sanction, sauf si l'option transcript est mise à Non.
/kick — Exclus l'utilisateur du serveur

📋 Consultation

/userinfo — Date de création du compte, date d'arrivée sur le serveur, rôles, nombre de cases, sanctions en cours (motif et expiration), statut blacklist réseau si applicable.

/cases view — Navigue dans le détail complet des sanctions d'un utilisateur (ou par numéro de case précis). Si la cible a un rôle admin/modération, affiche les sanctions qu'elle a appliquées plutôt que reçues.

/cases list — Liste compacte des sanctions (sans motifs), paginée à partir de 10 entrées.

/cases edit — Trois usages. *Motif* : l'ancien et le nouveau restent visibles, avec l'historique complet en cas d'éditions multiples. *Annulation* : réservée aux avertissements — les autres sanctions se lèvent via leur commande dédiée (/unban, /untimeout…) — et le case reste visible avec la mention *annulé*. *Durée* : allonge, raccourcit ou rend permanente une sanction en cours ; exige la permission d'appliquer ou de lever cette sanction (consulter les cases ne suffit pas) et le membre en est averti par message privé.

/list — Liste les membres du serveur présents sur la blacklist réseau, avec un bouton *Ban all* pour les bannir tous en une fois.

/note — Notes internes de modération sur un membre : add (ajoute une entrée signée et datée), list, edit, remove et history. Chaque entrée est conservée telle quelle, on ne réécrit jamais celle d'un autre modérateur. Les notes apparaissent aussi en résumé dans /userinfo. Le membre concerné n'en est jamais informé : aucun message privé, aucun case, aucune publication dans le salon sanction.

🌐 Blacklist réseau

Une whitelist de serveurs (fixée manuellement) est autorisée à écrire dans la blacklist réseau. Un ban permanent sur l'un de ces serveurs diffuse une alerte à tous les serveurs configurés, avec un bouton *Bannir ici* (bannit localement sans créer de nouvelle entrée d'origine) et *Dismiss*. Le même mécanisme existe en symétrique pour les débans.

Chaque annonce affiche en plus, si l'utilisateur est présent sur le serveur qui la reçoit, son userinfo local (arrivée, rôles, sanctions en cours sur ce serveur précis) — en complément des informations issues du serveur à l'origine du ban.

Un job automatique tourne chaque nuit à minuit : il compare la blacklist à tous les serveurs configurés et notifie s'il trouve des correspondances, sans jamais bannir automatiquement.

🧰 Utilitaires

/slowmode — Définit le slowmode du salon (0 pour désactiver).
/purge — Supprime des messages récents, avec ciblage optionnel par utilisateur. Le salon sanction reçoit un récapitulatif (nombre de messages, détail par auteur, modérateur, salon) et, sauf si l'option transcript est mise à Non, un lien vers un transcript hébergé reprenant la conversation, images et réactions incluses.
/lock / /unlock — Verrouille un salon en écriture, avec durée optionnelle.

/vault / /unvault — Verrouillage anti-raid :
• Supprime toutes les invitations actives récupérables via l'API.
• Relève temporairement le niveau de vérification du serveur au maximum.
• Expulse automatiquement tout nouvel arrivant tant que le vault est actif.
• /unvault restaure le niveau de vérification d'origine et arrête les expulsions automatiques.
• Limites connues : l'URL vanity (boost niveau 3) ne peut pas être supprimée par l'API, et les invitations via Discovery ou liens d'amis Nitro ne peuvent pas être bloquées.

/riot / /unriot — Verrouillage temporaire du salon dans lequel la commande est appelée : sauvegarde les permissions @everyone et le slowmode actuels, passe le salon en slowmode 30s et retire à @everyone les réactions, réactions externes, liens, images/gifs, soundboard et messages vocaux. /unriot restaure exactement l'état sauvegardé.

/rename — Change le pseudo d'un membre (contrôle hiérarchique identique aux sanctions).

/role add / /role remove — Ajoute ou retire un rôle à un membre. Le rôle concerné doit être strictement inférieur au rôle le plus haut de l'appelant (le propriétaire du serveur n'est jamais bloqué par cette règle).

/say — Fait poster un message par le bot dans un salon (actuel ou choisi), et épingle automatiquement le message.

/pin / /unpin — Épingle ou désépingle un message, désigné par son lien (clic droit → *Copier le lien du message*, y compris dans un autre salon) ou par son identifiant s'il se trouve dans le salon courant.

🔗 Comptes liés

Sur les serveurs qui l'activent, un membre peut rattacher ses comptes externes à son profil Discord depuis un panneau dédié, et recevoir un rôle en échange.

Le serveur coche ce qu'il propose parmi toutes les connexions reconnues par Discord — Steam, Xbox, PlayStation, Epic, Battle.net, Riot, Twitch, YouTube, Spotify, GitHub, Reddit, et le reste — et attribue à chacune le rôle de son choix. Un seul bouton relève toutes les connexions d'un coup : en proposer davantage n'ajoute aucune étape pour le membre.

Ce que le bot ne fait pas — il ne demande jamais d'identifiants de jeu, et ne conserve aucun jeton d'accès. Il lit uniquement les connexions que le membre a lui-même déclarées dans ses paramètres Discord, et seulement celles que Discord a vérifiées. Conséquence assumée : personne ne peut relancer la vérification à la place du membre, ni le bot ni un modérateur — d'où l'âge de la dernière vérification affiché partout.

Message du panneau — composable depuis le site, avec le même éditeur que l'onglet Embeds (aperçu, enregistrement, publication), et réinitialisable au gabarit par défaut. Les deux boutons, eux, ne sont jamais modifiables : ils portent les identifiants que le bot écoute.

/id add / /id remove / /id check — Bannit, lève ou consulte un identifiant de compte lié sur ce serveur. Un bannissement définitif y verse automatiquement les comptes liés du membre. Relier un compte banni retire les rôles du membre, lui donne le rôle de signalement configuré et alerte l'équipe ; si le bot ne dépasse pas le membre en hiérarchie, rien n'est touché et seule l'alerte part.

/user validate — Rend à un membre les rôles qui lui avaient été retirés, et enlève le rôle de signalement.

🕵️ Doubles comptes

À chaque arrivée sur le serveur, ArkaMod examine les critères cochés et poste une alerte dans le salon choisi quand ils se vérifient. Tout se règle sur le site (dashboard → Doubles comptes).

Trois critères, cochés librement — aucun, un, plusieurs ou tous :
• ⏳ Compte récent — créé peu avant son arrivée, avec un seuil en jours (0 = créé le jour même).
• 🖼️ Aucune photo de profil — le compte a gardé la pastille Discord par défaut. Signal faible seul, parlant croisé avec un autre.
• 📛 Pseudo proche d'un compte banni — rapprochement avec la liste des bans définitifs du serveur, en ignorant accents, majuscules, symboles et chiffres substitués (t0t0 = toto), avec un ou deux caractères d'écart tolérés selon la longueur, et la détection d'un pseudo intact noyé dans des décorations (xXtotoXx). Les bans temporaires encore en cours sont exclus.

Combinaison — le serveur choisit si une arrivée doit réunir *tous* les critères cochés (peu d'alertes, chacune solide) ou si *un seul* suffit (plus d'alertes, plus de faux positifs).

L'alerte reprend chaque critère surveillé et son résultat, y compris ceux qui ne correspondent pas, avec le profil du membre et son statut sur la blacklist réseau le cas échéant. ArkaMod ne sanctionne jamais de lui-même : une alerte est un signalement, la décision reste à l'équipe.

🎫 Tickets

Système entièrement piloté depuis le site (dashboard → Tickets) — plus de commande Discord dédiée. Un serveur peut définir plusieurs templates de tickets indépendants (ex : "Support", "Recrutement"), chacun avec son propre salon de panneau, sa propre catégorie de création, son propre salon transcript, ses propres rôles, ses propres motifs et sa propre limite de tickets actifs par utilisateur. Une limite globale optionnelle (tous templates confondus) peut aussi être configurée.

Un membre clique sur le bouton du panneau d'un template pour ouvrir un salon privé (avec éventuellement un menu de motifs si configurés). Le créateur et les rôles à notifier sont notifiés par un ping réel. Chaque template a sa propre numérotation de tickets, indépendante des autres.

Trois types de rôles se configurent par template : rôles ayant accès aux tickets, rôles pouvant les claim, et rôles managers.

Claim/Unclaim — Une fois claim, tous les rôles "vue" (hors managers) perdent l'accès, sans exception de rang — seuls le claimeur, le créateur et les managers voient le ticket. Les managers gardent toujours l'accès, même si le ticket est claim par quelqu'un d'autre, et peuvent reprendre un ticket déjà claim en un clic.

Close/Reopen — Verrouille ou déverrouille l'écriture dans le salon.

Delete — Demande une confirmation avant suppression, génère un transcript complet du salon, l'archive dans le salon transcript du template et le transmet au créateur, puis supprime le salon.