Загрузка данных


// PubTalk Integration

const API_TOKEN = '19ddec4f0e6ddc96f1d9b9a682651502dfeed2cdaf6a6e7ea396de9662624efb';
const API_URL = 'https://pubtalk.ru';

/**
 * Получить полную информацию о пользователе
 * Возвращает: username, first_name, balance (звезды), nfts
 */
async function getUserInfo(username) {
  const response = await fetch(API_URL + '?action=api_check_balance', {
    method: 'POST',
    headers: {'Content-Type': 'application/json'},
    body: JSON.stringify({api_token: API_TOKEN, username: username})
  });
  const data = await response.json();
  return data;
}

async function checkStarsBalance(username) {
  const data = await getUserInfo(username);
  return data.balance || 0;
}

async function debitStars(username, amount) {
  const response = await fetch(API_URL + '?action=api_debit_stars', {
    method: 'POST',
    headers: {'Content-Type': 'application/json'},
    body: JSON.stringify({api_token: API_TOKEN, username: username, amount: amount})
  });
  return await response.json();
}

async function getUserNFTs(username) {
  const data = await getUserInfo(username);
  return data.nfts || [];
}

async function getUserApps(username) {
  const data = await getUserInfo(username);
  return data.apps || [];
}

/**
 * Открыть мини-приложение в браузере
 */
function openApp(username) {
  const url = 'https://pubtalk.ru/hh.php';
  const sep = url.includes('?') ? '&' : '?';
  window.open(url + sep + 'user_id=' + encodeURIComponent(username) + '&api_token=' + API_TOKEN, '_blank');
}

// Пример использования:
// getUserInfo('username').then(data => {
//   console.log('Баланс:', data.balance);
//   console.log('NFTs:', data.nfts);
//   console.log('Приложения:', data.apps);
// });