The support-ticket.lua scriptul oferă utilizatorilor o mică comandă de ajutor în interiorul unui hub Verlihub. Un utilizator tasta o comandă, cum ar fi !helpme cu un mesaj scurt, iar operatorii primesc o notificare formatată cu pseudonimul utilizatorului și textul solicitării.
Acest script nu este un birou de bilete susținut de baze de date. Este un ajutor de notificare la nivelul centrului pentru probleme de înregistrare, întrebări de conexiune, rapoarte de abuz, întrebări despre reguli și alte probleme pe care un operator trebuie să le caute.
Ce face acest script
Scriptul urmărește chatul principal pentru o comandă de asistență configurată și gestionează mesajele care se potrivesc înainte ca acestea să continue prin chatul normal.
Exemplu de comandă utilizator:
!helpme I cannot connect to the correct hublist.
Exemplu de notificare pentru operator:
[SupportTicket] Help request from SomeUser: I cannot connect to the correct hublist.
Utilizările comune includ:
- Permite utilizatorilor să contacteze operatorii fără a cunoaște un pseudonim al operatorului.
- Raportarea conexiunii hub sau hublist probleme.
- Raportarea utilizatorilor abuzivi.
- Solicită ajutor pentru cont sau înregistrare.
- Solicitarea de clarificare a regulilor.
- Crearea unui flux de lucru de asistență simplu în interiorul hub-ului.
Scriptul trimite numai notificări formatate. Nu creează ID-uri de bilete, istoricul magazinului, nu revendică proprietatea și nu înlocuiește un sistem de asistență web.
Cerințe
Acest script necesită:
- Verlihub instalat și în funcțiune.
- Pluginul Verlihub Lua este instalat.
- Pluginul Lua este activat în Verlihub.
- Permisiune de încărcare și descărcare Lua scripturi.
- Un director de script care poate fi scris pentru Verlihub Lua.
- O versiune Verlihub Lua care expune cârlige pentru mesaje de chat, cum ar fi
VH_OnParsedMsgChat.
Înainte de a încărca scriptul, confirmați că pluginul Lua este activ:
!pluglist
Dacă pluginul Lua nu este listat, încărcați-l sau activați-l mai întâi din articolul de configurare Lua.
Locația recomandată a fișierului
Utilizați un director de script dedicat:
mkdir -p /PATH/TO/HUB/scripts
Plasați scriptul la:
/PATH/TO/HUB/scripts/support-ticket.lua
Pentru sistemele de producție, numai administratorii de încredere sau utilizatorul serviciului Verlihub ar trebui să scrie în acel director. Nu utilizați permisiuni de scriere în lume.
Comenzi de încărcare și descărcare
Încărcați scriptul:
!luaload /PATH/TO/HUB/scripts/support-ticket.lua
Descărcați scriptul:
!luaunload /PATH/TO/HUB/scripts/support-ticket.lua
Dacă editați scriptul, descărcați-l și încărcați-l din nou:
!luaunload /PATH/TO/HUB/scripts/support-ticket.lua
!luaload /PATH/TO/HUB/scripts/support-ticket.lua
Utilizați calea absolută completă, cu excepția cazului în care configurația pluginului dvs. Verlihub Lua acceptă căi relative.
Cod script
-- 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
Opțiuni de configurare
command
command = "!helpme"
Comanda tastată de utilizatori pentru a solicita ajutor. Alegeți o comandă și publicați-o în regulile hub sau MOTD.
Exemple:
command = "!helpme"
command = "!support"
command = "!ticket"
command = "!ophelp"
botname
botname = "SupportTicket"
Numele afișat în răspunsurile automate și notificările operatorului.
Exemple:
botname = "SupportTicket"
botname = "HelpBot"
botname = "OperatorHelp"
botname = "HubSupport"
min_message_length
min_message_length = 10
Numărul minim de caractere necesare după comandă. Aceasta blochează cererile goale, cum ar fi:
!helpme
De asemenea, blochează mesajele slabe, cum ar fi:
!helpme hi
Valori recomandate:
| Valoare | Sens |
|---|---|
5 | Permisiv. Util în timpul testării. |
10 | Bun implicit pentru cererile normale de ajutor. |
20 | Mai bine atunci când utilizatorii trimit solicitări vagi. |
cooldown_seconds
cooldown_seconds = 180
Cât timp trebuie să aștepte un utilizator înainte de a trimite o altă solicitare de asistență.
Valori recomandate:
| Valoare | Sens |
|---|---|
60 | 1 minut. |
180 | 3 minute. |
300 | 5 minute. |
Folosiți o perioadă mai lungă de răcire în hub-urile aglomerate sau când utilizatorii continuă să repete aceeași solicitare.
last_request
last_request = {}
Tabel intern folosit pentru a urmări perioadele de răcire ale utilizatorilor. Nu editați acest lucru decât dacă schimbați logica scriptului.
Exemple de configurații
Cerere de ajutor de bază
command = "!helpme"
botname = "SupportTicket"
min_message_length = 10
cooldown_seconds = 180
Exemplu utilizator:
!helpme I need help with registration.
Comanda de ajutor pentru operator
command = "!ophelp"
botname = "OperatorHelp"
min_message_length = 10
cooldown_seconds = 180
Exemplu utilizator:
!ophelp Someone is flooding main chat.
Comanda Stil Ticket
command = "!ticket"
botname = "HubSupport"
min_message_length = 20
cooldown_seconds = 300
Exemplu utilizator:
!ticket I cannot connect after changing my client settings.
Setări de producție recomandate
Pentru majoritatea hub-urilor, începeți cu:
command = "!helpme"
botname = "SupportTicket"
min_message_length = 10
cooldown_seconds = 180
Acest lucru oferă utilizatorilor o comandă ușoară, reducând în același timp solicitările necompletate sau repetate.
Pentru hub-urile aglomerate, utilizați:
cooldown_seconds = 300
Pentru un hub privat mic, utilizați:
cooldown_seconds = 60
Testarea scenariului
După încărcarea scriptului, testați ca utilizator normal:
!helpme I need help testing this command.
Confirmați că:
- Utilizatorul primește un mesaj de confirmare.
- Operatorii primesc cererea de ajutor.
- Solicitările goale sunt respinse.
- Solicitările scurte sunt respinse atunci când sunt mai jos
min_message_length. - Cooldown previne spam-ul repetat.
- Scriptul se descarcă curat.
De asemenea, testați utilizarea nevalidă:
!helpme
Rezultat așteptat:
Usage: !helpme <describe your issue>
Depanare
Scriptul nu se încarcă
Verificați dacă pluginul Lua este activ:
!pluglist
Verificați calea fișierului:
!luaload /PATH/TO/HUB/scripts/support-ticket.lua
Utilizați calea absolută dacă căile relative nu funcționează.
Comanda nu răspunde
Verifica:
- Scriptul este încărcat.
- Comanda se potrivește exact.
- Pluginul Lua acceptă
VH_OnParsedMsgChat. - Utilizatorul tastează comanda în chatul principal.
Încercați o comandă scurtă de testare:
command = "!testhelp"
Apoi reîncărcați scriptul și testați din nou.
Operatorii nu primesc notificări
Exemplul folosește:
VH:SendToClass("<" .. botname .. "> " .. message, 3, 10)
Versiunea dvs. de plugin Verlihub Lua poate utiliza o funcție diferită pentru mesajele operatorului sau mesajele bazate pe clasă. Verificați exemplele API Lua pentru versiunea dvs. Verlihub și înlocuiți SendOperatorNotice() cu funcția susținută de versiunea dvs.
Funcția de reglare este:
function SendOperatorNotice(message)
VH:SendToClass("<" .. botname .. "> " .. message, 3, 10)
end
Utilizatorii pot trimite spam solicitări
Creșteți timpul de răcire:
cooldown_seconds = 300
Măriți lungimea minimă a mesajului:
min_message_length = 20
Solicitările de ajutor sunt prea vagi
Actualizați mesajul de utilizare:
SendUserMessage(user, "Usage: " .. command .. " <describe the issue, nickname involved, and what happened>")
Acest lucru le cere utilizatorilor să includă problema, porecla și evenimentul în loc de o solicitare de un cuvânt.
Note de siguranță
Acest script ar trebui să rămână ușor. Nu adăugați:
- Solicitări HTTP externe.
- Blocarea apelurilor în rețea.
- Baza de date scrie pe fiecare mesaj.
- Fișierul se scrie pentru fiecare solicitare, cu excepția cazului în care există rotația jurnalului.
- Bucle lungi.
- Apeluri de somn.
- Procesare grea pe mesaj.
Dacă aveți nevoie de un sistem de bilete susținut de baze de date, utilizați acest script doar ca punct de intrare la un proces separat de asistență.
Note de confidențialitate
Solicitările de ajutor pot conține reclamații, porecle, probleme de conectare, rapoarte de moderare sau întrebări despre cont.
Practici recomandate:
- Trimite cereri doar operatorilor.
- Nu difuzați cereri de asistență tuturor utilizatorilor.
- Nu înregistrați detalii private decât dacă regulile hub explică de ce.
- Rotiți sau ștergeți jurnalele dacă înregistrarea fișierelor este adăugată mai târziu.
- Spuneți utilizatorilor să nu includă parole sau acreditări private.
Avertisment recomandat pentru utilizator:
Do not include passwords or private credentials in help requests.
Note de întreținere
Păstrați o copie de rezervă înainte de a schimba scriptul:
cp /PATH/TO/HUB/scripts/support-ticket.lua /PATH/TO/HUB/scripts/support-ticket.lua.bak
Dacă folosești Git:
cd /PATH/TO/HUB/scripts
git add support-ticket.lua
git commit -m "Update support-ticket.lua settings"
Când schimbați doar comanda, numele botului, timpul de răcire sau lungimea minimă a mesajului, nu sunt necesare modificări logice.
Îmbunătățiri viitoare sugerate
Versiunile ulterioare posibile ar putea adăuga:
- Numerele de identificare ale biletelor.
- Înregistrare bazată pe fișiere cu rotație.
- O comandă de revendicare a unui operator.
- Confirmare utilizator cu un număr de bilet.
- Comenzi separate pentru rapoartele de abuz.
- Notificări numai pentru operatori privat.
- Limitele ratelor în funcție de adresa IP sau de cont.
- Integrare cu un sistem de suport extern.
Păstrați prima versiune mică. Adăugați o funcție numai atunci când rezolvă o problemă reală de gestionare a hub-ului.