Skip to content

Optionale Interfaces

Neben Module prüft Goroku bei der Registrierung auf diese. Deklariere die Methode, und die Fähigkeit schaltet sich ein; lass sie weg, und nichts passiert.

Zur Compilezeit absichern

Ein optionales Interface wird über die Form erkannt. Ein Tippfehler in der Signatur bedeutet, dass deine Methode still ignoriert wird. Eine Zeile verhindert das:

go
var _ goroku.ModuleWithConfigSchema = (*Weather)(nil)

ModuleWithMeta

go
CommandMetas() map[string]CommandMeta

Aliase und Filter pro Befehl. Siehe CommandMeta.

ModuleWithWatcherMetas

go
WatcherMetas() []CommandMeta

Filter für Watcher, positionsweise zu Watchers() zugeordnet.

ModuleWithConfigSchema

go
ConfigSchema() []ConfigField

Typisierte Einstellungen mit Standardwerten und Validierung. Die bevorzugte Konfigurationsfläche. Siehe ConfigField.

ModuleWithConfigReady

go
ConfigReady(config map[string]any) error

Wird beim Start und bei jeder Änderung aufgerufen. Ein zurückgegebener Fehler lehnt die Änderung ab.

ModuleWithConfig

go
ConfigDefaults() map[string]any

Ältere, untypisierte Konfigurationsfläche. Bevorzuge ConfigSchema.

ModuleWithConfigValidators

go
ConfigValidators() map[string]Validator

Validatoren für ConfigDefaults. Mit ConfigSchema unnötig — das bringt seine eigenen mit.

ModuleWithTranslationAliases

go
TranslationAliases() []string

Zusätzliche Namen beim Auflösen von Übersetzungsschlüsseln, für Module, deren Übersetzungsdateien einen Namen nutzen, der sich nicht aus Name() ableitet.

go
func (m *APIProtection) Name() string { return "APILimiter" }
func (m *APIProtection) TranslationAliases() []string {
	return []string{"api_protection"}
}

ModuleWithAllModules

go
SetAllModules(*Modules)

Erhält die Modul-Registry, für Module, die andere Module inspizieren oder steuern — Hilfe, Konfigurationsoberfläche, Loader.

ModuleWithTranslator

go
SetTranslator(*Translator)

Erhält einen Übersetzer. Beim Einbetten von Base unnötig, das hat bereits einen.

SecuredModule

go
CommandPermissions() map[string]int

Standard-Berechtigungsmasken pro Befehl. Siehe Berechtigungen.

RatelimitedModule

go
RatelimitedCommands() map[string]bool

Ratenlimitierte Befehle. Entspricht Ratelimit: true in CommandMeta.

Released under the GNU AGPL v3 License.