Creat: 2026/07/02 19:41:27 America/Chicago
De: admin
Modificat: 2026/07/03 13:19:11 America/Chicago
De: admin

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.

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:

ValoareSens
5Permisiv. Util în timpul testării.
10Bun implicit pentru cererile normale de ajutor.
20Mai 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:

ValoareSens
601 minut.
1803 minute.
3005 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.

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.

Pagină Părinte