Vytvořeno: 2026/07/02 19:41:27 America/Chicago
Od: admin
Upraveno: 2026/07/03 13:19:11 America/Chicago
Od: admin

The support-ticket.lua skript poskytuje uživatelům malý příkaz nápovědy uvnitř rozbočovače Verlihub. Uživatel zadá příkaz, např !helpme s krátkou zprávou a operátoři obdrží formátované oznámení s přezdívkou uživatele a textem požadavku.

Tento skript není databází zálohovaná pokladna. Jedná se o pomocníka pro upozornění na straně rozbočovače pro problémy s registrací, dotazy s připojením, hlášení o zneužití, otázky pravidel a další problémy, které musí řešit operátor.

Co tento skript dělá

Skript sleduje hlavní chat pro nakonfigurovaný příkaz podpory a zpracovává odpovídající zprávy, než budou pokračovat v normálním chatu.

Příklad uživatelského příkazu:

!helpme I cannot connect to the correct hublist.

Příklad upozornění operátora:

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

Mezi běžné použití patří:

  • Umožňuje uživatelům kontaktovat operátory, aniž by znali přezdívku operátora.
  • Hlášení připojení hubu nebo problémů hublist.
  • Nahlašování zneužívajících uživatelů.
  • Žádost o pomoc s účtem nebo registrací.
  • Žádost o vyjasnění pravidel.
  • Vytvoření jednoduchého pracovního postupu podpory uvnitř rozbočovače.

Skript odesílá pouze formátovaná oznámení. Nevytváří ID vstupenek, historii ukládání, nárokuje vlastnictví ani nenahrazuje systém webové podpory.

Požadavky

Tento skript vyžaduje:

  • Verlihub nainstalováno a spuštěno.
  • Nainstalovaný plugin Verlihub Lua.
  • Plugin Lua povolen v Verlihub.
  • Oprávnění k načtení a uvolnění Lua skriptů.
  • Adresář zapisovatelných skriptů pro Verlihub Lua soubory.
  • Sestavení Verlihub Lua, které odhaluje háčky chatových zpráv, jako je VH_OnParsedMsgChat.

Před načtením skriptu se ujistěte, že je aktivní plugin Lua:

!pluglist

Pokud plugin Lua není uveden, nejprve jej načtěte nebo povolte z článku o nadřazeném nastavení Lua.

Použijte vyhrazený adresář skriptů:

mkdir -p /PATH/TO/HUB/scripts

Umístěte skript na:

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

U produkčních systémů by do tohoto adresáře měli zapisovat pouze důvěryhodní správci nebo uživatel služby Verlihub. Nepoužívejte světově zapisovatelná oprávnění.

Příkazy Načíst a Vyjmout

Načtěte skript:

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

Uvolněte skript:

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

Pokud skript upravíte, uvolněte jej a znovu načtěte:

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

Použijte úplnou absolutní cestu, pokud vaše konfigurace pluginu Verlihub Lua nepodporuje relativní cesty.

Kód skriptu

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

Možnosti konfigurace

command

command = "!helpme"

Příkaz, který uživatelé zadají, aby požádali o pomoc. Vyberte jeden příkaz a publikujte jej v pravidlech hubu nebo MOTD.

Příklady:

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

botname

botname = "SupportTicket"

Jméno zobrazené v automatických odpovědích a upozorněních operátora.

Příklady:

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

min_message_length

min_message_length = 10

Minimální počet znaků požadovaný za příkazem. To blokuje prázdné požadavky, jako jsou:

!helpme

Blokuje také slabé zprávy, jako jsou:

!helpme hi

Doporučené hodnoty:

HodnotaVýznam
5Povolný. Užitečné při testování.
10Dobré výchozí nastavení pro běžné žádosti o pomoc.
20Lepší, když uživatelé posílají vágní požadavky.

cooldown_seconds

cooldown_seconds = 180

Jak dlouho musí uživatel čekat, než odešle další žádost o podporu.

Doporučené hodnoty:

HodnotaVýznam
601 minuta.
1803 minuty.
3005 minut.

Použijte delší cooldown na rušných centrech nebo když uživatelé neustále opakují stejný požadavek.

last_request

last_request = {}

Interní tabulka používaná ke sledování cooldownů uživatelů. Toto neupravujte, pokud neměníte logiku skriptu.

Příklad konfigurace

Základní žádost o pomoc

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

Příklad uživatele:

!helpme I need help with registration.

Příkaz nápovědy operátora

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

Příklad uživatele:

!ophelp Someone is flooding main chat.

