Подключение...

Ink

Войди по логину и паролю

Ink
Архив за месяц

Настройки

Мой профиль

Новый чат

🛒 Покупки

❤️ Поддержать Ink

🛡️ Кланы

Клан

Создать клан

💡 Предложить покупку

🗄️ Хранилище Inkognito

🏆 Рейтинг кланов

💰 Мой кошелёк

📤 Перевести токены

📜 Транзакции

Настройки чата

🎨 Эмодзи и префиксы

⚠️ Жалоба

🛡️ Админ-панель

/* Донат подтверждение */ app.post('/api/admin/donations/:id/confirm', auth, async (req, res) => { if(!isAdminReq(req)) return res.status(403).json({ error:'Только админ' }); const donations = load('donations'); const d = donations.find(x => x.id === parseInt(req.params.id, 10)); if(!d) return res.status(404).json({ error:'Не найдено' }); const tokensGained = 1 + Math.floor(Math.random() * 5); const smilePool = ['🌟','✨','💖','🔥','⭐','💫','🎉','🏆']; const smile = smilePool[Math.floor(Math.random() * smilePool.length)]; const endMonth = endOfMonthMSK(); const users = load('users'); const u = users.find(x => x.id === d.user_id); if(u){ u.tokens = (u.tokens || 0) + tokensGained; u.is_donor = true; u.donor_until = endMonth.toISOString(); u.donor_smile_prefix = smile; u.donor_text_prefix = 'Спасink'; u.donor_heart_reaction = true; u.show_smile_prefix = true; u.show_text_prefix = true; u.donated_total = (u.donated_total || 0) + d.amount; save('users', users); } d.status = 'confirmed'; save('donations', donations); res.json({ ok:true, tokens: tokensGained, smile, donor_until: endMonth }); }); app.post('/api/admin/donations/:id/thanks', auth, async (req, res) => { if(!isAdminReq(req)) return res.status(403).json({ error:'Только админ' }); const donations = load('donations'); const d = donations.find(x => x.id === parseInt(req.params.id, 10)); if(!d) return res.status(404).json({ error:'Не найдено' }); d.status = 'thanks'; save('donations', donations); res.json({ ok:true }); }); app.post('/api/admin/donations/:id/reject', auth, async (req, res) => { if(!isAdminReq(req)) return res.status(403).json({ error:'Только админ' }); const donations = load('donations'); const d = donations.find(x => x.id === parseInt(req.params.id, 10)); if(!d) return res.status(404).json({ error:'Не найдено' }); d.status = 'rejected'; save('donations', donations); res.json({ ok:true }); });