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)
|
return string(cmd)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cmd Command) WithPrefix(prefix string) string {
|
func (cmd Command) WithPrefix(prefix string) Command {
|
||||||
return prefix + cmd.String()
|
return Command(prefix + cmd.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
type commandCtx struct {
|
type commandCtx struct {
|
||||||
|
|
|
@ -20,11 +20,7 @@ const (
|
||||||
|
|
||||||
var coordsRegex = regexp.MustCompile(`(\d+)\|(\d+)`)
|
var coordsRegex = regexp.MustCompile(`(\d+)\|(\d+)`)
|
||||||
|
|
||||||
func (s *Session) handleCoordsTranslationCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) {
|
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
|
|
||||||
}
|
|
||||||
|
|
||||||
argsLength := len(args)
|
argsLength := len(args)
|
||||||
if argsLength != 1 {
|
if argsLength != 1 {
|
||||||
s.SendMessage(m.ChannelID,
|
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) {
|
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
|
|
||||||
}
|
|
||||||
|
|
||||||
ctx.server.CoordsTranslation = ""
|
ctx.server.CoordsTranslation = ""
|
||||||
go s.cfg.ServerRepository.Update(context.Background(), ctx.server)
|
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 == "" {
|
if ctx.server.CoordsTranslation == "" {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,23 @@ import (
|
||||||
"github.com/bwmarrin/discordgo"
|
"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 {
|
type SessionConfig struct {
|
||||||
Token string
|
Token string
|
||||||
CommandPrefix string
|
CommandPrefix string
|
||||||
|
@ -27,8 +44,9 @@ type SessionConfig struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type Session struct {
|
type Session struct {
|
||||||
dg *discordgo.Session
|
dg *discordgo.Session
|
||||||
cfg SessionConfig
|
cfg SessionConfig
|
||||||
|
handlers handlers
|
||||||
}
|
}
|
||||||
|
|
||||||
func New(cfg SessionConfig) (*Session, error) {
|
func New(cfg SessionConfig) (*Session, error) {
|
||||||
|
@ -47,6 +65,96 @@ func New(cfg SessionConfig) (*Session, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Session) init() 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)
|
s.dg.AddHandler(s.handleNewMessage)
|
||||||
|
|
||||||
err := s.dg.Open()
|
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) {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -138,58 +246,32 @@ func (s *Session) handleNewMessage(_ *discordgo.Session, m *discordgo.MessageCre
|
||||||
ID: m.GuildID,
|
ID: m.GuildID,
|
||||||
Lang: message.GetDefaultLanguage().String(),
|
Lang: message.GetDefaultLanguage().String(),
|
||||||
}
|
}
|
||||||
if err := s.cfg.ServerRepository.Store(context.Background(), server); err != nil {
|
if server.ID != "" {
|
||||||
return
|
if err := s.cfg.ServerRepository.Store(context.Background(), server); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ctx := commandCtx{
|
ctx := &commandCtx{
|
||||||
server: server,
|
server: server,
|
||||||
localizer: message.NewLocalizer(server.Lang),
|
localizer: message.NewLocalizer(server.Lang),
|
||||||
}
|
}
|
||||||
|
|
||||||
switch splitted[0] {
|
h := s.handlers.find(Command(splitted[0]))
|
||||||
case HelpCommand.WithPrefix(s.cfg.CommandPrefix):
|
if h != nil {
|
||||||
s.handleHelpCommand(ctx, m)
|
if h.requireAdmPermissions {
|
||||||
case AuthorCommand.WithPrefix(s.cfg.CommandPrefix):
|
if m.GuildID == "" {
|
||||||
s.handleAuthorCommand(m)
|
return
|
||||||
case TribeCommand.WithPrefix(s.cfg.CommandPrefix):
|
}
|
||||||
s.handleTribeCommand(ctx, m, args...)
|
has, err := s.memberHasPermission(m.GuildID, m.Author.ID, discordgo.PermissionAdministrator)
|
||||||
|
if err != nil || !has {
|
||||||
case ChangeLanguageCommand.WithPrefix(s.cfg.CommandPrefix):
|
return
|
||||||
s.handleChangeLanguageCommand(ctx, m, args...)
|
}
|
||||||
|
}
|
||||||
case AddGroupCommand.WithPrefix(s.cfg.CommandPrefix):
|
h.fn(ctx, m, args...)
|
||||||
s.handleAddGroupCommand(ctx, m)
|
return
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
s.translateCoords(ctx, m)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Session) memberHasPermission(guildID string, userID string, permission int) (bool, error) {
|
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
|
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"
|
ShowInternalsCommand Command = "showinternals"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s *Session) handleAddGroupCommand(ctx commandCtx, m *discordgo.MessageCreate) {
|
func (s *Session) handleAddGroupCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||||
if has, err := s.memberHasPermission(m.GuildID, m.Author.ID, discordgo.PermissionAdministrator); err != nil || !has {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(ctx.server.Groups) >= groupsPerServer {
|
if len(ctx.server.Groups) >= groupsPerServer {
|
||||||
s.SendMessage(m.ChannelID,
|
s.SendMessage(m.ChannelID,
|
||||||
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
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) {
|
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
|
|
||||||
}
|
|
||||||
|
|
||||||
argsLength := len(args)
|
argsLength := len(args)
|
||||||
if argsLength > 1 {
|
if argsLength != 1 {
|
||||||
s.sendUnknownCommandError(m.Author.Mention(), m.ChannelID, args[1:argsLength]...)
|
|
||||||
return
|
|
||||||
} else if argsLength < 1 {
|
|
||||||
s.SendMessage(m.ChannelID,
|
s.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,
|
||||||
|
@ -138,11 +127,7 @@ func (s *Session) handleDeleteGroupCommand(ctx commandCtx, m *discordgo.MessageC
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Session) handleGroupsCommand(ctx commandCtx, m *discordgo.MessageCreate) {
|
func (s *Session) handleGroupsCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||||
if has, err := s.memberHasPermission(m.GuildID, m.Author.ID, discordgo.PermissionAdministrator); err != nil || !has {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
groups, _, err := s.cfg.GroupRepository.Fetch(context.Background(), &models.GroupFilter{
|
groups, _, err := s.cfg.GroupRepository.Fetch(context.Background(), &models.GroupFilter{
|
||||||
ServerID: []string{m.GuildID},
|
ServerID: []string{m.GuildID},
|
||||||
Order: []string{"id ASC"},
|
Order: []string{"id ASC"},
|
||||||
|
@ -183,16 +168,9 @@ func (s *Session) handleGroupsCommand(ctx commandCtx, m *discordgo.MessageCreate
|
||||||
MessageEmbed)
|
MessageEmbed)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Session) handleConqueredVillagesCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) {
|
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
|
|
||||||
}
|
|
||||||
|
|
||||||
argsLength := len(args)
|
argsLength := len(args)
|
||||||
if argsLength > 1 {
|
if argsLength != 1 {
|
||||||
s.sendUnknownCommandError(m.Author.Mention(), m.ChannelID, args[1:argsLength]...)
|
|
||||||
return
|
|
||||||
} else if argsLength < 1 {
|
|
||||||
s.SendMessage(m.ChannelID,
|
s.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,
|
||||||
|
@ -250,16 +228,9 @@ func (s *Session) handleConqueredVillagesCommand(ctx commandCtx, m *discordgo.Me
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Session) handleDisableConqueredVillagesCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) {
|
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
|
|
||||||
}
|
|
||||||
|
|
||||||
argsLength := len(args)
|
argsLength := len(args)
|
||||||
if argsLength > 1 {
|
if argsLength != 1 {
|
||||||
s.sendUnknownCommandError(m.Author.Mention(), m.ChannelID, args[1:argsLength]...)
|
|
||||||
return
|
|
||||||
} else if argsLength < 1 {
|
|
||||||
s.SendMessage(m.ChannelID,
|
s.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,
|
||||||
|
@ -319,16 +290,9 @@ func (s *Session) handleDisableConqueredVillagesCommand(ctx commandCtx, m *disco
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Session) handleLostVillagesCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) {
|
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
|
|
||||||
}
|
|
||||||
|
|
||||||
argsLength := len(args)
|
argsLength := len(args)
|
||||||
if argsLength > 1 {
|
if argsLength != 1 {
|
||||||
s.sendUnknownCommandError(m.Author.Mention(), m.ChannelID, args[1:argsLength]...)
|
|
||||||
return
|
|
||||||
} else if argsLength < 1 {
|
|
||||||
s.SendMessage(m.ChannelID,
|
s.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,
|
||||||
|
@ -388,16 +352,9 @@ func (s *Session) handleLostVillagesCommand(ctx commandCtx, m *discordgo.Message
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Session) handleDisableLostVillagesCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) {
|
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
|
|
||||||
}
|
|
||||||
|
|
||||||
argsLength := len(args)
|
argsLength := len(args)
|
||||||
if argsLength > 1 {
|
if argsLength != 1 {
|
||||||
s.sendUnknownCommandError(m.Author.Mention(), m.ChannelID, args[1:argsLength]...)
|
|
||||||
return
|
|
||||||
} else if argsLength < 1 {
|
|
||||||
s.SendMessage(m.ChannelID,
|
s.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,
|
||||||
|
@ -458,16 +415,9 @@ func (s *Session) handleDisableLostVillagesCommand(ctx commandCtx, m *discordgo.
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Session) handleObserveCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) {
|
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
|
|
||||||
}
|
|
||||||
|
|
||||||
argsLength := len(args)
|
argsLength := len(args)
|
||||||
if argsLength > 3 {
|
if argsLength != 3 {
|
||||||
s.sendUnknownCommandError(m.Author.Mention(), m.ChannelID, args[3:argsLength]...)
|
|
||||||
return
|
|
||||||
} else if argsLength < 3 {
|
|
||||||
s.SendMessage(m.ChannelID,
|
s.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,
|
||||||
|
@ -601,16 +551,9 @@ func (s *Session) handleObserveCommand(ctx commandCtx, m *discordgo.MessageCreat
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Session) handleDeleteObservationCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) {
|
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
|
|
||||||
}
|
|
||||||
|
|
||||||
argsLength := len(args)
|
argsLength := len(args)
|
||||||
if argsLength > 2 {
|
if argsLength != 2 {
|
||||||
s.sendUnknownCommandError(m.Author.Mention(), m.ChannelID, args[2:argsLength]...)
|
|
||||||
return
|
|
||||||
} else if argsLength < 2 {
|
|
||||||
s.SendMessage(m.ChannelID,
|
s.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,
|
||||||
|
@ -679,16 +622,9 @@ func (s *Session) handleDeleteObservationCommand(ctx commandCtx, m *discordgo.Me
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Session) handleObservationsCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) {
|
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
|
|
||||||
}
|
|
||||||
|
|
||||||
argsLength := len(args)
|
argsLength := len(args)
|
||||||
if argsLength > 1 {
|
if argsLength != 1 {
|
||||||
s.sendUnknownCommandError(m.Author.Mention(), m.ChannelID, args[1:argsLength]...)
|
|
||||||
return
|
|
||||||
} else if argsLength < 1 {
|
|
||||||
s.SendMessage(m.ChannelID,
|
s.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,
|
||||||
|
@ -819,16 +755,9 @@ func (s *Session) handleObservationsCommand(ctx commandCtx, m *discordgo.Message
|
||||||
MessageEmbed)
|
MessageEmbed)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Session) handleShowEnnobledBarbariansCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) {
|
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
|
|
||||||
}
|
|
||||||
|
|
||||||
argsLength := len(args)
|
argsLength := len(args)
|
||||||
if argsLength > 1 {
|
if argsLength != 1 {
|
||||||
s.sendUnknownCommandError(m.Author.Mention(), m.ChannelID, args[1:argsLength]...)
|
|
||||||
return
|
|
||||||
} else if argsLength < 1 {
|
|
||||||
s.SendMessage(m.ChannelID,
|
s.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,
|
||||||
|
@ -906,16 +835,9 @@ func (s *Session) handleShowEnnobledBarbariansCommand(ctx commandCtx, m *discord
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Session) handleChangeLanguageCommand(ctx commandCtx, m *discordgo.MessageCreate, args ...string) {
|
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
|
|
||||||
}
|
|
||||||
|
|
||||||
argsLength := len(args)
|
argsLength := len(args)
|
||||||
if argsLength > 1 {
|
if argsLength != 1 {
|
||||||
s.sendUnknownCommandError(m.Author.Mention(), m.ChannelID, args[1:argsLength]...)
|
|
||||||
return
|
|
||||||
} else if argsLength < 1 {
|
|
||||||
s.SendMessage(m.ChannelID,
|
s.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,
|
||||||
|
@ -957,6 +879,7 @@ func (s *Session) handleChangeLanguageCommand(ctx commandCtx, m *discordgo.Messa
|
||||||
}))
|
}))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
ctx.localizer = message.NewLocalizer(lang)
|
||||||
|
|
||||||
s.SendMessage(m.ChannelID,
|
s.SendMessage(m.ChannelID,
|
||||||
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
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) {
|
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
|
|
||||||
}
|
|
||||||
|
|
||||||
argsLength := len(args)
|
argsLength := len(args)
|
||||||
if argsLength > 1 {
|
if argsLength != 1 {
|
||||||
s.sendUnknownCommandError(m.Author.Mention(), m.ChannelID, args[1:argsLength]...)
|
|
||||||
return
|
|
||||||
} else if argsLength < 1 {
|
|
||||||
s.SendMessage(m.ChannelID,
|
s.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,
|
||||||
|
|
|
@ -26,8 +26,7 @@ const (
|
||||||
AuthorCommand Command = "author"
|
AuthorCommand Command = "author"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s *Session) handleHelpCommand(ctx commandCtx, m *discordgo.MessageCreate) {
|
func (s *Session) handleHelpCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||||
tribeCMDWithPrefix := TribeCommand.WithPrefix(s.cfg.CommandPrefix)
|
|
||||||
commandsForAll := fmt.Sprintf(`
|
commandsForAll := fmt.Sprintf(`
|
||||||
- %s
|
- %s
|
||||||
- %s
|
- %s
|
||||||
|
@ -41,7 +40,7 @@ func (s *Session) handleHelpCommand(ctx commandCtx, m *discordgo.MessageCreate)
|
||||||
DefaultMessage: message.FallbackMsg(message.HelpTribeTopODA,
|
DefaultMessage: message.FallbackMsg(message.HelpTribeTopODA,
|
||||||
"**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by ODA."),
|
"**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by ODA."),
|
||||||
TemplateData: map[string]interface{}{
|
TemplateData: map[string]interface{}{
|
||||||
"Command": tribeCMDWithPrefix + " " + TopODACommand.String(),
|
"Command": TribeCommand + " " + TopODACommand,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||||
|
@ -49,7 +48,7 @@ func (s *Session) handleHelpCommand(ctx commandCtx, m *discordgo.MessageCreate)
|
||||||
DefaultMessage: message.FallbackMsg(message.HelpTribeTopODD,
|
DefaultMessage: message.FallbackMsg(message.HelpTribeTopODD,
|
||||||
"**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by ODD."),
|
"**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by ODD."),
|
||||||
TemplateData: map[string]interface{}{
|
TemplateData: map[string]interface{}{
|
||||||
"Command": tribeCMDWithPrefix + " " + TopODDCommand.String(),
|
"Command": TribeCommand + " " + TopODDCommand,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||||
|
@ -57,7 +56,7 @@ func (s *Session) handleHelpCommand(ctx commandCtx, m *discordgo.MessageCreate)
|
||||||
DefaultMessage: message.FallbackMsg(message.HelpTribeTopODS,
|
DefaultMessage: message.FallbackMsg(message.HelpTribeTopODS,
|
||||||
"**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by ODS."),
|
"**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by ODS."),
|
||||||
TemplateData: map[string]interface{}{
|
TemplateData: map[string]interface{}{
|
||||||
"Command": tribeCMDWithPrefix + " " + TopODSCommand.String(),
|
"Command": TribeCommand + " " + TopODSCommand,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||||
|
@ -65,7 +64,7 @@ func (s *Session) handleHelpCommand(ctx commandCtx, m *discordgo.MessageCreate)
|
||||||
DefaultMessage: message.FallbackMsg(message.HelpTribeTopOD,
|
DefaultMessage: message.FallbackMsg(message.HelpTribeTopOD,
|
||||||
"**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by OD."),
|
"**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by OD."),
|
||||||
TemplateData: map[string]interface{}{
|
TemplateData: map[string]interface{}{
|
||||||
"Command": tribeCMDWithPrefix + " " + TopODCommand.String(),
|
"Command": TribeCommand + " " + TopODCommand,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||||
|
@ -73,7 +72,7 @@ func (s *Session) handleHelpCommand(ctx commandCtx, m *discordgo.MessageCreate)
|
||||||
DefaultMessage: message.FallbackMsg(message.HelpTribeTopPoints,
|
DefaultMessage: message.FallbackMsg(message.HelpTribeTopPoints,
|
||||||
"**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by points."),
|
"**{{.Command}}** [server] [page] [id1] [id2] [id3] [n id] - generates a player list from selected tribes ordered by points."),
|
||||||
TemplateData: map[string]interface{}{
|
TemplateData: map[string]interface{}{
|
||||||
"Command": tribeCMDWithPrefix + " " + TopPointsCommand.String(),
|
"Command": TribeCommand + " " + TopPointsCommand,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||||
|
@ -258,20 +257,20 @@ func (s *Session) handleHelpCommand(ctx commandCtx, m *discordgo.MessageCreate)
|
||||||
})).
|
})).
|
||||||
AddField(ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
AddField(ctx.localizer.MustLocalize(&i18n.LocalizeConfig{
|
||||||
MessageID: message.HelpForAllUsers,
|
MessageID: message.HelpForAllUsers,
|
||||||
DefaultMessage: message.FallbackMsg(message.HelpForAllUsers, "For all server members."),
|
DefaultMessage: message.FallbackMsg(message.HelpForAllUsers, "For everyone"),
|
||||||
}), commandsForAll).
|
}), commandsForAll).
|
||||||
AddField(forAdmins, commandsForGuildAdmins).
|
AddField(forAdmins, commandsForGuildAdmins).
|
||||||
AddField(forAdmins+" 2", commandsForGuildAdmins2).
|
AddField(forAdmins+" 2", commandsForGuildAdmins2).
|
||||||
MessageEmbed)
|
MessageEmbed)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Session) handleAuthorCommand(m *discordgo.MessageCreate) {
|
func (s *Session) handleAuthorCommand(ctx *commandCtx, m *discordgo.MessageCreate, args ...string) {
|
||||||
s.SendMessage(m.ChannelID,
|
s.SendMessage(m.ChannelID,
|
||||||
fmt.Sprintf("%s Discord: Kichiyaki#2064 | https://dawid-wysokinski.pl/#contact.",
|
fmt.Sprintf("%s Discord: Kichiyaki#2064 | https://dawid-wysokinski.pl/#contact.",
|
||||||
m.Author.Mention()))
|
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)
|
argsLength := len(args)
|
||||||
if argsLength < 3 {
|
if argsLength < 3 {
|
||||||
return
|
return
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"help.title": "Help",
|
"help.title": "Help",
|
||||||
"help.description": "Commands offered by the bot.",
|
"help.description": "Commands offered by the bot.",
|
||||||
"help.footer": "",
|
"help.footer": "",
|
||||||
"help.forAllUsers": "For all members",
|
"help.forAllUsers": "For everyone",
|
||||||
"help.forAdmins": "For admins",
|
"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.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.",
|
"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