Niveaus en ervaring
Elk bericht in een kanaal levert tussen de 15 en 25 XP op, willekeurig
getrokken. Er telt maar één opbrengst per minuut en per lid: tien berichten na
elkaar leveren niet meer op dan één. Bots, privéberichten en systeemberichten (binnenkomsten,
vastgemaakte berichten) leveren niets op.
Van niveau L naar het volgende kost 5 × L² + 50 × L + 100 XP. De kosten lopen
dus bij elke trap op, en alleen de totale XP wordt opgeslagen: het niveau volgt daaruit.
De laatste kolom gaat uit van een gewoon gesprek, bij de gemiddelde opbrengst. Ze geeft de orde van
grootte, de werkelijke tijd hangt af van hoe ver de berichten uit elkaar liggen, omdat de teller
maar één opbrengst per minuut bewaart.
Bij elke niveaustijging antwoordt de bot in het kanaal waar het bericht is geschreven.
De aankondiging stel je in op het dashboard: embed of platte tekst, titel, beschrijving, kleur, plus
de variabelen {level} en {xp} boven op de gebruikelijke. Een kanaal waarin de bot niet
kan schrijven blokkeert niets: het niveau wordt gewoon verdiend, alleen de aankondiging vervalt.
De module staat standaard aan. Uitzetten stopt de opbrengsten en de aankondigingen
zonder iets te wissen: het scorebord blijft in de database staan en komt ongeschonden terug zodra je
hem weer aanzet. Om een bijzonder geval recht te zetten, voegt
/xp de XP van een lid toe, trekt die af of stelt die in;
/rank en
/leaderboard laten het resultaat zien.
Sancties, geschiedenis en notities
Elke sanctie die de bot uitdeelt wordt vastgelegd: verbanning, tijdelijke verbanning, kick,
time-out, waarschuwing, en zelfs de opheffingen (ontbanning, intrekking van een waarschuwing). Elk
krijgt zijn code van twaalf tekens.
De volgorde is geen toeval. Het privébericht gaat vóór de sanctie de deur uit, na een verbanning deelt de bot geen server meer met de persoon en zou hij hem niet meer kunnen
schrijven. Het dossier komt daarentegen vóór de aanroep naar Discord, zodat de code bestaat; weigert
Discord de handeling, dan wordt het dossier teruggedraaid en blijft er geen spooksanctie achter.
Een tijdelijke verbanning plant haar eigen opheffing. Op het moment daarvan controleert de bot of de
verbanning ondertussen niet opnieuw door een moderator is opgelegd: is dat wel zo, dan heft hij haar
niet op. Een blijvende /ban tijdens de periode annuleert de geplande opheffing.
Notities (/note, 25 per sanctie) worden het betrokken lid
nooit getoond: ze dienen het gesprek tussen moderators, maanden later, wanneer niemand zich de
context nog herinnert.
Bescherming aan de deur
Drie losstaande mechanismen, die je kunt stapelen of afzonderlijk gebruiken:
-
De captcha: bij aankomst moet het lid een opgave oplossen om zijn rol te krijgen.
Standaard: 3 pogingen, 5 minuten, kick bij mislukking. Het verzoek
gaat per privébericht; heeft het lid die dichtgezet, dan maakt de bot een tijdelijk
verificatiekanaal in de categorie die je hebt aangewezen, alleen voor hem zichtbaar en daarna
verwijderd.
-
Verificatie via de site: het lid klikt op een knop, rondt af op de site en
vindt bij terugkomst zijn rol. De bot verleent hier zelf niets: het is de site die de identiteit
bij Discord controleert en daarna de rol toekent.
-
De anti-raid: die richt zich niet op het individu maar op de stroom. Boven 8 binnenkomsten in 10 seconden (standaardwaarden) waarschuwt hij,
zet in quarantaine of kickt. Het filter op accountleeftijd laat vaste leden die in de golf
terechtkomen erdoor.
De quarantainerol is wat alle drie gemeen hebben: bij aankomst opgelegd, beperkt ze
wat de nieuwkomer kan zien en doen, en ze verdwijnt zodra de verificatie is gehaald. Zolang ze er is,
houd jij de controle, niets weerhoudt je ervan iemand met de hand door te laten.
Tickets
Eén paneel in een kanaal, ten hoogste 25 soorten aanvragen (de grens van een
Discord-keuzelijst), en voor elk daarvan: de emoji, de kleur, het welkomstbericht, het
openingsformulier en het team dat er toegang toe heeft. Openen maakt een privékanaal tussen de
aanvrager en dat team. Bij het sluiten wordt het gesprek als HTML gearchiveerd in het archiefkanaal, de uitwisseling blijft leesbaar wanneer het kanaal weg is.
Muziek en dj-rollen
Het afspelen steunt op een eigen audio-infrastructuur. Is die niet beschikbaar, dan
zeggen de muziekcommando's dat en werkt al het overige gewoon door.
De commando's die het lopende afspelen besturen (/pause, /resume, /stop, /loop, /volume) zijn alleen voor dj's. Een dj is: de
servereigenaar, een beheerder, een lid met «Server beheren», of een lid met een rol die via
/dj add is toegevoegd. Zolang er geen dj-rol is ingesteld,
antwoorden deze commando's dus alleen aan die drie profielen. Stafrollen vormen een
aparte lijst: ze geven geen dj-status.
De commando's die alleen lezen (/queue, /nowplaying, /lyrics)
en het toevoegen van nummers (/play) blijven voor iedereen open.
Winacties
Toegestane duur: van 10 seconden tot 28 dagen, vrij te schrijven
(30m, 1h30m, 2d). Tot 20 lopende winacties en
20 winnaars per trekking.
De trekking wordt altijd door de bot gedaan, nooit door de site: alleen hij kan op het moment van de
trekking nagaan of de winnaars nog op de server zijn en de rol hebben die bij deelname vereist was.
Meldt niemand zich, dan trekt /giveaway reroll opnieuw.
Logboeken
21 soorten gebeurtenissen, verdeeld over 5 categorieën (Berichten, Leden, Moderatie, Spraak, Server),
elk afzonderlijk aan of uit te zetten. Elke categorie kan naar een eigen kanaal wijzen: moderatie
aan de ene kant, berichten aan de andere.
Berichtinhoud wordt nooit in de database bewaard. Wordt een bericht verwijderd, dan
plaatst de bot een embed in het kanaal dat je hebt aangewezen, dat is alles. Een handeling van de
bot zelf (een verbanning via /ban) wordt maar één keer gelogd, door het moderatielogboek
dat de moderator noemt.
Back-ups
Een back-up legt de structuur van de server vast (rollen, kanalen, rechten) en
geeft een privécode terug, per privébericht verstuurd. Er worden 3 back-ups per eigenaar
bewaard. Er zit geen enkel bericht in: het is geen gespreksgeschiedenis. De code
herstelt die structuur in de huidige server, en kan dus ook een server klonen door hem elders te
importeren.
Tijdelijke spraakkanalen
Wie het startkanaal binnengaat, krijgt een kanaal waarvan hij eigenaar is: hij kan het hernoemen, de
toegang beperken of de grootte begrenzen. Het kanaal verdwijnt zodra het leegloopt, niets op te
ruimen.