From 7203f7277f2ed4a769c2d1ce7a3655b52f20f0c9 Mon Sep 17 00:00:00 2001 From: Dusty Pianalto Date: Sun, 19 Apr 2020 22:01:33 -0800 Subject: [PATCH] Add kick command --- djpianalto.com/goff/exts/user_management.go | 31 +++++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/djpianalto.com/goff/exts/user_management.go b/djpianalto.com/goff/exts/user_management.go index 1f18919..3da8108 100644 --- a/djpianalto.com/goff/exts/user_management.go +++ b/djpianalto.com/goff/exts/user_management.go @@ -1,11 +1,13 @@ package exts import ( + "djpianalto.com/goff/djpianalto.com/goff/utils" "errors" "fmt" "github.com/bwmarrin/discordgo" "github.com/dustinpianalto/disgoman" "strings" + "time" ) func kickUser(ctx disgoman.Context, args []string) { @@ -34,7 +36,7 @@ func kickUser(ctx disgoman.Context, args []string) { return } - if !disgoman.HasHigherRole(ctx.Session, ctx.Guild.ID, ctx.User.ID, member.User.ID) { + if !disgoman.HasHigherRole(ctx.Session, ctx.Guild.ID, ctx.Session.State.User.ID, member.User.ID) { ctx.ErrorChannel <- disgoman.CommandError{ Context: ctx, Message: "I don't have a high enough role to kick that person", @@ -43,16 +45,39 @@ func kickUser(ctx disgoman.Context, args []string) { return } + var reason string if len(args) > 1 { - err = ctx.Session.GuildMemberDeleteWithReason(ctx.Guild.ID, member.User.ID, strings.Join(args[1:], " ")) + reason = strings.Join(args[1:], " ") } else { - err = ctx.Session.GuildMemberDelete(ctx.Guild.ID, member.User.ID) + reason = "No Reason Given" } + auditReason := fmt.Sprintf("%v#%v: %v", ctx.User.Username, ctx.User.Discriminator, reason) + err = ctx.Session.GuildMemberDeleteWithReason(ctx.Guild.ID, member.User.ID, auditReason) + if err != nil { ctx.ErrorChannel <- disgoman.CommandError{ Context: ctx, Message: fmt.Sprintf("Something went wrong kicking %v", member.User.Username), Error: err, } + return } + + event := &utils.LogEvent{ + Embed: discordgo.MessageEmbed{ + Title: "User Kicked", + Description: fmt.Sprintf( + "User %v#%v was kicked by %v.\nReason: %v", + member.User.Username, + member.User.Discriminator, + ctx.Message.Author.Username, + reason), + Timestamp: time.Now().Format("2006-01-02 15:04:05"), + Color: 0xff8c00, + }, + GuildID: ctx.Guild.ID, + Session: *ctx.Session, + } + utils.LoggingChannel <- event + _, _ = ctx.Send(fmt.Sprintf("User %v#%v has been kicked.", member.User.Username, member.User.Discriminator)) }