async function checkVerification({server=document.currentScript?.src||'https://ai-m.io', sid=''} = {}){ sid = sid||window.sessionStorage.getItem('tgvrsid'); console.log('sid', sid); if(!sid) return; let user = JSON.parse(window.sessionStorage.getItem(sid)||'null'); if(!user) { console.log('Fetching user data...'); const res = await fetch(`${server||location.hostname}/tgverificator.js?session=${sid}`); if (!res.ok) throw new Error('Bad response ' + res.status); user = await res.json(); if(!user||user?.status !='success') return; window.sessionStorage.setItem(sid, JSON.stringify(user)); } console.log('User data:', user); return user; } async function verify({server=document.currentScript?.src||'https://ai-m.io', sid=''} = {}) { const check = await checkVerification({server, sid}); if(check) return check; sid = (sid || window.sessionStorage.getItem('tgvrsid') || `${Date.now()}${Math.random().toString(36)}`).replace('.',''); window.sessionStorage.setItem('tgvrsid', sid); let win; const tgUri = `https://web.telegram.org/k/#?tgaddr=tg%3A%2F%2Fresolve%3Fdomain%3Dai_m_verificator_bot%26start%3D_${sid}`; if (/iPhone|iPad|iPod|Mobi|Android/i.test(navigator.userAgent)) { await fetch(`${server||location.hostname}/tgverificator.js?session=${sid}&redirect=${window.location.href.split('?')[0]}`); // win = window.open(`tg://resolve?domain=ai_m_verificator_bot&start=_${sid}`, "_blank"); window.location.href = `tg://resolve?domain=ai_m_verificator_bot&start=_${sid}`; return; } else win = window.open(tgUri, "_blank", `width=480,height=520,top=160,left=${(screen.width - 500) / 2}`); let resolve; const resultPromise = new Promise(r => resolve = r); const checkStatus = async () => { try { if(!win || win.closed) throw new Error('Window was closed by user'); const res = await fetch(`${server||location.hostname}/tgverificator.js?session=${sid}`); if (!res.ok) throw new Error('Bad response ' + res.status); const data = await res.json(); if (data&&["success", "error"].includes(data?.status)) { if (win && !win.closed) win.close(); window.sessionStorage.setItem(sid, JSON.stringify(data)); resolve(data); } else { setTimeout(checkStatus, 2000); } } catch (err) { console.error("Verification check failed", err, err.stack); } }; checkStatus(); // Стартуем polling return await resultPromise }