Необов'язкові інтерфейси
Окрім 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.