success(['settings'=>$bridge->settings(),'bot_configured'=>(bool)admin_setting('telegram_bot_token'), 'bot_enabled'=>(bool)admin_setting('telegram_bot_enable'), 'secure_webhook_configured'=>(bool)admin_setting('telegram_webhook_secret'), 'admins'=>User::where('is_admin',1)->where('banned',0)->get(['id','email','telegram_id'])->map(fn($u)=>['id'=>$u->id,'email'=>$u->email,'bound'=>(bool)$u->telegram_id]), 'delivery_counts'=>TelegramTicketMessage::selectRaw('status, count(*) as total')->groupBy('status')->pluck('total','status')]); } public function save(Request $request,TicketBridge $bridge){ $data=$request->validate(['notify_enabled'=>'required|boolean','reply_enabled'=>'required|boolean','receiver_user_ids'=>'present|array|max:20','receiver_user_ids.*'=>'integer|distinct']); $ids=$data['receiver_user_ids'];if($ids&&User::whereIn('id',$ids)->where('is_admin',1)->where('banned',0)->count()!==count($ids))return $this->fail([422,'接收人必须是有效管理员']); admin_setting(['telegram_ticket'=>$data]);return $this->success($bridge->settings()); } public function bindCode(Request $request,TicketBridge $bridge){ $admin=$request->user();if(!$admin||!$admin->is_admin||$admin->banned)return $this->fail([403,'仅管理员可绑定']); if(!admin_setting('telegram_bot_token'))return $this->fail([422,'请先配置客服机器人']); return $this->success(['command'=>'/staffbind '.$bridge->bindingCode($admin),'expires_in'=>600]); } }