38 lines
1 KiB
Go
38 lines
1 KiB
Go
package commands
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
func resetCommand() Definition {
|
|
return Definition{
|
|
Name: "reset",
|
|
Description: "Start a fresh session without deleting stored history",
|
|
Usage: "/reset [clear|off]",
|
|
Handler: func(_ context.Context, req Request, rt *Runtime) error {
|
|
if rt == nil || rt.ResetSession == nil {
|
|
return req.Reply(unavailableMsg)
|
|
}
|
|
|
|
arg := strings.ToLower(strings.TrimSpace(nthToken(req.Text, 1)))
|
|
clearOverride := arg == "clear" || arg == "off"
|
|
if arg != "" && !clearOverride {
|
|
return req.Reply("Usage: /reset [clear|off]")
|
|
}
|
|
|
|
sessionKey, err := rt.ResetSession(clearOverride)
|
|
if err != nil {
|
|
return req.Reply("Failed to reset session: " + err.Error())
|
|
}
|
|
if clearOverride {
|
|
return req.Reply("Soft reset cleared. Future messages will use the default routed session again.")
|
|
}
|
|
return req.Reply(fmt.Sprintf(
|
|
"Started a fresh session. Previous history was preserved. New session key: %s",
|
|
sessionKey,
|
|
))
|
|
},
|
|
}
|
|
}
|