38 lines
822 B
Go
38 lines
822 B
Go
package telegram
|
|
|
|
import (
|
|
"log/slog"
|
|
|
|
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
|
)
|
|
|
|
type TelegramMessageSender struct {
|
|
bot *tgbotapi.BotAPI
|
|
logger *slog.Logger
|
|
}
|
|
|
|
func NewTelegramMessageSender(botToken string, logger *slog.Logger) (*TelegramMessageSender, error) {
|
|
bot, err := tgbotapi.NewBotAPI(botToken)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &TelegramMessageSender{
|
|
bot: bot,
|
|
logger: logger,
|
|
}, nil
|
|
}
|
|
|
|
func (s *TelegramMessageSender) Send(text string, chatId int64, replyToMessageId *int) error {
|
|
resultMsg := tgbotapi.NewMessage(chatId, text)
|
|
if replyToMessageId != nil {
|
|
resultMsg.ReplyToMessageID = *replyToMessageId
|
|
}
|
|
_, err := s.bot.Send(resultMsg)
|
|
if err != nil {
|
|
s.logger.Error("Failed to send message to tg bot", "error", err)
|
|
return err
|
|
}
|
|
return nil
|
|
}
|