multiple discord senders
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
package lib
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"strings"
|
||||
@@ -62,34 +61,50 @@ func getCache() Cache {
|
||||
return cache
|
||||
}
|
||||
|
||||
func getDiscordSender(config Config) DiscordSender {
|
||||
return DiscordSender{
|
||||
Webhook: config.DiscordWebhook,
|
||||
Fake: config.DiscordFake,
|
||||
}
|
||||
}
|
||||
|
||||
func getMessages(fetchers []Fetcher) []string {
|
||||
messages := []string{}
|
||||
func getMessages(fetchers []Fetcher) []Message {
|
||||
messages := []Message{}
|
||||
for _, fetcher := range fetchers {
|
||||
entries := fetcher.Fetch()
|
||||
for _, entry := range entries {
|
||||
messages = append(messages, fmt.Sprintf("[%s](%s)", entry.Title, entry.URL))
|
||||
fetchedMessages := fetcher.Fetch()
|
||||
for _, message := range fetchedMessages {
|
||||
messages = append(messages, message)
|
||||
}
|
||||
}
|
||||
return messages
|
||||
}
|
||||
|
||||
func sendMessageToDiscord(sender DiscordSender, message Message) {
|
||||
log.Printf("[SCHEDULED] [SEND] (%s) %s\n", message.Channel, message.ToDiscord())
|
||||
if sender.Fake {
|
||||
return
|
||||
}
|
||||
sender.Send(message.ToDiscord())
|
||||
}
|
||||
|
||||
func Runner() {
|
||||
loadEnv()
|
||||
config := getConfig()
|
||||
cache := getCache()
|
||||
discord_sender := getDiscordSender(config)
|
||||
fetchers := getFetchers(&config, &cache)
|
||||
|
||||
default_discord_sender := NewDiscordSender(config.DiscordWebhook, config.DiscordFake)
|
||||
wiki_discord_sender := NewDiscordSender(config.WikiDiscordWebhook, config.DiscordFake)
|
||||
redmine_discord_sender := NewDiscordSender(config.RedmineDiscordWebhook, config.DiscordFake)
|
||||
gita_discord_sender := NewDiscordSender(config.GiteaDiscordWebhook, config.DiscordFake)
|
||||
for {
|
||||
log.Println("Run updater...")
|
||||
log.Println("[SCHEDULED] Run updater...")
|
||||
messages := getMessages(fetchers)
|
||||
discord_sender.SendBatch(messages)
|
||||
for _, message := range messages {
|
||||
switch message.Channel {
|
||||
case "wiki":
|
||||
sendMessageToDiscord(wiki_discord_sender, message)
|
||||
case "redmine":
|
||||
sendMessageToDiscord(redmine_discord_sender, message)
|
||||
case "gitea":
|
||||
sendMessageToDiscord(gita_discord_sender, message)
|
||||
default:
|
||||
sendMessageToDiscord(default_discord_sender, message)
|
||||
}
|
||||
}
|
||||
cache.Save()
|
||||
time.Sleep(config.Interval)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user