summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Perry <avaglir@gmail.com>2017-07-26 20:00:31 -0400
committerNathan Perry <avaglir@gmail.com>2017-07-26 20:00:31 -0400
commitf3224ee0eb4d5def781f5e77121a405df054bfba (patch)
treec9f0e4f864168afeb3119ece86014819bfe4b512
parentfa3151827fa697c91802b09ae0052429e788b275 (diff)
restructure to cmd
-rw-r--r--cmd/main.go16
-rw-r--r--thulani.go44
-rw-r--r--util.go37
3 files changed, 66 insertions, 31 deletions
diff --git a/cmd/main.go b/cmd/main.go
new file mode 100644
index 0000000..a0c429b
--- /dev/null
+++ b/cmd/main.go
@@ -0,0 +1,16 @@
+package main
+
+import (
+ "log"
+
+ "github.com/mammothbane/thulani-go"
+)
+
+func main() {
+ conf, err := thulani.LoadConfig("config.yml")
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ thulani.Run(conf)
+}
diff --git a/thulani.go b/thulani.go
index 9ed8f18..d64cb7c 100644
--- a/thulani.go
+++ b/thulani.go
@@ -1,45 +1,27 @@
-package main
+package thulani
import (
- "encoding/json"
- "log"
"os"
+ "os/signal"
+ "syscall"
"github.com/bwmarrin/discordgo"
)
-type config struct {
- Trigger string `json:"trigger"`
- QueueSize uint `json:"queue_size"`
- Admin string `json:"admin"`
- OpRole string `json:"op_role"`
- Server string `json:"server"`
- VoiceChannel string `json:"voice_channel"`
- Token string `json:"token"`
-}
-
-func (c *config) UnmarshalYAML(unmarshal func(interface{}) error) error {
-
- return nil
-}
-
-func main() {
- file, err := os.Open("config.json")
+func Run(conf *Config) {
+ dg, err := discordgo.New("Bot " + conf.Token)
handle(err)
- var conf config
- handle(json.NewDecoder(file).Decode(&conf))
-
- dg, err := discordgo.New()
- handle(err)
+ dg.AddHandler(onReady)
+ dg.Open()
- app := &discordgo.Application{}
- app.Name = "Thulani"
+ sc := make(chan os.Signal, 1)
+ signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt, os.Kill)
+ <-sc
+ dg.Close()
}
-func handle(err error) {
- if err != nil {
- log.Fatal(err)
- }
+func onReady(s *discordgo.Session, m *discordgo.Ready) {
+ log.Debugf("Logged in as %v (%v)", m.User.Username, m.User.ID)
}
diff --git a/util.go b/util.go
new file mode 100644
index 0000000..ae4ca2c
--- /dev/null
+++ b/util.go
@@ -0,0 +1,37 @@
+package thulani
+
+import (
+ "encoding/json"
+ "os"
+
+ "github.com/op/go-logging"
+)
+
+func handle(err error) {
+ if err != nil {
+ log.Fatal(err)
+ }
+}
+
+var log = logging.MustGetLogger("thulani")
+
+type Config struct {
+ Trigger string `json:"trigger"`
+ QueueSize uint `json:"queue_size"`
+ Admin uint `json:"admin"`
+ OpRole string `json:"op_role"`
+ Server string `json:"server"`
+ VoiceChannel string `json:"voice_channel"`
+ Token string `json:"token"`
+}
+
+func LoadConfig(filename string) (*Config, error) {
+ file, err := os.Open("config.json")
+ if err != nil {
+ return nil, err
+ }
+
+ var conf Config
+ err = json.NewDecoder(file).Decode(&conf)
+ return &conf, err
+}