diff --git a/bots/discord/OnMessageCreate.go b/bots/discord/OnMessageCreate.go index c6a176b4..01193197 100644 --- a/bots/discord/OnMessageCreate.go +++ b/bots/discord/OnMessageCreate.go @@ -10,6 +10,14 @@ import ( "github.com/bwmarrin/discordgo" ) +var regions = map[string]string{ + "africa": "465876853236826112", + "america": "465876808311635979", + "asia": "465876834031108096", + "australia": "465876893036707840", + "europe": "465876773029019659", +} + // OnMessageCreate is called every time a new message is created on any channel. func OnMessageCreate(s *discordgo.Session, msg *discordgo.MessageCreate) { // Ignore all messages created by the bot itself @@ -84,59 +92,48 @@ func OnMessageCreate(s *discordgo.Session, msg *discordgo.MessageCreate) { // Set the specific region role for the user if strings.HasPrefix(msg.Content, "!region ") { - - regions := map[string]string{ - "africa": "465876853236826112", - "america": "465876808311635979", - "asia": "465876834031108096", - "australia": "465876893036707840", - "europe": "465876773029019659", - } - - region := msg.Content[len("!region "):] + region := strings.ToLower(msg.Content[len("!region "):]) // check to make sure the region is in the region map - if _, ok := regions[region]; ok { - // Get the channel, this is used to get the guild ID - c, _ := s.Channel(msg.ChannelID) - - // Check to see if user already has a region role - user, _ := s.GuildMember(c.GuildID, msg.Author.ID) - - for _, role := range user.Roles { - match := false - // we also need to loop through our map because discord doesn't return roles as names - // but rather IDs. - for _, id := range regions { - - if role == id { - // remove the role and set match to true - s.GuildMemberRoleRemove(c.GuildID, msg.Author.ID, id) - match = true - break - } - - } - - if match { - break - } - - } - - // try to set the role - err := s.GuildMemberRoleAdd(c.GuildID, msg.Author.ID, regions[region]) - if err != nil { - s.ChannelMessageSend(msg.ChannelID, "The region role could not be set!") - return - } - - s.ChannelMessageSend(msg.ChannelID, "The "+region+" role has been set on your user!") - - } else { + if _, ok := regions[region]; !ok { s.ChannelMessageSend(msg.ChannelID, "This is not a region!") + return } - return + // Get the channel, this is used to get the guild ID + c, _ := s.Channel(msg.ChannelID) + + // Check to see if user already has a region role + user, _ := s.GuildMember(c.GuildID, msg.Author.ID) + + for _, role := range user.Roles { + match := false + + // We also need to loop through our map because discord doesn't return roles as names + // but rather IDs. + for _, id := range regions { + if role == id { + // Remove the role and set match to true. + s.GuildMemberRoleRemove(c.GuildID, msg.Author.ID, id) + match = true + break + } + } + + if match { + break + } + } + + // Try to set the role. + err := s.GuildMemberRoleAdd(c.GuildID, msg.Author.ID, regions[region]) + + if err != nil { + s.ChannelMessageSend(msg.ChannelID, "The region role could not be set!") + return + } + + s.ChannelMessageSend(msg.ChannelID, "The "+region+" role has been set on your user!") } + return }