Der support-ticket.lua Das Skript gibt Benutzern einen kleinen Hilfebefehl innerhalb eines Verlihub-Hubs. Ein Benutzer gibt einen Befehl ein, z. B !helpme mit einer kurzen Nachricht, und die Bediener erhalten eine formatierte Benachrichtigung mit dem Benutzernamen und dem Anforderungstext.
Dieses Skript ist kein datenbankgestützter Ticketschalter. Es handelt sich um einen Hub-seitigen Benachrichtigungshelfer für Registrierungsprobleme, Verbindungsfragen, Missbrauchsberichte, Regelfragen und andere Probleme, die ein Betreiber prüfen muss.
Was dieses Skript macht
Das Skript überwacht den Hauptchat auf einen konfigurierten Supportbefehl und verarbeitet passende Nachrichten, bevor sie mit dem normalen Chat fortfahren.
Beispiel eines Benutzerbefehls:
!helpme I cannot connect to the correct hublist.
Beispiel für einen Betreiberhinweis:
[SupportTicket] Help request from SomeUser: I cannot connect to the correct hublist.
Zu den häufigen Verwendungszwecken gehören:
- Ermöglichen, dass Benutzer mit Betreibern Kontakt aufnehmen, ohne den Spitznamen des Betreibers zu kennen.
- Es werden Probleme mit der Hub-Verbindung oder hublist gemeldet.
- Missbrauchende Benutzer melden.
- Ich bitte um Konto- oder Registrierungshilfe.
- Bitte um Klarstellung der Regeln.
- Erstellen eines einfachen Support-Workflows innerhalb des Hubs.
Das Skript sendet nur formatierte Benachrichtigungen. Es erstellt keine Ticket-IDs, speichert keine Historie, beansprucht keine Eigentumsrechte und ersetzt auch kein Web-Support-System.
Anforderungen
Dieses Skript erfordert:
- Verlihub installiert und läuft.
- Das Plugin Verlihub Lua ist installiert.
- Das Plugin Lua ist in Verlihub aktiviert.
- Berechtigung zum Laden und Entladen von Lua-Skripten.
- Ein beschreibbares Skriptverzeichnis für Verlihub Lua Dateien.
- Ein Verlihub Lua Build, der Chat-Nachrichten-Hooks verfügbar macht, z
VH_OnParsedMsgChat.
Stellen Sie vor dem Laden des Skripts sicher, dass das Plugin Lua aktiv ist:
!pluglist
Wenn das Plugin Lua nicht aufgeführt ist, laden oder aktivieren Sie es zuerst aus dem übergeordneten Setup-Artikel Lua.
Empfohlener Dateispeicherort
Verwenden Sie ein dediziertes Skriptverzeichnis:
mkdir -p /PATH/TO/HUB/scripts
Platzieren Sie das Skript unter:
/PATH/TO/HUB/scripts/support-ticket.lua
Bei Produktionssystemen sollten nur vertrauenswürdige Administratoren oder der Dienstbenutzer Verlihub in dieses Verzeichnis schreiben. Verwenden Sie keine weltweit schreibbaren Berechtigungen.
Befehle zum Laden und Entladen
Laden Sie das Skript:
!luaload /PATH/TO/HUB/scripts/support-ticket.lua
Entladen Sie das Skript:
!luaunload /PATH/TO/HUB/scripts/support-ticket.lua
Wenn Sie das Skript bearbeiten, entladen Sie es und laden Sie es erneut:
!luaunload /PATH/TO/HUB/scripts/support-ticket.lua
!luaload /PATH/TO/HUB/scripts/support-ticket.lua
Verwenden Sie den vollständigen absoluten Pfad, es sei denn, Ihre Plugin-Konfiguration Lua unterstützt relative Pfade.
Skriptcode
-- 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
Konfigurationsoptionen
command
command = "!helpme"
Der Befehl, den Benutzer eingeben, um Hilfe anzufordern. Wählen Sie einen Befehl aus und veröffentlichen Sie ihn in den Hub-Regeln oder MOTD.
Beispiele:
command = "!helpme"
command = "!support"
command = "!ticket"
command = "!ophelp"
botname
botname = "SupportTicket"
Der Name, der in automatischen Antworten und Betreiberbenachrichtigungen angezeigt wird.
Beispiele:
botname = "SupportTicket"
botname = "HelpBot"
botname = "OperatorHelp"
botname = "HubSupport"
min_message_length
min_message_length = 10
Die Mindestanzahl an Zeichen, die nach dem Befehl erforderlich sind. Dies blockiert leere Anfragen wie:
!helpme
Es blockiert auch schwache Nachrichten wie:
!helpme hi
Empfohlene Werte:
| Wert | Bedeutung |
|---|---|
5 | Freizügig. Nützlich beim Testen. |
10 | Guter Standard für normale Hilfeanfragen. |
20 | Besser, wenn Benutzer vage Anfragen senden. |
cooldown_seconds
cooldown_seconds = 180
Wie lange muss ein Benutzer warten, bevor er eine weitere Supportanfrage sendet?
Empfohlene Werte:
| Wert | Bedeutung |
|---|---|
60 | 1 Minute. |
180 | 3 Minuten. |
300 | 5 Minuten. |
Verwenden Sie eine längere Abklingzeit bei ausgelasteten Hubs oder wenn Benutzer immer wieder dieselbe Anfrage wiederholen.
last_request
last_request = {}
Interne Tabelle zur Verfolgung der Abklingzeiten von Benutzern. Bearbeiten Sie dies nicht, es sei denn, Sie ändern die Skriptlogik.
Beispielkonfigurationen
Grundlegende Hilfeanfrage
command = "!helpme"
botname = "SupportTicket"
min_message_length = 10
cooldown_seconds = 180
Benutzerbeispiel:
!helpme I need help with registration.
Operator-Hilfebefehl
command = "!ophelp"
botname = "OperatorHelp"
min_message_length = 10
cooldown_seconds = 180
Benutzerbeispiel:
!ophelp Someone is flooding main chat.
Befehl „Ticketstil“.
command = "!ticket"
botname = "HubSupport"
min_message_length = 20
cooldown_seconds = 300
Benutzerbeispiel:
!ticket I cannot connect after changing my client settings.
Empfohlene Produktionseinstellungen
Beginnen Sie bei den meisten Hubs mit:
command = "!helpme"
botname = "SupportTicket"
min_message_length = 10
cooldown_seconds = 180
Dies gibt Benutzern einen einfachen Befehl und reduziert gleichzeitig leere oder wiederholte Anfragen.
Für stark frequentierte Knotenpunkte verwenden Sie:
cooldown_seconds = 300
Verwenden Sie für einen kleinen privaten Hub:
cooldown_seconds = 60
Testen des Skripts
Testen Sie nach dem Laden des Skripts als normaler Benutzer:
!helpme I need help testing this command.
Bestätigen Sie Folgendes:
- Der Benutzer erhält eine Bestätigungsnachricht.
- Betreiber erhalten die Hilfeanfrage.
- Leere Anfragen werden abgelehnt.
- Kurze Anfragen werden abgelehnt, wenn sie unten aufgeführt sind
min_message_length. - Cooldown verhindert wiederholten Spam.
- Das Skript wird sauber entladen.
Testen Sie auch die ungültige Verwendung:
!helpme
Erwartetes Ergebnis:
Usage: !helpme <describe your issue>
Fehlerbehebung
Das Skript wird nicht geladen
Überprüfen Sie, ob das Plugin Lua aktiv ist:
!pluglist
Überprüfen Sie den Dateipfad:
!luaload /PATH/TO/HUB/scripts/support-ticket.lua
Verwenden Sie den absoluten Pfad, wenn relative Pfade nicht funktionieren.
Der Befehl reagiert nicht
Überprüfen:
- Das Skript wird geladen.
- Der Befehl stimmt genau überein.
- Das Plugin Lua unterstützt
VH_OnParsedMsgChat. - Der Benutzer gibt den Befehl im Hauptchat ein.
Versuchen Sie es mit einem kurzen Testbefehl:
command = "!testhelp"
Laden Sie dann das Skript neu und testen Sie es erneut.
Betreiber erhalten keine Benachrichtigungen
Das Beispiel verwendet:
VH:SendToClass("<" .. botname .. "> " .. message, 3, 10)
Ihre Plugin-Version Verlihub Lua verwendet möglicherweise eine andere Funktion für Bedienermeldungen oder klassenbasierte Meldungen. Überprüfen Sie die API-Beispiele Lua für Ihre Verlihub-Version und ersetzen Sie sie SendOperatorNotice() mit der von Ihrem Build unterstützten Funktion.
Die anzupassende Funktion ist:
function SendOperatorNotice(message)
VH:SendToClass("<" .. botname .. "> " .. message, 3, 10)
end
Benutzer können Spam-Anfragen versenden
Erhöhen Sie die Abklingzeit:
cooldown_seconds = 300
Erhöhen Sie die Mindestnachrichtenlänge:
min_message_length = 20
Hilfeanfragen sind zu vage
Aktualisieren Sie die Nutzungsmeldung:
SendUserMessage(user, "Usage: " .. command .. " <describe the issue, nickname involved, and what happened>")
Dadurch werden Benutzer aufgefordert, das Problem, den Spitznamen und das Ereignis anstelle einer Ein-Wort-Anfrage anzugeben.
Sicherheitshinweise
Dieses Skript sollte leichtgewichtig bleiben. Nicht hinzufügen:
- Externe HTTP-Anfragen.
- Netzwerkanrufe blockieren.
- Die Datenbank schreibt auf jede Nachricht.
- Dateischreibvorgänge für jede Anfrage, es sei denn, es gibt eine Protokollrotation.
- Lange Schleifen.
- Schlafrufe.
- Starke Verarbeitung pro Nachricht.
Wenn Sie ein datenbankgestütztes Ticketsystem benötigen, verwenden Sie dieses Skript nur als Hub-seitigen Einstiegspunkt zu einem separaten Supportprozess.
Datenschutzhinweise
Hilfeanfragen können Beschwerden, Spitznamen, Verbindungsprobleme, Moderationsberichte oder Kontofragen enthalten.
Empfohlene Praktiken:
- Senden Sie Anfragen nur an Betreiber.
- Senden Sie Supportanfragen nicht an alle Benutzer.
- Protokollieren Sie keine privaten Daten, es sei denn, die Hub-Regeln erklären den Grund dafür.
- Protokolle rotieren oder löschen, wenn die Dateiprotokollierung später hinzugefügt wird.
- Weisen Sie Benutzer an, keine Passwörter oder privaten Anmeldeinformationen anzugeben.
Empfohlene Benutzerwarnung:
Do not include passwords or private credentials in help requests.
Wartungshinweise
Erstellen Sie ein Backup, bevor Sie das Skript ändern:
cp /PATH/TO/HUB/scripts/support-ticket.lua /PATH/TO/HUB/scripts/support-ticket.lua.bak
Bei Verwendung von Git:
cd /PATH/TO/HUB/scripts
git add support-ticket.lua
git commit -m "Update support-ticket.lua settings"
Wenn nur der Befehl, der Bot-Name, die Abklingzeit oder die Mindestnachrichtenlänge geändert werden, sind keine logischen Änderungen erforderlich.
Vorgeschlagene zukünftige Verbesserungen
Mögliche spätere Versionen könnten Folgendes hinzufügen:
- Ticket-ID-Nummern.
- Dateibasierte Protokollierung mit Rotation.
- Ein Operator-Claim-Befehl.
- Benutzerbestätigung mit einer Ticketnummer.
- Separate Befehle für Missbrauchsberichte.
- Hinweise nur für private Betreiber.
- Ratenbegrenzungen nach IP-Adresse oder Konto.
- Integration mit einem externen Supportsystem.
Halten Sie die erste Version klein. Fügen Sie eine Funktion nur hinzu, wenn sie ein echtes Hub-Verwaltungsproblem löst.