How to disallow participant from publishing topics(bbpress)?

OK I got a quick Solution.

I enable the plugin BBpress Moderation and change the following code in /wp-content/plugins/bbpressmoderation/bbpressmoderation.php

FROM:

/**
* Before inserting a new topic/reply mark
* this as 'pending' depending on settings
* 
* @param array $data - new topic/reply data
*/
function pre_insert($data) {
global $wpdb;

if (@$data['post_status']=='spam') return $data; // fix for 1.8.2  hide spam 

// Pointless moderating a post that the current user can approve
if (current_user_can('moderate')) return $data;

if ($data['post_author'] == 0) {
    // Anon user - check if need to moderate

    if ( ( 'topic' == $data['post_type'] && get_option(self::TD . 'always_approve_topics') ) || ( 'reply' == $data['post_type'] && get_option(self::TD . 'always_approve_replies') ) ) {
                // fix for v.1.8.3 separate settings for anonymous posting
            $data['post_status'] = 'pending';
        }
} else {
        // Registered user
        if (get_option(self::TD . 'previously_approved')) {
            // Check if user already published 
            $sql = $wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_author = %d AND post_type IN ('topic','reply') AND post_status="publish"", $data['post_author']);
            $count = $wpdb->get_var($sql);
            if (!$count) {
                // Anon or User never published topic/reply so mark as pending.
                $data['post_status'] = 'pending';
            }
        } else {
            $data['post_status'] = 'pending';
        }       
}
return $data;
}

TO:

/**
 * Before inserting a new topic/reply mark
 * this as 'pending' depending on settings
 * 
 * @param array $data - new topic/reply data
 */
function pre_insert($data) {
    global $wpdb;

    if (@$data['post_status']=='spam') return $data; // fix for 1.8.2  hide spam 
if('reply' !== $data['post_type']){

    // Pointless moderating a post that the current user can approve
    if (current_user_can('moderate')) return $data;

    if ($data['post_author'] == 0) {
        // Anon user - check if need to moderate

        if ( ( 'topic' == $data['post_type'] && get_option(self::TD . 'always_approve_topics') ) || ( 'reply' == $data['post_type'] && get_option(self::TD . 'always_approve_replies') ) ) {
                    // fix for v.1.8.3 separate settings for anonymous posting
                $data['post_status'] = 'pending';
            }
} else {
            // Registered user
            if (get_option(self::TD . 'previously_approved')) {
                // Check if user already published 
                $sql = $wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_author = %d AND post_type IN ('topic','reply') AND post_status="publish"", $data['post_author']);
                $count = $wpdb->get_var($sql);
                if (!$count) {
                    // Anon or User never published topic/reply so mark as pending.
                    $data['post_status'] = 'pending';
                }
            } else {
                $data['post_status'] = 'pending';
            }       
    }
}
    return $data;
}

Now this allows users to publish reply without getting it moderate, but Topics must have to moderate before they becomes publish.

I hope this will help someone.

error code: 521