change the way discord message handlers are called
This commit is contained in:
parent
dc3dd073aa
commit
3a7248af58
|
@ -11,8 +11,8 @@ func (cmd Command) String() string {
|
|||
return string(cmd)
|
||||
}
|
||||
|
||||
func (cmd Command) WithPrefix(prefix string) string {
|
||||
return prefix + cmd.String()
|
||||
func (cmd Command) WithPrefix(prefix string) Command {
|
||||
return Command(prefix + cmd.String())
|
||||
}
|
||||
|
||||
type commandCtx struct {
|
||||
|
|
|
@ -20,11 +20,7 @@ const (
|
|||
|
||||
var coordsRegex = regexp.MustCompile(`(\d+)\|(\d+)`)
|
||||
|
||||
func (s *Session) handleCoordsTranslationCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
if has, err := s.memberHasPermission(m.GuildID, m.Author.ID, discordgo.PermissionAdministrator); err != nil || !has {
|
||||
return
|
||||
}
|
||||
|
||||
func (s *Session) handleCoordsTranslationCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
argsLength := len(args)
|
||||
if argsLength != 1 {
|
||||
s.SendMessage(m.ChannelID,
|
||||
|
@ -67,11 +63,7 @@ func (s *Session) handleCoordsTranslationCommand(ctx commandCtx, m *discordgo.Me
|
|||
}))
|
||||
}
|
||||
|
||||
func (s *Session) handleDisableCoordsTranslationCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
if has, err := s.memberHasPermission(m.GuildID, m.Author.ID, discordgo.PermissionAdministrator); err != nil || !has {
|
||||
return
|
||||
}
|
||||
|
||||
func (s *Session) handleDisableCoordsTranslationCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
ctx.server.CoordsTranslation = ""
|
||||
go s.cfg.ServerRepository.Update(context.Background(), ctx.server)
|
||||
|
||||
|
@ -86,7 +78,7 @@ func (s *Session) handleDisableCoordsTranslationCommand(ctx commandCtx, m *disco
|
|||
}))
|
||||
}
|
||||
|
||||
func (s *Session) translateCoords(ctx commandCtx, m *discordgo.MessageCreate) {
|
||||
func (s *Session) translateCoords(ctx *commandCtx, m *discordgo.MessageCreate) {
|
||||
if ctx.server.CoordsTranslation == "" {
|
||||
return
|
||||
}
|
||||
|
|
|
@ -16,6 +16,23 @@ import (
|
|||
"github.com/bwmarrin/discordgo"
|
||||
)
|
||||
|
||||
type handler struct {
|
||||
cmd Command
|
||||
requireAdmPermissions bool
|
||||
fn func(ctx *commandCtx, m *discordgo.MessageCreate, args ...string)
|
||||
}
|
||||
|
||||
type handlers []*handler
|
||||
|
||||
func (hs handlers) find(cmd Command) *handler {
|
||||
for _, h := range hs {
|
||||
if h.cmd == cmd {
|
||||
return h
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type SessionConfig struct {
|
||||
Token string
|
||||
CommandPrefix string
|
||||
|
@ -27,8 +44,9 @@ type SessionConfig struct {
|
|||
}
|
||||
|
||||
type Session struct {
|
||||
dg *discordgo.Session
|
||||
cfg SessionConfig
|
||||
dg *discordgo.Session
|
||||
cfg SessionConfig
|
||||
handlers handlers
|
||||
}
|
||||
|
||||
func New(cfg SessionConfig) (*Session, error) {
|
||||
|
@ -47,6 +65,96 @@ func New(cfg SessionConfig) (*Session, error) {
|
|||
}
|
||||
|
||||
func (s *Session) init() error {
|
||||
s.handlers = handlers{
|
||||
&handler{
|
||||
cmd: HelpCommand.WithPrefix(s.cfg.CommandPrefix),
|
||||
fn: s.handleHelpCommand,
|
||||
},
|
||||
&handler{
|
||||
cmd: AuthorCommand.WithPrefix(s.cfg.CommandPrefix),
|
||||
fn: s.handleAuthorCommand,
|
||||
},
|
||||
&handler{
|
||||
cmd: TribeCommand.WithPrefix(s.cfg.CommandPrefix),
|
||||
fn: s.handleTribeCommand,
|
||||
},
|
||||
&handler{
|
||||
cmd: ChangeLanguageCommand.WithPrefix(s.cfg.CommandPrefix),
|
||||
fn: s.handleChangeLanguageCommand,
|
||||
requireAdmPermissions: true,
|
||||
},
|
||||
&handler{
|
||||
cmd: AddGroupCommand.WithPrefix(s.cfg.CommandPrefix),
|
||||
fn: s.handleAddGroupCommand,
|
||||
requireAdmPermissions: true,
|
||||
},
|
||||
&handler{
|
||||
cmd: DeleteGroupCommand.WithPrefix(s.cfg.CommandPrefix),
|
||||
fn: s.handleDeleteGroupCommand,
|
||||
requireAdmPermissions: true,
|
||||
},
|
||||
&handler{
|
||||
cmd: GroupsCommand.WithPrefix(s.cfg.CommandPrefix),
|
||||
fn: s.handleGroupsCommand,
|
||||
requireAdmPermissions: true,
|
||||
},
|
||||
&handler{
|
||||
cmd: ObserveCommand.WithPrefix(s.cfg.CommandPrefix),
|
||||
fn: s.handleObserveCommand,
|
||||
requireAdmPermissions: true,
|
||||
},
|
||||
&handler{
|
||||
cmd: DeleteObservationCommand.WithPrefix(s.cfg.CommandPrefix),
|
||||
fn: s.handleDeleteObservationCommand,
|
||||
requireAdmPermissions: true,
|
||||
},
|
||||
&handler{
|
||||
cmd: ObservationsCommand.WithPrefix(s.cfg.CommandPrefix),
|
||||
fn: s.handleObservationsCommand,
|
||||
requireAdmPermissions: true,
|
||||
},
|
||||
&handler{
|
||||
cmd: ConqueredVillagesCommand.WithPrefix(s.cfg.CommandPrefix),
|
||||
fn: s.handleConqueredVillagesCommand,
|
||||
requireAdmPermissions: true,
|
||||
},
|
||||
&handler{
|
||||
cmd: DisableConqueredVillagesCommand.WithPrefix(s.cfg.CommandPrefix),
|
||||
fn: s.handleDisableConqueredVillagesCommand,
|
||||
requireAdmPermissions: true,
|
||||
},
|
||||
&handler{
|
||||
cmd: LostVillagesCommand.WithPrefix(s.cfg.CommandPrefix),
|
||||
fn: s.handleLostVillagesCommand,
|
||||
requireAdmPermissions: true,
|
||||
},
|
||||
&handler{
|
||||
cmd: DisableLostVillagesCommand.WithPrefix(s.cfg.CommandPrefix),
|
||||
fn: s.handleDisableLostVillagesCommand,
|
||||
requireAdmPermissions: true,
|
||||
},
|
||||
&handler{
|
||||
cmd: ShowEnnobledBarbariansCommand.WithPrefix(s.cfg.CommandPrefix),
|
||||
fn: s.handleShowEnnobledBarbariansCommand,
|
||||
requireAdmPermissions: true,
|
||||
},
|
||||
&handler{
|
||||
cmd: ShowInternalsCommand.WithPrefix(s.cfg.CommandPrefix),
|
||||
fn: s.handleShowInternalsCommand,
|
||||
requireAdmPermissions: true,
|
||||
},
|
||||
&handler{
|
||||
cmd: CoordsTranslationCommand.WithPrefix(s.cfg.CommandPrefix),
|
||||
fn: s.handleCoordsTranslationCommand,
|
||||
requireAdmPermissions: true,
|
||||
},
|
||||
&handler{
|
||||
cmd: DisableCoordsTranslationCommand.WithPrefix(s.cfg.CommandPrefix),
|
||||
fn: s.handleDisableCoordsTranslationCommand,
|
||||
requireAdmPermissions: true,
|
||||
},
|
||||
}
|
||||
|
||||
s.dg.AddHandler(s.handleNewMessage)
|
||||
|
||||
err := s.dg.Open()
|
||||
|
@ -127,7 +235,7 @@ func (s *Session) IsGuildMember(guildID string) (bool, error) {
|
|||
}
|
||||
|
||||
func (s *Session) handleNewMessage(_ *discordgo.Session, m *discordgo.MessageCreate) {
|
||||
if m.Author.ID == s.dg.State.User.ID || m.Author.Bot || m.GuildID == "" {
|
||||
if m.Author.ID == s.dg.State.User.ID || m.Author.Bot {
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -138,58 +246,32 @@ func (s *Session) handleNewMessage(_ *discordgo.Session, m *discordgo.MessageCre
|
|||
ID: m.GuildID,
|
||||
Lang: message.GetDefaultLanguage().String(),
|
||||
}
|
||||
if err := s.cfg.ServerRepository.Store(context.Background(), server); err != nil {
|
||||
return
|
||||
if server.ID != "" {
|
||||
if err := s.cfg.ServerRepository.Store(context.Background(), server); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
ctx := commandCtx{
|
||||
ctx := &commandCtx{
|
||||
server: server,
|
||||
localizer: message.NewLocalizer(server.Lang),
|
||||
}
|
||||
|
||||
switch splitted[0] {
|
||||
case HelpCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleHelpCommand(ctx, m)
|
||||
case AuthorCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleAuthorCommand(m)
|
||||
case TribeCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleTribeCommand(ctx, m, args...)
|
||||
|
||||
case ChangeLanguageCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleChangeLanguageCommand(ctx, m, args...)
|
||||
|
||||
case AddGroupCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleAddGroupCommand(ctx, m)
|
||||
case DeleteGroupCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleDeleteGroupCommand(ctx, m, args...)
|
||||
case GroupsCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleGroupsCommand(ctx, m)
|
||||
case ObserveCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleObserveCommand(ctx, m, args...)
|
||||
case DeleteObservationCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleDeleteObservationCommand(ctx, m, args...)
|
||||
case ObservationsCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleObservationsCommand(ctx, m, args...)
|
||||
case ConqueredVillagesCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleConqueredVillagesCommand(ctx, m, args...)
|
||||
case DisableConqueredVillagesCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleDisableConqueredVillagesCommand(ctx, m, args...)
|
||||
case LostVillagesCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleLostVillagesCommand(ctx, m, args...)
|
||||
case DisableLostVillagesCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleDisableLostVillagesCommand(ctx, m, args...)
|
||||
case ShowEnnobledBarbariansCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleShowEnnobledBarbariansCommand(ctx, m, args...)
|
||||
case ShowInternalsCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleShowInternalsCommand(ctx, m, args...)
|
||||
|
||||
case CoordsTranslationCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleCoordsTranslationCommand(ctx, m, args...)
|
||||
case DisableCoordsTranslationCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||
s.handleDisableCoordsTranslationCommand(ctx, m, args...)
|
||||
|
||||
default:
|
||||
s.translateCoords(ctx, m)
|
||||
h := s.handlers.find(Command(splitted[0]))
|
||||
if h != nil {
|
||||
if h.requireAdmPermissions {
|
||||
if m.GuildID == "" {
|
||||
return
|
||||
}
|
||||
has, err := s.memberHasPermission(m.GuildID, m.Author.ID, discordgo.PermissionAdministrator)
|
||||
if err != nil || !has {
|
||||
return
|
||||
}
|
||||
}
|
||||
h.fn(ctx, m, args...)
|
||||
return
|
||||
}
|
||||
|
||||
s.translateCoords(ctx, m)
|
||||
}
|
||||
|
||||
func (s *Session) memberHasPermission(guildID string, userID string, permission int) (bool, error) {
|
||||
|
@ -225,7 +307,3 @@ func (s *Session) memberHasPermission(guildID string, userID string, permission
|
|||
|
||||
return false, nil
|
||||
}
|
||||
|
||||
func (s *Session) sendUnknownCommandError(mention, channelID string, command ...string) {
|
||||
s.SendMessage(channelID, mention+` Unknown command: `+strings.Join(command, " "))
|
||||
}
|
||||
|
|
|
@ -35,11 +35,7 @@ const (
|
|||
ShowInternalsCommand Command = "showinternals"
|
||||
)
|
||||
|
||||
func (s *Session) handleAddGroupCommand(ctx commandCtx, m *discordgo.MessageCreate) {
|
||||
if has, err := s.memberHasPermission(m.GuildID, m.Author.ID, discordgo.PermissionAdministrator); err != nil || !has {
|
||||
return
|
||||
}
|
||||
|
||||
func (s *Session) handleAddGroupCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
if len(ctx.server.Groups) >= groupsPerServer {
|
||||
s.SendMessage(m.ChannelID,
|
||||
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
|
@ -85,16 +81,9 @@ func (s *Session) handleAddGroupCommand(ctx commandCtx, m *discordgo.MessageCrea
|
|||
}))
|
||||
}
|
||||
|
||||
func (s *Session) handleDeleteGroupCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
if has, err := s.memberHasPermission(m.GuildID, m.Author.ID, discordgo.PermissionAdministrator); err != nil || !has {
|
||||
return
|
||||
}
|
||||
|
||||
func (s *Session) handleDeleteGroupCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
argsLength := len(args)
|
||||
if argsLength > 1 {
|
||||
s.sendUnknownCommandError(m.Author.Mention(), m.ChannelID, args[1:argsLength]...)
|
||||
return
|
||||
} else if argsLength < 1 {
|
||||
if argsLength != 1 {
|
||||
s.SendMessage(m.ChannelID,
|
||||
m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
MessageID: message.HelpDeleteGroup,
|
||||
|
@ -138,11 +127,7 @@ func (s *Session) handleDeleteGroupCommand(ctx commandCtx, m *discordgo.MessageC
|
|||
}))
|
||||
}
|
||||
|
||||
func (s *Session) handleGroupsCommand(ctx commandCtx, m *discordgo.MessageCreate) {
|
||||
if has, err := s.memberHasPermission(m.GuildID, m.Author.ID, discordgo.PermissionAdministrator); err != nil || !has {
|
||||
return
|
||||
}
|
||||
|
||||
func (s *Session) handleGroupsCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
groups, _, err := s.cfg.GroupRepository.Fetch(context.Background(), &models.GroupFilter{
|
||||
ServerID: []string{m.GuildID},
|
||||
Order: []string{"id ASC"},
|
||||
|
@ -183,16 +168,9 @@ func (s *Session) handleGroupsCommand(ctx commandCtx, m *discordgo.MessageCreate
|
|||
MessageEmbed)
|
||||
}
|
||||
|
||||
func (s *Session) handleConqueredVillagesCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
if has, err := s.memberHasPermission(m.GuildID, m.Author.ID, discordgo.PermissionAdministrator); err != nil || !has {
|
||||
return
|
||||
}
|
||||
|
||||
func (s *Session) handleConqueredVillagesCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
argsLength := len(args)
|
||||
if argsLength > 1 {
|
||||
s.sendUnknownCommandError(m.Author.Mention(), m.ChannelID, args[1:argsLength]...)
|
||||
return
|
||||
} else if argsLength < 1 {
|
||||
if argsLength != 1 {
|
||||
s.SendMessage(m.ChannelID,
|
||||
m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
MessageID: message.HelpConqueredVillages,
|
||||
|
@ -250,16 +228,9 @@ func (s *Session) handleConqueredVillagesCommand(ctx commandCtx, m *discordgo.Me
|
|||
}))
|
||||
}
|
||||
|
||||
func (s *Session) handleDisableConqueredVillagesCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
if has, err := s.memberHasPermission(m.GuildID, m.Author.ID, discordgo.PermissionAdministrator); err != nil || !has {
|
||||
return
|
||||
}
|
||||
|
||||
func (s *Session) handleDisableConqueredVillagesCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
argsLength := len(args)
|
||||
if argsLength > 1 {
|
||||
s.sendUnknownCommandError(m.Author.Mention(), m.ChannelID, args[1:argsLength]...)
|
||||
return
|
||||
} else if argsLength < 1 {
|
||||
if argsLength != 1 {
|
||||
s.SendMessage(m.ChannelID,
|
||||
m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
MessageID: message.HelpDisableConqueredVillages,
|
||||
|
@ -319,16 +290,9 @@ func (s *Session) handleDisableConqueredVillagesCommand(ctx commandCtx, m *disco
|
|||
}))
|
||||
}
|
||||
|
||||
func (s *Session) handleLostVillagesCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
if has, err := s.memberHasPermission(m.GuildID, m.Author.ID, discordgo.PermissionAdministrator); err != nil || !has {
|
||||
return
|
||||
}
|
||||
|
||||
func (s *Session) handleLostVillagesCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
argsLength := len(args)
|
||||
if argsLength > 1 {
|
||||
s.sendUnknownCommandError(m.Author.Mention(), m.ChannelID, args[1:argsLength]...)
|
||||
return
|
||||
} else if argsLength < 1 {
|
||||
if argsLength != 1 {
|
||||
s.SendMessage(m.ChannelID,
|
||||
m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
MessageID: message.HelpLostVillages,
|
||||
|
@ -388,16 +352,9 @@ func (s *Session) handleLostVillagesCommand(ctx commandCtx, m *discordgo.Message
|
|||
}))
|
||||
}
|
||||
|
||||
func (s *Session) handleDisableLostVillagesCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
if has, err := s.memberHasPermission(m.GuildID, m.Author.ID, discordgo.PermissionAdministrator); err != nil || !has {
|
||||
return
|
||||
}
|
||||
|
||||
func (s *Session) handleDisableLostVillagesCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
argsLength := len(args)
|
||||
if argsLength > 1 {
|
||||
s.sendUnknownCommandError(m.Author.Mention(), m.ChannelID, args[1:argsLength]...)
|
||||
return
|
||||
} else if argsLength < 1 {
|
||||
if argsLength != 1 {
|
||||
s.SendMessage(m.ChannelID,
|
||||
m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
MessageID: message.HelpDisableLostVillages,
|
||||
|
@ -458,16 +415,9 @@ func (s *Session) handleDisableLostVillagesCommand(ctx commandCtx, m *discordgo.
|
|||
}))
|
||||
}
|
||||
|
||||
func (s *Session) handleObserveCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
if has, err := s.memberHasPermission(m.GuildID, m.Author.ID, discordgo.PermissionAdministrator); err != nil || !has {
|
||||
return
|
||||
}
|
||||
|
||||
func (s *Session) handleObserveCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
argsLength := len(args)
|
||||
if argsLength > 3 {
|
||||
s.sendUnknownCommandError(m.Author.Mention(), m.ChannelID, args[3:argsLength]...)
|
||||
return
|
||||
} else if argsLength < 3 {
|
||||
if argsLength != 3 {
|
||||
s.SendMessage(m.ChannelID,
|
||||
m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
MessageID: message.HelpObserve,
|
||||
|
@ -601,16 +551,9 @@ func (s *Session) handleObserveCommand(ctx commandCtx, m *discordgo.MessageCreat
|
|||
}))
|
||||
}
|
||||
|
||||
func (s *Session) handleDeleteObservationCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
if has, err := s.memberHasPermission(m.GuildID, m.Author.ID, discordgo.PermissionAdministrator); err != nil || !has {
|
||||
return
|
||||
}
|
||||
|
||||
func (s *Session) handleDeleteObservationCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
argsLength := len(args)
|
||||
if argsLength > 2 {
|
||||
s.sendUnknownCommandError(m.Author.Mention(), m.ChannelID, args[2:argsLength]...)
|
||||
return
|
||||
} else if argsLength < 2 {
|
||||
if argsLength != 2 {
|
||||
s.SendMessage(m.ChannelID,
|
||||
m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
MessageID: message.HelpDeleteObservation,
|
||||
|
@ -679,16 +622,9 @@ func (s *Session) handleDeleteObservationCommand(ctx commandCtx, m *discordgo.Me
|
|||
}))
|
||||
}
|
||||
|
||||
func (s *Session) handleObservationsCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
if has, err := s.memberHasPermission(m.GuildID, m.Author.ID, discordgo.PermissionAdministrator); err != nil || !has {
|
||||
return
|
||||
}
|
||||
|
||||
func (s *Session) handleObservationsCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
argsLength := len(args)
|
||||
if argsLength > 1 {
|
||||
s.sendUnknownCommandError(m.Author.Mention(), m.ChannelID, args[1:argsLength]...)
|
||||
return
|
||||
} else if argsLength < 1 {
|
||||
if argsLength != 1 {
|
||||
s.SendMessage(m.ChannelID,
|
||||
m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
MessageID: message.HelpObservations,
|
||||
|
@ -819,16 +755,9 @@ func (s *Session) handleObservationsCommand(ctx commandCtx, m *discordgo.Message
|
|||
MessageEmbed)
|
||||
}
|
||||
|
||||
func (s *Session) handleShowEnnobledBarbariansCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
if has, err := s.memberHasPermission(m.GuildID, m.Author.ID, discordgo.PermissionAdministrator); err != nil || !has {
|
||||
return
|
||||
}
|
||||
|
||||
func (s *Session) handleShowEnnobledBarbariansCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
argsLength := len(args)
|
||||
if argsLength > 1 {
|
||||
s.sendUnknownCommandError(m.Author.Mention(), m.ChannelID, args[1:argsLength]...)
|
||||
return
|
||||
} else if argsLength < 1 {
|
||||
if argsLength != 1 {
|
||||
s.SendMessage(m.ChannelID,
|
||||
m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
MessageID: message.HelpShowEnnobledBarbs,
|
||||
|
@ -906,16 +835,9 @@ func (s *Session) handleShowEnnobledBarbariansCommand(ctx commandCtx, m *discord
|
|||
}
|
||||
}
|
||||
|
||||
func (s *Session) handleChangeLanguageCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
if has, err := s.memberHasPermission(m.GuildID, m.Author.ID, discordgo.PermissionAdministrator); err != nil || !has {
|
||||
return
|
||||
}
|
||||
|
||||
func (s *Session) handleChangeLanguageCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
argsLength := len(args)
|
||||
if argsLength > 1 {
|
||||
s.sendUnknownCommandError(m.Author.Mention(), m.ChannelID, args[1:argsLength]...)
|
||||
return
|
||||
} else if argsLength < 1 {
|
||||
if argsLength != 1 {
|
||||
s.SendMessage(m.ChannelID,
|
||||
m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
MessageID: message.HelpChangageLanguage,
|
||||
|
@ -957,6 +879,7 @@ func (s *Session) handleChangeLanguageCommand(ctx commandCtx, m *discordgo.Messa
|
|||
}))
|
||||
return
|
||||
}
|
||||
ctx.localizer = message.NewLocalizer(lang)
|
||||
|
||||
s.SendMessage(m.ChannelID,
|
||||
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
|
@ -969,16 +892,9 @@ func (s *Session) handleChangeLanguageCommand(ctx commandCtx, m *discordgo.Messa
|
|||
}))
|
||||
}
|
||||
|
||||
func (s *Session) handleShowInternalsCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
if has, err := s.memberHasPermission(m.GuildID, m.Author.ID, discordgo.PermissionAdministrator); err != nil || !has {
|
||||
return
|
||||
}
|
||||
|
||||
func (s *Session) handleShowInternalsCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
argsLength := len(args)
|
||||
if argsLength > 1 {
|
||||
s.sendUnknownCommandError(m.Author.Mention(), m.ChannelID, args[1:argsLength]...)
|
||||
return
|
||||
} else if argsLength < 1 {
|
||||
if argsLength != 1 {
|
||||
s.SendMessage(m.ChannelID,
|
||||
m.Author.Mention()+" "+ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
MessageID: message.HelpShowInternals,
|
||||
|
|
|
@ -26,8 +26,7 @@ const (
|
|||
AuthorCommand Command = "author"
|
||||
)
|
||||
|
||||
func (s *Session) handleHelpCommand(ctx commandCtx, m *discordgo.MessageCreate) {
|
||||
tribeCMDWithPrefix := TribeCommand.WithPrefix(s.cfg.CommandPrefix)
|
||||
func (s *Session) handleHelpCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
commandsForAll := fmt.Sprintf(`
|
||||
- %s
|
||||
- %s
|
||||
|
@ -41,7 +40,7 @@ func (s *Session) handleHelpCommand(ctx commandCtx, m *discordgo.MessageCreate)
|
|||
DefaultMessage: message.FallbackMsg(message.HelpTribeTopODA,
|
||||
"**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by ODA."),
|
||||
TemplateData: map[string]interface{}{
|
||||
"Command": tribeCMDWithPrefix + " " + TopODACommand.String(),
|
||||
"Command": TribeCommand + " " + TopODACommand,
|
||||
},
|
||||
}),
|
||||
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
|
@ -49,7 +48,7 @@ func (s *Session) handleHelpCommand(ctx commandCtx, m *discordgo.MessageCreate)
|
|||
DefaultMessage: message.FallbackMsg(message.HelpTribeTopODD,
|
||||
"**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by ODD."),
|
||||
TemplateData: map[string]interface{}{
|
||||
"Command": tribeCMDWithPrefix + " " + TopODDCommand.String(),
|
||||
"Command": TribeCommand + " " + TopODDCommand,
|
||||
},
|
||||
}),
|
||||
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
|
@ -57,7 +56,7 @@ func (s *Session) handleHelpCommand(ctx commandCtx, m *discordgo.MessageCreate)
|
|||
DefaultMessage: message.FallbackMsg(message.HelpTribeTopODS,
|
||||
"**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by ODS."),
|
||||
TemplateData: map[string]interface{}{
|
||||
"Command": tribeCMDWithPrefix + " " + TopODSCommand.String(),
|
||||
"Command": TribeCommand + " " + TopODSCommand,
|
||||
},
|
||||
}),
|
||||
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
|
@ -65,7 +64,7 @@ func (s *Session) handleHelpCommand(ctx commandCtx, m *discordgo.MessageCreate)
|
|||
DefaultMessage: message.FallbackMsg(message.HelpTribeTopOD,
|
||||
"**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by OD."),
|
||||
TemplateData: map[string]interface{}{
|
||||
"Command": tribeCMDWithPrefix + " " + TopODCommand.String(),
|
||||
"Command": TribeCommand + " " + TopODCommand,
|
||||
},
|
||||
}),
|
||||
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
|
@ -73,7 +72,7 @@ func (s *Session) handleHelpCommand(ctx commandCtx, m *discordgo.MessageCreate)
|
|||
DefaultMessage: message.FallbackMsg(message.HelpTribeTopPoints,
|
||||
"**{{.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(),
|
||||
"Command": TribeCommand + " " + TopPointsCommand,
|
||||
},
|
||||
}),
|
||||
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
|
@ -258,20 +257,20 @@ func (s *Session) handleHelpCommand(ctx commandCtx, m *discordgo.MessageCreate)
|
|||
})).
|
||||
AddField(ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||
MessageID: message.HelpForAllUsers,
|
||||
DefaultMessage: message.FallbackMsg(message.HelpForAllUsers, "For all server members."),
|
||||
DefaultMessage: message.FallbackMsg(message.HelpForAllUsers, "For everyone"),
|
||||
}), commandsForAll).
|
||||
AddField(forAdmins, commandsForGuildAdmins).
|
||||
AddField(forAdmins+" 2", commandsForGuildAdmins2).
|
||||
MessageEmbed)
|
||||
}
|
||||
|
||||
func (s *Session) handleAuthorCommand(m *discordgo.MessageCreate) {
|
||||
func (s *Session) handleAuthorCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
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) {
|
||||
func (s *Session) handleTribeCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||
argsLength := len(args)
|
||||
if argsLength < 3 {
|
||||
return
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"help.title": "Help",
|
||||
"help.description": "Commands offered by the bot.",
|
||||
"help.footer": "",
|
||||
"help.forAllUsers": "For all members",
|
||||
"help.forAllUsers": "For everyone",
|
||||
"help.forAdmins": "For admins",
|
||||
"help.tribe.topoda": "**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by ODA.",
|
||||
"help.tribe.topodd": "**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by ODD.",
|
||||
|
|
Reference in New Issue