From 1b9cbd88c412d0c6071f375222ac739a3baf5575 Mon Sep 17 00:00:00 2001 From: Joren Date: Tue, 18 Jun 2024 17:06:13 +0200 Subject: [PATCH] Add monitor --- main.go | 160 +++++++++++++++++++++++++++++++------------------------- 1 file changed, 89 insertions(+), 71 deletions(-) diff --git a/main.go b/main.go index e36e4f9..0c0901e 100644 --- a/main.go +++ b/main.go @@ -1,84 +1,102 @@ -package main + package main -import ( - "fmt" - "os" + import ( + "fmt" + "os" + "regexp" - "github.com/BurntSushi/toml" - "github.com/bwmarrin/discordgo" -) + "github.com/BurntSushi/toml" + "github.com/bwmarrin/discordgo" + ) -var ( - Token string - ServerID string -) + var ( + Token string + ServerID string + OutputChannelID string + ) -func init() { - var config struct { - Token string `toml:"DISCORD_BOT_TOKEN"` - ServerID string `toml:"DISCORD_SERVER_ID"` + func init() { + var config struct { + Token string `toml:"DISCORD_BOT_TOKEN"` + ServerID string `toml:"DISCORD_SERVER_ID"` + OutputChannelID string `toml:"OUTPUT_CHANNEL_ID"` + } + + if _, err := toml.DecodeFile("config.toml", &config); err != nil { + fmt.Println("Error loading config:", err) + os.Exit(1) + } + + Token = config.Token + ServerID = config.ServerID + OutputChannelID = config.OutputChannelID + + if Token == "" { + fmt.Println("No token provided in config.toml.") + os.Exit(1) + } + + if ServerID == "" { + fmt.Println("No server ID provided in config.toml.") + os.Exit(1) + } + + if OutputChannelID == "" { + fmt.Println("No output channel ID in config.toml") + os.Exit(1) + } } - if _, err := toml.DecodeFile("config.toml", &config); err != nil { - fmt.Println("Error loading config:", err) - os.Exit(1) + func main() { + dg, err := discordgo.New("Bot " + Token) + if err != nil { + fmt.Println("Error creating Discord session:", err) + return + } + + dg.AddHandler(ready) + dg.AddHandler(messageCreate) + + dg.Identify.Intents = discordgo.IntentsGuilds | discordgo.IntentsGuildMessages | discordgo.IntentMessageContent + + err = dg.Open() + if err != nil { + fmt.Println("Error opening connection:", err) + return + } + + fmt.Println("Bot is now running. Press CTRL+C to exit.") + select {} } - Token = config.Token - ServerID = config.ServerID - - if Token == "" { - fmt.Println("No token provided in config.toml.") - os.Exit(1) + func ready(s *discordgo.Session, event *discordgo.Ready) { + s.UpdateGameStatus(0, "Monitoring messages") } - if ServerID == "" { - fmt.Println("No server ID provided in config.toml.") - os.Exit(1) - } -} + func messageCreate(s *discordgo.Session, m *discordgo.MessageCreate) { + if m.Author.ID == s.State.User.ID { + return + } -func main() { - dg, err := discordgo.New("Bot " + Token) - if err != nil { - fmt.Println("Error creating Discord session:", err) - return + channel, err := s.State.Channel(m.ChannelID) + if err != nil { + fmt.Println("Error getting channel:", err) + return + } + + if channel.GuildID != ServerID { + return + } + + fmt.Printf("Message from %s: %s\n", m.Author.Username, m.Content) + + + re := regexp.MustCompile(`\b\w{36,44}\b`) + match := re.FindStringSubmatch(m.Content) + if len(match) > 0 { + matchedWord := match[0] + message := fmt.Sprintf("%s", matchedWord) + s.ChannelMessageSend(OutputChannelID, message) + } } - dg.AddHandler(ready) - dg.AddHandler(messageCreate) - - dg.Identify.Intents = discordgo.IntentsGuilds | discordgo.IntentsGuildMessages | discordgo.IntentMessageContent - - err = dg.Open() - if err != nil { - fmt.Println("Error opening connection:", err) - return - } - - fmt.Println("Bot is now running. Press CTRL+C to exit.") - select {} -} - -func ready(s *discordgo.Session, event *discordgo.Ready) { - s.UpdateGameStatus(0, "Monitoring messages") -} - -func messageCreate(s *discordgo.Session, m *discordgo.MessageCreate) { - if m.Author.ID == s.State.User.ID { - return - } - - channel, err := s.State.Channel(m.ChannelID) - if err != nil { - fmt.Println("Error getting channel:", err) - return - } - - if channel.GuildID != ServerID { - return - } - - fmt.Printf("Message from %s: %s\n", m.Author.Username, m.Content) -} -