Добавил бот для Telegram
This commit is contained in:
@@ -10,6 +10,8 @@ import (
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
||||
|
||||
"git.vakhrushev.me/av/jellybit/internal/config"
|
||||
"git.vakhrushev.me/av/jellybit/internal/httpapi"
|
||||
"git.vakhrushev.me/av/jellybit/internal/ingest"
|
||||
@@ -20,6 +22,7 @@ import (
|
||||
"git.vakhrushev.me/av/jellybit/internal/qbt"
|
||||
"git.vakhrushev.me/av/jellybit/internal/recognize"
|
||||
"git.vakhrushev.me/av/jellybit/internal/store"
|
||||
"git.vakhrushev.me/av/jellybit/internal/tgbot"
|
||||
"git.vakhrushev.me/av/jellybit/internal/worker"
|
||||
)
|
||||
|
||||
@@ -124,6 +127,28 @@ func runServe(args []string) error {
|
||||
ctx, stop := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
|
||||
defer stop()
|
||||
|
||||
// Ф5: Telegram-транспорт + пинги. Доступ — по allowed_user_ids
|
||||
// (пусто = запрет всем, fail-closed). Недоступность Telegram на старте не
|
||||
// валит сервис — бот просто отключается.
|
||||
if cfg.Telegram.Enabled {
|
||||
if cfg.Telegram.Token == "" {
|
||||
return fmt.Errorf("telegram enabled, but token is empty")
|
||||
}
|
||||
api, terr := tgbotapi.NewBotAPI(cfg.Telegram.Token)
|
||||
if terr != nil {
|
||||
logger.Error("telegram bot disabled: cannot connect", "err", terr)
|
||||
} else {
|
||||
bot := tgbot.New(api, ingestor, wrk, tgbot.Config{
|
||||
AllowedUserIDs: cfg.Telegram.AllowedUserIDs,
|
||||
WebBaseURL: cfg.Telegram.WebBaseURL,
|
||||
}, logger)
|
||||
wrk.SetNotifier(bot)
|
||||
go bot.Run(ctx)
|
||||
logger.Info("telegram bot enabled",
|
||||
"bot", api.Self.UserName, "allowed_users", len(cfg.Telegram.AllowedUserIDs))
|
||||
}
|
||||
}
|
||||
|
||||
go wrk.Run(ctx)
|
||||
|
||||
srv := &http.Server{
|
||||
|
||||
Reference in New Issue
Block a user