Select Git revision
command.go 3.96 KiB
package main
import (
"git.randomchars.net/freenitori/log"
"git.randomchars.net/freenitori/multiplexer"
"github.com/bwmarrin/discordgo"
"strconv"
"strings"
)
func init() {
m.Route(&multiplexer.Route{
Pattern: "ceiling",
AliasPatterns: []string{"lim", "userlimit", "limit"},
Description: "Configure user limit of a channel.",
Category: system,
Handler: func(context *multiplexer.Context) {
var limit uint8
if len(context.Fields) != 2 {
// Return if unexpected amount of arguments.
context.SendMessage("Expecting new channel user limit.")
return
} else if lim, err := strconv.Atoi(context.Fields[1]); err != nil {
// Return if not numeric.
context.SendMessage("Invalid argument.")
return
} else {
if lim > 0 && lim <= 99 {
limit = uint8(lim)
} else {
// Return if out of range
context.SendMessage("Limit out of range.")
return
}
}
// Get instance
instance, ok := instancesUser[context.User.ID]
if !ok {
context.SendMessage("You do not own any volatile channel.")
return
}
// Perform action
if !instance.actionPerform("ceiling",
func() bool {
// Check if payload is the same as current state
if instance.Channel.UserLimit == int(limit) {
context.SendMessage("User limit was not changed.")
return false
}
// Perform change
if channel, err := context.Session.ChannelEditComplex(instance.Channel.ID,
&discordgo.ChannelEdit{UserLimit: int(limit), Position: instance.Channel.Position}); !context.HandleError(err) {
return false
} else {
instance.Channel = channel
}
return true
}, context.SendMessage) {
return
}
log.Infof("Set user limit of volatile channel #%s (%s) to %v on behalf of %s#%s (%s).",
instance.Channel.Name,
instance.Channel.ID,
limit,
instance.Initiator.User.Username,
instance.Initiator.User.Discriminator,