El support-ticket.lua El script ofrece a los usuarios un pequeño comando de ayuda dentro de un centro Verlihub. Un usuario escribe un comando como !helpme con un mensaje corto, y los operadores reciben un aviso formateado con el apodo del usuario y el texto de la solicitud.
Este script no es una taquilla respaldada por una base de datos. Es una ayuda de notificación del lado del concentrador para problemas de registro, preguntas de conexión, informes de abuso, preguntas sobre reglas y otros problemas que necesitan que un operador revise.
Qué hace este guión
El script observa el chat principal en busca de un comando de soporte configurado y maneja los mensajes coincidentes antes de que continúen a través del chat normal.
Ejemplo de comando de usuario:
!helpme I cannot connect to the correct hublist.
Ejemplo de aviso para el operador:
[SupportTicket] Help request from SomeUser: I cannot connect to the correct hublist.
Los usos comunes incluyen:
- Permitir a los usuarios contactar a los operadores sin conocer el apodo del operador.
- Informando problemas de conexión del hub o hublist.
- Denunciar usuarios abusivos.
- Solicitar ayuda para la cuenta o el registro.
- Solicitando aclaración de reglas.
- Crear un flujo de trabajo de soporte simple dentro del centro.
El script envía avisos formateados únicamente. No crea ID de boletos, no almacena historial, no reclama propiedad ni reemplaza un sistema de soporte web.
Requisitos
Este script requiere:
- Verlihub instalado y funcionando.
- El complemento Verlihub Lua instalado.
- El complemento Lua habilitado en Verlihub.
- Permiso para cargar y descargar scripts Lua.
- Un directorio de script grabable para archivos Verlihub Lua.
- Una compilación Verlihub Lua que expone ganchos de mensajes de chat como
VH_OnParsedMsgChat.
Antes de cargar el script, confirme que el complemento Lua esté activo:
!pluglist
Si el complemento Lua no aparece en la lista, cárguelo o habilítelo primero desde el artículo de configuración principal Lua.
Ubicación de archivo recomendada
Utilice un directorio de script dedicado:
mkdir -p /PATH/TO/HUB/scripts
Coloque el guión en:
/PATH/TO/HUB/scripts/support-ticket.lua
Para sistemas de producción, solo los administradores de confianza o el usuario del servicio Verlihub deben escribir en ese directorio. No utilice permisos de escritura mundial.
Comandos de carga y descarga
Cargue el guión:
!luaload /PATH/TO/HUB/scripts/support-ticket.lua
Descargar el guión:
!luaunload /PATH/TO/HUB/scripts/support-ticket.lua
Si edita el script, descárguelo y cárguelo nuevamente:
!luaunload /PATH/TO/HUB/scripts/support-ticket.lua
!luaload /PATH/TO/HUB/scripts/support-ticket.lua
Utilice la ruta absoluta completa a menos que la configuración del complemento Verlihub Lua admita rutas relativas.
Código de secuencia de comandos
-- 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
Opciones de configuración
command
command = "!helpme"
El comando que los usuarios escriben para solicitar ayuda. Elija un comando y publíquelo en las reglas del centro o en MOTD.
Ejemplos:
command = "!helpme"
command = "!support"
command = "!ticket"
command = "!ophelp"
botname
botname = "SupportTicket"
El nombre que se muestra en las respuestas automáticas y avisos del operador.
Ejemplos:
botname = "SupportTicket"
botname = "HelpBot"
botname = "OperatorHelp"
botname = "HubSupport"
min_message_length
min_message_length = 10
El número mínimo de caracteres requeridos después del comando. Esto bloquea solicitudes vacías como:
!helpme
También bloquea mensajes débiles como:
!helpme hi
Valores recomendados:
| Valor | Significado |
|---|---|
5 | Permisivo. Útil durante la prueba. |
10 | Buen valor predeterminado para solicitudes de ayuda normales. |
20 | Mejor cuando los usuarios envían solicitudes vagas. |
cooldown_seconds
cooldown_seconds = 180
Cuánto tiempo debe esperar un usuario antes de enviar otra solicitud de soporte.
Valores recomendados:
| Valor | Significado |
|---|---|
60 | 1 minuto. |
180 | 3 minutos. |
300 | 5 minutos. |
Utilice un tiempo de reutilización más prolongado en centros ocupados o cuando los usuarios sigan repitiendo la misma solicitud.
last_request
last_request = {}
Tabla interna utilizada para realizar un seguimiento de los tiempos de reutilización del usuario. No edite esto a menos que esté cambiando la lógica del script.
Configuraciones de ejemplo
Solicitud de ayuda básica
command = "!helpme"
botname = "SupportTicket"
min_message_length = 10
cooldown_seconds = 180
Ejemplo de usuario:
!helpme I need help with registration.
Comando de ayuda del operador
command = "!ophelp"
botname = "OperatorHelp"
min_message_length = 10
cooldown_seconds = 180
Ejemplo de usuario:
!ophelp Someone is flooding main chat.
Comando de estilo de ticket
command = "!ticket"
botname = "HubSupport"
min_message_length = 20
cooldown_seconds = 300
Ejemplo de usuario:
!ticket I cannot connect after changing my client settings.
Configuraciones de producción recomendadas
Para la mayoría de los centros, comience con:
command = "!helpme"
botname = "SupportTicket"
min_message_length = 10
cooldown_seconds = 180
Esto brinda a los usuarios un comando sencillo y al mismo tiempo reduce las solicitudes en blanco o repetidas.
Para centros ocupados, utilice:
cooldown_seconds = 300
Para un centro privado pequeño, utilice:
cooldown_seconds = 60
Probando el guión
Después de cargar el script, pruébelo como un usuario normal:
!helpme I need help testing this command.
Confirma que:
- El usuario recibe un mensaje de confirmación.
- Los operadores reciben la solicitud de ayuda.
- Las solicitudes vacías se rechazan.
- Las solicitudes cortas se rechazan cuando están por debajo
min_message_length. - El tiempo de reutilización evita el spam repetido.
- El script se descarga limpiamente.
Pruebe también el uso no válido:
!helpme
Resultado esperado:
Usage: !helpme <describe your issue>
Solución de problemas
El guión no se carga
Compruebe que el complemento Lua esté activo:
!pluglist
Verifique la ruta del archivo:
!luaload /PATH/TO/HUB/scripts/support-ticket.lua
Utilice la ruta absoluta si las rutas relativas no funcionan.
El comando no responde
Controlar:
- El guión está cargado.
- El comando coincide exactamente.
- El complemento Lua admite
VH_OnParsedMsgChat. - El usuario está escribiendo el comando en el chat principal.
Pruebe un breve comando de prueba:
command = "!testhelp"
Luego vuelva a cargar el script y pruébelo nuevamente.
Los operadores no reciben avisos
El ejemplo utiliza:
VH:SendToClass("<" .. botname .. "> " .. message, 3, 10)
Su versión del complemento Verlihub Lua puede usar una función diferente para mensajes de operador o mensajes basados en clases. Verifique los ejemplos de API Lua para su versión Verlihub y reemplácelos SendOperatorNotice() con la función admitida por su compilación.
La función a ajustar es:
function SendOperatorNotice(message)
VH:SendToClass("<" .. botname .. "> " .. message, 3, 10)
end
Los usuarios pueden enviar solicitudes de spam
Aumentar el tiempo de reutilización:
cooldown_seconds = 300
Aumente la longitud mínima del mensaje:
min_message_length = 20
Las solicitudes de ayuda son demasiado vagas
Actualice el mensaje de uso:
SendUserMessage(user, "Usage: " .. command .. " <describe the issue, nickname involved, and what happened>")
Esto solicita a los usuarios que incluyan el problema, el apodo y el evento en lugar de una solicitud de una sola palabra.
Notas de seguridad
Este script debe ser liviano. No agregue:
- Solicitudes HTTP externas.
- Bloqueo de llamadas de red.
- La base de datos escribe en cada mensaje.
- Escrituras de archivos para cada solicitud a menos que exista rotación de registros.
- Bucles largos.
- Llamadas de sueño.
- Procesamiento pesado por mensaje.
Si necesita un sistema de tickets respaldado por una base de datos, utilice este script solo como punto de entrada del lado central a un proceso de soporte independiente.
Notas de privacidad
Las solicitudes de ayuda pueden contener quejas, apodos, problemas de conexión, informes de moderación o preguntas sobre la cuenta.
Prácticas recomendadas:
- Envíe solicitudes solo a operadores.
- No transmita solicitudes de soporte a todos los usuarios.
- No registre detalles privados a menos que las reglas del centro expliquen por qué.
- Gire o elimine registros si el registro de archivos se agrega más adelante.
- Dígales a los usuarios que no incluyan contraseñas ni credenciales privadas.
Advertencia de usuario sugerida:
Do not include passwords or private credentials in help requests.
Notas de mantenimiento
Mantenga una copia de seguridad antes de cambiar el script:
cp /PATH/TO/HUB/scripts/support-ticket.lua /PATH/TO/HUB/scripts/support-ticket.lua.bak
Si usa Git:
cd /PATH/TO/HUB/scripts
git add support-ticket.lua
git commit -m "Update support-ticket.lua settings"
Al cambiar solo el comando, el nombre del bot, el tiempo de reutilización o la longitud mínima del mensaje, no se requieren cambios lógicos.
Mejoras futuras sugeridas
Posibles versiones posteriores podrían agregar:
- Números de identificación de boletos.
- Registro basado en archivos con rotación.
- Un comando de reclamo del operador.
- Confirmación de usuario con un número de ticket.
- Comandos separados para informes de abuso.
- Avisos exclusivos para operadores privados.
- Límites de tarifas por dirección IP o cuenta.
- Integración con un sistema de soporte externo.
Mantenga la primera versión pequeña. Agregue una función solo cuando resuelva un problema real de administración del centro.