We have a user locked at trust level 0. I know that there are posting limits for users at TL0, but I’m having a hard time discerning whether the post limits are comprehensive, or per day.
This post indicates that the limit is not on the total amount of posts:
But this post seems to suggest that it’s actually a limit overall.
I am hoping that the post restrictions for TL0 could be on a per-day basis, not overall, as I can’t find any other method with which to restrict the amount that some users post without affecting all users. But, I can’t quite get a clear picture of how specifically TL0 users are restricted.
TL0-gebruikers zijn onderworpen aan "eerste dag"-limieten na accountcreatie. Dit zijn:\n * max_topics_in_first_day (standaard: 3)\n * max_replies_in_first_day (standaard: 10)Deze beperken het aantal onderwerpen/antwoorden dat een gebruiker kan maken in de eerste 24 uur na hun eerste bericht. Daarna zijn deze limieten niet meer van toepassing.\n* Per-onderwerp beperkingen voor TL0:\n * newuser_max_replies_per_topic (standaard: 3) — Maximaal aantal antwoorden toegestaan door een nieuwe gebruiker in een enkel onderwerp voordat iemand anders reageert. Dit is om spam in onderwerpen te voorkomen, niet algemeen posten.\n* Geen algemene of permanente limiet op het totale aantal berichten voor TL0-gebruikers. Na de initiële "eerste dag"-periode worden TL0-gebruikers beheerst door algemene sitebrede limieten (max_topics_per_day etc.), niet door een TL0-specifieke harde limiet.
Ik heb uiteindelijk een oplossing bedacht met behulp van een paar verschillende tools (mijn codeervaardigheden zijn niet sterk genoeg om een aangepaste plugin te bouwen!). Het testte prima en werkt.
een nieuwe groep aangemaakt, restricted-users
een aangepast wizardformulier gemaakt, beperkt tot de moderatorsgroep
een nieuwe categorie gemaakt die alleen zichtbaar is voor mods, restricted-users-admin en de composer vervangen door het aangepaste wizardformulier.
wanneer een gebruiker zijn postmogelijkheden beperkt moet hebben, vult een mod het aangepaste wizardformulier in. Het formulier vraagt welke gebruiker aan de groep moet worden toegevoegd en op welke datum deze moet worden verwijderd.
het indienen van het formulier creëert een nieuw onderwerp in restricted-users-admin
een webhook gemaakt voor deze categorie om elk nieuw onderwerp dat wordt aangemaakt te verzenden.
wanneer de webhook wordt ontvangen, controleer eerst of de gebruiker al in de groep zit, en maak een berichtreactie met die informatie als dat zo is. Als de gebruiker niet in de groep zit, voeg hem dan toe aan de groep, wacht dan tot de opgegeven einddatum/tijd, en verwijder hem dan uit de groep.
een webhook gemaakt voor alle berichten van gebruikers in de groep restricted-users.
wanneer de beperkte gebruiker post en de webhook wordt verzonden, maak een API-aanroep om te bepalen hoeveel berichten de gebruiker die dag heeft geplaatst (dezelfde dag gebruikt in plaats van een periode van 24 uur, ik dacht dat het gewoon makkelijker was om de datum te matchen, denk ik). Ik heb hier privéberichten gefilterd.
als het het een-na-laatste bericht is dat de gebruiker beschikbaar heeft, stuurt de API de gebruiker een privébericht om hem te laten weten dat hij zijn limiet nadert en nog één bericht vandaag heeft. Als proof of concept heb ik de limiet op 5 berichten ingesteld, dus dit stuurt een privébericht na het 4e bericht van de gebruiker.
als het hun laatste bericht is, schakelt de API de gebruiker 24 uur uit.
wanneer de gebruiker uit de groep restricted-users wordt verwijderd, stuurt de API een berichtreactie naar het oorspronkelijke onderwerp in de categorie restricted-users-admin.
Dit is voor ons een randgeval - dit is een “op-één-na-laatste redmiddel”-soort ding, na veel communicatie en moderators die met de gebruiker hebben samengewerkt. Ik verwacht niet dat we hier zoveel verkeer op zullen hebben dat het belastend wordt, dit is een heel klein aantal gebruikers. We zijn een ledenorganisatie en ons Discourse-forum dient als opslagplaats voor allerlei soorten bronnen, dus leden zouden er toegang toe moeten hebben. Daarom moeten we met verschillende oplossingen komen in plaats van te schorsen.