Aller au contenu

antimod — Anti-modérateur

API anti-modérateur MoonBot Lua : état de la case Anti-modérateur, pause anti-modérateur demandée par un script.

3 fonctions dans ce namespace.

Index


Référence

antimod.enabled

antimod.enabled()

returns boolean

État de la case « Anti-modérateur » de ce bot. Aucune fonction Lua ne peut cocher, décocher ni modifier l'anti-modérateur.


antimod.pause

antimod.pause(minutes: number)

returns boolean, string | nil

Demande une pause anti-modérateur pour ce compte (et ses mules) de minutes exactes (partie entière entre 1 et 1440), même si la case Anti-modérateur est décochée : en combat, la pause attend la fin du combat (jamais d'abandon), même si le combat dure plus longtemps qu'elle ; puis le script s'arrête et le bot se déconnecte (dans les 30 secondes) ; après la durée demandée, comptée depuis la déconnexion, le bot se reconnecte et relance le script qui tournait, comme la reprise anti-modérateur. Le planning garde la priorité : hors de sa plage, le bot reste déconnecté. Une connexion manuelle lève la pause. Tant qu'un humain pilote le personnage ou une mule du groupe (client officiel attaché par le Connecteur), la pause ne commence pas. Après la pause, le script est relancé depuis le début : mémorisez ce qui a déclenché la pause (par ex. l'heure at du MP dans moonbot.memory, propre au compte ; pas seq, qui repart de 0 au redémarrage du bot) pour ne pas la redemander. Retourne true, ou false et la raison : « durée invalide : 1 à 1440 minutes », « à appeler depuis le chef du groupe » (mule d'un groupe), « prise en main en cours » (client officiel attaché par le Connecteur), « indisponible ici » (application de bureau), « pause déjà programmée », « pause refusée : la précédente pause demandée par un script s'est terminée il y a moins de 30 min », « pause refusée : 6 pauses demandées par script en 24 h ». Console : « [AntiMod] Pause demandée par le script : N min (reprise vers HH:MM) ». Une pause en cours est perdue si le serveur MoonBot du bot redémarre : le bot reste alors déconnecté jusqu'à son planning ou à une connexion manuelle. Elle n'est jamais étalée : seule la pause sur ban suit le réglage « Étalement des déconnexions » (Config → Anti-modérateur).


Exemple — pause sur message de modérateur

local cle = "antimod-mp-" .. character.accountId()
local deja = moonbot.memory:get(cle) or 0
for _, mp in ipairs(chat.getPrivateMessages()) do
  if mp.fromAdmin and mp.at > deja then
    moonbot.memory:set(cle, mp.at)
    local ok, raison = antimod.pause(60)
    if not ok then
      global.printError("Pause refusée : " .. raison)
    end
    break
  end
end

À placer dans move() : une pause d'une heure par message de modérateur, jamais deux pour le même message. L'heure du message traité est gardée dans moonbot.memory (clé propre au compte) : le script relancé après la pause ne la redemande pas.