- в секции [telegram] заведён обязательный ключ enabled: умолчания у него нет, файл без него негоден; bot_token стал только ключом доступа и при enabled = false не читается вовсе, а пустой при enabled = true роняет старт - выключенный вход даёт подъём одним входом без единого обращения к Telegram и записью INFO вместо прежнего WARN: это выбор владельца, а не отклонение - отказ разбора файла настроек больше не пересказывает toml — её ParseError несёт в тексте разбираемое значение, и оборванная строка секретного ключа уносила его в журнал; теперь называются путь, строка, столбец и последний ключ
28 lines
1.5 KiB
Go
28 lines
1.5 KiB
Go
package telegram
|
|
|
|
import (
|
|
"git.vakhrushev.me/av/transcriber/internal/contract"
|
|
)
|
|
|
|
// AbsentMessageSender подставляется вместо отправителя Telegram, когда вход
|
|
// выключен признаком `telegram.enabled` либо Telegram оказался недоступен, и
|
|
// клиента заводить не из чего. Он ничего не отправляет и на всякий ответ отдаёт
|
|
// `contract.ErrDeliveryChannelDown`.
|
|
//
|
|
// Заглушка, а не пустой отправитель: необязательная зависимость, доехавшая до
|
|
// ядра нулём, роняет процесс на первой же задаче из Telegram, а проверка на
|
|
// месте употребления завела бы в ядре знание о том, как собран сервис.
|
|
//
|
|
// Молчит он намеренно. Записать недоставку заглушке нечем: контракт отправки
|
|
// несёт текст, чат и сообщение для ответа, а идентификатора задачи в нём нет.
|
|
// Пишет поэтому шаг конвейера, который задачу знает.
|
|
type AbsentMessageSender struct{}
|
|
|
|
func NewAbsentMessageSender() *AbsentMessageSender {
|
|
return &AbsentMessageSender{}
|
|
}
|
|
|
|
func (s *AbsentMessageSender) Send(_ string, _ int64, _ *int) error {
|
|
return contract.ErrDeliveryChannelDown
|
|
}
|