Příkaz stylu lístku

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

Příklad uživatele:

!ticket I cannot connect after changing my client settings.

U většiny hubů začněte s:

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

To dává uživatelům snadný příkaz a zároveň snižuje počet prázdných nebo opakovaných požadavků.

Pro rušné uzly použijte:

cooldown_seconds = 300

Pro malé soukromé centrum použijte:

cooldown_seconds = 60

Testování skriptu

Po načtení skriptu otestujte jako běžný uživatel:

!helpme I need help testing this command.

Potvrďte, že:

  • Uživatel obdrží potvrzovací zprávu.
  • Operátoři obdrží žádost o pomoc.
  • Prázdné žádosti jsou zamítnuty.
  • Krátké žádosti jsou zamítnuty, pokud jsou níže min_message_length.
  • Cooldown zabraňuje opakovanému spamu.
  • Skript se načte čistě.

Otestujte také neplatné použití:

!helpme

Očekávaný výsledek:

Usage: !helpme <describe your issue>

Odstraňování problémů

Skript se nenačte

Zkontrolujte, zda je aktivní plugin Lua:

!pluglist

Zkontrolujte cestu k souboru:

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

Pokud relativní cesty nefungují, použijte absolutní cestu.

Příkaz nereaguje

Kontrola:

  • Skript je načten.
  • Příkaz přesně odpovídá.
  • Plugin Lua podporuje VH_OnParsedMsgChat.
  • Uživatel zadává příkaz v hlavním chatu.

Zkuste krátký testovací příkaz:

command = "!testhelp"

Poté znovu načtěte skript a znovu otestujte.

Operátoři nedostávají upozornění

Příklad používá:

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

Vaše verze pluginu Verlihub Lua může používat jinou funkci pro zprávy operátora nebo zprávy založené na třídách. Zkontrolujte příklady rozhraní API Lua pro svou verzi Verlihub a nahraďte je SendOperatorNotice() s funkcí podporovanou vaší sestavou.

Funkce k nastavení je:

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

Uživatelé mohou spamovat požadavky

Zvyšte cooldown:

cooldown_seconds = 300

Zvyšte minimální délku zprávy:

min_message_length = 20

Žádosti o pomoc jsou příliš vágní

Aktualizujte zprávu o použití:

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

To vyžaduje, aby uživatelé zahrnuli problém, přezdívku a událost namísto jednoslovného požadavku.

Bezpečnostní poznámky

Tento skript by měl zůstat lehký. Nepřidávejte:

  • Externí požadavky HTTP.
  • Blokování síťových hovorů.
  • Databáze zapisuje na každou zprávu.
  • Soubor se zapisuje pro každý požadavek, pokud neexistuje rotace protokolu.
  • Dlouhé smyčky.
  • Spánek volá.
  • Náročné zpracování jednotlivých zpráv.

Pokud potřebujete systém lístků podporovaný databází, použijte tento skript pouze jako vstupní bod na straně rozbočovače do samostatného procesu podpory.

Poznámky k ochraně osobních údajů

Požadavky na nápovědu mohou obsahovat stížnosti, přezdívky, problémy s připojením, zprávy o moderování nebo otázky týkající se účtu.

Doporučené postupy:

  • Žádosti zasílejte pouze operátorům.
  • Nevysílejte požadavky na podporu všem uživatelům.
  • Nezapisujte soukromé údaje, pokud pravidla hubu nevysvětlují proč.
  • Otočte nebo odstraňte protokoly, pokud je protokolování souborů přidáno později.
  • Řekněte uživatelům, aby neuváděli hesla ani soukromé přihlašovací údaje.

Doporučené upozornění uživatele:

Do not include passwords or private credentials in help requests.

Poznámky k údržbě

Před změnou skriptu si vytvořte zálohu:

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

Pokud používáte Git:

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

Při změně pouze příkazu, názvu bota, cooldownu nebo minimální délky zprávy nejsou nutné žádné logické změny.

Navrhovaná budoucí vylepšení

Možné pozdější verze mohou přidat:

  • Identifikační čísla jízdenek.
  • Souborové protokolování s rotací.
  • Příkaz pro tvrzení operátora.
  • Potvrzení uživatele s číslem tiketu.
  • Samostatné příkazy pro zprávy o zneužití.
  • Upozornění pouze pro soukromého operátora.
  • Omezení sazby podle IP adresy nebo účtu.
  • Integrace s externím podpůrným systémem.

Nechte první verzi malou. Funkci přidejte pouze v případě, že řeší skutečný problém se správou centra.

Nadřazená Stránka