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.
Doporučené umístění souboru
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:
| Hodnota | Význam |
|---|---|
5 | Povolný. Užitečné při testování. |
10 | Dobré výchozí nastavení pro běžné žádosti o pomoc. |
20 | Lepší, 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:
| Hodnota | Význam |
|---|---|
60 | 1 minuta. |
180 | 3 minuty. |
300 | 5 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.
Doporučená výrobní nastavení
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.