Features: Add Ban and Kick user commands.

master
Marc Egerton 2020-05-08 07:33:08 +01:00
parent cbfd937464
commit 6daae3d97c
2 changed files with 94 additions and 0 deletions

View File

@ -40,6 +40,8 @@ func (f *Features) RegisterHandlers() {
f.RegisterCommand("ping", f.handlePing)
f.RegisterCommand("status", f.handleSetStatus)
f.RegisterCommand("purge", f.handlePurgeChannel)
f.RegisterCommand("kick", f.handleKickUser)
f.RegisterCommand("ban", f.handleBanUser)
}
func (f *Features) ProcessCommand(s *discordgo.Session, m *discordgo.MessageCreate) {

View File

@ -56,3 +56,95 @@ func (f *Features) handlePurgeChannel(s *discordgo.Session, m *discordgo.Message
return nil
}
func (f *Features) handleKickUser(s *discordgo.Session, m *discordgo.MessageCreate) error {
if !f.Auth.CheckAdminRole(m.Member) {
return errors.New("You do not have permissions to use this command.")
}
var (
mHandle *discordgo.Member
kickReason string
err error
)
args := strings.Split(m.Content, " ")
if len(args) < 2 {
return errors.New("You must specify a user to kick.")
}
if len(args) == 3 {
kickReason = args[2]
}
member := args[1]
idStr := strings.Replace(member, "<@!", "", 1)
idStr = strings.Replace(idStr, ">", "", 1)
mHandle, err = s.GuildMember(f.Config.Guild.ID, idStr)
if err != nil {
return err
}
err = s.GuildMemberDeleteWithReason(f.Config.Guild.ID, mHandle.User.ID, kickReason)
if err != nil {
return err
}
msg := "User `" + mHandle.User.Username + "#" + mHandle.User.Discriminator + "` was kicked.\n"
if len(kickReason) > 0 {
msg += "Reason: `" + kickReason + "`\n"
}
embed := f.CreateDefinedEmbed("Kick User", msg, "success", m.Author)
_, err = s.ChannelMessageSendEmbed(m.ChannelID, embed)
if err != nil {
return err
}
return nil
}
func (f *Features) handleBanUser(s *discordgo.Session, m *discordgo.MessageCreate) error {
if !f.Auth.CheckAdminRole(m.Member) {
return errors.New("You do not have permissions to use this command.")
}
var (
mHandle *discordgo.Member
banReason string
err error
)
args := strings.Split(m.Content, " ")
if len(args) < 2 {
return errors.New("You must specify a user to ban.")
}
if len(args) == 3 {
banReason = args[2]
}
member := args[1]
idStr := strings.Replace(member, "<@!", "", 1)
idStr = strings.Replace(idStr, ">", "", 1)
mHandle, err = s.GuildMember(f.Config.Guild.ID, idStr)
if err != nil {
return err
}
err = s.GuildBanCreateWithReason(f.Config.Guild.ID, mHandle.User.ID, banReason, 0)
if err != nil {
return err
}
msg := "User `" + mHandle.User.Username + "#" + mHandle.User.Discriminator + "` was banned.\n"
if len(banReason) > 0 {
msg += "Reason: `" + banReason + "`\n"
}
embed := f.CreateDefinedEmbed("Ban User", msg, "success", m.Author)
_, err = s.ChannelMessageSendEmbed(m.ChannelID, embed)
if err != nil {
return err
}
return nil
}