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.
Posizione file consigliata
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:
| Valore | Senso |
|---|---|
5 | Permissivo. Utile durante i test. |
10 | Buon valore predefinito per le normali richieste di aiuto. |
20 | Meglio 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:
| Valore | Senso |
|---|---|
60 | 1 minuto. |
180 | 3 minuti. |
300 | 5 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.
Impostazioni di produzione consigliate
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.