From 50513cf3cd7fe6844b5c670aed687c32019f63b7 Mon Sep 17 00:00:00 2001 From: Chris kerr Date: Fri, 26 Apr 2024 22:30:28 -0400 Subject: [PATCH] new message --- main.go | 243 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 128 insertions(+), 115 deletions(-) diff --git a/main.go b/main.go index 52f5512..f3ede10 100644 --- a/main.go +++ b/main.go @@ -15,80 +15,82 @@ import ( ) type Config struct { - DiscordBotToken string `json:"discord_bot_token"` - DiscordChannelID string `json:"discord_channel_id"` // Add more configuration fields here + DiscordBotToken string `json:"discord_bot_token"` + DiscordChannelID string `json:"discord_channel_id"` // Add more configuration fields here } func main() { - // Open and read the configuration file - configFile, err := os.Open("config.json") - if err != nil { - fmt.Println("Error opening config file:", err) - return - } - defer configFile.Close() + // Open and read the configuration file + configFile, err := os.Open("config.json") + if err != nil { + fmt.Println("Error opening config file:", err) + return + } + defer configFile.Close() - // Parse the configuration from JSON - var config Config - err = json.NewDecoder(configFile).Decode(&config) - if err != nil { - fmt.Println("Error decoding config JSON:", err) - return - } + // Parse the configuration from JSON + var config Config + err = json.NewDecoder(configFile).Decode(&config) + if err != nil { + fmt.Println("Error decoding config JSON:", err) + return + } - // Access the Discord bot token from the configuration - token := config.DiscordBotToken - if token == "" { - fmt.Println("Discord bot token is not set in config file") - return - } + // Access the Discord bot token from the configuration + token := config.DiscordBotToken + if token == "" { + fmt.Println("Discord bot token is not set in config file") + return + } - // - channelID := config.DiscordChannelID - if channelID == "" { - fmt.Println("Discord channel ID is not set in config file") - } + // + channelID := config.DiscordChannelID + if channelID == "" { + fmt.Println("Discord channel ID is not set in config file") + } - // Create a new Discord session using the provided bot token - dg, err := discordgo.New("Bot " + token) - if err != nil { - fmt.Println("Error creating Discord session:", err) - return - } + // Create a new Discord session using the provided bot token + dg, err := discordgo.New("Bot " + token) + if err != nil { + fmt.Println("Error creating Discord session:", err) + return + } - // Register messageCreate as a callback for the messageCreate events - dg.AddHandler(messageCreate) + // Register messageCreate as a callback for the messageCreate events + dg.AddHandler(messageCreate) - // Open a websocket connection to Discord and begin listening - err = dg.Open() - if err != nil { - fmt.Println("Error opening Discord connection:", err) - return - } - - // Run the scraping and message sending function once at the specified time + dg.AddHandler(message2Create) + + // Open a websocket connection to Discord and begin listening + err = dg.Open() + if err != nil { + fmt.Println("Error opening Discord connection:", err) + return + } + + // Run the scraping and message sending function once at the specified time sendNotifications(dg, channelID, scrapeNews()) - // Schedule the scraping and message sending function to run once a day - ticker := time.NewTicker(24 * time.Hour) - defer ticker.Stop() + // Schedule the scraping and message sending function to run once a day + ticker := time.NewTicker(24 * time.Hour) + defer ticker.Stop() - // Run the scraping and message sending function when the ticker ticks - go func() { - for { - select { - case <-ticker.C: - sendNotifications(dg, channelID, scrapeNews()) - } - } - }() + // Run the scraping and message sending function when the ticker ticks + go func() { + for { + select { + case <-ticker.C: + sendNotifications(dg, channelID, scrapeNews()) + } + } + }() - //test() + //test() - // Wait here until CTRL-C or other term signal is received - fmt.Println("Bot is now running. Press CTRL-C to exit.") - <-make(chan struct{}) + // Wait here until CTRL-C or other term signal is received + fmt.Println("Bot is now running. Press CTRL-C to exit.") + <-make(chan struct{}) } func scrapeNews() string { @@ -116,74 +118,85 @@ func scrapeNews() string { // Add a function to extract relevant tags from the HTML content func extractTags(html string) []string { - var tags []string - doc, err := goquery.NewDocumentFromReader(strings.NewReader(html)) - if err != nil { - fmt.Println("Error parsing HTML:", err) - return tags - } - // Find and extract tags with class name "news-module-feed-item-details-tag" - doc.Find("span.news-module-feed-item-details-tag").Each(func(i int, s *goquery.Selection) { - tag := strings.TrimSpace(s.Text()) - tags = append(tags, tag) - }) - return tags + var tags []string + doc, err := goquery.NewDocumentFromReader(strings.NewReader(html)) + if err != nil { + fmt.Println("Error parsing HTML:", err) + return tags + } + // Find and extract tags with class name "news-module-feed-item-details-tag" + doc.Find("span.news-module-feed-item-details-tag").Each(func(i int, s *goquery.Selection) { + tag := strings.TrimSpace(s.Text()) + tags = append(tags, tag) + }) + return tags } // Define a map to associate each desired tag with its corresponding Discord channel ID var tagChannelMap = map[string]string{ - "Patch Notes": "556093419341086749", - "Atomic Shop": "590581442392621067", - "News": "558335339018846228", - // Add more tags and corresponding channel IDs as needed + "Patch Notes": "556093419341086749", + "Atomic Shop": "590581442392621067", + "News": "558335339018846228", + // Add more tags and corresponding channel IDs as needed } func sendNotifications(session *discordgo.Session, channelID string, html string) { - // Extract tags from the HTML content - tags := extractTags(html) + // Extract tags from the HTML content + tags := extractTags(html) - // Define today's date string - today := time.Now().Format("January 2, 2006") + // Define today's date string + today := time.Now().Format("January 2, 2006") - // Iterate over extracted tags - for _, tag := range tags { - // Check if the tag is in the desired tags list - if tagChannelID, ok := tagChannelMap[tag]; ok { - // Check if today's date matches the tag - if tag == today { - // Send a message to the corresponding Discord channel - message := fmt.Sprintf("Today's date matches the tag '%s' on the Fallout news page!", tag) - _, err := session.ChannelMessageSend(tagChannelID, message) - if err != nil { - fmt.Printf("Error sending message to Discord channel %s: %s\n", tagChannelID, err) - continue - } - fmt.Println("Message sent to Discord channel:", tagChannelID) - } else { - // Send a different message indicating the tag was found - message := fmt.Sprintf("Tag '%s' found on the Fallout news page, but it's not today's date.", tag) - _, err := session.ChannelMessageSend(tagChannelID, message) - if err != nil { - fmt.Printf("Error sending message to Discord channel %s: %s\n", tagChannelID, err) - continue - } - fmt.Println("Message sent to Discord channel:", tagChannelID) - } - } - } + // Iterate over extracted tags + for _, tag := range tags { + // Check if the tag is in the desired tags list + if tagChannelID, ok := tagChannelMap[tag]; ok { + // Check if today's date matches the tag + if tag == today { + // Send a message to the corresponding Discord channel + message := fmt.Sprintf("Today's date matches the tag '%s' on the Fallout news page!", tag) + _, err := session.ChannelMessageSend(tagChannelID, message) + if err != nil { + fmt.Printf("Error sending message to Discord channel %s: %s\n", tagChannelID, err) + continue + } + fmt.Println("Message sent to Discord channel:", tagChannelID) + } else { + // Send a different message indicating the tag was found + message := fmt.Sprintf("Tag '%s' found on the Fallout news page, but it's not today's date.", tag) + _, err := session.ChannelMessageSend(tagChannelID, message) + if err != nil { + fmt.Printf("Error sending message to Discord channel %s: %s\n", tagChannelID, err) + continue + } + fmt.Println("Message sent to Discord channel:", tagChannelID) + } + } + } } - - // This function will be called whenever a new message is created func messageCreate(s *discordgo.Session, m *discordgo.MessageCreate) { - // Ignore messages created by the bot itself - if m.Author.ID == s.State.User.ID { - return - } + // Ignore messages created by the bot itself + if m.Author.ID == s.State.User.ID { + return + } - // If the message content is "!hello", respond with "Hello!" - if m.Content == "!hello" { - _, _ = s.ChannelMessageSend(m.ChannelID, "Hello!") - } + // If the message content is "!hello", respond with "Hello!" + if m.Content == "!hello1" { + _, _ = s.ChannelMessageSend(m.ChannelID, "Hello!") + } +} + +// This function will be called whenever a new message is created +func message2Create(s *discordgo.Session, m *discordgo.MessageCreate) { + // Ignore messages created by the bot itself + if m.Author.ID == s.State.User.ID { + return + } + + // If the message content is "!hello", respond with "Hello!" + if m.Content == "!hello" { + _, _ = s.ChannelMessageSend(m.ChannelID, "You are SUCH a NERD") + } }