From 70cf457e6f92f56fc9e2aa37b123af11a95b1d11 Mon Sep 17 00:00:00 2001 From: Dustin Pianalto Date: Sat, 12 Dec 2020 00:35:27 -0900 Subject: [PATCH] Add method to move links to link channel --- internal/exts/messages/message_events.go | 52 ++++++++++++++++-------- 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/internal/exts/messages/message_events.go b/internal/exts/messages/message_events.go index 0218513..02cc5f2 100644 --- a/internal/exts/messages/message_events.go +++ b/internal/exts/messages/message_events.go @@ -21,23 +21,43 @@ func CleanAmazonURLs(s *discordgo.Session, message *discordgo.MessageCreate) { amazonRegexString := `(http|https):\/\/((?:[\w-_\.]*)amazon(?:\.[\w\-_]+)+)([\w\/\-\.,@?^=%&~\+#]*[\w\-\@?^=%&/~\+#])?` amazonRegex := regexp.MustCompile(amazonRegexString) urls := amazonRegex.FindAllString(message.Content, -1) - if len(urls) == 0 { - return - } - for _, url := range urls { - if strings.Contains(url, "ref=") || strings.Contains(url, "?") { - parts := strings.Split(url, "/") - new := strings.Join(parts[:len(parts)-1], "/") - if strings.Contains(new, "ref=") { - parts = strings.Split(new, "ref=") - new = parts[0] + if len(urls) != 0 { + + for _, url := range urls { + if strings.Contains(url, "ref=") || strings.Contains(url, "?") { + parts := strings.Split(url, "/") + new := strings.Join(parts[:len(parts)-1], "/") + if strings.Contains(new, "ref=") { + parts = strings.Split(new, "ref=") + new = parts[0] + } + content = strings.ReplaceAll(content, url, new) } - content = strings.ReplaceAll(content, url, new) + } + _, err := sendWebhook(s, message, message.ChannelID, content) + if err == nil { + s.ChannelMessageDelete(message.ChannelID, message.ID) + } + } + message.Content = content + moveNewsLinks(s, message) +} + +func moveNewsLinks(s *discordgo.Session, message *discordgo.MessageCreate) { + linkChannel := "784855106239332352" + chatChannel := "777679317878177804" + if message.ChannelID == chatChannel { + _, err := sendWebhook(s, message, linkChannel, message.Content) + if err != nil { + log.Println(err) } } - webhook, err := s.WebhookCreate(message.ChannelID, message.ID, "") +} + +func sendWebhook(s *discordgo.Session, message *discordgo.MessageCreate, channelID, content string) (string, error) { + webhook, err := s.WebhookCreate(channelID, message.ID, "") if err != nil { - return + return "", err } defer s.WebhookDelete(webhook.ID) var name string @@ -51,9 +71,9 @@ func CleanAmazonURLs(s *discordgo.Session, message *discordgo.MessageCreate) { Username: name, AvatarURL: message.Author.AvatarURL(""), } - _, err = s.WebhookExecute(webhook.ID, webhook.Token, true, params) + w, err := s.WebhookExecute(webhook.ID, webhook.Token, true, params) if err != nil { - return + return "", err } - s.ChannelMessageDelete(message.ChannelID, message.ID) + return w.ID, nil }