about summary refs log tree commit diff
path: root/pkg/bot/bot.go
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2022-04-04 01:53:41 +0200
committerMel <einebeere@gmail.com>2022-04-04 01:53:41 +0200
commitfdd0ea7911b2c98f95ef99f6d1518ee4eb4dfd7a (patch)
tree702f893e5ef2ec4196cd37393014b3ca59e5c0dc /pkg/bot/bot.go
parentb80bda2da026086523f1de8f460637a376c53bf2 (diff)
downloadjinx-fdd0ea7911b2c98f95ef99f6d1518ee4eb4dfd7a.tar.zst
jinx-fdd0ea7911b2c98f95ef99f6d1518ee4eb4dfd7a.zip
Listen to incoming messages and respond to pings
Diffstat (limited to 'pkg/bot/bot.go')
-rw-r--r--pkg/bot/bot.go25
1 files changed, 17 insertions, 8 deletions
diff --git a/pkg/bot/bot.go b/pkg/bot/bot.go
index 71eb0e9..091e1be 100644
--- a/pkg/bot/bot.go
+++ b/pkg/bot/bot.go
@@ -6,24 +6,33 @@ import (
 	"jinx/pkg/discord"
 )
 
-func Start(token string) error {
+type Bot struct {
+	Client        *discord.Discord
+	cancelContext context.CancelFunc
+}
+
+func Start(token string) (*Bot, error) {
 	fmt.Println("hi..!")
 
 	client := discord.NewClient(token)
 
 	ctx, cancel := context.WithCancel(context.Background())
-	defer cancel()
 
 	fmt.Println("connecting..")
 	if err := client.Connect(ctx); err != nil {
-		return err
+		cancel()
+		return nil, err
 	}
 
 	fmt.Println("connected..")
 
-	if err := client.Disconnect(); err != nil {
-		return err
-	}
+	return &Bot{
+		Client:        client,
+		cancelContext: cancel,
+	}, nil
+}
 
-	return nil
-}
\ No newline at end of file
+func (b *Bot) Stop() error {
+	b.cancelContext()
+	return b.Client.Disconnect()
+}