diff --git a/discord/admin_commands.go b/discord/admin_commands.go index 8d48d29..d66331f 100644 --- a/discord/admin_commands.go +++ b/discord/admin_commands.go @@ -40,8 +40,9 @@ func (s *Session) handleAddGroupCommand(ctx commandCtx, m *discordgo.MessageCrea if len(ctx.server.Groups) >= groupsPerServer { s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "addGroup.groupLimitHasBeenReached", - DefaultMessage: message.FallbackMsg("addGroup.groupLimitHasBeenReached", "{{.Mention}} The group limit has been reached ({{.Total}}/{{.Limit}})."), + MessageID: "addGroup.groupLimitHasBeenReached", + DefaultMessage: message.FallbackMsg("addGroup.groupLimitHasBeenReached", + "{{.Mention}} The group limit has been reached ({{.Total}}/{{.Limit}})."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), "Total": len(ctx.server.Groups), @@ -59,8 +60,9 @@ func (s *Session) handleAddGroupCommand(ctx commandCtx, m *discordgo.MessageCrea if err := s.cfg.GroupRepository.Store(context.Background(), group); err != nil { s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "internalServerError", - DefaultMessage: message.FallbackMsg("internalServerError", "{{.Mention}} Internal server error occurred, please try again later."), + MessageID: "internalServerError", + DefaultMessage: message.FallbackMsg("internalServerError", + "{{.Mention}} Internal server error occurred, please try again later."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), }, @@ -70,8 +72,9 @@ func (s *Session) handleAddGroupCommand(ctx commandCtx, m *discordgo.MessageCrea s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "addGroup.success", - DefaultMessage: message.FallbackMsg("addGroup.success", "{{.Mention}} A new group has been created (ID: {{.ID}})."), + MessageID: "addGroup.success", + DefaultMessage: message.FallbackMsg("addGroup.success", + "{{.Mention}} A new group has been created (ID: {{.ID}})."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), "ID": group.ID, @@ -90,8 +93,9 @@ func (s *Session) handleDeleteGroupCommand(ctx commandCtx, m *discordgo.MessageC } else if argsLength < 1 { s.SendMessage(m.ChannelID, m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "help.deletegroup", - DefaultMessage: message.FallbackMsg("help.deletegroup", "**{{.Command}}** [group id from {{.GroupsCommand}}] - deletes an observation group."), + MessageID: "help.deletegroup", + DefaultMessage: message.FallbackMsg("help.deletegroup", + "**{{.Command}}** [group id from {{.GroupsCommand}}] - deletes an observation group."), TemplateData: map[string]interface{}{ "Command": DeleteGroupCommand.WithPrefix(s.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(s.cfg.CommandPrefix), @@ -104,8 +108,9 @@ func (s *Session) handleDeleteGroupCommand(ctx commandCtx, m *discordgo.MessageC if err != nil { s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "deleteGroup.invalidID", - DefaultMessage: message.FallbackMsg("deleteGroup.invalidID", "{{.Mention}} The group ID must be a number greater than 0."), + MessageID: "deleteGroup.invalidID", + DefaultMessage: message.FallbackMsg("deleteGroup.invalidID", + "{{.Mention}} The group ID must be a number greater than 0."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), }, @@ -120,8 +125,9 @@ func (s *Session) handleDeleteGroupCommand(ctx commandCtx, m *discordgo.MessageC s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "deleteGroup.success", - DefaultMessage: message.FallbackMsg("deleteGroup.success", "{{.Mention}} The group has been deleted."), + MessageID: "deleteGroup.success", + DefaultMessage: message.FallbackMsg("deleteGroup.success", + "{{.Mention}} The group has been deleted."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), }, @@ -174,8 +180,9 @@ func (s *Session) handleConqueredVillagesCommand(ctx commandCtx, m *discordgo.Me } else if argsLength < 1 { s.SendMessage(m.ChannelID, m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "help.conqueredvillages", - DefaultMessage: message.FallbackMsg("help.conqueredvillages", "**{{.Command}}** [group id from {{.GroupsCommand}}] - changes the channel on which notifications about conquered village will show. **IMPORTANT!** Call this command on the channel you want to display these notifications."), + MessageID: "help.conqueredvillages", + DefaultMessage: message.FallbackMsg("help.conqueredvillages", + "**{{.Command}}** [group id from {{.GroupsCommand}}] - changes the channel on which notifications about conquered village will show. **IMPORTANT!** Call this command on the channel you want to display these notifications."), TemplateData: map[string]interface{}{ "Command": ConqueredVillagesCommand.WithPrefix(s.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(s.cfg.CommandPrefix), @@ -188,8 +195,9 @@ func (s *Session) handleConqueredVillagesCommand(ctx commandCtx, m *discordgo.Me if err != nil { s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "conqueredVillages.invalidID", - DefaultMessage: message.FallbackMsg("conqueredVillages.invalidID", "{{.Mention}} The group ID must be a number greater than 0."), + MessageID: "conqueredVillages.invalidID", + DefaultMessage: message.FallbackMsg("conqueredVillages.invalidID", + "{{.Mention}} The group ID must be a number greater than 0."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), }, @@ -204,8 +212,9 @@ func (s *Session) handleConqueredVillagesCommand(ctx commandCtx, m *discordgo.Me if err != nil || len(groups) == 0 { s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "conqueredVillages.groupNotFound", - DefaultMessage: message.FallbackMsg("conqueredVillages.groupNotFound", "{{.Mention}} Group not found."), + MessageID: "conqueredVillages.groupNotFound", + DefaultMessage: message.FallbackMsg("conqueredVillages.groupNotFound", + "{{.Mention}} Group not found."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), }, @@ -217,8 +226,9 @@ func (s *Session) handleConqueredVillagesCommand(ctx commandCtx, m *discordgo.Me go s.cfg.GroupRepository.Update(context.Background(), groups[0]) s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "conqueredVillages.success", - DefaultMessage: message.FallbackMsg("conqueredVillages.success", "{{.Mention}} Channel changed successfully."), + MessageID: "conqueredVillages.success", + DefaultMessage: message.FallbackMsg("conqueredVillages.success", + "{{.Mention}} Channel changed successfully."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), }, @@ -237,8 +247,9 @@ func (s *Session) handleUnObserveConqueredVillagesCommand(ctx commandCtx, m *dis } else if argsLength < 1 { s.SendMessage(m.ChannelID, m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "help.unobserveconqueredvillages", - DefaultMessage: message.FallbackMsg("help.unobserveconqueredvillages", "**{{.Command}}** [group id from {{.GroupsCommand}}] - disable notifications about conquered villages."), + MessageID: "help.unobserveconqueredvillages", + DefaultMessage: message.FallbackMsg("help.unobserveconqueredvillages", + "**{{.Command}}** [group id from {{.GroupsCommand}}] - disable notifications about conquered villages."), TemplateData: map[string]interface{}{ "Command": UnObserveConqueredVillagesCommand.WithPrefix(s.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(s.cfg.CommandPrefix), @@ -251,8 +262,9 @@ func (s *Session) handleUnObserveConqueredVillagesCommand(ctx commandCtx, m *dis if err != nil { s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "unObserveConqueredVillages.invalidID", - DefaultMessage: message.FallbackMsg("unObserveConqueredVillages.invalidID", "{{.Mention}} The group ID must be a number greater than 0."), + MessageID: "unObserveConqueredVillages.invalidID", + DefaultMessage: message.FallbackMsg("unObserveConqueredVillages.invalidID", + "{{.Mention}} The group ID must be a number greater than 0."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), }, @@ -267,8 +279,9 @@ func (s *Session) handleUnObserveConqueredVillagesCommand(ctx commandCtx, m *dis if err != nil || len(groups) == 0 { s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "unObserveConqueredVillages.groupNotFound", - DefaultMessage: message.FallbackMsg("unObserveConqueredVillages.groupNotFound", "{{.Mention}} Group not found."), + MessageID: "unObserveConqueredVillages.groupNotFound", + DefaultMessage: message.FallbackMsg("unObserveConqueredVillages.groupNotFound", + "{{.Mention}} Group not found."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), }, @@ -282,8 +295,9 @@ func (s *Session) handleUnObserveConqueredVillagesCommand(ctx commandCtx, m *dis } s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "unObserveConqueredVillages.success", - DefaultMessage: message.FallbackMsg("unObserveConqueredVillages.success", "{{.Mention}} Notifications about conquered villages will no longer show up."), + MessageID: "unObserveConqueredVillages.success", + DefaultMessage: message.FallbackMsg("unObserveConqueredVillages.success", + "{{.Mention}} Notifications about conquered villages will no longer show up."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), }, @@ -302,8 +316,9 @@ func (s *Session) handleLostVillagesCommand(ctx commandCtx, m *discordgo.Message } else if argsLength < 1 { s.SendMessage(m.ChannelID, m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "help.lostvillages", - DefaultMessage: message.FallbackMsg("help.lostvillages", "**{{.Command}}** [group id from {{.GroupsCommand}}] changes the channel on which notifications about lost village will show. **IMPORTANT!** Call this command on the channel you want to display these notifications."), + MessageID: "help.lostvillages", + DefaultMessage: message.FallbackMsg("help.lostvillages", + "**{{.Command}}** [group id from {{.GroupsCommand}}] changes the channel on which notifications about lost village will show. **IMPORTANT!** Call this command on the channel you want to display these notifications."), TemplateData: map[string]interface{}{ "Command": LostVillagesCommand.WithPrefix(s.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(s.cfg.CommandPrefix), @@ -316,8 +331,9 @@ func (s *Session) handleLostVillagesCommand(ctx commandCtx, m *discordgo.Message if err != nil { s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "lostVillages.invalidID", - DefaultMessage: message.FallbackMsg("lostVillages.invalidID", "{{.Mention}} The group ID must be a number greater than 0."), + MessageID: "lostVillages.invalidID", + DefaultMessage: message.FallbackMsg("lostVillages.invalidID", + "{{.Mention}} The group ID must be a number greater than 0."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), }, @@ -332,8 +348,9 @@ func (s *Session) handleLostVillagesCommand(ctx commandCtx, m *discordgo.Message if err != nil || len(groups) == 0 { s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "lostVillages.groupNotFound", - DefaultMessage: message.FallbackMsg("lostVillages.groupNotFound", "{{.Mention}} Group not found."), + MessageID: "lostVillages.groupNotFound", + DefaultMessage: message.FallbackMsg("lostVillages.groupNotFound", + "{{.Mention}} Group not found."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), }, @@ -346,8 +363,9 @@ func (s *Session) handleLostVillagesCommand(ctx commandCtx, m *discordgo.Message s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "lostVillages.success", - DefaultMessage: message.FallbackMsg("lostVillages.success", "{{.Mention}} Channel changed successfully."), + MessageID: "lostVillages.success", + DefaultMessage: message.FallbackMsg("lostVillages.success", + "{{.Mention}} Channel changed successfully."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), }, @@ -366,8 +384,9 @@ func (s *Session) handleUnObserveLostVillagesCommand(ctx commandCtx, m *discordg } else if argsLength < 1 { s.SendMessage(m.ChannelID, m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "help.unobservelostvillages", - DefaultMessage: message.FallbackMsg("help.unobservelostvillages", "**{{.Command}}** [group id from {{.GroupsCommand}}] - disable notifications about lost villages."), + MessageID: "help.unobservelostvillages", + DefaultMessage: message.FallbackMsg("help.unobservelostvillages", + "**{{.Command}}** [group id from {{.GroupsCommand}}] - disable notifications about lost villages."), TemplateData: map[string]interface{}{ "Command": UnObserveLostVillagesCommand.WithPrefix(s.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(s.cfg.CommandPrefix), @@ -380,8 +399,9 @@ func (s *Session) handleUnObserveLostVillagesCommand(ctx commandCtx, m *discordg if err != nil { s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "unObserveLostVillages.invalidID", - DefaultMessage: message.FallbackMsg("unObserveLostVillages.invalidID", "{{.Mention}} The group ID must be a number greater than 0."), + MessageID: "unObserveLostVillages.invalidID", + DefaultMessage: message.FallbackMsg("unObserveLostVillages.invalidID", + "{{.Mention}} The group ID must be a number greater than 0."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), }, @@ -396,8 +416,9 @@ func (s *Session) handleUnObserveLostVillagesCommand(ctx commandCtx, m *discordg if err != nil || len(groups) == 0 { s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "unObserveLostVillages.groupNotFound", - DefaultMessage: message.FallbackMsg("unObserveLostVillages.groupNotFound", "{{.Mention}} Group not found."), + MessageID: "unObserveLostVillages.groupNotFound", + DefaultMessage: message.FallbackMsg("unObserveLostVillages.groupNotFound", + "{{.Mention}} Group not found."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), }, @@ -412,8 +433,9 @@ func (s *Session) handleUnObserveLostVillagesCommand(ctx commandCtx, m *discordg s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "unObserveLostVillages.success", - DefaultMessage: message.FallbackMsg("unObserveLostVillages.success", "{{.Mention}} Notifications about lost villages will no longer show up."), + MessageID: "unObserveLostVillages.success", + DefaultMessage: message.FallbackMsg("unObserveLostVillages.success", + "{{.Mention}} Notifications about lost villages will no longer show up."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), }, @@ -432,8 +454,9 @@ func (s *Session) handleObserveCommand(ctx commandCtx, m *discordgo.MessageCreat } else if argsLength < 3 { s.SendMessage(m.ChannelID, m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "help.observe", - DefaultMessage: message.FallbackMsg("help.observe", "**{{.Command}}** [group id from {{.GroupsCommand}}] [server] [tribe id] - command adds a tribe to the observation group."), + MessageID: "help.observe", + DefaultMessage: message.FallbackMsg("help.observe", + "**{{.Command}}** [group id from {{.GroupsCommand}}] [server] [tribe id] - command adds a tribe to the observation group."), TemplateData: map[string]interface{}{ "Command": ObserveCommand.WithPrefix(s.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(s.cfg.CommandPrefix), @@ -446,8 +469,9 @@ func (s *Session) handleObserveCommand(ctx commandCtx, m *discordgo.MessageCreat if err != nil { s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "observe.invalidGroupID", - DefaultMessage: message.FallbackMsg("observe.invalidGroupID", "{{.Mention}} The group ID must be a number greater than 0."), + MessageID: "observe.invalidGroupID", + DefaultMessage: message.FallbackMsg("observe.invalidGroupID", + "{{.Mention}} The group ID must be a number greater than 0."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), }, @@ -459,8 +483,9 @@ func (s *Session) handleObserveCommand(ctx commandCtx, m *discordgo.MessageCreat if err != nil || tribeID <= 0 { s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "observe.invalidTribeID", - DefaultMessage: message.FallbackMsg("observe.invalidTribeID", "{{.Mention}} The tribe ID must be a number greater than 0."), + MessageID: "observe.invalidTribeID", + DefaultMessage: message.FallbackMsg("observe.invalidTribeID", + "{{.Mention}} The tribe ID must be a number greater than 0."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), }, @@ -521,8 +546,9 @@ func (s *Session) handleObserveCommand(ctx commandCtx, m *discordgo.MessageCreat if len(group.Observations) >= observationsPerGroup { s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "observe.observationLimitHasBeenReached", - DefaultMessage: message.FallbackMsg("observe.observationLimitHasBeenReached", "{{.Mention}} The observation limit for this group has been reached ({{.Total}}/{{.Limit}})."), + MessageID: "observe.observationLimitHasBeenReached", + DefaultMessage: message.FallbackMsg("observe.observationLimitHasBeenReached", + "{{.Mention}} The observation limit for this group has been reached ({{.Total}}/{{.Limit}})."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), "Total": len(group.Observations), @@ -540,8 +566,9 @@ func (s *Session) handleObserveCommand(ctx commandCtx, m *discordgo.MessageCreat if err != nil { s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "internalServerError", - DefaultMessage: message.FallbackMsg("internalServerError", "{{.Mention}} Internal server error occurred, please try again later."), + MessageID: "internalServerError", + DefaultMessage: message.FallbackMsg("internalServerError", + "{{.Mention}} Internal server error occurred, please try again later."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), }, @@ -558,7 +585,7 @@ func (s *Session) handleObserveCommand(ctx commandCtx, m *discordgo.MessageCreat })) } -func (s *Session) handleUnObserveCommand(m *discordgo.MessageCreate, args ...string) { +func (s *Session) handleUnObserveCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) { if has, err := s.memberHasPermission(m.GuildID, m.Author.ID, discordgo.PermissionAdministrator); err != nil || !has { return } @@ -569,30 +596,56 @@ func (s *Session) handleUnObserveCommand(m *discordgo.MessageCreate, args ...str return } else if argsLength < 2 { s.SendMessage(m.ChannelID, - fmt.Sprintf(`%s %s [id grupy] [id obserwacji]`, - m.Author.Mention(), - UnObserveCommand.WithPrefix(s.cfg.CommandPrefix))) + m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ + MessageID: "help.unobserve", + DefaultMessage: message.FallbackMsg("help.unobserve", + "**{{.Command}}** [group id from {{.GroupsCommand}}] [id from {{.ObservationsCommand}}] - removes a tribe from the observation group."), + TemplateData: map[string]interface{}{ + "Command": UnObserveCommand.WithPrefix(s.cfg.CommandPrefix), + "ObservationsCommand": ObservationsCommand.WithPrefix(s.cfg.CommandPrefix), + "GroupsCommand": GroupsCommand.WithPrefix(s.cfg.CommandPrefix), + }, + })) return } groupID, err := strconv.Atoi(args[0]) if err != nil { s.SendMessage(m.ChannelID, - fmt.Sprintf(`%s ID grupy powinno być liczbą całkowitą większą od 0.`, - m.Author.Mention())) + ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ + MessageID: "unObserve.invalidGroupID", + DefaultMessage: message.FallbackMsg("unObserve.invalidGroupID", + "{{.Mention}} The group ID must be a number greater than 0."), + TemplateData: map[string]interface{}{ + "Mention": m.Author.Mention(), + }, + })) return } observationID, err := strconv.Atoi(args[1]) if err != nil { s.SendMessage(m.ChannelID, - fmt.Sprintf(`%s ID obserwacji powinno być liczbą całkowitą większą od 0.`, - m.Author.Mention())) + ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ + MessageID: "unObserve.invalidTribeID", + DefaultMessage: message.FallbackMsg("unObserve.invalidTribeID", + "{{.Mention}} The tribe ID must be a number greater than 0."), + TemplateData: map[string]interface{}{ + "Mention": m.Author.Mention(), + }, + })) return } group, err := s.cfg.GroupRepository.GetByID(context.Background(), groupID) if err != nil || group.ServerID != m.GuildID { - s.SendMessage(m.ChannelID, m.Author.Mention()+` Nie znaleziono grupy.`) + s.SendMessage(m.ChannelID, + ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ + MessageID: "unObserve.groupNotFound", + DefaultMessage: message.FallbackMsg("unObserve.groupNotFound", "{{.Mention}} Group not found."), + TemplateData: map[string]interface{}{ + "Mention": m.Author.Mention(), + }, + })) return } @@ -601,7 +654,13 @@ func (s *Session) handleUnObserveCommand(m *discordgo.MessageCreate, args ...str ID: []int{observationID}, }) - s.SendMessage(m.ChannelID, m.Author.Mention()+` Usunięto.`) + s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ + MessageID: "unObserve.success", + DefaultMessage: message.FallbackMsg("unObserve.success", "{{.Mention}} Deleted."), + TemplateData: map[string]interface{}{ + "Mention": m.Author.Mention(), + }, + })) } func (s *Session) handleObservationsCommand(m *discordgo.MessageCreate, args ...string) { @@ -643,11 +702,9 @@ func (s *Session) handleObservationsCommand(m *discordgo.MessageCreate, args ... } tribeIDsByServer := make(map[string][]int) - observationIndexByTribeID := make(map[int]int) langTags := []shared_models.LanguageTag{} - for i, observation := range observations { + for _, observation := range observations { tribeIDsByServer[observation.Server] = append(tribeIDsByServer[observation.Server], observation.TribeID) - observationIndexByTribeID[observation.TribeID] = i currentLangTag := utils.LanguageTagFromWorldName(observation.Server) unique := true for _, langTag := range langTags { @@ -669,7 +726,12 @@ func (s *Session) handleObservationsCommand(m *discordgo.MessageCreate, args ... return } for _, tribe := range list.Items { - observations[observationIndexByTribeID[tribe.ID]].Tribe = tribe + for _, observation := range observations { + if observation.TribeID == tribe.ID && observation.Server == server { + observation.Tribe = tribe + break + } + } } } langVersionList, err := s.cfg.API.LangVersions.Browse(&shared_models.LangVersionFilter{ @@ -679,21 +741,22 @@ func (s *Session) handleObservationsCommand(m *discordgo.MessageCreate, args ... msg := &EmbedMessage{} if len(observations) <= 0 { msg.Append("Brak") - } - for i, observation := range observations { - tag := "Unknown" - if observation.Tribe != nil { - tag = observation.Tribe.Tag + } else { + for i, observation := range observations { + tag := "Unknown" + if observation.Tribe != nil { + tag = observation.Tribe.Tag + } + lv := utils.FindLangVersionByTag(langVersionList.Items, utils.LanguageTagFromWorldName(observation.Server)) + tribeURL := "" + if lv != nil { + tribeURL = utils.FormatTribeURL(observation.Server, lv.Host, observation.TribeID) + } + msg.Append(fmt.Sprintf("**%d** | %d - %s - [``%s``](%s)\n", i+1, observation.ID, + observation.Server, + tag, + tribeURL)) } - lv := utils.FindLangVersionByTag(langVersionList.Items, utils.LanguageTagFromWorldName(observation.Server)) - tribeURL := "" - if lv != nil { - tribeURL = utils.FormatTribeURL(observation.Server, lv.Host, observation.TribeID) - } - msg.Append(fmt.Sprintf("**%d** | %d - %s - [``%s``](%s)\n", i+1, observation.ID, - observation.Server, - tag, - tribeURL)) } s.SendEmbed(m.ChannelID, NewEmbed(). SetTitle("Lista obserwowanych plemion\nIndeks | ID - Serwer - Plemię"). diff --git a/discord/discord.go b/discord/discord.go index 69bce8e..21421cb 100644 --- a/discord/discord.go +++ b/discord/discord.go @@ -120,7 +120,7 @@ func (s *Session) handleNewMessage(_ *discordgo.Session, m *discordgo.MessageCre case ObserveCommand.WithPrefix(s.cfg.CommandPrefix): s.handleObserveCommand(ctx, m, args...) case UnObserveCommand.WithPrefix(s.cfg.CommandPrefix): - s.handleUnObserveCommand(m, args...) + s.handleUnObserveCommand(ctx, m, args...) case ObservationsCommand.WithPrefix(s.cfg.CommandPrefix): s.handleObservationsCommand(m, args...) case ConqueredVillagesCommand.WithPrefix(s.cfg.CommandPrefix): diff --git a/discord/public_commands.go b/discord/public_commands.go index 99ce25a..3fed911 100644 --- a/discord/public_commands.go +++ b/discord/public_commands.go @@ -37,43 +37,49 @@ func (s *Session) handleHelpCommand(ctx commandCtx, m *discordgo.MessageCreate) - %s `, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "help.tribe.topatt", - DefaultMessage: message.FallbackMsg("help.tribe.topatt", "**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by ODA."), + MessageID: "help.tribe.topatt", + DefaultMessage: message.FallbackMsg("help.tribe.topatt", + "**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by ODA."), TemplateData: map[string]interface{}{ "Command": tribeCMDWithPrefix + " " + TopAttCommand.String(), }, }), ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "help.tribe.topdef", - DefaultMessage: message.FallbackMsg("help.tribe.topdef", "**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by ODD."), + MessageID: "help.tribe.topdef", + DefaultMessage: message.FallbackMsg("help.tribe.topdef", + "**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by ODD."), TemplateData: map[string]interface{}{ "Command": tribeCMDWithPrefix + " " + TopDefCommand.String(), }, }), ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "help.tribe.topsupp", - DefaultMessage: message.FallbackMsg("help.tribe.topsupp", "**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by ODS."), + MessageID: "help.tribe.topsupp", + DefaultMessage: message.FallbackMsg("help.tribe.topsupp", + "**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by ODS."), TemplateData: map[string]interface{}{ "Command": tribeCMDWithPrefix + " " + TopSuppCommand.String(), }, }), ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "help.tribe.toptotal", - DefaultMessage: message.FallbackMsg("help.tribe.toptotal", "**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by OD."), + MessageID: "help.tribe.toptotal", + DefaultMessage: message.FallbackMsg("help.tribe.toptotal", + "**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by OD."), TemplateData: map[string]interface{}{ "Command": tribeCMDWithPrefix + " " + TopTotalCommand.String(), }, }), ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "help.tribe.toppoints", - DefaultMessage: message.FallbackMsg("help.tribe.toppoints", "**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by points."), + MessageID: "help.tribe.toppoints", + DefaultMessage: message.FallbackMsg("help.tribe.toppoints", + "**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by points."), TemplateData: map[string]interface{}{ "Command": tribeCMDWithPrefix + " " + TopPointsCommand.String(), }, }), ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "help.author", - DefaultMessage: message.FallbackMsg("help.author", "**{{.Command}}** - shows how to contact the author."), + MessageID: "help.author", + DefaultMessage: message.FallbackMsg("help.author", + "**{{.Command}}** - shows how to contact the author."), TemplateData: map[string]interface{}{ "Command": AuthorCommand.WithPrefix(s.cfg.CommandPrefix), }, @@ -92,54 +98,61 @@ func (s *Session) handleHelpCommand(ctx commandCtx, m *discordgo.MessageCreate) - %s `, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "help.addgroup", - DefaultMessage: message.FallbackMsg("help.addgroup", "**{{.Command}}** - adds a new observation group."), + MessageID: "help.addgroup", + DefaultMessage: message.FallbackMsg("help.addgroup", + "**{{.Command}}** - adds a new observation group."), TemplateData: map[string]interface{}{ "Command": AddGroupCommand.WithPrefix(s.cfg.CommandPrefix), }, }), ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "help.groups", - DefaultMessage: message.FallbackMsg("help.groups", "**{{.Command}}** - shows you a list of groups created by this guild."), + MessageID: "help.groups", + DefaultMessage: message.FallbackMsg("help.groups", + "**{{.Command}}** - shows you a list of groups created by this guild."), TemplateData: map[string]interface{}{ "Command": GroupsCommand.WithPrefix(s.cfg.CommandPrefix), }, }), ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "help.deletegroup", - DefaultMessage: message.FallbackMsg("help.deletegroup", "**{{.Command}}** [group id from {{.GroupsCommand}}] - deletes an observation group."), + MessageID: "help.deletegroup", + DefaultMessage: message.FallbackMsg("help.deletegroup", + "**{{.Command}}** [group id from {{.GroupsCommand}}] - deletes an observation group."), TemplateData: map[string]interface{}{ "Command": DeleteGroupCommand.WithPrefix(s.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(s.cfg.CommandPrefix), }, }), ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "help.showennobledbarbs", - DefaultMessage: message.FallbackMsg("help.showennobledbarbs", "**{{.Command}}** [group id from {{.GroupsCommand}}] - enables/disables notifications about ennobling barbarian villages."), + MessageID: "help.showennobledbarbs", + DefaultMessage: message.FallbackMsg("help.showennobledbarbs", + "**{{.Command}}** [group id from {{.GroupsCommand}}] - enables/disables notifications about ennobling barbarian villages."), TemplateData: map[string]interface{}{ "Command": ShowEnnobledBarbariansCommand.WithPrefix(s.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(s.cfg.CommandPrefix), }, }), ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "help.observe", - DefaultMessage: message.FallbackMsg("help.observe", "**{{.Command}}** [group id from {{.GroupsCommand}}] [server] [tribe id] - command adds a tribe to the observation group."), + MessageID: "help.observe", + DefaultMessage: message.FallbackMsg("help.observe", + "**{{.Command}}** [group id from {{.GroupsCommand}}] [server] [tribe id] - command adds a tribe to the observation group."), TemplateData: map[string]interface{}{ "Command": ObserveCommand.WithPrefix(s.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(s.cfg.CommandPrefix), }, }), ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "help.observations", - DefaultMessage: message.FallbackMsg("help.observations", "**{{.Command}}** [group id from {{.GroupsCommand}}] shows a list of observed tribes by this group."), + MessageID: "help.observations", + DefaultMessage: message.FallbackMsg("help.observations", + "**{{.Command}}** [group id from {{.GroupsCommand}}] shows a list of observed tribes by this group."), TemplateData: map[string]interface{}{ "Command": ObservationsCommand.WithPrefix(s.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(s.cfg.CommandPrefix), }, }), ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "help.unobserve", - DefaultMessage: message.FallbackMsg("help.unobserve", "**{{.Command}}** [group id from {{.GroupsCommand}}] [id from {{.ObservationsCommand}}] - removes a tribe to the observation group."), + MessageID: "help.unobserve", + DefaultMessage: message.FallbackMsg("help.unobserve", + "**{{.Command}}** [group id from {{.GroupsCommand}}] [id from {{.ObservationsCommand}}] - removes a tribe from the observation group."), TemplateData: map[string]interface{}{ "Command": UnObserveCommand.WithPrefix(s.cfg.CommandPrefix), "ObservationsCommand": ObservationsCommand.WithPrefix(s.cfg.CommandPrefix), @@ -147,16 +160,18 @@ func (s *Session) handleHelpCommand(ctx commandCtx, m *discordgo.MessageCreate) }, }), ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "help.conqueredvillages", - DefaultMessage: message.FallbackMsg("help.conqueredvillages", "**{{.Command}}** [group id from {{.GroupsCommand}}] - changes the channel on which notifications about conquered village will show. IMPORTANT! Call this command on the channel you want to display these notifications."), + MessageID: "help.conqueredvillages", + DefaultMessage: message.FallbackMsg("help.conqueredvillages", + "**{{.Command}}** [group id from {{.GroupsCommand}}] - changes the channel on which notifications about conquered village will show. IMPORTANT! Call this command on the channel you want to display these notifications."), TemplateData: map[string]interface{}{ "Command": ConqueredVillagesCommand.WithPrefix(s.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(s.cfg.CommandPrefix), }, }), ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "help.unobserveconqueredvillages", - DefaultMessage: message.FallbackMsg("help.unobserveconqueredvillages", "**{{.Command}}** [group id from {{.GroupsCommand}}] - disable notifications about conquered villages."), + MessageID: "help.unobserveconqueredvillages", + DefaultMessage: message.FallbackMsg("help.unobserveconqueredvillages", + "**{{.Command}}** [group id from {{.GroupsCommand}}] - disable notifications about conquered villages."), TemplateData: map[string]interface{}{ "Command": UnObserveConqueredVillagesCommand.WithPrefix(s.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(s.cfg.CommandPrefix), @@ -169,16 +184,18 @@ func (s *Session) handleHelpCommand(ctx commandCtx, m *discordgo.MessageCreate) - %s `, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "help.lostvillages", - DefaultMessage: message.FallbackMsg("help.lostvillages", "**{{.Command}}** [group id from {{.GroupsCommand}}] changes the channel on which notifications about lost village will show. IMPORTANT! Call this command on the channel you want to display these notifications."), + MessageID: "help.lostvillages", + DefaultMessage: message.FallbackMsg("help.lostvillages", + "**{{.Command}}** [group id from {{.GroupsCommand}}] changes the channel on which notifications about lost village will show. IMPORTANT! Call this command on the channel you want to display these notifications."), TemplateData: map[string]interface{}{ "Command": LostVillagesCommand.WithPrefix(s.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(s.cfg.CommandPrefix), }, }), ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "help.unobservelostvillages", - DefaultMessage: message.FallbackMsg("help.unobservelostvillages", "*{{.Command}}** [group id from {{.GroupsCommand}}] changes the channel on which notifications about lost village will show. IMPORTANT! Call this command on the channel you want to display these notifications."), + MessageID: "help.unobservelostvillages", + DefaultMessage: message.FallbackMsg("help.unobservelostvillages", + "*{{.Command}}** [group id from {{.GroupsCommand}}] changes the channel on which notifications about lost village will show. IMPORTANT! Call this command on the channel you want to display these notifications."), TemplateData: map[string]interface{}{ "Command": UnObserveLostVillagesCommand.WithPrefix(s.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(s.cfg.CommandPrefix), @@ -214,7 +231,9 @@ func (s *Session) handleHelpCommand(ctx commandCtx, m *discordgo.MessageCreate) } func (s *Session) handleAuthorCommand(m *discordgo.MessageCreate) { - s.SendMessage(m.ChannelID, fmt.Sprintf("%s Discord: Kichiyaki#2064 | https://dawid-wysokinski.pl/#contact.", m.Author.Mention())) + s.SendMessage(m.ChannelID, + fmt.Sprintf("%s Discord: Kichiyaki#2064 | https://dawid-wysokinski.pl/#contact.", + m.Author.Mention())) } func (s *Session) handleTribeCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) { @@ -310,8 +329,9 @@ func (s *Session) handleTribeCommand(ctx commandCtx, m *discordgo.MessageCreate, if err != nil { s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "api.defaultError", - DefaultMessage: message.FallbackMsg("api.defaultError", "{{.Mention}} There was an error fetching data from the API, please try again later."), + MessageID: "api.defaultError", + DefaultMessage: message.FallbackMsg("api.defaultError", + "{{.Mention}} There was an error fetching data from the API, please try again later."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), }, @@ -320,8 +340,9 @@ func (s *Session) handleTribeCommand(ctx commandCtx, m *discordgo.MessageCreate, } if playersList == nil || playersList.Total == 0 { s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "tribe.tribesNotFound", - DefaultMessage: message.FallbackMsg("tribe.tribesNotFound", "{{.Mention}} There was an error fetching data from the API, please try again later."), + MessageID: "tribe.tribesNotFound", + DefaultMessage: message.FallbackMsg("tribe.tribesNotFound", + "{{.Mention}} There was an error fetching data from the API, please try again later."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), }, @@ -331,8 +352,9 @@ func (s *Session) handleTribeCommand(ctx commandCtx, m *discordgo.MessageCreate, totalPages := int(math.Ceil(float64(playersList.Total) / float64(limit))) if page > totalPages { s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "tribe.exceededMaximumNumberOfPages", - DefaultMessage: message.FallbackMsg("tribe.exceededMaximumNumberOfPages", "{{.Mention}} You have exceeded the maximum number of pages ({{.Page}}/{{.MaxPage}})."), + MessageID: "tribe.exceededMaximumNumberOfPages", + DefaultMessage: message.FallbackMsg("tribe.exceededMaximumNumberOfPages", + "{{.Mention}} You have exceeded the maximum number of pages ({{.Page}}/{{.MaxPage}})."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), "Page": page, @@ -346,8 +368,9 @@ func (s *Session) handleTribeCommand(ctx commandCtx, m *discordgo.MessageCreate, langVersion, err := s.cfg.API.LangVersions.Read(langTag) if err != nil || langVersion == nil { s.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "internalServerError", - DefaultMessage: message.FallbackMsg("internalServerError", "{{.Mention}} Internal server error occurred, please try again later."), + MessageID: "internalServerError", + DefaultMessage: message.FallbackMsg("internalServerError", + "{{.Mention}} Internal server error occurred, please try again later."), TemplateData: map[string]interface{}{ "Mention": m.Author.Mention(), }, @@ -389,8 +412,9 @@ func (s *Session) handleTribeCommand(ctx commandCtx, m *discordgo.MessageCreate, } msg.Append(ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ - MessageID: "tribe.messageLine", - DefaultMessage: message.FallbackMsg("tribe.messageLine", "**{{.Index}}**. [``{{.PlayerName}}``]({{.PlayerURL}}) (Tribe: [``{{.TribeTag}}``]({{.TribeURL}}) | Rank: **{{.Rank}}** | Score: **{{.Score}}**)\n"), + MessageID: "tribe.messageLine", + DefaultMessage: message.FallbackMsg("tribe.messageLine", + "**{{.Index}}**. [``{{.PlayerName}}``]({{.PlayerURL}}) (Tribe: [``{{.TribeTag}}``]({{.TribeURL}}) | Rank: **{{.Rank}}** | Score: **{{.Score}}**)\n"), TemplateData: map[string]interface{}{ "Index": offset + i + 1, "PlayerName": player.Name, diff --git a/message/translations/active.en.json b/message/translations/active.en.json index d2655d1..bd60ddb 100644 --- a/message/translations/active.en.json +++ b/message/translations/active.en.json @@ -67,6 +67,11 @@ "observe.observationLimitHasBeenReached": "{{.Mention}} The observation limit for this group has been reached ({{.Total}}/{{.Limit}}).", "observe.success": "{{.Mention}} Added.", + "unObserve.invalidGroupID": "{{.Mention}} The group ID must be a number greater than 0.", + "unObserve.invalidObservationID": "{{.Mention}} The observation ID must be a number greater than 0.", + "unObserve.groupNotFound": "{{.Mention}} Group not found.", + "unObserve.success": "{{.Mention}} Deleted.", + "api.defaultError": "{{.Mention}} There was an error fetching data from the API, please try again later.", "pagination.labelDisplayedPage": "Page: {{.Page}} from {{.MaxPage}}",