feat(config): отключаемый Telegram-канал (telegram.enabled)
- TelegramCfg.Enabled (дефолт true); при false канал не создаётся и не крепится в Router, long-poll не стартует — нет сетевых вызовов к api.telegram.org - Validate требует token/chat_id только при enabled - Load пресетит enabled=true до unmarshal (applyDefaults для bool не различает явный false) - тесты, README и config.yaml.example обновлены
This commit is contained in:
@@ -76,9 +76,13 @@ type UpdateCfg struct {
|
||||
CheckInterval Duration `yaml:"check_interval" default:"24h"`
|
||||
}
|
||||
|
||||
// TelegramCfg — настройки Telegram-канала. Enabled=false отключает канал
|
||||
// полностью: бот не опрашивается, сетевые вызовы к api.telegram.org не идут,
|
||||
// token/chat_id не обязательны. По умолчанию включён (см. Load: presetTelegramEnabled).
|
||||
type TelegramCfg struct {
|
||||
Token string `yaml:"token" env:"TG_TOKEN"`
|
||||
ChatID string `yaml:"chat_id" env:"TG_CHAT_ID"`
|
||||
Enabled bool `yaml:"enabled"`
|
||||
Token string `yaml:"token" env:"TG_TOKEN"`
|
||||
ChatID string `yaml:"chat_id" env:"TG_CHAT_ID"`
|
||||
}
|
||||
|
||||
type OpenCodeCfg struct {
|
||||
@@ -121,11 +125,13 @@ type PathsCfg struct {
|
||||
// (склеенную, все ошибки сразу) или C2 InvalidFormat.
|
||||
func (c *Config) Validate() error {
|
||||
var errs []error
|
||||
if c.Telegram.Token == "" {
|
||||
errs = append(errs, fmt.Errorf("%w: telegram.token", ErrMissingField))
|
||||
}
|
||||
if c.Telegram.ChatID == "" {
|
||||
errs = append(errs, fmt.Errorf("%w: telegram.chat_id", ErrMissingField))
|
||||
if c.Telegram.Enabled {
|
||||
if c.Telegram.Token == "" {
|
||||
errs = append(errs, fmt.Errorf("%w: telegram.token", ErrMissingField))
|
||||
}
|
||||
if c.Telegram.ChatID == "" {
|
||||
errs = append(errs, fmt.Errorf("%w: telegram.chat_id", ErrMissingField))
|
||||
}
|
||||
}
|
||||
if !c.Log.Debug() && !strings.EqualFold(c.Log.Level, "info") {
|
||||
errs = append(errs, fmt.Errorf("%w: log.level (ожидается \"info\" или \"debug\")", ErrInvalidFormat))
|
||||
|
||||
Reference in New Issue
Block a user