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.