Fix tg bot graceful shutdown

This commit is contained in:
2025-08-14 10:46:06 +03:00
parent a284e3ef29
commit 85db17b131
2 changed files with 40 additions and 12 deletions

View File

@@ -5,7 +5,6 @@ import (
"io"
"log/slog"
"net/http"
"os"
"strings"
"time"
@@ -15,14 +14,27 @@ import (
)
type TelegramController struct {
// deps
bot *tgbotapi.BotAPI
transcribeService *service.TranscribeService
jobRepo contract.TranscriptJobRepository
logger *slog.Logger
// params
updateTimeout int
}
func NewTelegramController(transcribeService *service.TranscribeService, jobRepo contract.TranscriptJobRepository, logger *slog.Logger) (*TelegramController, error) {
botToken := os.Getenv("TELEGRAM_BOT_TOKEN")
type TelegramConfig struct {
BotToken string
UpdateTimeout int
}
func NewTelegramController(
config TelegramConfig,
transcribeService *service.TranscribeService,
jobRepo contract.TranscriptJobRepository,
logger *slog.Logger,
) (*TelegramController, error) {
botToken := config.BotToken
if botToken == "" {
return nil, &EmptyBotTokenError{}
}
@@ -37,6 +49,7 @@ func NewTelegramController(transcribeService *service.TranscribeService, jobRepo
transcribeService: transcribeService,
jobRepo: jobRepo,
logger: logger,
updateTimeout: config.UpdateTimeout,
}
return controller, nil
@@ -46,7 +59,7 @@ func (c *TelegramController) Start() {
c.logger.Info("Telegram bot started", "username", c.bot.Self.UserName)
u := tgbotapi.NewUpdate(0)
u.Timeout = 60
u.Timeout = c.updateTimeout
updates := c.bot.GetUpdatesChan(u)
@@ -79,7 +92,7 @@ func (c *TelegramController) Start() {
}
func (c *TelegramController) Stop() {
c.logger.Info("Telegram bot stopped")
c.bot.StopReceivingUpdates()
}
func (c *TelegramController) handleStartCommand(message *tgbotapi.Message) {