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.