document.querySelectorAll('form[data-chat-coach]').forEach(form=>{ const input=form.querySelector('textarea[name="body"]'); if(!input)return; const rapidWindowMs=2*60*1000; const autoDismissMs=3000; let dismissed=false; let dismissTimer=null; const readLastTwoMessageTimes=()=>Array.from(document.querySelectorAll('[data-chat-coach-own][data-chat-coach-at]')) .map(node=>Number(node.dataset.chatCoachAt)*1000) .filter(Number.isFinite) .sort((a,b)=>a-b) .slice(-2); const hint=document.createElement('aside'); hint.className='chat-coach chat-coach-floating';hint.hidden=true;hint.setAttribute('role','status');hint.setAttribute('aria-live','polite'); hint.innerHTML='
برای دریافت پاسخ دقیق‌تر

لطفاً همه توضیحات و سؤال‌های خود را در یک پیام کامل بنویسید و سپس ارسال کنید.

'; document.body.append(hint); const dismiss=({focusInput=false}={})=>{ dismissed=true; hint.hidden=true; if(dismissTimer)clearTimeout(dismissTimer); dismissTimer=null; if(focusInput)input.focus(); }; const showTemporarily=()=>{ if(!hint.hidden)return; hint.hidden=false; dismissTimer=setTimeout(()=>dismiss(),autoDismissMs); }; const detect=()=>{ const [previous,last]=readLastTwoMessageTimes(); const rapidPair=Number.isFinite(previous)&&Number.isFinite(last)&&last>=previous&&last-previous<=rapidWindowMs; if(!dismissed&&rapidPair)showTemporarily(); else if(!rapidPair)hint.hidden=true; }; hint.querySelector('[data-chat-coach-dismiss]').addEventListener('click',()=>dismiss({focusInput:true})); const conversation=document.querySelector('[data-conversation]'); if(conversation)new MutationObserver(detect).observe(conversation,{childList:true,subtree:true}); detect(); });