|
|
|
@ -1,6 +1,7 @@ |
|
|
|
package send |
|
|
|
package send |
|
|
|
|
|
|
|
|
|
|
|
import ( |
|
|
|
import ( |
|
|
|
|
|
|
|
"fmt" |
|
|
|
"log" |
|
|
|
"log" |
|
|
|
"ssender/internal/models" |
|
|
|
"ssender/internal/models" |
|
|
|
|
|
|
|
|
|
|
|
@ -9,40 +10,69 @@ import ( |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
func RunSend(senditems *models.SendItems, config models.Config) error { |
|
|
|
func RunSend(senditems *models.SendItems, config models.Config) error { |
|
|
|
for _, v := range senditems.ItemList { |
|
|
|
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 { |
|
|
|
if config.Telegram.Send { |
|
|
|
log.Println("Send to telegram") |
|
|
|
log.Println("Send to telegram") |
|
|
|
bot, err := tgbotapi.NewBotAPI(config.Telegram.Token) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
return err |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
bot.Debug = config.Telegram.SendDebug |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// s := "<b>" + string(v.Title) + "</b>\n" + html.UnescapeString(string(v.Description)) +
|
|
|
|
|
|
|
|
// "\nhttps://t.me/iv?url=" + v.Link + "&rhash=da76512d0ff2a2" +
|
|
|
|
|
|
|
|
// "\n\nСсылка на пост: " + v.Link
|
|
|
|
|
|
|
|
msg := tgbotapi.NewMessage(config.Telegram.ChatId, v.Link) |
|
|
|
msg := tgbotapi.NewMessage(config.Telegram.ChatId, v.Link) |
|
|
|
msg.ParseMode = "Html" |
|
|
|
msg.ParseMode = "Html" |
|
|
|
_, err = bot.Send(msg) |
|
|
|
_, err := bot.Send(msg) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
log.Printf("Failed to send to Telegram: %v", err) |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
log.Println("Sended to telegram") |
|
|
|
|
|
|
|
itemSent = true |
|
|
|
} |
|
|
|
} |
|
|
|
log.Println("Sended to telegram") |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if config.VK.Send { |
|
|
|
if config.VK.Send { |
|
|
|
log.Println("Send to VK") |
|
|
|
log.Println("Send to VK") |
|
|
|
vk := api.NewVK(config.VK.Token) |
|
|
|
|
|
|
|
_, err := vk.WallPost(api.Params{ |
|
|
|
_, err := vk.WallPost(api.Params{ |
|
|
|
"owner_id": config.VK.OwnerId, |
|
|
|
"owner_id": config.VK.OwnerId, |
|
|
|
"attachments": v.Link, |
|
|
|
"attachments": v.Link, |
|
|
|
}) |
|
|
|
}) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
log.Printf("Failed to send to VK: %v", err) |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
log.Println("Sended to VK") |
|
|
|
|
|
|
|
itemSent = true |
|
|
|
} |
|
|
|
} |
|
|
|
log.Println("Sended to VK") |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
|
|
|
return nil |
|
|
|
} |
|
|
|
} |
|
|
|
|