add DeleteCommand functionality
This commit is contained in:
parent
24d784f6ae
commit
fa7dda85e4
|
@ -3,7 +3,6 @@ package discord
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"twdcbot/models"
|
"twdcbot/models"
|
||||||
|
@ -63,7 +62,7 @@ func (s *Session) handleNewMessage(_ *discordgo.Session, m *discordgo.MessageCre
|
||||||
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 || m.GuildID == "" {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if has, err := s.MemberHasPermission(m.GuildID, m.Author.ID, discordgo.PermissionAdministrator); err != nil || !has {
|
if has, err := s.memberHasPermission(m.GuildID, m.Author.ID, discordgo.PermissionAdministrator); err != nil || !has {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
splitted := strings.Split(m.Content, " ")
|
splitted := strings.Split(m.Content, " ")
|
||||||
|
@ -71,29 +70,40 @@ func (s *Session) handleNewMessage(_ *discordgo.Session, m *discordgo.MessageCre
|
||||||
args := splitted[1 : argsLength+1]
|
args := splitted[1 : argsLength+1]
|
||||||
switch splitted[0] {
|
switch splitted[0] {
|
||||||
case HelpCommand.WithPrefix(s.cfg.CommandPrefix):
|
case HelpCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||||
if argsLength == 0 {
|
s.handleHelpCommand(m)
|
||||||
s.sendHelpMessage(m.Author.Mention(), m.ChannelID)
|
|
||||||
} else {
|
|
||||||
s.sendUnknownCommandError(m.Author.Mention(), m.ChannelID, args...)
|
|
||||||
}
|
|
||||||
break
|
|
||||||
case AddCommand.WithPrefix(s.cfg.CommandPrefix):
|
case AddCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||||
if argsLength > 2 {
|
|
||||||
s.sendUnknownCommandError(m.Author.Mention(), m.ChannelID, splitted[3:argsLength+1]...)
|
|
||||||
return
|
|
||||||
} else if argsLength < 2 {
|
|
||||||
s.sendMessage(m.ChannelID, m.Author.Mention()+` tw!add [świat] [id_plemienia]`)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
s.handleAddCommand(m, args...)
|
s.handleAddCommand(m, args...)
|
||||||
|
case DeleteCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||||
|
s.handleDeleteCommand(m, args...)
|
||||||
|
case ListCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||||
|
case LostVillagesCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||||
|
case ConqueredVillagesCommand.WithPrefix(s.cfg.CommandPrefix):
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Session) handleHelpCommand(m *discordgo.MessageCreate) {
|
||||||
|
s.sendHelpMessage(m.Author.Mention(), m.ChannelID)
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Session) handleAddCommand(m *discordgo.MessageCreate, args ...string) {
|
func (s *Session) handleAddCommand(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 {
|
||||||
|
s.sendMessage(m.ChannelID,
|
||||||
|
fmt.Sprintf("%s %s [świat] [id plemienia]",
|
||||||
|
m.Author.Mention(),
|
||||||
|
AddCommand.WithPrefix(s.cfg.CommandPrefix)))
|
||||||
|
return
|
||||||
|
}
|
||||||
world := args[0]
|
world := args[0]
|
||||||
id, err := strconv.Atoi(args[1])
|
id, err := strconv.Atoi(args[1])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.sendMessage(m.ChannelID, m.Author.Mention()+` tw!add [świat] [id_plemienia]`)
|
s.sendMessage(m.ChannelID,
|
||||||
|
fmt.Sprintf("%s %s [świat] [id plemienia]",
|
||||||
|
m.Author.Mention(),
|
||||||
|
AddCommand.WithPrefix(s.cfg.CommandPrefix)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
server := &models.Server{
|
server := &models.Server{
|
||||||
|
@ -108,7 +118,6 @@ func (s *Session) handleAddCommand(m *discordgo.MessageCreate, args ...string) {
|
||||||
s.sendMessage(m.ChannelID, m.Author.Mention()+fmt.Sprintf(` Osiągnięto limit plemion (%d/%d).`, TribesPerServer, TribesPerServer))
|
s.sendMessage(m.ChannelID, m.Author.Mention()+fmt.Sprintf(` Osiągnięto limit plemion (%d/%d).`, TribesPerServer, TribesPerServer))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
log.Println(world, id, server.Tribes)
|
|
||||||
err = s.cfg.TribeRepository.Store(context.Background(), &models.Tribe{
|
err = s.cfg.TribeRepository.Store(context.Background(), &models.Tribe{
|
||||||
World: world,
|
World: world,
|
||||||
TribeID: id,
|
TribeID: id,
|
||||||
|
@ -118,13 +127,45 @@ func (s *Session) handleAddCommand(m *discordgo.MessageCreate, args ...string) {
|
||||||
s.sendMessage(m.ChannelID, m.Author.Mention()+` Nie udało się dodać plemienia do obserwowanych.`)
|
s.sendMessage(m.ChannelID, m.Author.Mention()+` Nie udało się dodać plemienia do obserwowanych.`)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
s.sendMessage(m.ChannelID, m.Author.Mention()+` Dodano.`)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Session) handleDeleteCommand(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 {
|
||||||
|
s.sendMessage(m.ChannelID,
|
||||||
|
fmt.Sprintf(`%s %s [id z tw!list]`,
|
||||||
|
m.Author.Mention(),
|
||||||
|
DeleteCommand.WithPrefix(s.cfg.CommandPrefix)))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
id, err := strconv.Atoi(args[0])
|
||||||
|
if err != nil {
|
||||||
|
s.sendMessage(m.ChannelID,
|
||||||
|
fmt.Sprintf(`%s %s [id z tw!list]`,
|
||||||
|
m.Author.Mention(),
|
||||||
|
DeleteCommand.WithPrefix(s.cfg.CommandPrefix)))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
go s.cfg.TribeRepository.Delete(context.Background(), &models.TribeFilter{
|
||||||
|
ServerID: []string{m.GuildID},
|
||||||
|
ID: []int{id},
|
||||||
|
})
|
||||||
|
|
||||||
|
s.sendMessage(m.ChannelID, m.Author.Mention()+` Usunięto.`)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Session) Close() error {
|
func (s *Session) Close() error {
|
||||||
return s.dg.Close()
|
return s.dg.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Session) MemberHasPermission(guildID string, userID string, permission int) (bool, error) {
|
func (s *Session) memberHasPermission(guildID string, userID string, permission int) (bool, error) {
|
||||||
member, err := s.dg.State.Member(guildID, userID)
|
member, err := s.dg.State.Member(guildID, userID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if member, err = s.dg.GuildMember(guildID, userID); err != nil {
|
if member, err = s.dg.GuildMember(guildID, userID); err != nil {
|
||||||
|
|
|
@ -9,8 +9,9 @@ type Tribe struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type TribeFilter struct {
|
type TribeFilter struct {
|
||||||
ID []string
|
ID []int
|
||||||
Limit int `urlstruct:",nowhere"`
|
ServerID []string
|
||||||
Offset int `urlstruct:",nowhere"`
|
Limit int `urlstruct:",nowhere"`
|
||||||
Order []string `urlstruct:",nowhere"`
|
Offset int `urlstruct:",nowhere"`
|
||||||
|
Order []string `urlstruct:",nowhere"`
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue