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.