Skip to content

Modul installieren

Aus einer Datei

Schicke die .go-Datei in einen beliebigen Chat, antworte darauf und sende:

.loadmod

Goroku kompiliert sie als nativen Go-Plugin, registriert ihre Befehle und merkt sie sich, damit sie beim nächsten Start wieder geladen wird.

Aliase: .lm

Von einer URL

.dlmod https://example.com/Weather.go

Oder nach Namen aus einem konfigurierten Repository:

.dlmod Weather

Aliase: .dlm

Downloads laufen nur über HTTPS. Private, Loopback-, Link-Local- und CGNAT-Adressen werden abgelehnt, und geprüft wird die aufgelöste IP statt bloß des Hostnamens.

Entfernen

.unloadmod Weather

Aliase: .ulm

Entladen entlädt den Code nicht

Go kann einen geladenen Plugin nicht aus dem Speicher nehmen. .unloadmod deregistriert die Handler, sodass das Modul nichts mehr bekommt, aber sein Code bleibt bis zum Neustart geladen. Für einen sauberen Zustand nach dem Entfernen starte mit .restart neu.

Repositories

.addrepo https://raw.githubusercontent.com/user/modules/main
.delrepo https://raw.githubusercontent.com/user/modules/main

.dlmod <Name> durchsucht danach deine konfigurierten Repositories.

Bevor du das Modul eines anderen installierst

Ein natives Modul ist gewöhnlicher Go-Code in deinem Userbot-Prozess, mit deiner Telegram-Sitzung und den Rechten deines Servers. Es kann jede Nachricht lesen, die dein Konto sehen kann, als du schreiben, Dateien lesen und Netzwerkverbindungen öffnen. Es gibt keine Sandbox.

Lies zuerst den Quelltext. Konkret:

  • Schickt es Daten irgendwohin, womit du nicht rechnest? Suche nach http., net..
  • Startet es externe Programme? Suche nach exec..
  • Fasst es Dateien außerhalb seines eigenen Speichers an? Suche nach os..
  • Registriert es einen Watcher? Der sieht jede Nachricht, die du sehen kannst.

.eval ist nicht sicherer: Es läuft über Yaegi im Bot-Prozess mit dem lebenden Client, der Datenbank und dem Loader, und Yaegi lässt sich nicht abbrechen — hängender Code belegt eine Goroutine bis zum Neustart. Deshalb ist der Befehl nur für den Besitzer.

Fehlersuche

„module X is already registered" — ein Modul dieses Namens ist geladen. Erst .unloadmod X.

„command collision: y" — ein anderes Modul besitzt diesen Befehl oder Alias bereits. Benenne deinen um; Goroku verweigert, statt still zu überdecken.

Kompilierfehler — die genannten Zeilennummern beziehen sich auf deine Datei. Korrigieren und erneut .loadmod.

Modul lädt, tut aber nichts — prüfe mit .help, ob der Befehl wirklich registriert wurde. Steht in deinen CommandMetas eine Einschränkung wie OnlyGroups, löst der Befehl im privaten Chat nicht aus.

Released under the GNU AGPL v3 License.