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.