Skip to content

ConfigField

go
type ConfigField struct {
	Key       string
	Type      string
	Default   any
	Validator Validator
	Secret    bool
}

Deklariert über ModuleWithConfigSchema:

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

func (m *Weather) ConfigSchema() []goroku.ConfigField {
	return []goroku.ConfigField{
		{Key: "units", Type: "choice", Default: "metric",
			Validator: &goroku.ChoiceValidator{PossibleValues: []string{"metric", "imperial"}}},
	}
}

Felder

Key

Speicherschlüssel unter dem Namen deines Moduls. Zugleich der Bezeichner in der Einstellungsoberfläche und das, was ein _cfg_<key>-String in Strings beschreibt.

Type

WertBedeutung
boolSchalter
intGanzzahl
floatDezimalzahl
stringFreier Text
choiceEines aus einer festen Menge
seriesWerteliste
urlURL
linkTelegram-Link
hiddenGespeichert, aber nicht angezeigt

Default

Wird geliefert, solange der Nutzer nichts gesetzt hat. Muss zu Type passen.

Validator

Weist schlechte Eingaben vor dem Speichern ab. Der Nutzer sieht die Ablehnung.

Secret

true schwärzt den Wert in Logs und ersetzt ihn im Backup durch einen Platzhalter. Beim Wiederherstellen bleibt der laufende Wert erhalten, statt vom Marker überschrieben zu werden.

Nutze es für API-Schlüssel, Tokens und Passwörter.

Validatoren

ValidatorOptionen
&BooleanValidator{}
&IntegerValidator{}Minimum/HasMin, Maximum/HasMax
&FloatValidator{}Minimum/HasMin, Maximum/HasMax
&StringValidator{}MinLen, MaxLen
&ChoiceValidator{}PossibleValues []string
&SeriesValidator{}Item Validator, MinLen/HasMin
&URLValidator{}
&LinkValidator{}
&RegExpValidator{}Pattern *regexp.Regexp
&HiddenValidator{}Inner Validator
&TelegramIDValidator{}
&EmojiValidator{}
&EntityLikeValidator{}
&UnionValidator{}Validators []Validator
&NoneTypeValidator{}Nimmt nichts an

Werte lesen

go
units := m.DB.GetString(m.Name(), "units", "metric")

Auf Änderungen reagieren

go
func (m *Weather) ConfigReady(config map[string]any) error {
	units, ok := config["units"].(string)
	if !ok {
		return fmt.Errorf("units muss ein String sein, ist aber %T", config["units"])
	}
	m.mu.Lock()
	m.units = units
	m.mu.Unlock()
	return nil
}

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

Released under the GNU AGPL v3 License.