admin_notices on runtime in function

I saw this on stackoverflow, may be able to modify it to work in your situation:

function my_function($post_id){

    if($error){
           set_transient( get_current_user_id().'publisherror', "Error Message" );
    }
    return $post_id;
}
add_filter ( 'publish_post', 'my_function' );

function show_admin_notice() {
    if($out = get_transient( get_current_user_id().'publisherror' ) ) {
        delete_transient( get_current_user_id().'publisherror' );
        echo '<div class="error"><p>'.$out.'</p></div>';
    }

}
add_action('admin_notices', "show_admin_notice");