Aangemaakt: 2026/07/02 19:41:27 America/Chicago
Door: admin
Gewijzigd: 2026/07/03 13:19:11 America/Chicago
Door: admin

De support-ticket.lua script geeft gebruikers een kleine helpopdracht in een Verlihub-hub. Een gebruiker typt een opdracht zoals !helpme met een kort bericht, en operators ontvangen een opgemaakte kennisgeving met de bijnaam van de gebruiker en de verzoektekst.

Dit script is geen ticketbalie met databaseondersteuning. Het is een meldingshulp aan de hubzijde voor registratieproblemen, verbindingsvragen, misbruikrapporten, regelvragen en andere problemen waarvoor een operator moet kijken.

Wat dit script doet

Het script kijkt naar de hoofdchat voor een geconfigureerde ondersteuningsopdracht en verwerkt overeenkomende berichten voordat ze doorgaan via de normale chat.

Voorbeeld gebruikersopdracht:

!helpme I cannot connect to the correct hublist.

Voorbeeld operatormededeling:

[SupportTicket] Help request from SomeUser: I cannot connect to the correct hublist.

Veel voorkomende toepassingen zijn onder meer:

  • Laat gebruikers contact opnemen met operators zonder de bijnaam van een operator te kennen.
  • Problemen met de hubverbinding of hublist melden.
  • Misbruik van gebruikers melden.
  • Hulp vragen bij account- of registratie.
  • Verzoek om verduidelijking van de regels.
  • Het creëren van een eenvoudige ondersteuningsworkflow binnen de hub.

Het script verzendt alleen opgemaakte mededelingen. Het creëert geen ticket-ID's, bewaargeschiedenis, claimt geen eigendom of vervangt geen webondersteuningssysteem.

Vereisten

Dit script vereist:

  • Verlihub geïnstalleerd en actief.
  • De plug-in Verlihub Lua is geïnstalleerd.
  • De plug-in Lua is ingeschakeld in Verlihub.
  • Toestemming om Lua-scripts te laden en te verwijderen.
  • Een beschrijfbare scriptmap voor Verlihub Lua bestanden.
  • Een Verlihub Lua build die hooks voor chatberichten blootlegt, zoals VH_OnParsedMsgChat.

Controleer voordat u het script laadt of de plug-in Lua actief is:

!pluglist

Als de plug-in Lua niet in de lijst staat, laadt of schakelt u deze eerst in via het bovenliggende installatieartikel Lua.

Gebruik een speciale scriptdirectory:

mkdir -p /PATH/TO/HUB/scripts

Plaats het script op:

/PATH/TO/HUB/scripts/support-ticket.lua

Voor productiesystemen mogen alleen vertrouwde beheerders of de Verlihub-servicegebruiker naar die map schrijven. Gebruik geen wereldschrijfbare machtigingen.

Opdrachten voor laden en lossen

Laad het script:

!luaload /PATH/TO/HUB/scripts/support-ticket.lua

Het script uitladen:

!luaunload /PATH/TO/HUB/scripts/support-ticket.lua

Als u het script bewerkt, verwijdert u het en laadt u het opnieuw:

!luaunload /PATH/TO/HUB/scripts/support-ticket.lua
!luaload /PATH/TO/HUB/scripts/support-ticket.lua

Gebruik het volledige absolute pad tenzij uw plug-inconfiguratie Verlihub Lua relatieve paden ondersteunt.

Scriptcode

-- Script: support-ticket.lua
-- Purpose: Lets users send simple help requests to hub operators.
-- Scope: Lightweight support notices only.
-- Notes: This is not a database-backed ticket system.

command = "!helpme"
botname = "SupportTicket"
min_message_length = 10
cooldown_seconds = 180
last_request = {}

function Trim(text)
    return string.gsub(text, "^%s*(.-)%s*$", "%1")
end

function StartsWith(text, prefix)
    return string.sub(text, 1, string.len(prefix)) == prefix
end

function GetMessageAfterCommand(text)
    return Trim(string.sub(text, string.len(command) + 1))
end

function CanSendRequest(nick)
    local now = os.time()

    if last_request[nick] == nil then
        last_request[nick] = now
        return true
    end

    if now - last_request[nick] >= cooldown_seconds then
        last_request[nick] = now
        return true
    end

    return false
