add a new interface - messageProcessor

This commit is contained in:
Dawid Wysokiński 2021-07-18 09:52:13 +02:00
parent 2adeb4f686
commit 65b6557697
4 changed files with 267 additions and 256 deletions

View File

@ -22,29 +22,29 @@ const (
var coordsRegex = regexp.MustCompile(`(\d+)\|(\d+)`) var coordsRegex = regexp.MustCompile(`(\d+)\|(\d+)`)
type commandCoordsTranslation struct { type hndlrCoordsTranslation struct {
*Session *Session
} }
var _ commandHandler = &commandCoordsTranslation{} var _ commandHandler = &hndlrCoordsTranslation{}
func (c *commandCoordsTranslation) cmd() Command { func (hndlr *hndlrCoordsTranslation) cmd() Command {
return CoordsTranslationCommand return CoordsTranslationCommand
} }
func (c *commandCoordsTranslation) requireAdmPermissions() bool { func (hndlr *hndlrCoordsTranslation) requireAdmPermissions() bool {
return true return true
} }
func (c *commandCoordsTranslation) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) { func (hndlr *hndlrCoordsTranslation) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
argsLength := len(args) argsLength := len(args)
if argsLength != 1 { if argsLength != 1 {
c.SendMessage( hndlr.SendMessage(
m.ChannelID, m.ChannelID,
m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpCoordsTranslation, MessageID: message.HelpCoordsTranslation,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": c.cmd().WithPrefix(c.cfg.CommandPrefix), "Command": hndlr.cmd().WithPrefix(hndlr.cfg.CommandPrefix),
}, },
}), }),
) )
@ -52,9 +52,9 @@ func (c *commandCoordsTranslation) execute(ctx *commandCtx, m *discordgo.Message
} }
serverKey := args[0] serverKey := args[0]
server, err := c.cfg.API.Server.Read(serverKey, nil) server, err := hndlr.cfg.API.Server.Read(serverKey, nil)
if err != nil || server == nil { if err != nil || server == nil {
c.SendMessage( hndlr.SendMessage(
m.ChannelID, m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.CoordsTranslationServerNotFound, MessageID: message.CoordsTranslationServerNotFound,
@ -67,9 +67,9 @@ func (c *commandCoordsTranslation) execute(ctx *commandCtx, m *discordgo.Message
} }
ctx.server.CoordsTranslation = serverKey ctx.server.CoordsTranslation = serverKey
go c.cfg.ServerRepository.Update(context.Background(), ctx.server) go hndlr.cfg.ServerRepository.Update(context.Background(), ctx.server)
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.CoordsTranslationSuccess, MessageID: message.CoordsTranslationSuccess,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -78,25 +78,25 @@ func (c *commandCoordsTranslation) execute(ctx *commandCtx, m *discordgo.Message
})) }))
} }
type commandDisableCoordsTranslation struct { type hndlrDisableCoordsTranslation struct {
*Session *Session
} }
var _ commandHandler = &commandDisableCoordsTranslation{} var _ commandHandler = &hndlrDisableCoordsTranslation{}
func (c *commandDisableCoordsTranslation) cmd() Command { func (hndlr *hndlrDisableCoordsTranslation) cmd() Command {
return DisableCoordsTranslationCommand return DisableCoordsTranslationCommand
} }
func (c *commandDisableCoordsTranslation) requireAdmPermissions() bool { func (hndlr *hndlrDisableCoordsTranslation) requireAdmPermissions() bool {
return true return true
} }
func (c *commandDisableCoordsTranslation) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) { func (hndlr *hndlrDisableCoordsTranslation) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
ctx.server.CoordsTranslation = "" ctx.server.CoordsTranslation = ""
go c.cfg.ServerRepository.Update(context.Background(), ctx.server) go hndlr.cfg.ServerRepository.Update(context.Background(), ctx.server)
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.DisableCoordsTranslationSuccess, MessageID: message.DisableCoordsTranslationSuccess,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -105,21 +105,25 @@ func (c *commandDisableCoordsTranslation) execute(ctx *commandCtx, m *discordgo.
})) }))
} }
func (s *Session) translateCoords(ctx *commandCtx, m *discordgo.MessageCreate) { type procTranslateCoords struct {
*Session
}
func (p *procTranslateCoords) process(ctx *commandCtx, m *discordgo.MessageCreate) {
if ctx.server.CoordsTranslation == "" { if ctx.server.CoordsTranslation == "" {
return return
} }
coords := coordsRegex.FindAllString(m.Content, -1) coords := coordsRegex.FindAllString(m.Content, -1)
coordsLen := len(coords) coordsLen := len(coords)
if coordsLen > 0 { if coordsLen > 0 {
version, err := s.cfg.API.Version.Read(twmodel.VersionCodeFromServerKey(ctx.server.CoordsTranslation)) version, err := p.cfg.API.Version.Read(twmodel.VersionCodeFromServerKey(ctx.server.CoordsTranslation))
if err != nil || version == nil { if err != nil || version == nil {
return return
} }
if coordsLen > coordsLimit { if coordsLen > coordsLimit {
coords = coords[0:coordsLimit] coords = coords[0:coordsLimit]
} }
list, err := s.cfg.API.Village.Browse(ctx.server.CoordsTranslation, list, err := p.cfg.API.Village.Browse(ctx.server.CoordsTranslation,
0, 0,
0, 0,
[]string{}, []string{},
@ -137,7 +141,7 @@ func (s *Session) translateCoords(ctx *commandCtx, m *discordgo.MessageCreate) {
return return
} }
msg := &MessageEmbedFieldBuilder{} bldr := &MessageEmbedFieldBuilder{}
for _, village := range list.Items { for _, village := range list.Items {
villageURL := twurlbuilder.BuildVillageURL(ctx.server.CoordsTranslation, version.Host, village.ID) villageURL := twurlbuilder.BuildVillageURL(ctx.server.CoordsTranslation, version.Host, village.ID)
playerName := "-" playerName := "-"
@ -153,7 +157,7 @@ func (s *Session) translateCoords(ctx *commandCtx, m *discordgo.MessageCreate) {
tribeURL = twurlbuilder.BuildTribeURL(ctx.server.CoordsTranslation, version.Host, village.Player.Tribe.ID) tribeURL = twurlbuilder.BuildTribeURL(ctx.server.CoordsTranslation, version.Host, village.Player.Tribe.ID)
} }
msg.Append(ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ bldr.Append(ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.CoordsTranslationMessage, MessageID: message.CoordsTranslationMessage,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Village": BuildLink(village.FullName(), villageURL), "Village": BuildLink(village.FullName(), villageURL),
@ -163,10 +167,10 @@ func (s *Session) translateCoords(ctx *commandCtx, m *discordgo.MessageCreate) {
}) + "\n") }) + "\n")
} }
s.SendEmbed(m.ChannelID, NewEmbed(). p.SendEmbed(m.ChannelID, NewEmbed().
SetTitle(ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ SetTitle(ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.CoordsTranslationTitle, MessageID: message.CoordsTranslationTitle,
})). })).
SetFields(msg.ToMessageEmbedFields())) SetFields(bldr.ToMessageEmbedFields()))
} }
} }

View File

@ -0,0 +1,7 @@
package discord
import "github.com/bwmarrin/discordgo"
type messageProcessor interface {
process(ctx *commandCtx, m *discordgo.MessageCreate)
}

View File

