about summary refs log tree commit diff
path: root/pkg/bot/bot.go
diff options
context:
space:
mode:
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()
+}