minecraft whitelist command
This commit is contained in:
parent
a3c55c8be8
commit
179f2d8402
3 changed files with 92 additions and 3 deletions
92
micobot.go
92
micobot.go
|
@ -3,6 +3,7 @@ package main
|
|||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"github.com/gorcon/rcon"
|
||||
"log"
|
||||
"os"
|
||||
"os/signal"
|
||||
|
@ -14,9 +15,11 @@ import (
|
|||
|
||||
// Variables used for command line parameters
|
||||
var (
|
||||
Token string
|
||||
MemberRole string
|
||||
GuildID string
|
||||
Token string
|
||||
MemberRole string
|
||||
GuildID string
|
||||
RCONServer string
|
||||
RCONPassword string
|
||||
)
|
||||
|
||||
// Command vairables
|
||||
|
@ -34,6 +37,24 @@ var (
|
|||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "whitelist",
|
||||
Description: "Whitelist a user on the minecraft server.",
|
||||
Options: []*discordgo.ApplicationCommandOption{
|
||||
{
|
||||
Name: "username",
|
||||
Description: "Username to whitelist",
|
||||
Type: discordgo.ApplicationCommandOptionString,
|
||||
Required: true,
|
||||
},
|
||||
{
|
||||
Name: "bedrock",
|
||||
Description: "is this a bedrock user?",
|
||||
Type: discordgo.ApplicationCommandOptionBoolean,
|
||||
Required: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
commandHandlers = map[string]func(s *discordgo.Session, i *discordgo.InteractionCreate){
|
||||
|
@ -64,6 +85,69 @@ var (
|
|||
},
|
||||
})
|
||||
},
|
||||
|
||||
"whitelist": func(s *discordgo.Session, i *discordgo.InteractionCreate) {
|
||||
caller, err := s.GuildMember(i.GuildID, i.Member.User.ID)
|
||||
if err != nil {
|
||||
fmt.Println("Could not get Guild Member,", err)
|
||||
}
|
||||
if !slices.Contains(caller.Roles, MemberRole) {
|
||||
s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
||||
Type: discordgo.InteractionResponseChannelMessageWithSource,
|
||||
Data: &discordgo.InteractionResponseData{
|
||||
Content: "Only Members are allowed to run this command",
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
opts := i.ApplicationCommandData().Options
|
||||
name := opts[0].StringValue()
|
||||
|
||||
bedrock := false
|
||||
if len(opts) > 1 {
|
||||
bedrock = opts[1].BoolValue()
|
||||
|
||||
}
|
||||
|
||||
con, err := rcon.Dial(RCONServer, RCONPassword)
|
||||
if err != nil {
|
||||
log.Printf("Could not connect to RCON server")
|
||||
s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
||||
Type: discordgo.InteractionResponseChannelMessageWithSource,
|
||||
Data: &discordgo.InteractionResponseData{
|
||||
Content: "Failed to whitelist, server may be down?",
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
err = nil
|
||||
|
||||
if bedrock {
|
||||
_, err = con.Execute(fmt.Sprintf("fwhitelist add %s", name))
|
||||
} else {
|
||||
_, err = con.Execute(fmt.Sprintf("whitelist add %s", name))
|
||||
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
||||
Type: discordgo.InteractionResponseChannelMessageWithSource,
|
||||
Data: &discordgo.InteractionResponseData{
|
||||
Content: "Ups! Something went wrong!",
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
||||
Type: discordgo.InteractionResponseChannelMessageWithSource,
|
||||
Data: &discordgo.InteractionResponseData{
|
||||
Content: fmt.Sprintf("`%s` should now be whitelisted!", name),
|
||||
},
|
||||
})
|
||||
con.Close()
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
|
@ -72,6 +156,8 @@ func init() {
|
|||
flag.StringVar(&Token, "t", "", "Bot Token")
|
||||
flag.StringVar(&MemberRole, "r", "", "ID of the member role")
|
||||
flag.StringVar(&GuildID, "g", "", "Id of the Guild")
|
||||
flag.StringVar(&RCONServer, "rs", "", "RCON server to connect to")
|
||||
flag.StringVar(&RCONPassword, "rp", "", "Password for the RCON server")
|
||||
|
||||
flag.Parse()
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue