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.
Aanbevolen bestandslocatie
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:
| Waarde | Betekenis |
|---|---|
5 | Toegeeflijk. Handig tijdens het testen. |
10 | Goede standaard voor normale hulpverzoeken. |
20 | Het 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:
| Waarde | Betekenis |
|---|---|
60 | 1 minuut. |
180 | 3 minuten. |
300 | 5 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.
Aanbevolen productie-instellingen
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.