Move message handler to own function

Move intents into the config
Reindent files with spaces
This commit is contained in:
Michał Gdula 2025-02-28 00:34:09 +00:00
parent 78dcdc0b46
commit b93820e9d0
3 changed files with 45 additions and 41 deletions

View file

@ -11,8 +11,9 @@ import (
) )
type Config struct { type Config struct {
Token string Prefix string
Prefix string Token string
Intents discordgo.Intent
} }
type App struct { type App struct {
@ -20,11 +21,6 @@ type App struct {
Commands map[string]func(h *Handler, args []string) Commands map[string]func(h *Handler, args []string)
} }
type Handler struct {
Session *discordgo.Session
Message *discordgo.MessageCreate
}
func NewApp(config Config) *App { func NewApp(config Config) *App {
return &App{ return &App{
Config: config, Config: config,
@ -44,37 +40,8 @@ func (a *App) Run() {
return return
} }
dg.AddHandler(func(session *discordgo.Session, message *discordgo.MessageCreate) { dg.AddHandler(a.handler)
h := &Handler{ dg.Identify.Intents = a.Config.Intents
Session: session,
Message: message,
}
if h.Message.Author.ID == h.Session.State.User.ID {
return
}
if h.Message.Author.Bot {
return
}
var command string
var args string
command = h.Message.Content
command = strings.TrimSpace(command)
command = strings.TrimPrefix(command, a.Config.Prefix)
command, args, _ = strings.Cut(command, " ")
callback, ok := a.Commands[command]
if !ok {
return
}
callback(h, strings.Split(args, " "))
})
dg.Identify.Intents = discordgo.IntentsGuildMessages
err = dg.Open() err = dg.Open()
if err != nil { if err != nil {
@ -90,3 +57,38 @@ func (a *App) Run() {
dg.Close() dg.Close()
} }
type Handler struct {
Session *discordgo.Session
Message *discordgo.MessageCreate
}
func (a *App) handler(session *discordgo.Session, message *discordgo.MessageCreate) {
h := &Handler{
Session: session,
Message: message,
}
if h.Message.Author.ID == h.Session.State.User.ID {
return
}
if h.Message.Author.Bot {
return
}
var command string
var args string
command = h.Message.Content
command = strings.TrimSpace(command)
command = strings.TrimPrefix(command, a.Config.Prefix)
command, args, _ = strings.Cut(command, " ")
callback, ok := a.Commands[command]
if !ok {
return
}
callback(h, strings.Split(args, " "))
}

View file

@ -23,7 +23,7 @@ func registerAnimal(a *app.App) func(h *app.Handler, args []string) {
} }
cmd := flag.NewFlagSet("pong", flag.ContinueOnError) cmd := flag.NewFlagSet("pong", flag.ContinueOnError)
cmd.StringVar(&options.animal, "animal", "serval", "Get an image of an animal!") cmd.StringVar(&options.animal, "animal", "wah", "Get an image of an animal!")
cmd.Parse(args) cmd.Parse(args)
req, err := http.NewRequest(http.MethodGet, "https://api.tinyfox.dev/img?animal="+options.animal, nil) req, err := http.NewRequest(http.MethodGet, "https://api.tinyfox.dev/img?animal="+options.animal, nil)

View file

@ -5,12 +5,14 @@ import (
"github.com/Fluffy-Bean/lynxie/app" "github.com/Fluffy-Bean/lynxie/app"
"github.com/Fluffy-Bean/lynxie/commands" "github.com/Fluffy-Bean/lynxie/commands"
"github.com/bwmarrin/discordgo"
) )
func main() { func main() {
a := app.NewApp(app.Config{ a := app.NewApp(app.Config{
Token: os.Getenv("TOKEN"), Prefix: "?",
Prefix: "?", Token: os.Getenv("TOKEN"),
Intents: discordgo.IntentsGuildMessages,
}) })
commands.RegisterMetaCommands(a) commands.RegisterMetaCommands(a)