{"id":254,"date":"2025-10-20T18:47:06","date_gmt":"2025-10-20T18:47:06","guid":{"rendered":"https:\/\/opalium-multiverse.com\/?page_id=254"},"modified":"2026-03-12T23:35:20","modified_gmt":"2026-03-12T23:35:20","slug":"bot","status":"publish","type":"page","link":"https:\/\/opalium-multiverse.com\/?page_id=254","title":{"rendered":"Bot"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <link rel=\"stylesheet\" href=\"style.css\">\n    <script src=\"https:\/\/unpkg.com\/@tonconnect\/ui@latest\/dist\/tonconnect-ui.min.js\"><\/script>\n    <title>TON NFT Stickers<\/title>\n    <style>\n        body {\n            font-family: Arial, sans-serif;\n            margin: 0;\n            padding: 20px;\n            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n            min-height: 100vh;\n            color: white;\n        }\n        .container {\n            max-width: 800px;\n            margin: 0 auto;\n            text-align: center;\n        }\n        .status-card {\n            background: rgba(255, 255, 255, 0.1);\n            border-radius: 15px;\n            padding: 30px;\n            margin: 20px 0;\n            backdrop-filter: blur(10px);\n        }\n        .connect-btn {\n            background: #0088cc;\n            color: white;\n            border: none;\n            padding: 15px 30px;\n            border-radius: 25px;\n            font-size: 18px;\n            cursor: pointer;\n            margin: 20px 0;\n            transition: all 0.3s ease;\n        }\n        .connect-btn:hover {\n            background: #0077bb;\n            transform: translateY(-2px);\n        }\n        .wallet-info {\n            background: rgba(255, 255, 255, 0.2);\n            padding: 15px;\n            border-radius: 10px;\n            margin: 15px 0;\n            word-break: break-all;\n        }\n        .hidden {\n            display: none;\n        }\n        \n        \/* Unity \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f *\/\n        .unity-message {\n            background: linear-gradient(135deg, #ff6b6b 0%, #ee5a24 100%);\n            color: white;\n            padding: 20px;\n            margin: 20px 0;\n            border-radius: 15px;\n            text-align: center;\n            border: 2px solid #fff;\n            box-shadow: 0 4px 15px rgba(0,0,0,0.3);\n        }\n        .unity-success {\n            background: linear-gradient(135deg, #00cc88 0%, #00a86b 100%);\n        }\n    <\/style>\n<\/head>\n<body>\n    <div class=\"container\">\n        <!-- Unity \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0441\u044e\u0434\u0430 -->\n        <h1>\ud83c\udfb4 TON NFT Stickers<\/h1>\n        <p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u043a\u043e\u0448\u0435\u043b\u0435\u043a \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0441\u0442\u0438\u043a\u0435\u0440\u044b \u0437\u0430 \u0432\u0430\u0448\u0438 NFT!<\/p>\n        \n        <!-- \u041a\u043d\u043e\u043f\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f TonConnect -->\n        <div id=\"ton-connect-btn\" style=\"margin: 30px 0;\"><\/div>\n        \n        <!-- \u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 NFT -->\n        <button id=\"check-nft-btn\" class=\"connect-btn hidden\">\n            \ud83d\udd0d \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043c\u043e\u0438 NFT\n        <\/button>\n        \n        <!-- \u0421\u0442\u0430\u0442\u0443\u0441 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f -->\n        <div id=\"status-container\" class=\"status-card hidden\">\n            <h3>\u2705 \u041a\u043e\u0448\u0435\u043b\u0435\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d!<\/h3>\n            <div id=\"wallet-address\" class=\"wallet-info\"><\/div>\n            <div id=\"nft-status\"><\/div>\n        <\/div>\n        \n        <!-- \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 NFT -->\n        <div id=\"nft-results\" class=\"status-card hidden\"><\/div>\n    <\/div>\n\n    <script>\n        \/\/ =============================================\n        \/\/ UNITY TON CONNECT INTEGRATION - \u0417\u0410\u0413\u0420\u0423\u0416\u0410\u0415\u0422\u0421\u042f \u041f\u0415\u0420\u0412\u041e\u0419!\n        \/\/ =============================================\n        \n        \/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c Unity \u0441\u0435\u0441\u0441\u0438\u044e \u0421\u0420\u0410\u0417\u0423 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435\n        const urlParams = new URLSearchParams(window.location.search);\n        const unitySession = urlParams.get('connect_unity');\n        let isUnitySession = false;\n        \n        if (unitySession) {\n            console.log('\ud83c\udfae Unity session detected:', unitySession);\n            isUnitySession = true;\n            \n            \/\/ \u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\n            showUnityMessage(unitySession);\n        }\n        \n        function showUnityMessage(sessionId) {\n            const message = document.createElement('div');\n            message.className = 'unity-message';\n            message.innerHTML = `\n                <h3 style=\"margin: 0 0 10px 0;\">\ud83c\udfae \u041f\u041e\u0414\u041a\u041b\u042e\u0427\u0415\u041d\u0418\u0415 \u0414\u041b\u042f UNITY \u0418\u0413\u0420\u042b<\/h3>\n                <p style=\"margin: 0 0 10px 0; font-size: 16px;\">\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438 TON \u043a\u043e\u0448\u0435\u043b\u0435\u043a \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0432 \u0438\u0433\u0440\u0435<\/p>\n                <p style=\"margin: 0; font-size: 12px; opacity: 0.8;\">\u0421\u0435\u0441\u0441\u0438\u044f: ${sessionId}<\/p>\n            `;\n            \n            const container = document.querySelector('.container');\n            if (container) {\n                container.insertBefore(message, container.firstChild);\n            }\n        }\n        \n        function showUnitySuccessMessage() {\n            const success = document.createElement('div');\n            success.className = 'unity-message unity-success';\n            success.innerHTML = `\n                <h3 style=\"margin: 0 0 15px 0;\">\u2705 \u041a\u041e\u0428\u0415\u041b\u0415\u041a \u041f\u041e\u0414\u041a\u041b\u042e\u0427\u0415\u041d!<\/h3>\n                <p style=\"margin: 0 0 15px 0; font-size: 16px;\">\u0412\u0435\u0440\u043d\u0438\u0441\u044c \u0432 Unity \u0438\u0433\u0440\u0443 \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c<\/p>\n                <p style=\"margin: 0; font-size: 12px; opacity: 0.8;\">\u0418\u0433\u0440\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/p>\n                \n                <div style=\"margin-top: 20px;\">\n                    <button onclick=\"window.close()\" style=\"\n                        background: white;\n                        color: #00cc88;\n                        border: none;\n                        padding: 10px 20px;\n                        border-radius: 25px;\n                        cursor: pointer;\n                        font-weight: bold;\n                        margin: 5px;\n                    \">\u0417\u0430\u043a\u0440\u044b\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443<\/button>\n                <\/div>\n            `;\n            \n            const container = document.querySelector('.container');\n            if (container) {\n                container.appendChild(success);\n            }\n        }\n        \n        async function saveWalletForUnity(sessionId, walletAddress) {\n            console.log('\ud83d\udcbe Saving wallet for Unity:', walletAddress);\n            \n            try {\n                const response = await fetch(`https:\/\/opalium-multiverse.com\/unity-api.php?action=wallet-connected&session_id=${encodeURIComponent(sessionId)}&wallet_address=${encodeURIComponent(walletAddress)}`);\n                const data = await response.json();\n                \n                console.log('Unity API response:', data);\n                \n                if (data.success) {\n                    showUnitySuccessMessage();\n                }\n            } catch (error) {\n                console.error('Error saving wallet for Unity:', error);\n            }\n        }\n\n        \/\/ =============================================\n        \/\/ \u041e\u0421\u041d\u041e\u0412\u041d\u041e\u0419 \u041a\u041e\u0414 TON CONNECT\n        \/\/ =============================================\n\n        \/\/ \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\n        const BOT_BACKEND_URL = 'https:\/\/opalium-multiverse.com\/php-bot\/telegram-bot.php';\n        const TONAPI_KEY = 'Bearer AH3R7HAF4TA6EDQAAAAGXCUJ5SCDPBCD7VLN4OOJ65O33CTCZ754AMGPTVJPWWIK5JAWD2A';\n\n        \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c telegram_id \u0438\u0437 URL\n        const telegramId = urlParams.get('tg_id');\n        \n        \/\/ \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f TonConnect\n        const tonConnectUI = new TON_CONNECT_UI.TonConnectUI({\n            manifestUrl: 'https:\/\/opalium-multiverse.com\/tonconnect-manifest.json',\n            buttonRootId: 'ton-connect-btn'\n        });\n\n        let userWallet = null;\n\n        \/\/ \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u0448\u0435\u043b\u044c\u043a\u0430 - \u0441 Unity \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0435\u0439\n        tonConnectUI.onStatusChange(async (wallet) => {\n            if (wallet) {\n                userWallet = wallet;\n                \n                \/\/ \u0415\u0421\u041b\u0418 \u042d\u0422\u041e UNITY \u0421\u0415\u0421\u0421\u0418\u042f - \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0434\u043b\u044f \u0438\u0433\u0440\u044b\n                if (isUnitySession && unitySession) {\n                    await saveWalletForUnity(unitySession, wallet.account.address);\n                }\n                \n                \/\/ \u0412\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043e\u0431\u044b\u0447\u043d\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443\n                await handleWalletConnected(wallet);\n            } else {\n                handleWalletDisconnected();\n            }\n        });\n\n        async function handleWalletConnected(wallet) {\n            const walletAddress = wallet.account.address;\n            \n            \/\/ \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u0442\u0430\u0442\u0443\u0441\n            document.getElementById('status-container').classList.remove('hidden');\n            document.getElementById('wallet-address').textContent = walletAddress;\n            document.getElementById('check-nft-btn').classList.remove('hidden');\n            \n            \/\/ \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0431\u043e\u0442\u0430\n            if (telegramId) {\n                try {\n                    const response = await fetch(`${BOT_BACKEND_URL}?action=connect-wallet`, {\n                        method: 'POST',\n                        headers: {\n                            'Content-Type': 'application\/json',\n                        },\n                        body: JSON.stringify({\n                            telegram_id: telegramId,\n                            wallet_address: walletAddress\n                        })\n                    });\n                    \n                    const result = await response.json();\n                    if (result.success) {\n                        document.getElementById('nft-status').innerHTML = \n                            '<p>\u2705 \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 \u0431\u043e\u0442\u0430! \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441\u0432\u043e\u0438 NFT.<\/p>';\n                    } else {\n                        document.getElementById('nft-status').innerHTML = \n                            '<p style=\"color: #ff6b6b;\">\u274c \u041e\u0448\u0438\u0431\u043a\u0430: ' + (result.error || '\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430') + '<\/p>';\n                    }\n                } catch (error) {\n                    console.error('\u041e\u0448\u0438\u0431\u043a\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445:', error);\n                    document.getElementById('nft-status').innerHTML = \n                        '<p style=\"color: #ff6b6b;\">\u274c \u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0431\u043e\u0442\u0443<\/p>';\n                }\n            }\n        }\n\n        function handleWalletDisconnected() {\n            document.getElementById('status-container').classList.add('hidden');\n            document.getElementById('check-nft-btn').classList.add('hidden');\n            document.getElementById('nft-results').classList.add('hidden');\n            userWallet = null;\n        }\n\n        \/\/ \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 NFT\n        document.getElementById('check-nft-btn').addEventListener('click', async () => {\n            if (!userWallet) return;\n            \n            const checkBtn = document.getElementById('check-nft-btn');\n            const originalText = checkBtn.textContent;\n            checkBtn.textContent = '\ud83d\udd0d \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c NFT...';\n            checkBtn.disabled = true;\n            \n            try {\n                const nfts = await checkUserNFTs(userWallet.account.address);\n                displayNFTResults(nfts);\n            } catch (error) {\n                console.error('\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 NFT:', error);\n                document.getElementById('nft-status').innerHTML = \n                    '<p style=\"color: #ff6b6b;\">\u274c \u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 NFT<\/p>';\n            } finally {\n                checkBtn.textContent = originalText;\n                checkBtn.disabled = false;\n            }\n        });\n\n        \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 NFT (\u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f)\n        async function checkUserNFTs(walletAddress) {\n            try {\n                \/\/ \u0420\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 NFT \u0447\u0435\u0440\u0435\u0437 TON API\n                const response = await fetch(`https:\/\/tonapi.io\/v2\/accounts\/${walletAddress}\/nfts`, {\n                    method: 'GET',\n                    headers: {\n                        'Authorization': TONAPI_KEY\n                    }\n                });\n                \n                if (!response.ok) {\n                    throw new Error(`\u041e\u0448\u0438\u0431\u043a\u0430 API: ${response.status}`);\n                }\n                \n                const data = await response.json();\n                return data.nft_items || [];\n                \n            } catch (error) {\n                console.error('\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 NFT:', error);\n                \/\/ Fallback: \u0438\u043c\u0438\u0442\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438\n                return await simulateNFTCheck(walletAddress);\n            }\n        }\n\n        \/\/ \u0418\u043c\u0438\u0442\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 NFT (\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435)\n        async function simulateNFTCheck(walletAddress) {\n            const mockNFTs = [\n                {\n                    address: 'EQAT-H4lha14VVx5rMT2eLMq4xmPnNLgX_Wv-Dpa_xnazQ78\/EQAALmHeivTI9OdK0CvqhQYJOq9ZkwG7Yt8DOORwUQcJ8Xrn',\n                    name: 'Diamond NFT',\n                    collection: {\n                        name: 'Premium Collection'\n                    }\n                },\n                {\n                    address: 'EQAT-H4lha14VVx5rMT2eLMq4xmPnNLgX_Wv-Dpa_xnazQ78\/EQC88INcR8JfPhbztPWtE5x6MbD4TyUYm48DHZ9eIdPqfcgL',\n                    name: 'Silver NFT', \n                    collection: {\n                        name: 'Basic Collection'\n                    }\n                }\n            ];\n            \n            \/\/ \u0421\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c 0-2 NFT\n            return mockNFTs.slice(0, Math.floor(Math.random() * 3));\n        }\n\n        \/\/ \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 NFT\n        function displayNFTResults(nfts) {\n            const resultsContainer = document.getElementById('nft-results');\n            resultsContainer.classList.remove('hidden');\n            \n            if (nfts.length === 0) {\n                resultsContainer.innerHTML = `\n                    <h3>\u274c NFT \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b<\/h3>\n                    <p>\u0412 \u0432\u0430\u0448\u0435\u043c \u043a\u043e\u0448\u0435\u043b\u044c\u043a\u0435 \u043d\u0435\u0442 NFT \u0438\u043b\u0438 \u043e\u043d\u0438 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f.<\/p>\n                `;\n                return;\n            }\n            \n            let html = `<h3>\ud83c\udf89 \u041d\u0430\u0439\u0434\u0435\u043d\u043e NFT: ${nfts.length}<\/h3>`;\n            \n            nfts.forEach((nft, index) => {\n                html += `\n                    <div style=\"background: rgba(255,255,255,0.1); padding: 15px; margin: 10px 0; border-radius: 10px;\">\n                        <h4>${nft.name || 'Unnamed NFT'}<\/h4>\n                        <p><small>\u0410\u0434\u0440\u0435\u0441: ${nft.address.slice(0, 15)}...<\/small><\/p>\n                        <p><small>\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f: ${nft.collection?.name || 'Unknown'}<\/small><\/p>\n                    <\/div>\n                `;\n            });\n            \n            html += `\n                <p>\u2705 \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e NFT \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 \u0431\u043e\u0442\u0430 Telegram<\/p>\n                <p><small>\u0412\u0435\u0440\u043d\u0438\u0442\u0435\u0441\u044c \u0432 \u0431\u043e\u0442\u0430 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0442\u0438\u043a\u0435\u0440\u044b<\/small><\/p>\n            `;\n            \n            resultsContainer.innerHTML = html;\n            \n            \/\/ \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 NFT \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0431\u043e\u0442\u0430\n            if (telegramId && userWallet) {\n                sendNFTsToBot(telegramId, userWallet.account.address, nfts);\n            }\n        }\n\n        \/\/ \u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e NFT \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0431\u043e\u0442\u0430\n        async function sendNFTsToBot(telegramId, walletAddress, nfts) {\n            try {\n                const response = await fetch(`${BOT_BACKEND_URL}?action=check-nfts`, {\n                    method: 'POST',\n                    headers: {\n                        'Content-Type': 'application\/json',\n                    },\n                    body: JSON.stringify({\n                        telegram_id: telegramId,\n                        wallet_address: walletAddress,\n                        nfts: nfts.map(nft => nft.address)\n                    })\n                });\n                \n                const result = await response.json();\n                console.log('NFT \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u0431\u043e\u0442\u0430:', result);\n                \n                if (!result.success) {\n                    console.error('\u041e\u0448\u0438\u0431\u043a\u0430 \u043e\u0442 \u0431\u043e\u0442\u0430:', result.error);\n                }\n            } catch (error) {\n                console.error('\u041e\u0448\u0438\u0431\u043a\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 NFT \u0434\u0430\u043d\u043d\u044b\u0445:', error);\n            }\n        }\n\n        console.log('\ud83c\udfae TON Connect with Unity integration loaded');\n    <\/script>\n<\/body>\n<\/html>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>TON NFT Stickers \ud83c\udfb4 TON NFT Stickers \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u043a\u043e\u0448\u0435\u043b\u0435\u043a \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0441\u0442\u0438\u043a\u0435\u0440\u044b \u0437\u0430 \u0432\u0430\u0448\u0438 NFT! \ud83d\udd0d \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043c\u043e\u0438 NFT \u2705 \u041a\u043e\u0448\u0435\u043b\u0435\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d!<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_eb_attr":"","footnotes":""},"class_list":["post-254","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/opalium-multiverse.com\/index.php?rest_route=\/wp\/v2\/pages\/254","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/opalium-multiverse.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/opalium-multiverse.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/opalium-multiverse.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/opalium-multiverse.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=254"}],"version-history":[{"count":51,"href":"https:\/\/opalium-multiverse.com\/index.php?rest_route=\/wp\/v2\/pages\/254\/revisions"}],"predecessor-version":[{"id":355,"href":"https:\/\/opalium-multiverse.com\/index.php?rest_route=\/wp\/v2\/pages\/254\/revisions\/355"}],"wp:attachment":[{"href":"https:\/\/opalium-multiverse.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=254"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}