package command import ( "fmt" "strings" "time" ) // RegisterBuiltinCommands 注册内置命令 func RegisterBuiltinCommands() { // 菜单 Register(Command{ Name: "菜单", Description: "显示所有可用命令", Usage: "菜单", Handler: handleMenu, }) // 启用(管理员) Register(Command{ Name: "启用", Description: "启用指定命令", Usage: "启用 <命令名>", Handler: handleEnable, AdminOnly: true, }) // 禁用(管理员) Register(Command{ Name: "禁用", Description: "禁用指定命令", Usage: "禁用 <命令名>", Handler: handleDisable, AdminOnly: true, }) // 时间 Register(Command{ Name: "时间", Description: "查询当前时间", Usage: "时间", Handler: func(req *Req) Resp { return Resp{Reply: "当前时间是: " + time.Now().Format("2006-01-02 15:04:05")} }, }) } func handleMenu(req *Req) Resp { var sb strings.Builder sb.WriteString("可用命令列表:\n\n") for _, cmd := range AllCommands() { status := "✅" if !cmd.Enabled { status = "❌" } adminTag := "" if cmd.AdminOnly { adminTag = " [管理员]" } sb.WriteString(fmt.Sprintf("%s %s%s — %s\n", status, cmd.Name, adminTag, cmd.Description)) sb.WriteString(fmt.Sprintf(" 用法:%s\n\n", cmd.Usage)) } return Resp{Reply: strings.TrimSpace(sb.String())} } func handleEnable(req *Req) Resp { name := strings.TrimSpace(req.Content) if name == "" { return Resp{Reply: "请指定要启用的命令,例如:启用 生图"} } if err := Toggle(name, true); err != nil { return Resp{Reply: err.Error()} } return Resp{Reply: fmt.Sprintf("已启用命令\"%s\"", name)} } func handleDisable(req *Req) Resp { name := strings.TrimSpace(req.Content) if name == "" { return Resp{Reply: "请指定要禁用的命令,例如:禁用 问候"} } if err := Toggle(name, false); err != nil { return Resp{Reply: err.Error()} } return Resp{Reply: fmt.Sprintf("已禁用命令\"%s\"", name)} }