package bot import ( "context" "fmt" "jinx/pkg/discord" "log" ) type Bot struct { Client *discord.Discord cancelContext context.CancelFunc } func Start(token string) (*Bot, error) { fmt.Println("hi..!") client := discord.NewClient(token) client.AddEventHandler(discord.DISCORD_EVENT_READY, func(_ any) { log.Println("bot is ready!") }) client.AddEventHandler(discord.DISCORD_EVENT_MESSAGE, func(m any) { msg := m.(discord.GatewayMessageCreateEvent) log.Printf("message: %s", msg.Content) if msg.Content == "ping" { if err := client.SendMessage(msg.ChannelID, "pong"); err != nil { log.Printf("error sending message: %s", err) } } }) ctx, cancel := context.WithCancel(context.Background()) if err := client.Connect(ctx); err != nil { cancel() return nil, err } return &Bot{ Client: client, cancelContext: cancel, }, nil } func (b *Bot) Stop() error { b.cancelContext() return b.Client.Disconnect() }