/
netsvvir
/
treeRepo
Обзор
Документация
Войти
/
netsvvir
/
treeRepo
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
user-app/src/utils/telegram.ts
80 строк
3 KB
netsvvir
Upload project
23 ноя 2025, 15:06
23 ноя 2025, 15:06
ce0a46d
Код
Авторство
О чём код?
declare global { interface Window { Telegram: { Login: { auth: (options: any, callback: (data: any) => void) => void; }; WebApp: any; }; } } export const initTelegramAuth = (botId: number, onAuth: (data: any) => void) => { console.log('Initializing Telegram auth for bot ID:', botId); if (!window.Telegram) { console.error('Telegram object not found on window'); throw new Error('Telegram Widget не загружен'); } if (!window.Telegram.Login) { console.error('Telegram.Login not found'); throw new Error('Telegram Login не доступен'); } if (!botId) { throw new Error('Не указан ID бота'); } try { const options = { bot_id: botId, // Используем числовой ID вместо username request_access: true, lang: 'ru', }; console.log('Calling Telegram.Login.auth with options:', options); window.Telegram.Login.auth(options, (data: any) => { console.log('Telegram auth callback received:', data); if (data) { onAuth(data); } else { console.error('Telegram auth returned empty data'); throw new Error('Авторизация не удалась'); } }); } catch (error) { console.error('Error in Telegram auth:', error); throw error; } }; export const loadTelegramScript = (): Promise<void> => { return new Promise((resolve, reject) => { if (window.Telegram && window.Telegram.Login) { console.log('Telegram already loaded'); resolve(); return; } const script = document.createElement('script'); script.src = 'https://telegram.org/js/telegram-widget.js?22'; script.async = true; script.onload = () => { console.log('Telegram Widget script loaded successfully'); setTimeout(() => { if (window.Telegram && window.Telegram.Login) { resolve(); } else { reject(new Error('Telegram object not found after script load')); } }, 1000); }; script.onerror = (error) => { console.error('Failed to load Telegram Widget script:', error); reject(new Error('Не удалось загрузить Telegram Widget')); }; document.head.appendChild(script); }); };