Erstellt: 2026/07/02 19:41:27 America/Chicago
Von: admin
Geändert: 2026/07/03 13:19:11 America/Chicago
Von: admin

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.

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:

WertBedeutung
5Freizügig. Nützlich beim Testen.
10Guter Standard für normale Hilfeanfragen.
20Besser, wenn Benutzer vage Anfragen senden.

cooldown_seconds

cooldown_seconds = 180

Wie lange muss ein Benutzer warten, bevor er eine weitere Supportanfrage sendet?

Empfohlene Werte:

WertBedeutung
601 Minute.
1803 Minuten.
3005 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.

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.

Übergeordnete Seite