end

function SendUserMessage(user, message)
    VH:SendToUser("<" .. botname .. "> " .. message, user)
end

function SendOperatorNotice(message)
    -- Depending on your Verlihub Lua API version, this may need to be changed
    -- to the operator or private-message helper function supported by your build.
    VH:SendToClass("<" .. botname .. "> " .. message, 3, 10)
end

function HandleSupportRequest(user, text)
    local nick = user.sNick
    local request = GetMessageAfterCommand(text)

    if string.len(request) < min_message_length then
        SendUserMessage(user, "Usage: " .. command .. " <describe your issue>")
        return 1
    end

    if not CanSendRequest(nick) then
        SendUserMessage(user, "Please wait before sending another help request.")
        return 1
    end

    SendOperatorNotice("Help request from " .. nick .. ": " .. request)
    SendUserMessage(user, "Your help request was sent to the operators. Please wait for a response.")

    return 1
end

function VH_OnParsedMsgChat(user, text)
    if StartsWith(text, command) then
        return HandleSupportRequest(user, text)
    end

    return 0
end

Configuratie-opties

command

command = "!helpme"

De opdracht die gebruikers typen om hulp te vragen. Kies één opdracht en publiceer deze in de hubregels of MOTD.

Voorbeelden:

command = "!helpme"
command = "!support"
command = "!ticket"
command = "!ophelp"

botname

botname = "SupportTicket"

De naam die wordt weergegeven in automatische antwoorden en operatormeldingen.

Voorbeelden:

botname = "SupportTicket"
botname = "HelpBot"
botname = "OperatorHelp"
botname = "HubSupport"

min_message_length

min_message_length = 10

Het minimumaantal tekens dat vereist is na de opdracht. Dit blokkeert lege verzoeken zoals:

!helpme

Het blokkeert ook zwakke berichten zoals:

!helpme hi

Aanbevolen waarden:

WaardeBetekenis
5Toegeeflijk. Handig tijdens het testen.
10Goede standaard voor normale hulpverzoeken.
20Het is beter als gebruikers vage verzoeken sturen.

cooldown_seconds

cooldown_seconds = 180

Hoe lang een gebruiker moet wachten voordat hij een nieuw ondersteuningsverzoek verzendt.

Aanbevolen waarden:

WaardeBetekenis
601 minuut.
1803 minuten.
3005 minuten.

Gebruik een langere cooldown op drukke hubs of wanneer gebruikers hetzelfde verzoek blijven herhalen.

last_request

last_request = {}

Interne tabel die wordt gebruikt om de cooldowns van gebruikers bij te houden. Bewerk dit niet tenzij u de scriptlogica wijzigt.

Voorbeeldconfiguraties

Basishulpverzoek

command = "!helpme"
botname = "SupportTicket"
min_message_length = 10
cooldown_seconds = 180

Gebruikersvoorbeeld:

!helpme I need help with registration.

Hulpopdracht operator

command = "!ophelp"
botname = "OperatorHelp"
min_message_length = 10
cooldown_seconds = 180

Gebruikersvoorbeeld:

!ophelp Someone is flooding main chat.

Commando ticketstijl

command = "!ticket"
botname = "HubSupport"
min_message_length = 20
cooldown_seconds = 300

Gebruikersvoorbeeld:

!ticket I cannot connect after changing my client settings.

Begin voor de meeste hubs met:

command = "!helpme"
botname = "SupportTicket"
min_message_length = 10
cooldown_seconds = 180

Dit geeft gebruikers een eenvoudige opdracht en vermindert het aantal blanco of herhaalde verzoeken.

Gebruik voor drukke hubs:

cooldown_seconds = 300

Gebruik voor een kleine privéhub:

cooldown_seconds = 60

Het script testen

Test na het laden van het script als een normale gebruiker:

!helpme I need help testing this command.

Bevestig dat:

  • De gebruiker ontvangt een bevestigingsbericht.
  • Operators ontvangen het hulpverzoek.
  • Lege verzoeken worden afgewezen.
  • Korte verzoeken worden afgewezen als ze lager zijn min_message_length.
  • Cooldown voorkomt herhaalde spam.
  • Het script wordt netjes verwijderd.

Test ook ongeldig gebruik:

!helpme

Verwacht resultaat:

Usage: !helpme <describe your issue>

