feat: implementar comandos custom !echo y !dice para test-bot
- !echo <texto>: repite el texto recibido (util para assertions exactas) - !dice / !dado: lanza un dado aleatorio (1-6) - Registro en cmd/launcher/main.go via testbot.Commands() Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,47 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"math/rand"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/enmanuel/agents/pkg/command"
|
||||||
|
"github.com/enmanuel/agents/pkg/decision"
|
||||||
|
)
|
||||||
|
|
||||||
|
// CommandEntry pairs a spec with its handler.
|
||||||
|
type CommandEntry struct {
|
||||||
|
Spec command.Spec
|
||||||
|
Handler func(ctx context.Context, msgCtx decision.MessageContext) string
|
||||||
|
}
|
||||||
|
|
||||||
|
// Commands returns the custom command specs and handlers for test-bot.
|
||||||
|
func Commands() []CommandEntry {
|
||||||
|
return []CommandEntry{
|
||||||
|
{
|
||||||
|
Spec: command.Spec{
|
||||||
|
Name: "echo",
|
||||||
|
Description: "Repite el texto recibido",
|
||||||
|
Usage: "!echo <texto>",
|
||||||
|
},
|
||||||
|
Handler: func(_ context.Context, msgCtx decision.MessageContext) string {
|
||||||
|
if len(msgCtx.Args) == 0 {
|
||||||
|
return "Uso: !echo <texto>"
|
||||||
|
}
|
||||||
|
return strings.Join(msgCtx.Args, " ")
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Spec: command.Spec{
|
||||||
|
Name: "dice",
|
||||||
|
Aliases: []string{"dado"},
|
||||||
|
Description: "Lanza un dado (1-6)",
|
||||||
|
Usage: "!dice",
|
||||||
|
},
|
||||||
|
Handler: func(_ context.Context, _ decision.MessageContext) string {
|
||||||
|
return fmt.Sprintf("%d", rand.Intn(6)+1)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -33,7 +33,7 @@ import (
|
|||||||
_ "github.com/enmanuel/agents/agents/assistant-bot"
|
_ "github.com/enmanuel/agents/agents/assistant-bot"
|
||||||
_ "github.com/enmanuel/agents/agents/asistente-2"
|
_ "github.com/enmanuel/agents/agents/asistente-2"
|
||||||
_ "github.com/enmanuel/agents/agents/meteorologo"
|
_ "github.com/enmanuel/agents/agents/meteorologo"
|
||||||
_ "github.com/enmanuel/agents/agents/test-bot"
|
testbot "github.com/enmanuel/agents/agents/test-bot"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -181,6 +181,13 @@ func main() {
|
|||||||
agentCleanup()
|
agentCleanup()
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
// Register agent-specific commands for robots
|
||||||
|
if cfg.Agent.ID == "test-bot" {
|
||||||
|
for _, cmd := range testbot.Commands() {
|
||||||
|
robot.RegisterCommand(cmd.Spec, cmd.Handler)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
runner = robot
|
runner = robot
|
||||||
agentLogger.Info("created robot", "id", cfg.Agent.ID)
|
agentLogger.Info("created robot", "id", cfg.Agent.ID)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user