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
| Wert | Bedeutung |
|---|---|
bool | Schalter |
int | Ganzzahl |
float | Dezimalzahl |
string | Freier Text |
choice | Eines aus einer festen Menge |
series | Werteliste |
url | URL |
link | Telegram-Link |
hidden | Gespeichert, 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
| Validator | Optionen |
|---|---|
&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.