implement basic whitelist add and remove functionality
This commit is contained in:
81
app/bot.go
Normal file
81
app/bot.go
Normal file
@@ -0,0 +1,81 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"log"
|
||||
"os"
|
||||
"os/signal"
|
||||
|
||||
"github.com/bwmarrin/discordgo"
|
||||
"github.com/gorcon/rcon"
|
||||
)
|
||||
|
||||
var s *discordgo.Session
|
||||
var config Config
|
||||
var dbPath string
|
||||
var db MemberUsernameMap
|
||||
var conn *rcon.Conn
|
||||
|
||||
func Run() {
|
||||
// parse CLI options and get config
|
||||
configPath := *(flag.String("config", "config.json", "path to config.json file"))
|
||||
dbPath = *(flag.String("db", "db.json", "path to db.json file"))
|
||||
flag.Parse()
|
||||
|
||||
// load config
|
||||
config, err := GetConfig(configPath)
|
||||
if err != nil {
|
||||
log.Fatalf("Error when reading config file: %s", err)
|
||||
}
|
||||
|
||||
// load db or create new empty db
|
||||
db, err = LoadDB(dbPath)
|
||||
if err != nil {
|
||||
log.Fatalf("Error when reading config file: %s", err)
|
||||
}
|
||||
|
||||
// open rconn connection
|
||||
conn, err = rcon.Dial(config.RCON, config.Password)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to open rcon connection: %s", err.Error())
|
||||
}
|
||||
|
||||
// create new session
|
||||
s, err := discordgo.New("Bot " + config.Token)
|
||||
if err != nil {
|
||||
log.Fatalf("Invalid bot parameters: %v", err)
|
||||
}
|
||||
|
||||
// attach slash command listener
|
||||
s.AddHandler(func(s *discordgo.Session, i *discordgo.InteractionCreate) {
|
||||
if h, ok := commandHandlers[i.ApplicationCommandData().Name]; ok {
|
||||
h(s, i)
|
||||
}
|
||||
})
|
||||
|
||||
// attach session connected listener
|
||||
s.AddHandler(func(s *discordgo.Session, r *discordgo.Ready) {
|
||||
log.Printf("Logged in as: %v#%v", s.State.User.Username, s.State.User.Discriminator)
|
||||
})
|
||||
|
||||
// overwrite registered commands
|
||||
log.Println("Bulk overwriting commands")
|
||||
_, err = s.ApplicationCommandBulkOverwrite(config.AppID, config.GuildID, commands)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to bulk overwrite commands: %s", err.Error())
|
||||
}
|
||||
|
||||
// open session
|
||||
err = s.Open()
|
||||
if err != nil {
|
||||
log.Fatalf("Cannot open the session: %v", err)
|
||||
}
|
||||
|
||||
defer s.Close()
|
||||
defer conn.Close()
|
||||
|
||||
stop := make(chan os.Signal, 1)
|
||||
signal.Notify(stop, os.Interrupt)
|
||||
log.Println("Press Ctrl+C to exit")
|
||||
<-stop
|
||||
}
|
||||
Reference in New Issue
Block a user