forked from Minecraft/canopeas
54 lines
1.4 KiB
Go
54 lines
1.4 KiB
Go
|
package discord
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"fmt"
|
||
|
"strings"
|
||
|
|
||
|
"go.etztech.xyz/go-mcm"
|
||
|
"go.etztech.xyz/go-mcm/model/django"
|
||
|
)
|
||
|
|
||
|
func init() {
|
||
|
commands["register"] = command{
|
||
|
validate: func(cmd commandInit) bool {
|
||
|
return len(cmd.message.Member.Roles) == 0
|
||
|
},
|
||
|
run: func(cmd commandInit) error {
|
||
|
args := strings.Fields(cmd.message.Content)
|
||
|
if len(args) < 2 {
|
||
|
return errors.New("you must give this command your application username")
|
||
|
}
|
||
|
|
||
|
sendTyping(cmd.session, cmd.message.ChannelID)
|
||
|
|
||
|
manager := mcm.NewMCM(cmd.config.MCMToken, cmd.config.MCMURL)
|
||
|
models := manager.NewModel()
|
||
|
|
||
|
apps, err := models.Application(models.NewDjangoBuilder().IExact(django.ApplicationUsername, args[1]))
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
if len(apps) == 0 {
|
||
|
return errors.New("no application found with that username")
|
||
|
}
|
||
|
|
||
|
if !apps[0].Accepted {
|
||
|
return errors.New("sorry, your application was denied")
|
||
|
}
|
||
|
|
||
|
// Accepted
|
||
|
if err := cmd.session.GuildMemberNickname(cmd.message.GuildID, cmd.message.Author.ID, apps[0].Username); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
if err := cmd.session.GuildMemberRoleAdd(cmd.message.GuildID, cmd.message.Author.ID, cmd.config.RegisterRole); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
sendMessage(cmd.session, cmd.config.RegisteredChannel, fmt.Sprintf("Welcome, **%s**!", cmd.message.Author.Mention()))
|
||
|
return nil
|
||
|
},
|
||
|
help: "Register yourself with the Discord",
|
||
|
}
|
||
|
}
|