Creato: 2026/07/02 19:41:27 America/Chicago
Da: admin
Modificato: 2026/07/03 13:19:11 America/Chicago
Da: admin

IL support-ticket.lua Lo script fornisce agli utenti un piccolo comando di aiuto all'interno di un hub Verlihub. Un utente digita un comando come !helpme con un breve messaggio e gli operatori ricevono un avviso formattato con il nickname dell'utente e il testo della richiesta.

Questo script non è una biglietteria supportata da database. È un assistente per le notifiche lato hub per problemi di registrazione, domande di connessione, segnalazioni di abusi, domande sulle regole e altri problemi che richiedono l'intervento di un operatore.

Cosa fa questo script

Lo script controlla la chat principale per un comando di supporto configurato e gestisce i messaggi corrispondenti prima che continuino nella normale chat.

Esempio di comando utente:

!helpme I cannot connect to the correct hublist.

Esempio di avviso per l'operatore:

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

Gli usi comuni includono:

  • Consentire agli utenti di contattare gli operatori senza conoscere il nickname dell'operatore.
  • Segnalazione di problemi di connessione all'hub o hublist.
  • Segnalazione utenti abusivi.
  • Richiedere aiuto per l'account o la registrazione.
  • Richiesto chiarimenti sulle regole.
  • Creazione di un flusso di lavoro di supporto semplice all'interno dell'hub.

Lo script invia solo avvisi formattati. Non crea ID ticket, memorizza cronologia, rivendica la proprietà o sostituisce un sistema di supporto web.

Requisiti

Questo script richiede:

  • Verlihub installato e funzionante.
  • Il plugin Verlihub Lua è installato.
  • Il plugin Lua abilitato in Verlihub.
  • Autorizzazione a caricare e scaricare gli script Lua.
  • Una directory di script scrivibile per i file Verlihub Lua.
  • Una build Verlihub Lua che espone hook di messaggi di chat come VH_OnParsedMsgChat.

Prima di caricare lo script, conferma che il plugin Lua è attivo:

!pluglist

Se il plugin Lua non è elencato, caricalo o abilitalo prima dall'articolo di configurazione principale Lua.

Utilizza una directory di script dedicata:

mkdir -p /PATH/TO/HUB/scripts

Posiziona lo script in:

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

Per i sistemi di produzione, solo gli amministratori attendibili o l'utente del servizio Verlihub possono scrivere in quella directory. Non utilizzare autorizzazioni scrivibili da tutti.

Comandi di caricamento e scaricamento

Carica lo script:

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

Scarica lo script:

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

Se modifichi lo script, scaricalo e caricalo di nuovo:

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

Utilizza il percorso assoluto completo a meno che la configurazione del plug-in Verlihub Lua non supporti i percorsi relativi.

Codice di scrittura

-- 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

Opzioni di configurazione

command

command = "!helpme"

Il comando digitato dagli utenti per richiedere assistenza. Scegli un comando e pubblicalo nelle regole dell'hub o MOTD.

Esempi:

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

botname

botname = "SupportTicket"

Il nome mostrato nelle risposte automatiche e negli avvisi dell'operatore.

Esempi:

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

min_message_length

min_message_length = 10

Il numero minimo di caratteri richiesti dopo il comando. Ciò blocca le richieste vuote come:

!helpme

Blocca anche i messaggi deboli come:

!helpme hi

Valori consigliati:

ValoreSenso
5Permissivo. Utile durante i test.
10Buon valore predefinito per le normali richieste di aiuto.
20Meglio quando gli utenti inviano richieste vaghe.

cooldown_seconds

cooldown_seconds = 180

Quanto tempo deve attendere un utente prima di inviare un'altra richiesta di supporto.

Valori consigliati:

ValoreSenso
601 minuto.
1803 minuti.
3005 minuti.

Utilizza un tempo di recupero più lungo su hub occupati o quando gli utenti continuano a ripetere la stessa richiesta.

last_request

last_request = {}

Tabella interna utilizzata per tenere traccia dei tempi di recupero degli utenti. Non modificarlo a meno che non si stia modificando la logica dello script.

Configurazioni di esempio

Richiesta di aiuto di base

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

Esempio utente:

!helpme I need help with registration.

Comando di aiuto dell'operatore

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

Esempio utente:

!ophelp Someone is flooding main chat.

Comando stile ticket

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

Esempio utente:

!ticket I cannot connect after changing my client settings.

Per la maggior parte degli hub, iniziare con:

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

Ciò offre agli utenti un comando semplice riducendo al contempo le richieste vuote o ripetute.

Per gli hub occupati, utilizzare:

cooldown_seconds = 300

Per un piccolo hub privato, utilizzare:

cooldown_seconds = 60

Testare la sceneggiatura

Dopo aver caricato lo script, prova come utente normale:

!helpme I need help testing this command.

Conferma che:

  • L'utente riceve un messaggio di conferma.
  • Gli operatori ricevono la richiesta di aiuto.
  • Le richieste vuote vengono rifiutate.
  • Le richieste brevi vengono rifiutate quando sono inferiori min_message_length.
  • Il tempo di recupero impedisce lo spam ripetuto.
  • Lo script viene scaricato in modo pulito.

Testa anche l'utilizzo non valido:

!helpme

Risultato atteso:

Usage: !helpme <describe your issue>

Risoluzione dei problemi

Lo script non viene caricato

Verifica che il plugin Lua sia attivo:

!pluglist

Controlla il percorso del file:

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

Utilizzare il percorso assoluto se i percorsi relativi non funzionano.

Il comando non risponde

Controllo:

  • Lo script è caricato.
  • Il comando corrisponde esattamente.
  • Il plugin Lua supporta VH_OnParsedMsgChat.
  • L'utente sta digitando il comando nella chat principale.

Prova un breve comando di prova:

command = "!testhelp"

Quindi ricaricare lo script e riprovare.

Gli operatori non ricevono avvisi

L'esempio utilizza:

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

La versione del plugin Verlihub Lua potrebbe utilizzare una funzione diversa per i messaggi dell'operatore o per i messaggi basati sulle classi. Controlla gli esempi API Lua per la tua versione Verlihub e sostituisci SendOperatorNotice() con la funzione supportata dalla tua build.

La funzione da regolare è:

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

Gli utenti possono inviare spam alle richieste

Aumenta il tempo di recupero:

cooldown_seconds = 300

Aumenta la lunghezza minima del messaggio:

min_message_length = 20

Le richieste di aiuto sono troppo vaghe

Aggiorna il messaggio di utilizzo:

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

Ciò chiede agli utenti di includere il problema, il nickname e l'evento invece di una richiesta di una sola parola.

Note sulla sicurezza

Questo script dovrebbe rimanere leggero. Non aggiungere:

  • Richieste HTTP esterne.
  • Blocco delle chiamate di rete.
  • Il database scrive su ogni messaggio.
  • Il file scrive per ogni richiesta a meno che non esista la rotazione del log.
  • Anelli lunghi.
  • Chiamate per dormire.
  • Elaborazione pesante per messaggio.

Se è necessario un sistema di ticket supportato da database, utilizzare questo script solo come punto di ingresso sul lato hub per un processo di supporto separato.

Note sulla privacy

Le richieste di aiuto possono contenere reclami, nickname, problemi di connessione, rapporti di moderazione o domande sull'account.

Pratiche consigliate:

  • Invia richieste solo agli operatori.
  • Non trasmettere richieste di supporto a tutti gli utenti.
  • Non registrare dettagli privati ​​a meno che le regole dell'hub non ne spieghino il motivo.
  • Ruota o elimina i registri se la registrazione dei file viene aggiunta in seguito.
  • Di' agli utenti di non includere password o credenziali private.

Avviso utente suggerito:

Do not include passwords or private credentials in help requests.

Note sulla manutenzione

Conserva un backup prima di modificare lo script:

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

Se usi Git:

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

Quando si modifica solo il comando, il nome del bot, il tempo di recupero o la lunghezza minima del messaggio, non sono necessarie modifiche alla logica.

Miglioramenti futuri suggeriti

Eventuali versioni successive potrebbero aggiungere:

  • Numeri identificativi del biglietto.
  • Registrazione basata su file con rotazione.
  • Un comando di attestazione dell'operatore.
  • Conferma dell'utente con un numero di biglietto.
  • Comandi separati per le segnalazioni di abusi.
  • Avvisi riservati agli operatori privati.
  • Limiti di velocità per indirizzo IP o account.
  • Integrazione con un sistema di supporto esterno.

Mantieni la prima versione piccola. Aggiungi una funzionalità solo quando risolve un reale problema di gestione dell'hub.

Pagina Padre