if ( ! defined('ABSPATH') ) { return; }
/* ============================================================
* KT WhatsApp Bot v0.1 — تجريبي
* قائمة تفاعلية للمعلنين المسجلين عبر Wawp Webhooks
* نقطة الاستقبال: /wp-json/ktwa/v1/hook?k=KTWA_BOT_KEY
* عرض السجل: /wp-json/ktwa/v1/log?k=KTWA_BOT_KEY
* ============================================================ */
if ( ! defined('KTWA_BOT_KEY') ) define('KTWA_BOT_KEY', 'ktB7q2Zr9xW4mUe6');
if ( ! defined('KTWA_BOT_INST') ) define('KTWA_BOT_INST', 'BEC645FC4D5D');
if ( ! defined('KTWA_ADMIN_PHONE') ) define('KTWA_ADMIN_PHONE', '96566551276');
add_action('rest_api_init', function(){
register_rest_route('ktwa/v1','/hook',[ 'methods'=>'POST','permission_callback'=>'__return_true','callback'=>'ktwa_bot_hook' ]);
register_rest_route('ktwa/v1','/log',[ 'methods'=>'GET','permission_callback'=>'__return_true','callback'=>'ktwa_bot_logview' ]);
});
function ktwa_bot_logpush($tag,$data){
$l=get_option('ktwa_bot_log',[]); if(!is_array($l)) $l=[];
array_unshift($l,[ 't'=>current_time('mysql'), 'tag'=>$tag, 'd'=>$data ]);
update_option('ktwa_bot_log', array_slice($l,0,15), false);
}
function ktwa_bot_logview($req){
if($req->get_param('k')!==KTWA_BOT_KEY) return new WP_REST_Response(['e'=>'forbidden'],403);
return get_option('ktwa_bot_log',[]);
}
function ktwa_bot_norm($raw){
$d=preg_replace('/\D+/','',(string)$raw); $d=ltrim($d,'0');
if(strlen($d)===8) $d='965'.$d;
return $d;
}
function ktwa_bot_send_text($phone,$msg){
if(function_exists('kt_send_whatsapp_simple')) return kt_send_whatsapp_simple($phone,$msg);
return false;
}
function ktwa_bot_send_list($phone,$name,$tok){
$body=[ 'instance_id'=>KTWA_BOT_INST, 'access_token'=>$tok, 'chatId'=>$phone,
'message'=>[
'title'=>'صفوة معلمي الكويت',
'description'=>'أهلاً '.$name.' 👋 اختر الخدمة المطلوبة:',
'footer'=>'kuwaitteacher.com',
'button'=>'اختر من القائمة',
'sections'=>[
[ 'title'=>'خدمات المعلنين', 'rows'=>[
[ 'title'=>'💳 شحن رصيد إعلاني', 'rowId'=>'kt_recharge', 'description'=>'رصيدك الحالي ورابط الشحن' ],
[ 'title'=>'✏️ تعديل إعلاني', 'rowId'=>'kt_edit', 'description'=>'روابط تعديل إعلاناتك' ],
[ 'title'=>'📊 إحصاءات إعلاني', 'rowId'=>'kt_stats', 'description'=>'مشاهدات ونقرات ورصيد' ],
]],
[ 'title'=>'الدعم', 'rows'=>[
[ 'title'=>'🎧 التواصل مع الإدارة', 'rowId'=>'kt_support' ],
]],
],
],
];
$r=wp_remote_post('https://api.wawp.net/v2/send/list',[ 'timeout'=>15, 'headers'=>['Content-Type'=>'application/json'], 'body'=>wp_json_encode($body) ]);
ktwa_bot_logpush('send_list', is_wp_error($r)?$r->get_error_message():wp_remote_retrieve_response_code($r));
return $r;
}
function ktwa_bot_user_by_phone($digits){
foreach(['kt_user_whatsapp','kt_user_phone'] as $mk){
$q=get_users([ 'meta_key'=>$mk, 'meta_value'=>$digits, 'number'=>1 ]);
if($q) return $q[0];
if(strpos($digits,'965')===0){
$q=get_users([ 'meta_key'=>$mk, 'meta_value'=>substr($digits,3), 'number'=>1 ]);
if($q) return $q[0];
}
}
return null;
}
function ktwa_bot_hook($req){
if($req->get_param('k')!==KTWA_BOT_KEY) return new WP_REST_Response(['e'=>'forbidden'],403);
$j=json_decode($req->get_body(),true);
if(!is_array($j)) return ['ok'=>false];
$ev=isset($j['event'])?$j['event']:'';
$p=isset($j['payload'])&&is_array($j['payload'])?$j['payload']:[];
$info=isset($p['_data']['Info'])&&is_array($p['_data']['Info'])?$p['_data']['Info']:[];
ktwa_bot_logpush('evt:'.$ev,[
'from'=>isset($p['from'])?$p['from']:null,
'alt'=>isset($info['SenderAlt'])?$info['SenderAlt']:null,
'body'=>isset($p['body'])?mb_substr((string)$p['body'],0,90):null,
'pkeys'=>implode(',',array_keys($p)),
]);
if($ev!=='message') return ['ok'=>true,'skip'=>'event'];
if(!empty($p['fromMe'])) return ['ok'=>true,'skip'=>'self'];
if(!empty($info['IsGroup'])) return ['ok'=>true,'skip'=>'group'];
$meta=isset($j['metadata'])&&is_array($j['metadata'])?$j['metadata']:[];
if(!isset($meta['instance_id']) || $meta['instance_id']!==KTWA_BOT_INST) return ['ok'=>true,'skip'=>'inst'];
$tok=isset($meta['access_token'])?$meta['access_token']:'';
$alt=isset($info['SenderAlt'])?$info['SenderAlt']:'';
$src=$alt!==''?$alt:(isset($p['from'])?$p['from']:'');
if($src==='' || strpos($src,'@lid')!==false) return ['ok'=>true,'skip'=>'no-phone'];
$phone=ktwa_bot_norm(strtok($src,'@'));
if($phone==='' || $phone===ktwa_bot_norm('96560060470')) return ['ok'=>true,'skip'=>'own'];
$body=trim((string)(isset($p['body'])?$p['body']:''));
$route='';
if(isset($p['listResponse']['rowId'])) $route=$p['listResponse']['rowId'];
if($route==='' && isset($p['selectedRowId'])) $route=$p['selectedRowId'];
if($route==='' && $body!=='' && mb_strlen($body)<45){
$map=[ 'شحن'=>'kt_recharge', 'تعديل'=>'kt_edit', 'إحصاء'=>'kt_stats', 'احصاء'=>'kt_stats', 'الإدارة'=>'kt_support', 'الادارة'=>'kt_support' ];
foreach($map as $kw=>$rid){ if(mb_strpos($body,$kw)!==false){ $route=$rid; break; } }
}
$user=ktwa_bot_user_by_phone($phone);
if(!$user){
if(!get_transient('ktwa_wlc_'.$phone)){
set_transient('ktwa_wlc_'.$phone,1,DAY_IN_SECONDS);
ktwa_bot_send_text($phone,'أهلاً بك في منصة صفوة معلمي الكويت 🌟'."\n".'تصفح أفضل المعلمين والمعلمات عبر موقعنا:'."\n".home_url('/'));
}
return ['ok'=>true,'r'=>'guest'];
}
$name=trim((string)get_user_meta($user->ID,'first_name',true));
if($name==='') $name=$user->display_name;
if($route===''){
if(get_transient('ktwa_menu_'.$phone)) return ['ok'=>true,'skip'=>'cooldown'];
set_transient('ktwa_menu_'.$phone,1,20);
ktwa_bot_send_list($phone,$name,$tok);
return ['ok'=>true,'r'=>'menu'];
}
$ads=get_posts([ 'post_type'=>'edu-ads', 'post_status'=>['publish','private'], 'author'=>$user->ID, 'numberposts'=>5 ]);
$msg='';
if($route==='kt_recharge'){
$msg='💳 أرصدة إعلاناتك:'."\n";
foreach($ads as $a){ $pts=function_exists('kt_get_points')?kt_get_points($a->ID):(int)get_post_meta($a->ID,'kt_ad_points',true); $msg.='• «'.get_the_title($a).'»: '.$pts.' نقطة'."\n"; }
$msg.="\n".'للشحن وإدارة إعلانك:'."\n".home_url('/account/');
} elseif($route==='kt_edit'){
$msg='✏️ روابط تعديل إعلاناتك:'."\n";
foreach($ads as $a){ $msg.='• «'.get_the_title($a).'»:'."\n".home_url('/'.$a->ID)."\n"; }
} elseif($route==='kt_stats'){
$msg='📊 إحصاءات إعلاناتك:'."\n";
foreach($ads as $a){
$v=(int)get_post_meta($a->ID,'kt_ad_views_total',true);
$w=(int)get_post_meta($a->ID,'kt_ad_whatsapp_clicks_total',true);
$c=(int)get_post_meta($a->ID,'kt_ad_calls',true);
$pts=function_exists('kt_get_points')?kt_get_points($a->ID):(int)get_post_meta($a->ID,'kt_ad_points',true);
$msg.='• «'.get_the_title($a).'»: '.$v.' مشاهدة، '.$w.' نقرة واتساب، '.$c.' اتصال — الرصيد: '.$pts.' نقطة'."\n";
}
} elseif($route==='kt_support'){
$msg='🎧 تم إبلاغ الإدارة وسيتواصلون معك قريباً.'."\n".'شكراً لتواصلك 🌟';
ktwa_bot_send_text(KTWA_ADMIN_PHONE,'🔔 طلب تواصل مع الإدارة'."\n".'المعلن: '.$name."\n".'الرقم: '.$phone);
}
if($msg!=='') ktwa_bot_send_text($phone,$msg);
return ['ok'=>true,'r'=>$route];
}
Skip to content
تقرير انجليزي عن My holiday للصف السادس الترم التاني
تقرير انجليزي عن Life straw للصف السادس الترم التاني
تقرير انجليزي عن Kuwait للصف السادس الترم التاني
مذكرة علوم تدريبات محلولة على الفيروسات للصف السادس الترم التاني
تقرير علوم عن مكونات الخلية للصف السادس الترم التاني
حل التقويم اسلامية للصف السادس الترم التاني
حل كتاب الدراسات الاجتماعية للصف السادس الترم التاني
تلخيص مادة العلوم للصف السادس الترم التاني
جاري تجهيز الملف المطلوب
[ اشغل وقتك بذكر الله ]