Fix bugs
This commit is contained in:
parent
0cd57dfa16
commit
a17e1de4d0
@ -177,7 +177,7 @@ func getWelcomeChannel(ctx disgoman.Context, _ []string) {
|
|||||||
_, _ = ctx.Send(fmt.Sprintf("The welcome channel is currently %s", channel.Mention()))
|
_, _ = ctx.Send(fmt.Sprintf("The welcome channel is currently %s", channel.Mention()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func addGuild(ctx disgoman.Context, args []string) {
|
func addGuildCommand(ctx disgoman.Context, args []string) {
|
||||||
var guildID string
|
var guildID string
|
||||||
row := utils.Database.QueryRow("SELECT id FROM guilds where id=$1", ctx.Guild.ID)
|
row := utils.Database.QueryRow("SELECT id FROM guilds where id=$1", ctx.Guild.ID)
|
||||||
err := row.Scan(&guildID)
|
err := row.Scan(&guildID)
|
||||||
|
|||||||
@ -128,15 +128,33 @@ func AddCommandHandlers(h *disgoman.CommandManager) {
|
|||||||
OwnerOnly: false,
|
OwnerOnly: false,
|
||||||
Hidden: false,
|
Hidden: false,
|
||||||
RequiredPermissions: disgoman.PermissionKickMembers,
|
RequiredPermissions: disgoman.PermissionKickMembers,
|
||||||
Invoke: kickUser,
|
Invoke: kickUserCommand,
|
||||||
})
|
})
|
||||||
_ = h.AddCommand(&disgoman.Command{
|
_ = h.AddCommand(&disgoman.Command{
|
||||||
Name: "addGuild",
|
Name: "addGuildCommand",
|
||||||
Aliases: nil,
|
Aliases: nil,
|
||||||
Description: "Adds the current guild to the database",
|
Description: "Adds the current guild to the database",
|
||||||
OwnerOnly: true,
|
OwnerOnly: true,
|
||||||
Hidden: false,
|
Hidden: false,
|
||||||
RequiredPermissions: disgoman.PermissionManageServer,
|
RequiredPermissions: disgoman.PermissionManageServer,
|
||||||
Invoke: addGuild,
|
Invoke: addGuildCommand,
|
||||||
|
})
|
||||||
|
_ = h.AddCommand(&disgoman.Command{
|
||||||
|
Name: "ban",
|
||||||
|
Aliases: []string{"ban-no-delete"},
|
||||||
|
Description: "Bans the given user with the given reason",
|
||||||
|
OwnerOnly: false,
|
||||||
|
Hidden: false,
|
||||||
|
RequiredPermissions: disgoman.PermissionBanMembers,
|
||||||
|
Invoke: banUserCommand,
|
||||||
|
})
|
||||||
|
_ = h.AddCommand(&disgoman.Command{
|
||||||
|
Name: "unban",
|
||||||
|
Aliases: nil,
|
||||||
|
Description: "Unbans the given user",
|
||||||
|
OwnerOnly: false,
|
||||||
|
Hidden: false,
|
||||||
|
RequiredPermissions: disgoman.PermissionBanMembers,
|
||||||
|
Invoke: unbanUserCommand,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,13 +10,19 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func kickUser(ctx disgoman.Context, args []string) {
|
func kickUserCommand(ctx disgoman.Context, args []string) {
|
||||||
var member *discordgo.Member
|
var member *discordgo.Member
|
||||||
var err error
|
var err error
|
||||||
if len(ctx.Message.Mentions) > 0 {
|
if len(ctx.Message.Mentions) > 0 {
|
||||||
member, err = ctx.Session.GuildMember(ctx.Guild.ID, ctx.Message.Mentions[0].ID)
|
member, err = ctx.Session.GuildMember(ctx.Guild.ID, ctx.Message.Mentions[0].ID)
|
||||||
|
} else if len(args) >= 1 {
|
||||||
|
idString := args[0]
|
||||||
|
if strings.HasPrefix(idString, "<@!") && strings.HasSuffix(idString, ">") {
|
||||||
|
idString = idString[3 : len(idString)-1]
|
||||||
|
}
|
||||||
|
member, err = ctx.Session.GuildMember(ctx.Guild.ID, idString)
|
||||||
} else {
|
} else {
|
||||||
member, err = ctx.Session.GuildMember(ctx.Guild.ID, args[0])
|
err = errors.New("that is not a valid id")
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.ErrorChannel <- disgoman.CommandError{
|
||||||
@ -27,7 +33,7 @@ func kickUser(ctx disgoman.Context, args []string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if !disgoman.HasHigherRole(ctx.Session, ctx.Guild.ID, ctx.Message.Author.ID, member.User.ID) {
|
if higher, _ := disgoman.HasHigherRole(ctx.Session, ctx.Guild.ID, ctx.Message.Author.ID, member.User.ID); !higher {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "You must have a higher role than the person you are trying to kick",
|
Message: "You must have a higher role than the person you are trying to kick",
|
||||||
@ -36,7 +42,7 @@ func kickUser(ctx disgoman.Context, args []string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if !disgoman.HasHigherRole(ctx.Session, ctx.Guild.ID, ctx.Session.State.User.ID, member.User.ID) {
|
if higher, _ := disgoman.HasHigherRole(ctx.Session, ctx.Guild.ID, ctx.Session.State.User.ID, member.User.ID); !higher {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "I don't have a high enough role to kick that person",
|
Message: "I don't have a high enough role to kick that person",
|
||||||
@ -81,3 +87,169 @@ func kickUser(ctx disgoman.Context, args []string) {
|
|||||||
utils.LoggingChannel <- event
|
utils.LoggingChannel <- event
|
||||||
_, _ = ctx.Send(fmt.Sprintf("User %v#%v has been kicked.", member.User.Username, member.User.Discriminator))
|
_, _ = ctx.Send(fmt.Sprintf("User %v#%v has been kicked.", member.User.Username, member.User.Discriminator))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func banUserCommand(ctx disgoman.Context, args []string) {
|
||||||
|
var user *discordgo.User
|
||||||
|
var err error
|
||||||
|
if len(ctx.Message.Mentions) > 0 {
|
||||||
|
user, err = ctx.Session.User(ctx.Message.Mentions[0].ID)
|
||||||
|
} else if len(args) >= 1 {
|
||||||
|
idString := args[0]
|
||||||
|
if strings.HasPrefix(idString, "<@!") && strings.HasSuffix(idString, ">") {
|
||||||
|
idString = idString[3 : len(idString)-1]
|
||||||
|
}
|
||||||
|
user, err = ctx.Session.User(idString)
|
||||||
|
} else {
|
||||||
|
err = errors.New("that is not a valid id")
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
ctx.ErrorChannel <- disgoman.CommandError{
|
||||||
|
Context: ctx,
|
||||||
|
Message: "Couldn't get that user",
|
||||||
|
Error: err,
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if higher, err := disgoman.HasHigherRole(ctx.Session, ctx.Guild.ID, ctx.Message.Author.ID, user.ID); err != nil {
|
||||||
|
if err.Error() == "can't find caller member" {
|
||||||
|
ctx.ErrorChannel <- disgoman.CommandError{
|
||||||
|
Context: ctx,
|
||||||
|
Message: "Who are you?",
|
||||||
|
Error: err,
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
} else if !higher {
|
||||||
|
ctx.ErrorChannel <- disgoman.CommandError{
|
||||||
|
Context: ctx,
|
||||||
|
Message: "You must have a higher role than the person you are trying to ban",
|
||||||
|
Error: errors.New("need higher role"),
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if higher, err := disgoman.HasHigherRole(ctx.Session, ctx.Guild.ID, ctx.Session.State.User.ID, user.ID); err != nil {
|
||||||
|
if err.Error() == "can't find caller member" {
|
||||||
|
ctx.ErrorChannel <- disgoman.CommandError{
|
||||||
|
Context: ctx,
|
||||||
|
Message: "Who am I?",
|
||||||
|
Error: err,
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
} else if !higher {
|
||||||
|
ctx.ErrorChannel <- disgoman.CommandError{
|
||||||
|
Context: ctx,
|
||||||
|
Message: "I don't have a high enough role to ban that person",
|
||||||
|
Error: errors.New("need higher role"),
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var reason string
|
||||||
|
if len(args) > 1 {
|
||||||
|
reason = strings.Join(args[1:], " ")
|
||||||
|
} else {
|
||||||
|
reason = "No Reason Given"
|
||||||
|
}
|
||||||
|
auditReason := fmt.Sprintf("%v#%v: %v", ctx.User.Username, ctx.User.Discriminator, reason)
|
||||||
|
days := 7
|
||||||
|
if ctx.Invoked == "ban-no-delete" {
|
||||||
|
days = 0
|
||||||
|
}
|
||||||
|
err = ctx.Session.GuildBanCreateWithReason(ctx.Guild.ID, user.ID, auditReason, days)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
ctx.ErrorChannel <- disgoman.CommandError{
|
||||||
|
Context: ctx,
|
||||||
|
Message: fmt.Sprintf("Something went wrong banning %v", user.Username),
|
||||||
|
Error: err,
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
event := &utils.LogEvent{
|
||||||
|
Embed: discordgo.MessageEmbed{
|
||||||
|
Title: "User Banned",
|
||||||
|
Description: fmt.Sprintf(
|
||||||
|
"User %v#%v was banned by %v.\nReason: %v",
|
||||||
|
user.Username,
|
||||||
|
user.Discriminator,
|
||||||
|
ctx.Message.Author.Username,
|
||||||
|
reason),
|
||||||
|
Timestamp: time.Now().Format("2006-01-02 15:04:05"),
|
||||||
|
Color: 0xff0000,
|
||||||
|
},
|
||||||
|
GuildID: ctx.Guild.ID,
|
||||||
|
Session: ctx.Session,
|
||||||
|
}
|
||||||
|
utils.LoggingChannel <- event
|
||||||
|
_, _ = ctx.Send(fmt.Sprintf("User %v#%v has been banned.", user.Username, user.Discriminator))
|
||||||
|
}
|
||||||
|
|
||||||
|
func unbanUserCommand(ctx disgoman.Context, args []string) {
|
||||||
|
var user *discordgo.User
|
||||||
|
var err error
|
||||||
|
if len(ctx.Message.Mentions) > 0 {
|
||||||
|
user, err = ctx.Session.User(ctx.Message.Mentions[0].ID)
|
||||||
|
} else if len(args) >= 1 {
|
||||||
|
idString := args[0]
|
||||||
|
if strings.HasPrefix(idString, "<@!") && strings.HasSuffix(idString, ">") {
|
||||||
|
idString = idString[3 : len(idString)-1]
|
||||||
|
}
|
||||||
|
user, err = ctx.Session.User(idString)
|
||||||
|
} else {
|
||||||
|
err = errors.New("that is not a valid id")
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
ctx.ErrorChannel <- disgoman.CommandError{
|
||||||
|
Context: ctx,
|
||||||
|
Message: "Couldn't get that user",
|
||||||
|
Error: err,
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
bans, err := ctx.Session.GuildBans(ctx.Guild.ID)
|
||||||
|
if err != nil {
|
||||||
|
ctx.ErrorChannel <- disgoman.CommandError{
|
||||||
|
Context: ctx,
|
||||||
|
Message: "Error processing current bans",
|
||||||
|
Error: err,
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for _, ban := range bans {
|
||||||
|
if ban.User.ID == user.ID {
|
||||||
|
err = ctx.Session.GuildBanDelete(ctx.Guild.ID, user.ID)
|
||||||
|
if err != nil {
|
||||||
|
ctx.ErrorChannel <- disgoman.CommandError{
|
||||||
|
Context: ctx,
|
||||||
|
Message: fmt.Sprintf("Something went wrong unbanning %v", user.Username),
|
||||||
|
Error: err,
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
event := &utils.LogEvent{
|
||||||
|
Embed: discordgo.MessageEmbed{
|
||||||
|
Title: "User Banned",
|
||||||
|
Description: fmt.Sprintf(
|
||||||
|
"User %v#%v was unbanned by %v.\nOrignal Ban Reason: %v",
|
||||||
|
user.Username,
|
||||||
|
user.Discriminator,
|
||||||
|
ctx.Message.Author.Username,
|
||||||
|
ban.Reason),
|
||||||
|
Timestamp: time.Now().Format("2006-01-02 15:04:05"),
|
||||||
|
Color: 0x00ff00,
|
||||||
|
},
|
||||||
|
GuildID: ctx.Guild.ID,
|
||||||
|
Session: ctx.Session,
|
||||||
|
}
|
||||||
|
utils.LoggingChannel <- event
|
||||||
|
_, _ = ctx.Send(fmt.Sprintf("User %v#%v has been unbanned.", user.Username, user.Discriminator))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_, _ = ctx.Send(fmt.Sprintf("%v#%v is not banned in this guild.", user.Username, user.Discriminator))
|
||||||
|
}
|
||||||
|
|||||||
@ -101,5 +101,6 @@ func ErrorHandler(ErrorChan chan disgoman.CommandError) {
|
|||||||
msg = ce.Error.Error()
|
msg = ce.Error.Error()
|
||||||
}
|
}
|
||||||
_, _ = ce.Context.Send(msg)
|
_, _ = ce.Context.Send(msg)
|
||||||
|
fmt.Println(ce.Error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
2
go.mod
2
go.mod
@ -4,7 +4,7 @@ go 1.14
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/bwmarrin/discordgo v0.20.2
|
github.com/bwmarrin/discordgo v0.20.2
|
||||||
github.com/dustinpianalto/disgoman v0.0.0-20200420041406-a10b5cdbec0d
|
github.com/dustinpianalto/disgoman v0.0.0-20200420065246-662acb500b0c
|
||||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
|
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
|
||||||
github.com/lib/pq v1.3.0
|
github.com/lib/pq v1.3.0
|
||||||
)
|
)
|
||||||
|
|||||||
6
go.sum
6
go.sum
@ -8,6 +8,12 @@ github.com/dustinpianalto/disgoman v0.0.0-20200420022152-4729d2c5ee3e h1:EeLjjVH
|
|||||||
github.com/dustinpianalto/disgoman v0.0.0-20200420022152-4729d2c5ee3e/go.mod h1:v3FM6n+4dH9XlvO+IDx6MN3DUnGq6YVDBvy1A1k202g=
|
github.com/dustinpianalto/disgoman v0.0.0-20200420022152-4729d2c5ee3e/go.mod h1:v3FM6n+4dH9XlvO+IDx6MN3DUnGq6YVDBvy1A1k202g=
|
||||||
github.com/dustinpianalto/disgoman v0.0.0-20200420041406-a10b5cdbec0d h1:nVmxBFiOB/okyXp31ka5DSP+OnwpZF2CJDopRsM8c9E=
|
github.com/dustinpianalto/disgoman v0.0.0-20200420041406-a10b5cdbec0d h1:nVmxBFiOB/okyXp31ka5DSP+OnwpZF2CJDopRsM8c9E=
|
||||||
github.com/dustinpianalto/disgoman v0.0.0-20200420041406-a10b5cdbec0d/go.mod h1:v3FM6n+4dH9XlvO+IDx6MN3DUnGq6YVDBvy1A1k202g=
|
github.com/dustinpianalto/disgoman v0.0.0-20200420041406-a10b5cdbec0d/go.mod h1:v3FM6n+4dH9XlvO+IDx6MN3DUnGq6YVDBvy1A1k202g=
|
||||||
|
github.com/dustinpianalto/disgoman v0.0.0-20200420064112-dd8cd312d4d2 h1:hSAwrJi3E2SVbWXnb45JjdbAoN6d08OcsgU6nRwbLXk=
|
||||||
|
github.com/dustinpianalto/disgoman v0.0.0-20200420064112-dd8cd312d4d2/go.mod h1:v3FM6n+4dH9XlvO+IDx6MN3DUnGq6YVDBvy1A1k202g=
|
||||||
|
github.com/dustinpianalto/disgoman v0.0.0-20200420064814-3537b1e12501 h1:vnk1KQySNbsLTfKuUNiYFlgtNQm3EgPVta1pBYueFCc=
|
||||||
|
github.com/dustinpianalto/disgoman v0.0.0-20200420064814-3537b1e12501/go.mod h1:v3FM6n+4dH9XlvO+IDx6MN3DUnGq6YVDBvy1A1k202g=
|
||||||
|
github.com/dustinpianalto/disgoman v0.0.0-20200420065246-662acb500b0c h1:o2XsDNNwRPosS26VNcuNgVczGzQARWiW9J3nf1Kmzjk=
|
||||||
|
github.com/dustinpianalto/disgoman v0.0.0-20200420065246-662acb500b0c/go.mod h1:v3FM6n+4dH9XlvO+IDx6MN3DUnGq6YVDBvy1A1k202g=
|
||||||
github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q=
|
github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q=
|
||||||
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
|
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
|
||||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
|
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user