diff --git a/internal/controller/tg/tg.go b/internal/controller/tg/tg.go index c0912b1..3b5a6fd 100644 --- a/internal/controller/tg/tg.go +++ b/internal/controller/tg/tg.go @@ -108,18 +108,26 @@ func (c *TelegramController) Stop() { c.bot.StopReceivingUpdates() } +func (c *TelegramController) send(chattable tgbotapi.Chattable) (tgbotapi.Message, error) { + msg, err := c.bot.Send(chattable) + if err != nil { + c.logger.Error("Failed to send message to tg bot", "error", err) + } + return msg, err +} + func (c *TelegramController) handleStartCommand(message *tgbotapi.Message) { msg := tgbotapi.NewMessage(message.Chat.ID, "Привет! Я бот для расшифровки аудиосообщений. Отправь мне голосовое сообщение или аудиофайл, и я пришлю тебе текст.") msg.ReplyToMessageID = message.MessageID - c.bot.Send(msg) + c.send(msg) } func (c *TelegramController) handleForbiddenUser(message *tgbotapi.Message) { msg := tgbotapi.NewMessage(message.Chat.ID, "Извини, тебе нельзя пользоваться этим ботом. Обратись к владельцу бота.") msg.ReplyToMessageID = message.MessageID - c.bot.Send(msg) + c.send(msg) } func (c *TelegramController) handleHelpCommand(message *tgbotapi.Message) { @@ -138,14 +146,14 @@ func (c *TelegramController) handleHelpCommand(message *tgbotapi.Message) { msg := tgbotapi.NewMessage(message.Chat.ID, helpText) msg.ReplyToMessageID = message.MessageID - c.bot.Send(msg) + c.send(msg) } func (c *TelegramController) handleAudioMessage(message *tgbotapi.Message) { // Отправляем сообщение о начале обработки progressMsg := tgbotapi.NewMessage(message.Chat.ID, "Обрабатываю аудиофайл...") progressMsg.ReplyToMessageID = message.MessageID - sentProgressMsg, err := c.bot.Send(progressMsg) + sentProgressMsg, err := c.send(progressMsg) if err != nil { c.logger.Error("Failed to send progress message", "error", err) return @@ -156,7 +164,7 @@ func (c *TelegramController) handleAudioMessage(message *tgbotapi.Message) { if err != nil { c.logger.Error("Failed to download audio file", "error", err) errorMsg := tgbotapi.NewMessage(message.Chat.ID, "Ошибка при скачивании аудиофайла. Попробуйте еще раз.") - c.bot.Send(errorMsg) + c.send(errorMsg) return } defer fileReader.Close() @@ -166,14 +174,14 @@ func (c *TelegramController) handleAudioMessage(message *tgbotapi.Message) { if err != nil { c.logger.Error("Failed to create transcribe job", "error", err) errorMsg := tgbotapi.NewMessage(message.Chat.ID, "Ошибка при создании задачи на расшифровку. Попробуйте еще раз.") - c.bot.Send(errorMsg) + c.send(errorMsg) return } // Отправляем сообщение об успешном создании задачи successMsg := tgbotapi.NewMessage(message.Chat.ID, fmt.Sprintf("Задача на расшифровку создана. ID задачи: %s", job.Id)) successMsg.ReplyToMessageID = message.MessageID - c.bot.Send(successMsg) + c.send(successMsg) // Отправляем результат расшифровки (асинхронно) go c.sendTranscriptionResult(message.Chat.ID, job.Id, sentProgressMsg.MessageID) @@ -183,7 +191,7 @@ func (c *TelegramController) handleVoiceMessage(message *tgbotapi.Message) { // Отправляем сообщение о начале обработки progressMsg := tgbotapi.NewMessage(message.Chat.ID, "Обрабатываю голосовое сообщение...") progressMsg.ReplyToMessageID = message.MessageID - sentProgressMsg, err := c.bot.Send(progressMsg) + sentProgressMsg, err := c.send(progressMsg) if err != nil { c.logger.Error("Failed to send progress message", "error", err) return @@ -194,7 +202,7 @@ func (c *TelegramController) handleVoiceMessage(message *tgbotapi.Message) { if err != nil { c.logger.Error("Failed to download voice file", "error", err) errorMsg := tgbotapi.NewMessage(message.Chat.ID, "Ошибка при скачивании голосового сообщения. Попробуйте еще раз.") - c.bot.Send(errorMsg) + c.send(errorMsg) return } defer fileReader.Close() @@ -204,14 +212,14 @@ func (c *TelegramController) handleVoiceMessage(message *tgbotapi.Message) { if err != nil { c.logger.Error("Failed to create transcribe job", "error", err) errorMsg := tgbotapi.NewMessage(message.Chat.ID, "Ошибка при создании задачи на расшифровку. Попробуйте еще раз.") - c.bot.Send(errorMsg) + c.send(errorMsg) return } // Отправляем сообщение об успешном создании задачи successMsg := tgbotapi.NewMessage(message.Chat.ID, fmt.Sprintf("Задача на расшифровку создана. ID задачи: %s", job.Id)) successMsg.ReplyToMessageID = message.MessageID - c.bot.Send(successMsg) + c.send(successMsg) // Отправляем результат расшифровки (асинхронно) go c.sendTranscriptionResult(message.Chat.ID, job.Id, sentProgressMsg.MessageID) @@ -226,7 +234,7 @@ func (c *TelegramController) handleDocumentMessage(message *tgbotapi.Message) { // Отправляем сообщение о начале обработки progressMsg := tgbotapi.NewMessage(message.Chat.ID, "Обрабатываю аудиофайл...") progressMsg.ReplyToMessageID = message.MessageID - sentProgressMsg, err := c.bot.Send(progressMsg) + sentProgressMsg, err := c.send(progressMsg) if err != nil { c.logger.Error("Failed to send progress message", "error", err) return @@ -237,7 +245,7 @@ func (c *TelegramController) handleDocumentMessage(message *tgbotapi.Message) { if err != nil { c.logger.Error("Failed to download document file", "error", err) errorMsg := tgbotapi.NewMessage(message.Chat.ID, "Ошибка при скачивании аудиофайла. Попробуйте еще раз.") - c.bot.Send(errorMsg) + c.send(errorMsg) return } defer fileReader.Close() @@ -247,14 +255,14 @@ func (c *TelegramController) handleDocumentMessage(message *tgbotapi.Message) { if err != nil { c.logger.Error("Failed to create transcribe job", "error", err) errorMsg := tgbotapi.NewMessage(message.Chat.ID, "Ошибка при создании задачи на расшифровку. Попробуйте еще раз.") - c.bot.Send(errorMsg) + c.send(errorMsg) return } // Отправляем сообщение об успешном создании задачи successMsg := tgbotapi.NewMessage(message.Chat.ID, fmt.Sprintf("Задача на расшифровку создана. ID задачи: %s", job.Id)) successMsg.ReplyToMessageID = message.MessageID - c.bot.Send(successMsg) + c.send(successMsg) // Отправляем результат расшифровки (асинхронно) go c.sendTranscriptionResult(message.Chat.ID, job.Id, sentProgressMsg.MessageID) @@ -306,11 +314,11 @@ func (c *TelegramController) sendTranscriptionResult(chatID int64, jobID string, if job.TranscriptionText != nil { resultMsg := tgbotapi.NewMessage(chatID, *job.TranscriptionText) resultMsg.ReplyToMessageID = progressMessageID - c.bot.Send(resultMsg) + c.send(resultMsg) } else { resultMsg := tgbotapi.NewMessage(chatID, "Расшифровка завершена, но текст пуст.") resultMsg.ReplyToMessageID = progressMessageID - c.bot.Send(resultMsg) + c.send(resultMsg) } return case "failed": @@ -323,14 +331,14 @@ func (c *TelegramController) sendTranscriptionResult(chatID int64, jobID string, } resultMsg := tgbotapi.NewMessage(chatID, errorMsg) resultMsg.ReplyToMessageID = progressMessageID - c.bot.Send(resultMsg) + c.send(resultMsg) return } case <-timeout: // Время ожидания истекло resultMsg := tgbotapi.NewMessage(chatID, "Время ожидания результата расшифровки истекло. Попробуйте позже проверить статус задачи.") resultMsg.ReplyToMessageID = progressMessageID - c.bot.Send(resultMsg) + c.send(resultMsg) return } }