@ -39,23 +39,23 @@ const (
ShowInternalsCommand Command = "showinternals" ShowInternalsCommand Command = "showinternals"
) )
type commandAddGroup struct { type hndlrAddGroup struct {
*Session *Session
} }
var _ commandHandler = &commandAddGroup{} var _ commandHandler = &hndlrAddGroup{}
func (c *commandAddGroup) cmd() Command { func (hndlr *hndlrAddGroup) cmd() Command {
return AddGroupCommand return AddGroupCommand
} }
func (c *commandAddGroup) requireAdmPermissions() bool { func (hndlr *hndlrAddGroup) requireAdmPermissions() bool {
return true return true
} }
func (c *commandAddGroup) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) { func (hndlr *hndlrAddGroup) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
if len(ctx.server.Groups) >= groupsPerServer { if len(ctx.server.Groups) >= groupsPerServer {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.AddGroupLimitHasBeenReached, MessageID: message.AddGroupLimitHasBeenReached,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -72,8 +72,8 @@ func (c *commandAddGroup) execute(ctx *commandCtx, m *discordgo.MessageCreate, a
ShowEnnobledBarbarians: true, ShowEnnobledBarbarians: true,
} }
if err := c.cfg.GroupRepository.Store(context.Background(), group); err != nil { if err := hndlr.cfg.GroupRepository.Store(context.Background(), group); err != nil {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.InternalServerError, MessageID: message.InternalServerError,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -83,7 +83,7 @@ func (c *commandAddGroup) execute(ctx *commandCtx, m *discordgo.MessageCreate, a
return return
} }
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.AddGroupSuccess, MessageID: message.AddGroupSuccess,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -93,29 +93,29 @@ func (c *commandAddGroup) execute(ctx *commandCtx, m *discordgo.MessageCreate, a
})) }))
} }
type commandDeleteGroup struct { type hndlrDeleteGroup struct {
*Session *Session
} }
var _ commandHandler = &commandDeleteGroup{} var _ commandHandler = &hndlrDeleteGroup{}
func (c *commandDeleteGroup) cmd() Command { func (hndlr *hndlrDeleteGroup) cmd() Command {
return DeleteGroupCommand return DeleteGroupCommand
} }
func (c *commandDeleteGroup) requireAdmPermissions() bool { func (hndlr *hndlrDeleteGroup) requireAdmPermissions() bool {
return true return true
} }
func (c *commandDeleteGroup) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) { func (hndlr *hndlrDeleteGroup) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
argsLength := len(args) argsLength := len(args)
if argsLength != 1 { if argsLength != 1 {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpDeleteGroup, MessageID: message.HelpDeleteGroup,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": DeleteGroupCommand.WithPrefix(c.cfg.CommandPrefix), "Command": DeleteGroupCommand.WithPrefix(hndlr.cfg.CommandPrefix),
"GroupsCommand": GroupsCommand.WithPrefix(c.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
})) }))
return return
@ -123,7 +123,7 @@ func (c *commandDeleteGroup) execute(ctx *commandCtx, m *discordgo.MessageCreate
groupID, err := strconv.Atoi(args[0]) groupID, err := strconv.Atoi(args[0])
if err != nil { if err != nil {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.DeleteGroupInvalidID, MessageID: message.DeleteGroupInvalidID,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -133,12 +133,12 @@ func (c *commandDeleteGroup) execute(ctx *commandCtx, m *discordgo.MessageCreate
return return
} }
go c.cfg.GroupRepository.Delete(context.Background(), &model.GroupFilter{ go hndlr.cfg.GroupRepository.Delete(context.Background(), &model.GroupFilter{
ID: []int{groupID}, ID: []int{groupID},
ServerID: []string{m.GuildID}, ServerID: []string{m.GuildID},
}) })
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.DeleteGroupSuccess, MessageID: message.DeleteGroupSuccess,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -147,22 +147,22 @@ func (c *commandDeleteGroup) execute(ctx *commandCtx, m *discordgo.MessageCreate
})) }))
} }
type commandGroups struct { type hndlrGroups struct {
*Session *Session
} }
var _ commandHandler = &commandGroups{} var _ commandHandler = &hndlrGroups{}
func (c *commandGroups) cmd() Command { func (hndlr *hndlrGroups) cmd() Command {
return GroupsCommand return GroupsCommand
} }
func (c *commandGroups) requireAdmPermissions() bool { func (hndlr *hndlrGroups) requireAdmPermissions() bool {
return true return true
} }
func (c *commandGroups) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) { func (hndlr *hndlrGroups) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
groups, _, err := c.cfg.GroupRepository.Fetch(context.Background(), &model.GroupFilter{ groups, _, err := hndlr.cfg.GroupRepository.Fetch(context.Background(), &model.GroupFilter{
ServerID: []string{m.GuildID}, ServerID: []string{m.GuildID},
DefaultFilter: model.DefaultFilter{ DefaultFilter: model.DefaultFilter{
Order: []string{"id ASC"}, Order: []string{"id ASC"},
@ -189,7 +189,7 @@ func (c *commandGroups) execute(ctx *commandCtx, m *discordgo.MessageCreate, arg
}) })
} }
c.SendEmbed(m.ChannelID, NewEmbed(). hndlr.SendEmbed(m.ChannelID, NewEmbed().
SetTitle(ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ SetTitle(ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.GroupsTitle, MessageID: message.GroupsTitle,
})). })).
@ -198,29 +198,29 @@ func (c *commandGroups) execute(ctx *commandCtx, m *discordgo.MessageCreate, arg
}), msg)) }), msg))
} }
type commandConqueredVillages struct { type hndlrConqueredVillages struct {
*Session *Session
} }
var _ commandHandler = &commandConqueredVillages{} var _ commandHandler = &hndlrConqueredVillages{}
func (c *commandConqueredVillages) cmd() Command { func (hndlr *hndlrConqueredVillages) cmd() Command {
return ConqueredVillagesCommand return ConqueredVillagesCommand
} }
func (c *commandConqueredVillages) requireAdmPermissions() bool { func (hndlr *hndlrConqueredVillages) requireAdmPermissions() bool {
return true return true
} }
func (c *commandConqueredVillages) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) { func (hndlr *hndlrConqueredVillages) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
argsLength := len(args) argsLength := len(args)
if argsLength != 1 { if argsLength != 1 {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpConqueredVillages, MessageID: message.HelpConqueredVillages,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": c.cmd().WithPrefix(c.cfg.CommandPrefix), "Command": hndlr.cmd().WithPrefix(hndlr.cfg.CommandPrefix),
"GroupsCommand": GroupsCommand.WithPrefix(c.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
})) }))
return return
@ -228,7 +228,7 @@ func (c *commandConqueredVillages) execute(ctx *commandCtx, m *discordgo.Message
groupID, err := strconv.Atoi(args[0]) groupID, err := strconv.Atoi(args[0])
if err != nil { if err != nil {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ConqueredVillagesInvalidID, MessageID: message.ConqueredVillagesInvalidID,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -238,12 +238,12 @@ func (c *commandConqueredVillages) execute(ctx *commandCtx, m *discordgo.Message
return return
} }
groups, _, err := c.cfg.GroupRepository.Fetch(context.Background(), &model.GroupFilter{ groups, _, err := hndlr.cfg.GroupRepository.Fetch(context.Background(), &model.GroupFilter{
ID: []int{groupID}, ID: []int{groupID},
ServerID: []string{m.GuildID}, ServerID: []string{m.GuildID},
}) })
if err != nil || len(groups) == 0 { if err != nil || len(groups) == 0 {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ConqueredVillagesGroupNotFound, MessageID: message.ConqueredVillagesGroupNotFound,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -254,8 +254,8 @@ func (c *commandConqueredVillages) execute(ctx *commandCtx, m *discordgo.Message
} }
groups[0].ConqueredVillagesChannelID = m.ChannelID groups[0].ConqueredVillagesChannelID = m.ChannelID
go c.cfg.GroupRepository.Update(context.Background(), groups[0]) go hndlr.cfg.GroupRepository.Update(context.Background(), groups[0])
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ConqueredVillagesSuccess, MessageID: message.ConqueredVillagesSuccess,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -264,29 +264,29 @@ func (c *commandConqueredVillages) execute(ctx *commandCtx, m *discordgo.Message
})) }))
} }
type commandDisableConqueredVillages struct { type hndlrDisableConqueredVillages struct {
*Session *Session
} }
var _ commandHandler = &commandDisableConqueredVillages{} var _ commandHandler = &hndlrDisableConqueredVillages{}
func (c *commandDisableConqueredVillages) cmd() Command { func (hndlr *hndlrDisableConqueredVillages) cmd() Command {
return DisableConqueredVillagesCommand return DisableConqueredVillagesCommand
} }
func (c *commandDisableConqueredVillages) requireAdmPermissions() bool { func (hndlr *hndlrDisableConqueredVillages) requireAdmPermissions() bool {
return true return true
} }
func (c *commandDisableConqueredVillages) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) { func (hndlr *hndlrDisableConqueredVillages) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
argsLength := len(args) argsLength := len(args)
if argsLength != 1 { if argsLength != 1 {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpDisableConqueredVillages, MessageID: message.HelpDisableConqueredVillages,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": c.cmd().WithPrefix(c.cfg.CommandPrefix), "Command": hndlr.cmd().WithPrefix(hndlr.cfg.CommandPrefix),
"GroupsCommand": GroupsCommand.WithPrefix(c.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
})) }))
return return
@ -294,7 +294,7 @@ func (c *commandDisableConqueredVillages) execute(ctx *commandCtx, m *discordgo.
groupID, err := strconv.Atoi(args[0]) groupID, err := strconv.Atoi(args[0])
if err != nil { if err != nil {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.DisableConqueredVillagesInvalidID, MessageID: message.DisableConqueredVillagesInvalidID,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -304,12 +304,12 @@ func (c *commandDisableConqueredVillages) execute(ctx *commandCtx, m *discordgo.
return return
} }
groups, _, err := c.cfg.GroupRepository.Fetch(context.Background(), &model.GroupFilter{ groups, _, err := hndlr.cfg.GroupRepository.Fetch(context.Background(), &model.GroupFilter{
ID: []int{groupID}, ID: []int{groupID},
ServerID: []string{m.GuildID}, ServerID: []string{m.GuildID},
}) })
if err != nil || len(groups) == 0 { if err != nil || len(groups) == 0 {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.DisableConqueredVillagesGroupNotFound, MessageID: message.DisableConqueredVillagesGroupNotFound,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -321,9 +321,9 @@ func (c *commandDisableConqueredVillages) execute(ctx *commandCtx, m *discordgo.
if groups[0].ConqueredVillagesChannelID != "" { if groups[0].ConqueredVillagesChannelID != "" {
groups[0].ConqueredVillagesChannelID = "" groups[0].ConqueredVillagesChannelID = ""
go c.cfg.GroupRepository.Update(context.Background(), groups[0]) go hndlr.cfg.GroupRepository.Update(context.Background(), groups[0])
} }
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.DisableConqueredVillagesSuccess, MessageID: message.DisableConqueredVillagesSuccess,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -332,29 +332,29 @@ func (c *commandDisableConqueredVillages) execute(ctx *commandCtx, m *discordgo.
})) }))
} }
type commandLostVillages struct { type hndlrLostVillages struct {
*Session *Session
} }
var _ commandHandler = &commandLostVillages{} var _ commandHandler = &hndlrLostVillages{}
func (c *commandLostVillages) cmd() Command { func (hndlr *hndlrLostVillages) cmd() Command {
return LostVillagesCommand return LostVillagesCommand
} }
func (c *commandLostVillages) requireAdmPermissions() bool { func (hndlr *hndlrLostVillages) requireAdmPermissions() bool {
return true return true
} }
func (c *commandLostVillages) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) { func (hndlr *hndlrLostVillages) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
argsLength := len(args) argsLength := len(args)
if argsLength != 1 { if argsLength != 1 {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpLostVillages, MessageID: message.HelpLostVillages,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": c.cmd().WithPrefix(c.cfg.CommandPrefix), "Command": hndlr.cmd().WithPrefix(hndlr.cfg.CommandPrefix),
"GroupsCommand": GroupsCommand.WithPrefix(c.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
})) }))
return return
@ -362,7 +362,7 @@ func (c *commandLostVillages) execute(ctx *commandCtx, m *discordgo.MessageCreat
groupID, err := strconv.Atoi(args[0]) groupID, err := strconv.Atoi(args[0])
if err != nil { if err != nil {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.LostVillagesInvalidID, MessageID: message.LostVillagesInvalidID,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -372,12 +372,12 @@ func (c *commandLostVillages) execute(ctx *commandCtx, m *discordgo.MessageCreat
return return
} }
groups, _, err := c.cfg.GroupRepository.Fetch(context.Background(), &model.GroupFilter{ groups, _, err := hndlr.cfg.GroupRepository.Fetch(context.Background(), &model.GroupFilter{
ID: []int{groupID}, ID: []int{groupID},
ServerID: []string{m.GuildID}, ServerID: []string{m.GuildID},
}) })
if err != nil || len(groups) == 0 { if err != nil || len(groups) == 0 {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.LostVillagesGroupNotFound, MessageID: message.LostVillagesGroupNotFound,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -388,9 +388,9 @@ func (c *commandLostVillages) execute(ctx *commandCtx, m *discordgo.MessageCreat
} }
groups[0].LostVillagesChannelID = m.ChannelID groups[0].LostVillagesChannelID = m.ChannelID
go c.cfg.GroupRepository.Update(context.Background(), groups[0]) go hndlr.cfg.GroupRepository.Update(context.Background(), groups[0])
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.LostVillagesSuccess, MessageID: message.LostVillagesSuccess,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -399,29 +399,29 @@ func (c *commandLostVillages) execute(ctx *commandCtx, m *discordgo.MessageCreat
})) }))
} }
type commandDisableLostVillages struct { type hndlrDisableLostVillages struct {
*Session *Session
} }
var _ commandHandler = &commandDisableLostVillages{} var _ commandHandler = &hndlrDisableLostVillages{}
func (c *commandDisableLostVillages) cmd() Command { func (hndlr *hndlrDisableLostVillages) cmd() Command {
return DisableLostVillagesCommand return DisableLostVillagesCommand
} }
func (c *commandDisableLostVillages) requireAdmPermissions() bool { func (hndlr *hndlrDisableLostVillages) requireAdmPermissions() bool {
return true return true
} }
func (c *commandDisableLostVillages) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) { func (hndlr *hndlrDisableLostVillages) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
argsLength := len(args) argsLength := len(args)
if argsLength != 1 { if argsLength != 1 {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpDisableLostVillages, MessageID: message.HelpDisableLostVillages,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": c.cmd().WithPrefix(c.cfg.CommandPrefix), "Command": hndlr.cmd().WithPrefix(hndlr.cfg.CommandPrefix),
"GroupsCommand": GroupsCommand.WithPrefix(c.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
})) }))
return return
@ -429,7 +429,7 @@ func (c *commandDisableLostVillages) execute(ctx *commandCtx, m *discordgo.Messa
groupID, err := strconv.Atoi(args[0]) groupID, err := strconv.Atoi(args[0])
if err != nil { if err != nil {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.DisableLostVillagesInvalidID, MessageID: message.DisableLostVillagesInvalidID,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -439,12 +439,12 @@ func (c *commandDisableLostVillages) execute(ctx *commandCtx, m *discordgo.Messa
return return
} }
groups, _, err := c.cfg.GroupRepository.Fetch(context.Background(), &model.GroupFilter{ groups, _, err := hndlr.cfg.GroupRepository.Fetch(context.Background(), &model.GroupFilter{
ID: []int{groupID}, ID: []int{groupID},
ServerID: []string{m.GuildID}, ServerID: []string{m.GuildID},
}) })
if err != nil || len(groups) == 0 { if err != nil || len(groups) == 0 {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.DisableLostVillagesGroupNotFound, MessageID: message.DisableLostVillagesGroupNotFound,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -456,10 +456,10 @@ func (c *commandDisableLostVillages) execute(ctx *commandCtx, m *discordgo.Messa
if groups[0].LostVillagesChannelID != "" { if groups[0].LostVillagesChannelID != "" {
groups[0].LostVillagesChannelID = "" groups[0].LostVillagesChannelID = ""
go c.cfg.GroupRepository.Update(context.Background(), groups[0]) go hndlr.cfg.GroupRepository.Update(context.Background(), groups[0])
} }
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.DisableLostVillagesSuccess, MessageID: message.DisableLostVillagesSuccess,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -468,29 +468,29 @@ func (c *commandDisableLostVillages) execute(ctx *commandCtx, m *discordgo.Messa
})) }))
} }
type commandObserve struct { type hndlrObserve struct {
*Session *Session
} }
var _ commandHandler = &commandObserve{} var _ commandHandler = &hndlrObserve{}
func (c *commandObserve) cmd() Command { func (hndlr *hndlrObserve) cmd() Command {
return ObserveCommand return ObserveCommand
} }
func (c *commandObserve) requireAdmPermissions() bool { func (hndlr *hndlrObserve) requireAdmPermissions() bool {
return true return true
} }
func (c *commandObserve) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) { func (hndlr *hndlrObserve) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
argsLength := len(args) argsLength := len(args)
if argsLength != 3 { if argsLength != 3 {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpObserve, MessageID: message.HelpObserve,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": c.cmd().WithPrefix(c.cfg.CommandPrefix), "Command": hndlr.cmd().WithPrefix(hndlr.cfg.CommandPrefix),
"GroupsCommand": GroupsCommand.WithPrefix(c.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
})) }))
return return
@ -498,7 +498,7 @@ func (c *commandObserve) execute(ctx *commandCtx, m *discordgo.MessageCreate, ar
groupID, err := strconv.Atoi(args[0]) groupID, err := strconv.Atoi(args[0])
if err != nil { if err != nil {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ObserveInvalidGroupID, MessageID: message.ObserveInvalidGroupID,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -511,7 +511,7 @@ func (c *commandObserve) execute(ctx *commandCtx, m *discordgo.MessageCreate, ar
tribeTag := strings.TrimSpace(args[2]) tribeTag := strings.TrimSpace(args[2])
tribeID, err := strconv.Atoi(tribeTag) tribeID, err := strconv.Atoi(tribeTag)
if (err != nil || tribeID <= 0) && tribeTag == "" { if (err != nil || tribeID <= 0) && tribeTag == "" {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ObserveInvalidTribeID, MessageID: message.ObserveInvalidTribeID,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -521,9 +521,9 @@ func (c *commandObserve) execute(ctx *commandCtx, m *discordgo.MessageCreate, ar
return return
} }
server, err := c.cfg.API.Server.Read(serverKey, nil) server, err := hndlr.cfg.API.Server.Read(serverKey, nil)
if err != nil || server == nil { if err != nil || server == nil {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ObserveServerNotFound, MessageID: message.ObserveServerNotFound,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -533,7 +533,7 @@ func (c *commandObserve) execute(ctx *commandCtx, m *discordgo.MessageCreate, ar
return return
} }
if server.Status == twmodel.ServerStatusClosed { if server.Status == twmodel.ServerStatusClosed {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ObserveServerIsClosed, MessageID: message.ObserveServerIsClosed,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -545,10 +545,10 @@ func (c *commandObserve) execute(ctx *commandCtx, m *discordgo.MessageCreate, ar
var tribe *twmodel.Tribe var tribe *twmodel.Tribe
if tribeID > 0 { if tribeID > 0 {
tribe, err = c.cfg.API.Tribe.Read(server.Key, tribeID) tribe, err = hndlr.cfg.API.Tribe.Read(server.Key, tribeID)
} else { } else {
list := &sdk.TribeList{} list := &sdk.TribeList{}
list, err = c.cfg.API.Tribe.Browse(server.Key, 1, 0, []string{}, &twmodel.TribeFilter{ list, err = hndlr.cfg.API.Tribe.Browse(server.Key, 1, 0, []string{}, &twmodel.TribeFilter{
Tag: []string{tribeTag}, Tag: []string{tribeTag},
}) })
if list != nil && list.Items != nil && len(list.Items) > 0 { if list != nil && list.Items != nil && len(list.Items) > 0 {
@ -556,7 +556,7 @@ func (c *commandObserve) execute(ctx *commandCtx, m *discordgo.MessageCreate, ar
} }
} }
if err != nil || tribe == nil { if err != nil || tribe == nil {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ObserveTribeNotFound, MessageID: message.ObserveTribeNotFound,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -566,9 +566,9 @@ func (c *commandObserve) execute(ctx *commandCtx, m *discordgo.MessageCreate, ar
return return
} }
group, err := c.cfg.GroupRepository.GetByID(context.Background(), groupID) group, err := hndlr.cfg.GroupRepository.GetByID(context.Background(), groupID)
if err != nil || group.ServerID != m.GuildID { if err != nil || group.ServerID != m.GuildID {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ObserveGroupNotFound, MessageID: message.ObserveGroupNotFound,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -579,7 +579,7 @@ func (c *commandObserve) execute(ctx *commandCtx, m *discordgo.MessageCreate, ar
} }
if len(group.Observations) >= observationsPerGroup { if len(group.Observations) >= observationsPerGroup {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ObserveLimitHasBeenReached, MessageID: message.ObserveLimitHasBeenReached,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -591,13 +591,13 @@ func (c *commandObserve) execute(ctx *commandCtx, m *discordgo.MessageCreate, ar
return return
} }
go c.cfg.ObservationRepository.Store(context.Background(), &model.Observation{ go hndlr.cfg.ObservationRepository.Store(context.Background(), &model.Observation{
Server: server.Key, Server: server.Key,
TribeID: tribe.ID, TribeID: tribe.ID,
GroupID: groupID, GroupID: groupID,
}) })
c.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ hndlr.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ObserveSuccess, MessageID: message.ObserveSuccess,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Mention": m.Author.Mention(), "Mention": m.Author.Mention(),
@ -605,30 +605,30 @@ func (c *commandObserve) execute(ctx *commandCtx, m *discordgo.MessageCreate, ar
})) }))
} }
type commandDeleteObservation struct { type hndlrDeleteObservation struct {
*Session *Session
} }
var _ commandHandler = &commandDeleteObservation{} var _ commandHandler = &hndlrDeleteObservation{}
func (c *commandDeleteObservation) cmd() Command { func (hndlr *hndlrDeleteObservation) cmd() Command {
return DeleteObservationCommand return DeleteObservationCommand
} }
func (c *commandDeleteObservation) requireAdmPermissions() bool { func (hndlr *hndlrDeleteObservation) requireAdmPermissions() bool {
return true return true
} }
func (c *commandDeleteObservation) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) { func (hndlr *hndlrDeleteObservation) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
argsLength := len(args) argsLength := len(args)
if argsLength != 2 { if argsLength != 2 {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpDeleteObservation, MessageID: message.HelpDeleteObservation,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": c.cmd().WithPrefix(c.cfg.CommandPrefix), "Command": hndlr.cmd().WithPrefix(hndlr.cfg.CommandPrefix),
"ObservationsCommand": ObservationsCommand.WithPrefix(c.cfg.CommandPrefix), "ObservationsCommand": ObservationsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
"GroupsCommand": GroupsCommand.WithPrefix(c.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
})) }))
return return
@ -636,7 +636,7 @@ func (c *commandDeleteObservation) execute(ctx *commandCtx, m *discordgo.Message
groupID, err := strconv.Atoi(args[0]) groupID, err := strconv.Atoi(args[0])
if err != nil { if err != nil {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.DeleteObservationInvalidGroupID, MessageID: message.DeleteObservationInvalidGroupID,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -647,7 +647,7 @@ func (c *commandDeleteObservation) execute(ctx *commandCtx, m *discordgo.Message
} }
observationID, err := strconv.Atoi(args[1]) observationID, err := strconv.Atoi(args[1])
if err != nil { if err != nil {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.DeleteObservationInvalidTribeID, MessageID: message.DeleteObservationInvalidTribeID,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -657,9 +657,9 @@ func (c *commandDeleteObservation) execute(ctx *commandCtx, m *discordgo.Message
return return
} }
group, err := c.cfg.GroupRepository.GetByID(context.Background(), groupID) group, err := hndlr.cfg.GroupRepository.GetByID(context.Background(), groupID)
if err != nil || group.ServerID != m.GuildID { if err != nil || group.ServerID != m.GuildID {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.DeleteObservationGroupNotFound, MessageID: message.DeleteObservationGroupNotFound,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -669,12 +669,12 @@ func (c *commandDeleteObservation) execute(ctx *commandCtx, m *discordgo.Message
return return
} }
go c.cfg.ObservationRepository.Delete(context.Background(), &model.ObservationFilter{ go hndlr.cfg.ObservationRepository.Delete(context.Background(), &model.ObservationFilter{
GroupID: []int{groupID}, GroupID: []int{groupID},
ID: []int{observationID}, ID: []int{observationID},
}) })
c.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ hndlr.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.DeleteObservationSuccess, MessageID: message.DeleteObservationSuccess,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Mention": m.Author.Mention(), "Mention": m.Author.Mention(),
@ -682,29 +682,29 @@ func (c *commandDeleteObservation) execute(ctx *commandCtx, m *discordgo.Message
})) }))
} }
type commandObservations struct { type hndlrObservations struct {
*Session *Session
} }
var _ commandHandler = &commandObservations{} var _ commandHandler = &hndlrObservations{}
func (c *commandObservations) cmd() Command { func (hndlr *hndlrObservations) cmd() Command {
return ObservationsCommand return ObservationsCommand
} }
func (c *commandObservations) requireAdmPermissions() bool { func (hndlr *hndlrObservations) requireAdmPermissions() bool {
return true return true
} }
func (c *commandObservations) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) { func (hndlr *hndlrObservations) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
argsLength := len(args) argsLength := len(args)
if argsLength != 1 { if argsLength != 1 {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpObservations, MessageID: message.HelpObservations,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": c.cmd().WithPrefix(c.cfg.CommandPrefix), "Command": hndlr.cmd().WithPrefix(hndlr.cfg.CommandPrefix),
"GroupsCommand": GroupsCommand.WithPrefix(c.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
})) }))
return return
@ -712,7 +712,7 @@ func (c *commandObservations) execute(ctx *commandCtx, m *discordgo.MessageCreat
groupID, err := strconv.Atoi(args[0]) groupID, err := strconv.Atoi(args[0])
if err != nil { if err != nil {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ObservationsInvalidGroupID, MessageID: message.ObservationsInvalidGroupID,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -721,9 +721,9 @@ func (c *commandObservations) execute(ctx *commandCtx, m *discordgo.MessageCreat
})) }))
return return
} }
group, err := c.cfg.GroupRepository.GetByID(context.Background(), groupID) group, err := hndlr.cfg.GroupRepository.GetByID(context.Background(), groupID)
if err != nil || group.ServerID != m.GuildID { if err != nil || group.ServerID != m.GuildID {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ObservationsGroupNotFound, MessageID: message.ObservationsGroupNotFound,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -732,14 +732,14 @@ func (c *commandObservations) execute(ctx *commandCtx, m *discordgo.MessageCreat
})) }))
return return
} }
observations, _, err := c.cfg.ObservationRepository.Fetch(context.Background(), &model.ObservationFilter{ observations, _, err := hndlr.cfg.ObservationRepository.Fetch(context.Background(), &model.ObservationFilter{
GroupID: []int{groupID}, GroupID: []int{groupID},
DefaultFilter: model.DefaultFilter{ DefaultFilter: model.DefaultFilter{
Order: []string{"id ASC"}, Order: []string{"id ASC"},
}, },
}) })
if err != nil { if err != nil {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.InternalServerError, MessageID: message.InternalServerError,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -766,11 +766,11 @@ func (c *commandObservations) execute(ctx *commandCtx, m *discordgo.MessageCreat
} }
} }
for server, tribeIDs := range tribeIDsByServer { for server, tribeIDs := range tribeIDsByServer {
list, err := c.cfg.API.Tribe.Browse(server, 0, 0, []string{}, &twmodel.TribeFilter{ list, err := hndlr.cfg.API.Tribe.Browse(server, 0, 0, []string{}, &twmodel.TribeFilter{
ID: tribeIDs, ID: tribeIDs,
}) })
if err != nil { if err != nil {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.InternalServerError, MessageID: message.InternalServerError,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -788,7 +788,7 @@ func (c *commandObservations) execute(ctx *commandCtx, m *discordgo.MessageCreat
} }
} }
} }
versionList, err := c.cfg.API.Version.Browse(0, 0, []string{}, &twmodel.VersionFilter{ versionList, err := hndlr.cfg.API.Version.Browse(0, 0, []string{}, &twmodel.VersionFilter{
Code: versionCodes, Code: versionCodes,
}) })
@ -811,36 +811,36 @@ func (c *commandObservations) execute(ctx *commandCtx, m *discordgo.MessageCreat
BuildLink(tag, tribeURL))) BuildLink(tag, tribeURL)))
} }
} }
c.SendEmbed(m.ChannelID, NewEmbed(). hndlr.SendEmbed(m.ChannelID, NewEmbed().
SetTitle(ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ SetTitle(ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ObservationsTitle, MessageID: message.ObservationsTitle,
})). })).
SetFields(bldr.ToMessageEmbedFields())) SetFields(bldr.ToMessageEmbedFields()))
} }
type commandShowEnnobledBarbarians struct { type hndlrShowEnnobledBarbarians struct {
*Session *Session
} }
var _ commandHandler = &commandShowEnnobledBarbarians{} var _ commandHandler = &hndlrShowEnnobledBarbarians{}
func (c *commandShowEnnobledBarbarians) cmd() Command { func (hndlr *hndlrShowEnnobledBarbarians) cmd() Command {
return ShowEnnobledBarbariansCommand return ShowEnnobledBarbariansCommand
} }
func (c *commandShowEnnobledBarbarians) requireAdmPermissions() bool { func (hndlr *hndlrShowEnnobledBarbarians) requireAdmPermissions() bool {
return true return true
} }
func (c *commandShowEnnobledBarbarians) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) { func (hndlr *hndlrShowEnnobledBarbarians) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
argsLength := len(args) argsLength := len(args)
if argsLength != 1 { if argsLength != 1 {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpShowEnnobledBarbs, MessageID: message.HelpShowEnnobledBarbs,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": ShowEnnobledBarbariansCommand.WithPrefix(c.cfg.CommandPrefix), "Command": ShowEnnobledBarbariansCommand.WithPrefix(hndlr.cfg.CommandPrefix),
"GroupsCommand": GroupsCommand.WithPrefix(c.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
})) }))
return return
@ -848,7 +848,7 @@ func (c *commandShowEnnobledBarbarians) execute(ctx *commandCtx, m *discordgo.Me
groupID, err := strconv.Atoi(args[0]) groupID, err := strconv.Atoi(args[0])
if err != nil || groupID <= 0 { if err != nil || groupID <= 0 {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ShowEnnobledBarbsInvalidGroupID, MessageID: message.ShowEnnobledBarbsInvalidGroupID,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -857,9 +857,9 @@ func (c *commandShowEnnobledBarbarians) execute(ctx *commandCtx, m *discordgo.Me
})) }))
return return
} }
group, err := c.cfg.GroupRepository.GetByID(context.Background(), groupID) group, err := hndlr.cfg.GroupRepository.GetByID(context.Background(), groupID)
if err != nil || group.ServerID != m.GuildID { if err != nil || group.ServerID != m.GuildID {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ShowEnnobledBarbsGroupNotFound, MessageID: message.ShowEnnobledBarbsGroupNotFound,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -871,8 +871,8 @@ func (c *commandShowEnnobledBarbarians) execute(ctx *commandCtx, m *discordgo.Me
oldValue := group.ShowEnnobledBarbarians oldValue := group.ShowEnnobledBarbarians
group.ShowEnnobledBarbarians = !oldValue group.ShowEnnobledBarbarians = !oldValue
if err := c.cfg.GroupRepository.Update(context.Background(), group); err != nil { if err := hndlr.cfg.GroupRepository.Update(context.Background(), group); err != nil {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.InternalServerError, MessageID: message.InternalServerError,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -883,7 +883,7 @@ func (c *commandShowEnnobledBarbarians) execute(ctx *commandCtx, m *discordgo.Me
} }
if oldValue { if oldValue {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ShowEnnobledBarbsSuccess1, MessageID: message.ShowEnnobledBarbsSuccess1,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -892,7 +892,7 @@ func (c *commandShowEnnobledBarbarians) execute(ctx *commandCtx, m *discordgo.Me
})) }))
return return
} }
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ShowEnnobledBarbsSuccess2, MessageID: message.ShowEnnobledBarbsSuccess2,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -901,28 +901,28 @@ func (c *commandShowEnnobledBarbarians) execute(ctx *commandCtx, m *discordgo.Me
})) }))
} }
type commandChangeLanguage struct { type hndlrChangeLanguage struct {
*Session *Session
} }
var _ commandHandler = &commandChangeLanguage{} var _ commandHandler = &hndlrChangeLanguage{}
func (c *commandChangeLanguage) cmd() Command { func (hndlr *hndlrChangeLanguage) cmd() Command {
return ChangeLanguageCommand return ChangeLanguageCommand
} }
func (c *commandChangeLanguage) requireAdmPermissions() bool { func (hndlr *hndlrChangeLanguage) requireAdmPermissions() bool {
return true return true
} }
func (c *commandChangeLanguage) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) { func (hndlr *hndlrChangeLanguage) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
argsLength := len(args) argsLength := len(args)
if argsLength != 1 { if argsLength != 1 {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpChangageLanguage, MessageID: message.HelpChangageLanguage,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": c.cmd().WithPrefix(c.cfg.CommandPrefix), "Command": hndlr.cmd().WithPrefix(hndlr.cfg.CommandPrefix),
"Languages": getAvailableLanguages(), "Languages": getAvailableLanguages(),
}, },
})) }))
@ -932,7 +932,7 @@ func (c *commandChangeLanguage) execute(ctx *commandCtx, m *discordgo.MessageCre
lang := args[0] lang := args[0]
valid := isValidLanguageTag(lang) valid := isValidLanguageTag(lang)
if !valid { if !valid {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ChangeLanguageLanguageNotSupported, MessageID: message.ChangeLanguageLanguageNotSupported,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -943,8 +943,8 @@ func (c *commandChangeLanguage) execute(ctx *commandCtx, m *discordgo.MessageCre
} }
ctx.server.Lang = lang ctx.server.Lang = lang
if err := c.cfg.ServerRepository.Update(context.Background(), ctx.server); err != nil { if err := hndlr.cfg.ServerRepository.Update(context.Background(), ctx.server); err != nil {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.InternalServerError, MessageID: message.InternalServerError,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -955,7 +955,7 @@ func (c *commandChangeLanguage) execute(ctx *commandCtx, m *discordgo.MessageCre
} }
ctx.localizer = message.NewLocalizer(lang) ctx.localizer = message.NewLocalizer(lang)
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ChangeLanguageSuccess, MessageID: message.ChangeLanguageSuccess,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -964,29 +964,29 @@ func (c *commandChangeLanguage) execute(ctx *commandCtx, m *discordgo.MessageCre
})) }))
} }
type commandShowInternals struct { type hndlrShowInternals struct {
*Session *Session
} }
var _ commandHandler = &commandShowInternals{} var _ commandHandler = &hndlrShowInternals{}
func (c *commandShowInternals) cmd() Command { func (hndlr *hndlrShowInternals) cmd() Command {
return ShowInternalsCommand return ShowInternalsCommand
} }
func (c *commandShowInternals) requireAdmPermissions() bool { func (hndlr *hndlrShowInternals) requireAdmPermissions() bool {
return true return true
} }
func (c *commandShowInternals) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) { func (hndlr *hndlrShowInternals) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
argsLength := len(args) argsLength := len(args)
if argsLength != 1 { if argsLength != 1 {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpShowInternals, MessageID: message.HelpShowInternals,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": c.cmd().WithPrefix(c.cfg.CommandPrefix), "Command": hndlr.cmd().WithPrefix(hndlr.cfg.CommandPrefix),
"GroupsCommand": GroupsCommand.WithPrefix(c.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
})) }))
return return
@ -994,7 +994,7 @@ func (c *commandShowInternals) execute(ctx *commandCtx, m *discordgo.MessageCrea
groupID, err := strconv.Atoi(args[0]) groupID, err := strconv.Atoi(args[0])
if err != nil || groupID <= 0 { if err != nil || groupID <= 0 {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ShowInternalsInvalidGroupID, MessageID: message.ShowInternalsInvalidGroupID,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -1003,9 +1003,9 @@ func (c *commandShowInternals) execute(ctx *commandCtx, m *discordgo.MessageCrea
})) }))
return return
} }
group, err := c.cfg.GroupRepository.GetByID(context.Background(), groupID) group, err := hndlr.cfg.GroupRepository.GetByID(context.Background(), groupID)
if err != nil || group.ServerID != m.GuildID { if err != nil || group.ServerID != m.GuildID {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ShowInternalsGroupNotFound, MessageID: message.ShowInternalsGroupNotFound,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -1017,8 +1017,8 @@ func (c *commandShowInternals) execute(ctx *commandCtx, m *discordgo.MessageCrea
oldValue := group.ShowInternals oldValue := group.ShowInternals
group.ShowInternals = !oldValue group.ShowInternals = !oldValue
if err := c.cfg.GroupRepository.Update(context.Background(), group); err != nil { if err := hndlr.cfg.GroupRepository.Update(context.Background(), group); err != nil {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.InternalServerError, MessageID: message.InternalServerError,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -1029,7 +1029,7 @@ func (c *commandShowInternals) execute(ctx *commandCtx, m *discordgo.MessageCrea
} }
if oldValue { if oldValue {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ShowInternalsSuccess1, MessageID: message.ShowInternalsSuccess1,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -1038,7 +1038,7 @@ func (c *commandShowInternals) execute(ctx *commandCtx, m *discordgo.MessageCrea
})) }))
return return
} }
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ShowInternalsSuccess2, MessageID: message.ShowInternalsSuccess2,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{

View File

@ -28,21 +28,21 @@ const (
AuthorCommand Command = "author" AuthorCommand Command = "author"
) )
type commandHelp struct { type hndlrHelp struct {
*Session *Session
} }
var _ commandHandler = &commandHelp{} var _ commandHandler = &hndlrHelp{}
func (c *commandHelp) cmd() Command { func (hndlr *hndlrHelp) cmd() Command {
return HelpCommand return HelpCommand
} }
func (c *commandHelp) requireAdmPermissions() bool { func (hndlr *hndlrHelp) requireAdmPermissions() bool {
return false return false
} }
func (c *commandHelp) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) { func (hndlr *hndlrHelp) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
commandsForAll := fmt.Sprintf(` commandsForAll := fmt.Sprintf(`
- %s - %s
- %s - %s
@ -54,37 +54,37 @@ func (c *commandHelp) execute(ctx *commandCtx, m *discordgo.MessageCreate, args
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpTribeTopODA, MessageID: message.HelpTribeTopODA,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": TribeCommand.WithPrefix(c.cfg.CommandPrefix) + " " + TopODACommand.String(), "Command": TribeCommand.WithPrefix(hndlr.cfg.CommandPrefix) + " " + TopODACommand.String(),
}, },
}), }),
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpTribeTopODD, MessageID: message.HelpTribeTopODD,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": TribeCommand.WithPrefix(c.cfg.CommandPrefix) + " " + TopODDCommand.String(), "Command": TribeCommand.WithPrefix(hndlr.cfg.CommandPrefix) + " " + TopODDCommand.String(),
}, },
}), }),
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpTribeTopODS, MessageID: message.HelpTribeTopODS,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": TribeCommand.WithPrefix(c.cfg.CommandPrefix) + " " + TopODSCommand.String(), "Command": TribeCommand.WithPrefix(hndlr.cfg.CommandPrefix) + " " + TopODSCommand.String(),
}, },
}), }),
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpTribeTopOD, MessageID: message.HelpTribeTopOD,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": TribeCommand.WithPrefix(c.cfg.CommandPrefix) + " " + TopODCommand.String(), "Command": TribeCommand.WithPrefix(hndlr.cfg.CommandPrefix) + " " + TopODCommand.String(),
}, },
}), }),
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpTribeTopPoints, MessageID: message.HelpTribeTopPoints,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": TribeCommand.WithPrefix(c.cfg.CommandPrefix) + " " + TopPointsCommand.String(), "Command": TribeCommand.WithPrefix(hndlr.cfg.CommandPrefix) + " " + TopPointsCommand.String(),
}, },
}), }),
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpAuthor, MessageID: message.HelpAuthor,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": AuthorCommand.WithPrefix(c.cfg.CommandPrefix), "Command": AuthorCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
}), }),
) )
@ -103,63 +103,63 @@ func (c *commandHelp) execute(ctx *commandCtx, m *discordgo.MessageCreate, args
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpAddGroup, MessageID: message.HelpAddGroup,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": AddGroupCommand.WithPrefix(c.cfg.CommandPrefix), "Command": AddGroupCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
}), }),
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpGroups, MessageID: message.HelpGroups,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": GroupsCommand.WithPrefix(c.cfg.CommandPrefix), "Command": GroupsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
}), }),
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpDeleteGroup, MessageID: message.HelpDeleteGroup,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": DeleteGroupCommand.WithPrefix(c.cfg.CommandPrefix), "Command": DeleteGroupCommand.WithPrefix(hndlr.cfg.CommandPrefix),
"GroupsCommand": GroupsCommand.WithPrefix(c.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
}), }),
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpShowEnnobledBarbs, MessageID: message.HelpShowEnnobledBarbs,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": ShowEnnobledBarbariansCommand.WithPrefix(c.cfg.CommandPrefix), "Command": ShowEnnobledBarbariansCommand.WithPrefix(hndlr.cfg.CommandPrefix),
"GroupsCommand": GroupsCommand.WithPrefix(c.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
}), }),
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpObserve, MessageID: message.HelpObserve,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": ObserveCommand.WithPrefix(c.cfg.CommandPrefix), "Command": ObserveCommand.WithPrefix(hndlr.cfg.CommandPrefix),
"GroupsCommand": GroupsCommand.WithPrefix(c.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
}), }),
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpGroups, MessageID: message.HelpGroups,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": ObservationsCommand.WithPrefix(c.cfg.CommandPrefix), "Command": ObservationsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
"GroupsCommand": GroupsCommand.WithPrefix(c.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
}), }),
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpDeleteObservation, MessageID: message.HelpDeleteObservation,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": DeleteObservationCommand.WithPrefix(c.cfg.CommandPrefix), "Command": DeleteObservationCommand.WithPrefix(hndlr.cfg.CommandPrefix),
"ObservationsCommand": ObservationsCommand.WithPrefix(c.cfg.CommandPrefix), "ObservationsCommand": ObservationsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
"GroupsCommand": GroupsCommand.WithPrefix(c.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
}), }),
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpConqueredVillages, MessageID: message.HelpConqueredVillages,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": ConqueredVillagesCommand.WithPrefix(c.cfg.CommandPrefix), "Command": ConqueredVillagesCommand.WithPrefix(hndlr.cfg.CommandPrefix),
"GroupsCommand": GroupsCommand.WithPrefix(c.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
}), }),
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpDisableConqueredVillages, MessageID: message.HelpDisableConqueredVillages,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": DisableConqueredVillagesCommand.WithPrefix(c.cfg.CommandPrefix), "Command": DisableConqueredVillagesCommand.WithPrefix(hndlr.cfg.CommandPrefix),
"GroupsCommand": GroupsCommand.WithPrefix(c.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
}), }),
) )
@ -175,41 +175,41 @@ func (c *commandHelp) execute(ctx *commandCtx, m *discordgo.MessageCreate, args
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpLostVillages, MessageID: message.HelpLostVillages,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": LostVillagesCommand.WithPrefix(c.cfg.CommandPrefix), "Command": LostVillagesCommand.WithPrefix(hndlr.cfg.CommandPrefix),
"GroupsCommand": GroupsCommand.WithPrefix(c.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
}), }),
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpDisableLostVillages, MessageID: message.HelpDisableLostVillages,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": DisableLostVillagesCommand.WithPrefix(c.cfg.CommandPrefix), "Command": DisableLostVillagesCommand.WithPrefix(hndlr.cfg.CommandPrefix),
"GroupsCommand": GroupsCommand.WithPrefix(c.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
}), }),
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpShowInternals, MessageID: message.HelpShowInternals,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": ShowInternalsCommand.WithPrefix(c.cfg.CommandPrefix), "Command": ShowInternalsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
"GroupsCommand": GroupsCommand.WithPrefix(c.cfg.CommandPrefix), "GroupsCommand": GroupsCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
}), }),
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpChangageLanguage, MessageID: message.HelpChangageLanguage,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": ChangeLanguageCommand.WithPrefix(c.cfg.CommandPrefix), "Command": ChangeLanguageCommand.WithPrefix(hndlr.cfg.CommandPrefix),
"Languages": getAvailableLanguages(), "Languages": getAvailableLanguages(),
}, },
}), }),
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpCoordsTranslation, MessageID: message.HelpCoordsTranslation,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": CoordsTranslationCommand.WithPrefix(c.cfg.CommandPrefix), "Command": CoordsTranslationCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
}), }),
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpDisableCoordsTranslation, MessageID: message.HelpDisableCoordsTranslation,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Command": DisableCoordsTranslationCommand.WithPrefix(c.cfg.CommandPrefix), "Command": DisableCoordsTranslationCommand.WithPrefix(hndlr.cfg.CommandPrefix),
}, },
}), }),
) )
@ -218,7 +218,7 @@ func (c *commandHelp) execute(ctx *commandCtx, m *discordgo.MessageCreate, args
MessageID: message.HelpForAdmins, MessageID: message.HelpForAdmins,
}) })
c.SendEmbed(m.ChannelID, NewEmbed(). hndlr.SendEmbed(m.ChannelID, NewEmbed().
SetTitle(ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ SetTitle(ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.HelpTitle, MessageID: message.HelpTitle,
})). })).
@ -233,41 +233,41 @@ func (c *commandHelp) execute(ctx *commandCtx, m *discordgo.MessageCreate, args
AddField(forAdmins+" 2", commandsForGuildAdmins2)) AddField(forAdmins+" 2", commandsForGuildAdmins2))
} }
type commandAuthor struct { type hndlrAuthor struct {
*Session *Session
} }
var _ commandHandler = &commandAuthor{} var _ commandHandler = &hndlrAuthor{}
func (c *commandAuthor) cmd() Command { func (hndlr *hndlrAuthor) cmd() Command {
return AuthorCommand return AuthorCommand
} }
func (c *commandAuthor) requireAdmPermissions() bool { func (hndlr *hndlrAuthor) requireAdmPermissions() bool {
return false return false
} }
func (c *commandAuthor) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) { func (hndlr *hndlrAuthor) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
fmt.Sprintf("%s Discord: Kichiyaki#2064 | https://dwysokinski.me/#contact.", fmt.Sprintf("%s Discord: Kichiyaki#2064 | https://dwysokinski.me/#contact.",
m.Author.Mention())) m.Author.Mention()))
} }
type commandTribe struct { type hndlrTribe struct {
*Session *Session
} }
var _ commandHandler = &commandTribe{} var _ commandHandler = &hndlrTribe{}
func (c *commandTribe) cmd() Command { func (hndlr *hndlrTribe) cmd() Command {
return TribeCommand return TribeCommand
} }
func (c *commandTribe) requireAdmPermissions() bool { func (hndlr *hndlrTribe) requireAdmPermissions() bool {
return false return false
} }
func (c *commandTribe) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) { func (hndlr *hndlrTribe) execute(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
argsLength := len(args) argsLength := len(args)
if argsLength < 3 { if argsLength < 3 {
return return
@ -277,7 +277,7 @@ func (c *commandTribe) execute(ctx *commandCtx, m *discordgo.MessageCreate, args
server := args[1] server := args[1]
page, err := strconv.Atoi(args[2]) page, err := strconv.Atoi(args[2])
if err != nil || page <= 0 { if err != nil || page <= 0 {
c.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ hndlr.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.TribeInvalidPage, MessageID: message.TribeInvalidPage,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Mention": m.Author.Mention(), "Mention": m.Author.Mention(),
@ -300,7 +300,7 @@ func (c *commandTribe) execute(ctx *commandCtx, m *discordgo.MessageCreate, args
} }
} }
if len(ids) == 0 && len(tags) == 0 { if len(ids) == 0 && len(tags) == 0 {
c.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ hndlr.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.TribeNoTribeID, MessageID: message.TribeNoTribeID,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Mention": m.Author.Mention(), "Mention": m.Author.Mention(),
@ -357,7 +357,7 @@ func (c *commandTribe) execute(ctx *commandCtx, m *discordgo.MessageCreate, args
return return
} }
playerList, err := c.cfg.API.Player.Browse(server, playerList, err := hndlr.cfg.API.Player.Browse(server,
limit, limit,
offset, offset,
[]string{sort}, []string{sort},
@ -366,7 +366,7 @@ func (c *commandTribe) execute(ctx *commandCtx, m *discordgo.MessageCreate, args
Tribe: true, Tribe: true,
}) })
if err != nil { if err != nil {
c.SendMessage(m.ChannelID, hndlr.SendMessage(m.ChannelID,
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.ApiDefaultError, MessageID: message.ApiDefaultError,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
@ -376,7 +376,7 @@ func (c *commandTribe) execute(ctx *commandCtx, m *discordgo.MessageCreate, args
return return
} }
if playerList == nil || playerList.Total == 0 { if playerList == nil || playerList.Total == 0 {
c.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ hndlr.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.TribeTribesNotFound, MessageID: message.TribeTribesNotFound,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Mention": m.Author.Mention(), "Mention": m.Author.Mention(),
@ -386,7 +386,7 @@ func (c *commandTribe) execute(ctx *commandCtx, m *discordgo.MessageCreate, args
} }
totalPages := int(math.Ceil(float64(playerList.Total) / float64(limit))) totalPages := int(math.Ceil(float64(playerList.Total) / float64(limit)))
if page > totalPages { if page > totalPages {
c.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ hndlr.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.TribeExceededMaximumNumberOfPages, MessageID: message.TribeExceededMaximumNumberOfPages,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Mention": m.Author.Mention(), "Mention": m.Author.Mention(),
@ -398,9 +398,9 @@ func (c *commandTribe) execute(ctx *commandCtx, m *discordgo.MessageCreate, args
} }
code := twmodel.VersionCodeFromServerKey(server) code := twmodel.VersionCodeFromServerKey(server)
version, err := c.cfg.API.Version.Read(code) version, err := hndlr.cfg.API.Version.Read(code)
if err != nil || version == nil { if err != nil || version == nil {
c.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ hndlr.SendMessage(m.ChannelID, ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
MessageID: message.InternalServerError, MessageID: message.InternalServerError,
TemplateData: map[string]interface{}{ TemplateData: map[string]interface{}{
"Mention": m.Author.Mention(), "Mention": m.Author.Mention(),
@ -456,7 +456,7 @@ func (c *commandTribe) execute(ctx *commandCtx, m *discordgo.MessageCreate, args
})) }))
} }
c.SendEmbed(m.ChannelID, NewEmbed(). hndlr.SendEmbed(m.ChannelID, NewEmbed().
SetTitle(title). SetTitle(title).
SetFields(bldr.ToMessageEmbedFields()). SetFields(bldr.ToMessageEmbedFields()).
SetFooter(ctx.localizer.MustLocalize(&i18n.LocalizeConfig{ SetFooter(ctx.localizer.MustLocalize(&i18n.LocalizeConfig{