package send import ( "fmt" "log" "ssender/internal/models" "github.com/SevereCloud/vksdk/v2/api" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" ) func RunSend(senditems *models.SendItems, config models.Config) error { failedItems := make([]models.Item, 0) // Создаем бота Telegram один раз, если отправка включена var bot *tgbotapi.BotAPI if config.Telegram.Send { var err error bot, err = tgbotapi.NewBotAPI(config.Telegram.Token) if err != nil { return err } bot.Debug = config.Telegram.SendDebug } // Создаем клиент VK один раз, если отправка включена var vk *api.VK if config.VK.Send { vk = api.NewVK(config.VK.Token) } for i, v := range senditems.ItemList { itemSent := false log.Printf("Processing item %d: %s", i+1, v.Title) if config.Telegram.Send { log.Println("Send to telegram") msg := tgbotapi.NewMessage(config.Telegram.ChatId, v.Link) msg.ParseMode = "Html" _, err := bot.Send(msg) if err != nil { log.Printf("Failed to send to Telegram: %v", err) } else { log.Println("Sended to telegram") itemSent = true } } if config.VK.Send { log.Println("Send to VK") _, err := vk.WallPost(api.Params{ "owner_id": config.VK.OwnerId, "attachments": v.Link, }) if err != nil { log.Printf("Failed to send to VK: %v", err) } else { log.Println("Sended to VK") itemSent = true } } if !itemSent { failedItems = append(failedItems, v) log.Printf("Item %d failed to send: %s", i+1, v.Title) } else { log.Printf("Item %d successfully sent: %s", i+1, v.Title) } } if len(failedItems) > 0 { log.Printf("Failed to send %d items out of %d", len(failedItems), len(senditems.ItemList)) return fmt.Errorf("failed to send %d items", len(failedItems)) } log.Printf("Successfully sent %d items", len(senditems.ItemList)) return nil }