Le support-ticket.lua Le script donne aux utilisateurs une petite commande d'aide dans un hub Verlihub. Un utilisateur tape une commande telle que !helpme avec un court message, et les opérateurs reçoivent une notification formatée avec le surnom de l'utilisateur et le texte de la demande.
Ce script n'est pas un guichet basé sur une base de données. Il s'agit d'une aide à la notification côté hub pour les problèmes d'enregistrement, les questions de connexion, les rapports d'abus, les questions de règles et d'autres problèmes nécessitant l'examen d'un opérateur.
Ce que fait ce script
Le script surveille le chat principal pour une commande de support configurée et gère les messages correspondants avant qu'ils ne continuent dans le chat normal.
Exemple de commande utilisateur:
!helpme I cannot connect to the correct hublist.
Exemple d'avis d'opérateur:
[SupportTicket] Help request from SomeUser: I cannot connect to the correct hublist.
Les utilisations courantes incluent:
- Permettre aux utilisateurs de contacter des opérateurs sans connaître leur pseudo.
- Connexion au hub de reporting ou problèmes hublist.
- Signaler les utilisateurs abusifs.
- Demander de l'aide pour un compte ou une inscription.
- Demander des éclaircissements sur les règles.
- Création d'un flux de travail de support simple à l'intérieur du hub.
Le script envoie uniquement des notifications formatées. Il ne crée pas d'identifiants de ticket, ne stocke pas l'historique, ne revendique pas la propriété et ne remplace pas un système d'assistance Web.
Exigences
Ce script nécessite:
- Verlihub installé et en cours d’exécution.
- Le plugin Verlihub Lua installé.
- Le plugin Lua activé dans Verlihub.
- Autorisation de charger et décharger les scripts Lua.
- Un répertoire de scripts inscriptible pour les fichiers Verlihub Lua.
- Une version Verlihub Lua qui expose des crochets de message de discussion tels que
VH_OnParsedMsgChat.
Avant de charger le script, vérifiez que le plugin Lua est actif:
!pluglist
Si le plug-in Lua n'est pas répertorié, chargez-le ou activez-le d'abord à partir de l'article de configuration parent Lua.
Emplacement du fichier recommandé
Utilisez un répertoire de script dédié:
mkdir -p /PATH/TO/HUB/scripts
Placez le script à:
/PATH/TO/HUB/scripts/support-ticket.lua
Pour les systèmes de production, seuls les administrateurs de confiance ou l'utilisateur du service Verlihub doivent écrire dans ce répertoire. N'utilisez pas d'autorisations d'écriture universelle.
Commandes de chargement et de déchargement
Chargez le script:
!luaload /PATH/TO/HUB/scripts/support-ticket.lua
Déchargez le script:
!luaunload /PATH/TO/HUB/scripts/support-ticket.lua
Si vous modifiez le script, déchargez-le et chargez-le à nouveau:
!luaunload /PATH/TO/HUB/scripts/support-ticket.lua
!luaload /PATH/TO/HUB/scripts/support-ticket.lua
Utilisez le chemin absolu complet, sauf si la configuration de votre plugin Verlihub Lua prend en charge les chemins relatifs.
Code de script
-- 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
Options de configuration
command
command = "!helpme"
La commande que les utilisateurs saisissent pour demander de l'aide. Choisissez une commande et publiez-la dans les règles du hub ou MOTD.
Exemples:
command = "!helpme"
command = "!support"
command = "!ticket"
command = "!ophelp"
botname
botname = "SupportTicket"
Le nom affiché dans les réponses automatiques et les notifications de l'opérateur.
Exemples:
botname = "SupportTicket"
botname = "HelpBot"
botname = "OperatorHelp"
botname = "HubSupport"
min_message_length
min_message_length = 10
Le nombre minimum de caractères requis après la commande. Cela bloque les requêtes vides telles que:
!helpme
Il bloque également les messages faibles tels que:
!helpme hi
Valeurs recommandées:
| Valeur | Signification |
|---|---|
5 | Permissif. Utile lors des tests. |
10 | Bonne valeur par défaut pour les demandes d'aide normales. |
20 | Mieux lorsque les utilisateurs envoient des demandes vagues. |
cooldown_seconds
cooldown_seconds = 180
Combien de temps un utilisateur doit attendre avant d'envoyer une autre demande d'assistance.
Valeurs recommandées:
| Valeur | Signification |
|---|---|
60 | 1 minute. |
180 | 3 minutes. |
300 | 5 minutes. |
Utilisez un temps de recharge plus long sur les hubs occupés ou lorsque les utilisateurs continuent de répéter la même demande.
last_request
last_request = {}
Tableau interne utilisé pour suivre les temps de recharge des utilisateurs. Ne modifiez pas ceci sauf si vous modifiez la logique du script.
Exemples de configurations
Demande d'aide de base
command = "!helpme"
botname = "SupportTicket"
min_message_length = 10
cooldown_seconds = 180
Exemple d'utilisateur:
!helpme I need help with registration.
Commande d'aide de l'opérateur
command = "!ophelp"
botname = "OperatorHelp"
min_message_length = 10
cooldown_seconds = 180
Exemple d'utilisateur:
!ophelp Someone is flooding main chat.
Commande de style de ticket
command = "!ticket"
botname = "HubSupport"
min_message_length = 20
cooldown_seconds = 300
Exemple d'utilisateur:
!ticket I cannot connect after changing my client settings.
Paramètres de production recommandés
Pour la plupart des hubs, commencez par:
command = "!helpme"
botname = "SupportTicket"
min_message_length = 10
cooldown_seconds = 180
Cela donne aux utilisateurs une commande simple tout en réduisant les demandes vides ou répétées.
Pour les hubs très fréquentés, utilisez:
cooldown_seconds = 300
Pour un petit hub privé, utilisez:
cooldown_seconds = 60
Tester le script
Après avoir chargé le script, testez en tant qu'utilisateur normal:
!helpme I need help testing this command.
Confirmez que:
- L'utilisateur reçoit un message de confirmation.
- Les opérateurs reçoivent la demande d'aide.
- Les demandes vides sont rejetées.
- Les requêtes courtes sont rejetées lorsqu'elles sont en dessous
min_message_length. - Le temps de recharge empêche le spam répété.
- Le script se décharge proprement.
Testez également les utilisations non valides:
!helpme
Résultat attendu:
Usage: !helpme <describe your issue>
Dépannage
Le script ne se charge pas
Vérifiez que le plugin Lua est actif:
!pluglist
Vérifiez le chemin du fichier:
!luaload /PATH/TO/HUB/scripts/support-ticket.lua
Utilisez le chemin absolu si les chemins relatifs ne fonctionnent pas.
La commande ne répond pas
Vérifier:
- Le script est chargé.
- La commande correspond exactement.
- Le plugin Lua prend en charge
VH_OnParsedMsgChat. - L'utilisateur tape la commande dans le chat principal.
Essayez une courte commande de test:
command = "!testhelp"
Rechargez ensuite le script et testez à nouveau.
Les opérateurs ne reçoivent pas d'avis
L'exemple utilise:
VH:SendToClass("<" .. botname .. "> " .. message, 3, 10)
Votre version du plugin Verlihub Lua peut utiliser une fonction différente pour les messages d'opérateur ou les messages basés sur les classes. Vérifiez les exemples d'API Lua pour votre version Verlihub et remplacez SendOperatorNotice() avec la fonction prise en charge par votre build.
La fonction à régler est:
function SendOperatorNotice(message)
VH:SendToClass("<" .. botname .. "> " .. message, 3, 10)
end
Les utilisateurs peuvent envoyer des demandes de spam
Augmentez le temps de recharge:
cooldown_seconds = 300
Augmentez la longueur minimale du message:
min_message_length = 20
Les demandes d'aide sont trop vagues
Mettez à jour le message d'utilisation:
SendUserMessage(user, "Usage: " .. command .. " <describe the issue, nickname involved, and what happened>")
Cela demande aux utilisateurs d'inclure le problème, le surnom et l'événement au lieu d'une demande en un seul mot.
Notes de sécurité
Ce script doit rester léger. N'ajoutez pas:
- Requêtes HTTP externes.
- Bloquer les appels réseau.
- La base de données écrit sur chaque message.
- Le fichier écrit pour chaque demande, sauf si une rotation du journal existe.
- Longues boucles.
- Les appels du sommeil.
- Traitement lourd par message.
Si vous avez besoin d'un système de tickets basé sur une base de données, utilisez ce script uniquement comme point d'entrée côté hub vers un processus de support distinct.
Notes de confidentialité
Les demandes d'aide peuvent contenir des plaintes, des surnoms, des problèmes de connexion, des rapports de modération ou des questions sur le compte.
Pratiques recommandées:
- Envoyez des demandes uniquement aux opérateurs.
- Ne diffusez pas les demandes d’assistance à tous les utilisateurs.
- N'enregistrez pas de détails privés à moins que les règles du hub n'expliquent pourquoi.
- Faites pivoter ou supprimez les journaux si la journalisation des fichiers est ajoutée ultérieurement.
- Dites aux utilisateurs de ne pas inclure de mots de passe ou d’informations d’identification privées.
Avertissement utilisateur suggéré:
Do not include passwords or private credentials in help requests.
Notes d'entretien
Conservez une sauvegarde avant de modifier le script:
cp /PATH/TO/HUB/scripts/support-ticket.lua /PATH/TO/HUB/scripts/support-ticket.lua.bak
Si vous utilisez Git:
cd /PATH/TO/HUB/scripts
git add support-ticket.lua
git commit -m "Update support-ticket.lua settings"
Lorsque vous modifiez uniquement la commande, le nom du bot, le temps de recharge ou la longueur minimale du message, aucune modification logique n'est requise.
Améliorations futures suggérées
Les versions ultérieures possibles pourraient ajouter:
- Numéros d’identification du billet.
- Journalisation basée sur des fichiers avec rotation.
- Une commande de réclamation d’opérateur.
- Confirmation de l'utilisateur avec un numéro de ticket.
- Commandes séparées pour les rapports d'abus.
- Avis réservés aux opérateurs privés.
- Limites de débit par adresse IP ou compte.
- Intégration avec un système de support externe.
Gardez la première version petite. Ajoutez une fonctionnalité uniquement lorsqu'elle résout un véritable problème de gestion de hub.