Problemen oplossen

Het script wordt niet geladen

Controleer of de plug-in Lua actief is:

!pluglist

Controleer het bestandspad:

!luaload /PATH/TO/HUB/scripts/support-ticket.lua

Gebruik het absolute pad als relatieve paden niet werken.

Het commando reageert niet

Rekening:

  • Het script is geladen.
  • De opdracht komt precies overeen.
  • De plug-in Lua ondersteunt VH_OnParsedMsgChat.
  • De gebruiker typt de opdracht in de hoofdchat.

Probeer een korte testopdracht:

command = "!testhelp"

Laad vervolgens het script opnieuw en test opnieuw.

Operators ontvangen geen mededelingen

In het voorbeeld wordt gebruikt:

VH:SendToClass("<" .. botname .. "> " .. message, 3, 10)

Uw plug-inversie Verlihub Lua gebruikt mogelijk een andere functie voor operatorberichten of op klassen gebaseerde berichten. Controleer de Lua API-voorbeelden voor uw Verlihub-versie en vervang SendOperatorNotice() met de functie die door uw build wordt ondersteund.

De functie om aan te passen is:

function SendOperatorNotice(message)
    VH:SendToClass("<" .. botname .. "> " .. message, 3, 10)
end

Gebruikers kunnen verzoeken spammen

Verhoog de cooldown:

cooldown_seconds = 300

Vergroot de minimale berichtlengte:

min_message_length = 20

Hulpverzoeken zijn te vaag

Update het gebruiksbericht:

SendUserMessage(user, "Usage: " .. command .. " <describe the issue, nickname involved, and what happened>")

Hierbij wordt gebruikers gevraagd om het probleem, de bijnaam en de gebeurtenis op te nemen in plaats van een verzoek van één woord.

Veiligheidsopmerkingen

Dit script moet lichtgewicht blijven. Voeg niet toe:

  • Externe HTTP-verzoeken.
  • Netwerkoproepen blokkeren.
  • Database schrijft op elk bericht.
  • Er wordt voor elk verzoek een bestand geschreven, tenzij er sprake is van logrotatie.
  • Lange lussen.
  • Slaap roept.
  • Zware verwerking per bericht.

Als u een ticketsysteem met databaseondersteuning nodig heeft, gebruik dit script dan alleen als ingangspunt aan de hubzijde voor een afzonderlijk ondersteuningsproces.

Privacy-opmerkingen

Hulpverzoeken kunnen klachten, bijnamen, verbindingsproblemen, moderatierapporten of accountvragen bevatten.

Aanbevolen praktijken:

  • Stuur verzoeken alleen naar operators.
  • Verzend geen ondersteuningsverzoeken naar alle gebruikers.
  • Registreer geen privégegevens, tenzij de hubregels uitleggen waarom.
  • Roteer of verwijder logboeken als bestandsregistratie later wordt toegevoegd.
  • Vertel gebruikers dat ze geen wachtwoorden of privéreferenties mogen toevoegen.

Voorgestelde gebruikerswaarschuwing:

Do not include passwords or private credentials in help requests.

Onderhoudsopmerkingen

Bewaar een back-up voordat u het script wijzigt:

cp /PATH/TO/HUB/scripts/support-ticket.lua /PATH/TO/HUB/scripts/support-ticket.lua.bak

Als je Git gebruikt:

cd /PATH/TO/HUB/scripts
git add support-ticket.lua
git commit -m "Update support-ticket.lua settings"

Als u alleen het commando, de botnaam, de cooldown of de minimale berichtlengte wijzigt, zijn er geen logische wijzigingen vereist.

Voorgestelde toekomstige verbeteringen

Mogelijke latere versies kunnen toevoegen:

  • Ticket-ID-nummers.
  • Bestandsgebaseerd loggen met rotatie.
  • Een operatorclaimopdracht.
  • Gebruikersbevestiging met een ticketnummer.
  • Aparte opdrachten voor misbruikrapporten.
  • Kennisgevingen die alleen voor particuliere operators bestemd zijn.
  • Tarieflimieten per IP-adres of account.
  • Integratie met een extern ondersteuningssysteem.

Houd de eerste versie klein. Voeg alleen een functie toe als deze een echt hubbeheerprobleem oplost.

Bovenliggende Pagina