Опциональные интерфейсы
Помимо Module, Goroku при регистрации проверяет эти. Объявите метод — и возможность включится; не объявляйте — ничего не произойдёт.
Проверяйте их на этапе компиляции
Опциональный интерфейс сопоставляется по форме. Опечатка в сигнатуре означает, что метод молча игнорируется. Одна строка это предотвращает:
var _ goroku.ModuleWithConfigSchema = (*Weather)(nil)ModuleWithMeta
CommandMetas() map[string]CommandMetaАлиасы и фильтры для команд. См. CommandMeta.
ModuleWithWatcherMetas
WatcherMetas() []CommandMetaФильтры для вотчеров, сопоставляются по позиции с Watchers().
ModuleWithConfigSchema
ConfigSchema() []ConfigFieldТипизированные настройки со значениями по умолчанию и валидацией. Предпочтительный способ. См. ConfigField.
ModuleWithConfigReady
ConfigReady(config map[string]any) errorВызывается при старте и при каждом изменении настройки. Возврат ошибки отклоняет изменение.
ModuleWithConfig
ConfigDefaults() map[string]anyСтарый, нетипизированный способ. Предпочитайте ConfigSchema.
ModuleWithConfigValidators
ConfigValidators() map[string]ValidatorВалидаторы для ConfigDefaults. С ConfigSchema не нужны — там валидаторы свои.
ModuleWithTranslationAliases
TranslationAliases() []stringДополнительные имена при разрешении ключей перевода — для модулей, чьи файлы переводов используют имя, не выводимое из Name().
func (m *APIProtection) Name() string { return "APILimiter" }
func (m *APIProtection) TranslationAliases() []string {
return []string{"api_protection"}
}ModuleWithAllModules
SetAllModules(*Modules)Получает реестр модулей — для тех, кто осматривает или управляет другими модулями: справка, интерфейс настроек, загрузчики.
ModuleWithTranslator
SetTranslator(*Translator)Получает переводчик. При встраивании Base не нужен — там он уже есть.
SecuredModule
CommandPermissions() map[string]intМаски прав по умолчанию для команд. См. Права доступа.
RatelimitedModule
RatelimitedCommands() map[string]boolКоманды с ограничением частоты. Эквивалент Ratelimit: true в CommandMeta.