Diese Bibliothek sammelt Lua Skripte, die für Verlihub Hubs geschrieben wurden. Jedes Skript fügt eine kleine Hub-Funktion hinzu, ohne die C++-Quelle Verlihub zu ändern oder ein benutzerdefiniertes Plugin zu kompilieren.
Verwenden Sie diese Artikel für Display-Bots, Hilfsbefehle, zeitgesteuerte Nachrichten, Benutzerlisteneinträge, Validierungshilfen und kleine Automatisierungen. Halten Sie schwere Arbeit außerhalb des Hub-Prozesses und verwenden Sie Lua nur für das Hub-Verhalten, das innerhalb von Verlihub ausgeführt werden muss.
Zweck dieser Bibliothek
Die Bibliothek ist vorhanden, damit ein Hub-Besitzer ein Skript überprüfen, nachvollziehen kann, was es ändert, es in das erwartete Verzeichnis kopieren, die dokumentierten Einstellungen anpassen, es laden, testen und ohne Rätselraten wieder deaktivieren kann.
In jedem Skriptartikel sollte Folgendes enthalten sein:
- Was das Skript macht.
- Welche Verlihub Funktion es ändert oder hinzufügt.
- Ob es einen Bot, einen Befehl, einen Timer, einen Hook, einen Benutzerlisteneintrag oder einen Validierungshelfer erstellt.
- Wo die Skriptdatei abgelegt werden soll.
- Wie das Skript geladen, neu geladen, entladen oder deaktiviert wird.
- Welche Einstellungen sicher bearbeitet werden können.
- Von welchem Verlihub Plugin oder welcher Hub-Berechtigung das Skript abhängt.
- Bekannte Einschränkungen, Versionshinweise und Produktionswarnungen.
Empfohlene Skriptstandards
Skripte in dieser Bibliothek sollten klein, lesbar und versioniert bleiben. Eine Lua-Datei sollte eine Aufgabe erfüllen. Mischen Sie keinen Clock-Bot, einen Regelbefehl, eine Anti-Spam-Prüfung und eine Datenbankbereinigung in einer Datei, es sei denn, im Artikel wird erläutert, warum diese Aktionen zusammen geliefert werden müssen.
- Verwenden Sie einen Hauptzweck pro Skript.
- Platzieren Sie klare Kommentare oben in der Datei.
- Gruppieren Sie konfigurierbare Werte oben.
- Codieren Sie private Pfade nicht fest, es sei denn, der Artikel erklärt sie.
- Vermeiden Sie unnötige Datenbankschreibvorgänge.
- Vermeiden Sie das Blockieren von Netzwerkanrufen von Hub-Ereignissen.
- Vermeiden Sie starke Schleifen innerhalb von Login-, Chat- oder Benutzerlisten-Hooks.
- Machen Sie das Start- und Abschaltverhalten deutlich.
- Befehle zum Laden, Neuladen und Entladen von Dokumenten.
Bei Produktions-Hubs lassen sich kleinere Skripte in der Regel einfacher debuggen, deaktivieren und ersetzen als eine große Datei, die das Verhalten des nicht verwandten Hubs steuert.
Vorgeschlagener Skript-Header
Beginnen Sie jedes Skript mit einem kurzen Kommentarblock. Der Header sollte dem nächsten Bediener mitteilen, um welche Datei es sich handelt, bevor das Skript einen Live-Hub berührt.
-- Script: time.lua
-- Purpose: Displays a clock-like bot entry in the Verlihub user list.
-- Scope: User-list display only.
-- Author: PWiAM
-- Notes: Test on a private hub before production use.
Vorgeschlagenes Skriptartikelformat
Jeder untergeordnete Artikel in diesem Abschnitt sollte die gleiche Form verwenden, damit Skripte schnell verglichen und überprüft werden können.
- Überblick.
- Anforderungen.
- Installation.
- Konfiguration.
- Laden des Skripts.
- Testen.
- Entladen oder Deaktivieren.
- Fehlerbehebung.
- Vollständiges Skript.
- Verwandte Seiten.
Skripte installieren
Der genaue Speicherort hängt vom Installationspfad Verlihub ab. Benutzerdefinierte Lua-Dateien sollten sich jedoch in einem Verzeichnis befinden, das dem Dienstbenutzer gehört, der den Hub ausführt.
sudo mkdir -p /usr/local/etc/verlihub/lua
sudo chown -R verlihub:verlihub /usr/local/etc/verlihub/lua
sudo chmod 750 /usr/local/etc/verlihub/lua
Platzieren Sie dann jedes Skript in diesem Verzeichnis:
/usr/local/etc/verlihub/lua/time.lua
Wenn Ihr Dienst unter einem anderen Benutzer ausgeführt wird, ändern Sie den Besitzer auf dieses Konto. Nicht verwenden chmod 777 /usr/local/etc/verlihub/lua. Lua Dateien werden im Hub-Prozess ausgeführt, sodass der Schreibzugriff nur vertrauenswürdigen Administratoren vorbehalten ist.
Laden und Neuladen von Skripten
Für Lua-Skripte muss zuerst das Plugin Verlihub Lua installiert und aktiviert werden. Wenn das Plugin nicht geladen ist, lesen Sie den übergeordneten Setup-Artikel Lua, bevor Sie Skriptdateien laden.
Zu den nützlichen Plugin-Prüfungen gehören:
!pluglist!lstplug
Verwenden Sie beim Bearbeiten eines Live-Skripts einen Workflow für kleine Änderungen:
- Speichern Sie eine Sicherungskopie der aktuellen Arbeitsdatei.
- Ändern Sie eine Einstellung oder eine Funktion.
- Laden Sie nur dieses Skript neu, wenn Ihr Build es unterstützt.
- Überprüfen Sie die Hub-Ausgabe und die Protokolle Verlihub.
- Kehren Sie schnell zurück, wenn Benutzer Fehler, doppelte Bots oder wiederholte Chat-Ausgaben sehen.
Wenn in Ihrem Build Verlihub keine Skript-Neuladebefehle verfügbar sind, starten Sie das Plugin Lua entsprechend den Plugin-Verwaltungsbefehlen Ihres Servers neu oder laden Sie es neu.
Skripte sicher testen
Testen Sie Lua-Skripte auf einem privaten Hub oder einem stillen Wartungsfenster, bevor Sie sie in der Produktion verwenden.
- Bestätigen Sie, dass das Skript ohne Syntaxfehler geladen wird.
- Stellen Sie sicher, dass der Hauptchat nicht überflutet wird.
- Stellen Sie sicher, dass keine doppelten Bots oder wiederholten Benutzerlisteneinträge erstellt werden.
- Stellen Sie sicher, dass es sich nach dem Neuladen korrekt verhält.
- Stellen Sie sicher, dass es sich nach einem Hub-Neustart korrekt verhält.
- Bestätigen Sie, dass Bediener es schnell deaktivieren können.
- Testen Sie Befehlsskripte mit normalen Benutzern und Operatorkonten.
- Testen Sie bei zeitgesteuerten Nachrichten oder Benutzerlisteneinträgen das Intervall, damit das Skript keine Geräusche erzeugt oder lädt.
Sicherheitshinweise zur Produktion
Lua Code wird im Hub-Prozess ausgeführt. Ein fehlerhaftes Skript kann sich auf Chat, Anmeldung, Benutzerlistenaktualisierungen oder das Herunterfahren des Plugins auswirken.
Vermeiden:
- Endlosschleifen.
- Langes Schlafen in Event-Handlern.
- Große Dateilesevorgänge während Benutzerereignissen.
- Blockieren externer HTTP-Anfragen.
- Umfangreiche Datenbankabfragen über Chat- oder Login-Hooks.
- Wiederholte Broadcast-Nachrichten ohne Grenzen.
- Skripte, die nicht sauber entladen werden können.
Bevorzugen:
- Kleine Event-Handler.
- Konfigurationswerte löschen.
- Konservative Timer.
- Einfache Befehlslogik.
- Protokollierung erfolgt nur, wenn sie einem Bediener nützliche Informationen liefert.
- Einfaches Zurückrollen.
Wenn eine Aufgabe eine lange Laufzeit hat, verschieben Sie sie nach außerhalb von Verlihub und lassen Sie Lua das Ergebnis auslösen oder anzeigen.
Versionskontrolle
Behalten Sie benutzerdefinierte Skripte nach Möglichkeit in Git. Für viele Hubs reicht ein kleines Repository im Skriptverzeichnis.
cd /usr/local/etc/verlihub/lua
git init
git add .
git commit -m "Initial Verlihub Lua scripts"
Überprüfen Sie vor der Bearbeitung eines Produktionsskripts, was bereits geändert wurde:
git status
git diff
Nach dem Testen der Änderung:
git add time.lua
git commit -m "Update time.lua clock display"
Dadurch erhält der nächste Bediener einen Änderungsverlauf und einen schnellen Rollback-Pfad.
Verfügbare Skripte
time.lua Verlihub Benutzerlisten-Uhrskript erstellt einen kleinen Bot-ähnlichen Benutzerlisteneintrag, der die aktuelle Uhrzeit anzeigt.
Verwenden Sie es, wenn ein Hub einen sichtbaren Uhreintrag wünscht, ohne einen separaten Bot-Prozess oder externen Dienst auszuführen. Es ist das erste gepflegte Beispiel in dieser Bibliothek und kann als Muster für andere anzeigeorientierte Skripte verwendet werden.
Weitere Skripte hinzufügen
Neue Skripte sollten als untergeordnete Artikel in diesem Abschnitt hinzugefügt und nicht in diese Indexseite eingefügt werden. Zu den guten Kandidaten gehören:
- Willkommensnachrichtenskript.
- Regelerinnerungsskript.
- Befehlsskript für Operator-Helfer.
- Geplantes Ankündigungsskript.
- Skript zur Anzeige der Benutzeranzahl.
- Anti-Spam-Hilfsskript.
- Befehlsskript für Hub-Informationen.
- Hinweisskript für den Wartungsmodus.
Jeder neue Artikel sollte Installationshinweise, Konfigurationswerte, Testschritte, Entladeschritte und die vollständige Skriptliste enthalten.