From dadda68ace4c2bab50ce68822339da1722850975 Mon Sep 17 00:00:00 2001 From: kageru Date: Sat, 26 May 2018 12:51:05 +0200 Subject: [PATCH] helpers and logging --- main.go | 46 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/main.go b/main.go index e589443..ec469b9 100644 --- a/main.go +++ b/main.go @@ -8,6 +8,7 @@ import ( "os/signal" "syscall" "regexp" + "log" "github.com/bwmarrin/discordgo" ) @@ -42,8 +43,6 @@ func readConfig() Config { return conf } - - func main() { dg, err := discordgo.New("Bot " + config.Token) if err != nil { @@ -59,6 +58,13 @@ func main() { return } + f, err := os.OpenFile("selphybot.log", os.O_RDWR | os.O_CREATE | os.O_APPEND, 0666) + if err != nil { + fmt.Println("error opening log file: %v", err) + } + defer f.Close() + log.SetOutput(f) + fmt.Println("bot running. selphyWoo") sc := make(chan os.Signal, 1) signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt, os.Kill) @@ -71,12 +77,42 @@ func onJoin(s *discordgo.Session, member *discordgo.GuildMemberAdd) { if !member.User.Bot { s.GuildMemberRoleAdd(config.ServerID, member.User.ID, config.LockedRoleID) } + log.Printf("User joined: %s", userToString(member.User)) } func unlockUser(s *discordgo.Session, id string) { s.GuildMemberRoleRemove(config.ServerID, id, config.LockedRoleID) + log.Printf("Removed lock from user: %s", userToString(getUser(s, id))) } +func userToString(u *discordgo.User) string { + return fmt.Sprintf("%s#%s (ID: %s)", u.Username, u.Discriminator, u.ID) +} + +func channelToString(c *discordgo.Channel) string { + return fmt.Sprintf("%s (ID: %s) on %s", c.Name, c.ID, c.GuildID) +} + +func messageToString(m *discordgo.Message) string { + return fmt.Sprintf("<%s#%s>: %s", m.Author.Username, m.Author.Discriminator, m.Content) +} + +func getChannel(s *discordgo.State, cid string) *discordgo.Channel { + channel, _ := s.Channel(cid) + return channel +} + +func getUser(s *discordgo.Session, uid string) *discordgo.User { + user, _ := s.User(uid) + return user +} + +/*func undelete(s *discordgo.Session, m *discordgo.MessageDelete) { + channel, _ := s.State.Channel(m.ChannelID) + message, _ := s.State.Message(m.ChannelID, m.ID) + log.Println(fmt.Sprintf("Someone deleted a message in %s: “%s”", channel.Name, messageToString(message))) +}*/ + func genericReply(s *discordgo.Session, m *discordgo.MessageCreate) { if m.Author.ID == s.State.User.ID { return @@ -97,14 +133,18 @@ func genericReply(s *discordgo.Session, m *discordgo.MessageCreate) { if winks { s.ChannelMessageSend(m.ChannelID, fmt.Sprintf("<@%s> faggot", m.Author.ID)) s.ChannelMessageDelete(m.ChannelID, m.ID) + channel := getChannel(s.State, m.ChannelID) + log.Printf("Deleted message by %s in %s. Content: “%s”", userToString(m.Author), channelToString(channel), m.Content) return } // As per our majesty’s command: if m.Content == "\\o" { s.ChannelMessageSend(m.ChannelID, "o/") + log.Printf("o/ at %s", userToString(m.Author)) } else if m.Content == "o/" { s.ChannelMessageSend(m.ChannelID, "\\o") + log.Printf("\\o at %s", userToString(m.Author)) } } @@ -113,6 +153,8 @@ func genericReply(s *discordgo.Session, m *discordgo.MessageCreate) { func replyGodmode(s *discordgo.Session, m *discordgo.MessageCreate) { if m.Content == "print_rules()" { + channel := getChannel(s.State, m.ChannelID) + log.Printf("print_rules() triggered by %s in %s.", userToString(m.Author), channelToString(channel)) embedColor := 0xffb90f // kageru gold embed := &discordgo.MessageEmbed{ Author: &discordgo.MessageEmbedAuthor{},