func process_request_pkg(buff *s.OutPkg, in *s.InPkg, context *BotContext) (*s.OutPkg, error) { if in.Request.Type == "error" { log.Printf("error because type of request is error:\n %+v", in.Request) return buff, errors.New("error because request type is error") } action := in.Request.Query.Action buff.Request = &s.OutRequest{ID: u.GenStringId(), Type: "result"} buff.Request.Query.Action = action buff.Request.Type = "result" if commandProcessor, ok := context.RequestProcessors[action]; ok { requestResult := commandProcessor.ProcessRequest(in) if requestResult.Error != nil { err := requestResult.Error return buff, err } else { //normal our request forming buff.Request.Query.Result = *requestResult.Commands if requestResult.Type != "" { buff.Request.Type = requestResult.Type } } } else { err := errors.New("Команда не поддерживается.") return buff, err } return buff, nil }