Skip to content

ConfigField ​

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

Оголошується через 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"}}},
	}
}

Поля ​

Key ​

Ключ зберігання під іменем вашого модуля. Він же ідентифікатор в інтерфейсі налаштувань і те, що описує рядок _cfg_<key> у Strings.

Type ​

ЗначенняСенс
boolПеремикач
intЦіле число
floatДробове число
stringДовільний текст
choiceОдне з фіксованого набору
seriesСписок значень
urlURL
linkПосилання Telegram
hiddenЗберігається, але не показується

Default ​

Повертається, доки користувач нічого не задав. Має відповідати Type.

Validator ​

Відсікає некоректне введення до збереження. Користувач бачить відмову.

Secret ​

true приховує значення в логах і замінює плейсхолдером у бекапах. Під час відновлення бекапа живе значення зберігається, а не затирається маркером.

Використовуйте для API-ключів, токенів і паролів.

Валідатори ​

ВалідаторПараметри
&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{}Не приймає нічого

Читання значень ​

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

Реакція на зміни ​

go
func (m *Weather) ConfigReady(config map[string]any) error {
	units, ok := config["units"].(string)
	if !ok {
		return fmt.Errorf("units має бути рядком, отримано %T", config["units"])
	}
	m.mu.Lock()
	m.units = units
	m.mu.Unlock()
	return nil
}

Викликається під час старту й на кожну зміну. Повернення помилки відхиляє зміну й показує повідомлення користувачу.

Released under the GNU AGPL v3 License.