Skip to content

Опциональные интерфейсы

Помимо Module, Goroku при регистрации проверяет эти. Объявите метод — и возможность включится; не объявляйте — ничего не произойдёт.

Проверяйте их на этапе компиляции

Опциональный интерфейс сопоставляется по форме. Опечатка в сигнатуре означает, что метод молча игнорируется. Одна строка это предотвращает:

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

ModuleWithMeta

go
CommandMetas() map[string]CommandMeta

Алиасы и фильтры для команд. См. CommandMeta.

ModuleWithWatcherMetas

go
WatcherMetas() []CommandMeta

Фильтры для вотчеров, сопоставляются по позиции с Watchers().

ModuleWithConfigSchema

go
ConfigSchema() []ConfigField

Типизированные настройки со значениями по умолчанию и валидацией. Предпочтительный способ. См. ConfigField.

ModuleWithConfigReady

go
ConfigReady(config map[string]any) error

Вызывается при старте и при каждом изменении настройки. Возврат ошибки отклоняет изменение.

ModuleWithConfig

go
ConfigDefaults() map[string]any

Старый, нетипизированный способ. Предпочитайте ConfigSchema.

ModuleWithConfigValidators

go
ConfigValidators() map[string]Validator

Валидаторы для ConfigDefaults. С ConfigSchema не нужны — там валидаторы свои.

ModuleWithTranslationAliases

go
TranslationAliases() []string

Дополнительные имена при разрешении ключей перевода — для модулей, чьи файлы переводов используют имя, не выводимое из Name().

go
func (m *APIProtection) Name() string { return "APILimiter" }
func (m *APIProtection) TranslationAliases() []string {
	return []string{"api_protection"}
}

ModuleWithAllModules

go
SetAllModules(*Modules)

Получает реестр модулей — для тех, кто осматривает или управляет другими модулями: справка, интерфейс настроек, загрузчики.

ModuleWithTranslator

go
SetTranslator(*Translator)

Получает переводчик. При встраивании Base не нужен — там он уже есть.

SecuredModule

go
CommandPermissions() map[string]int

Маски прав по умолчанию для команд. См. Права доступа.

RatelimitedModule

go
RatelimitedCommands() map[string]bool

Команды с ограничением частоты. Эквивалент Ratelimit: true в CommandMeta.

Released under the GNU AGPL v3 License.