Подключение...
Ink
Войди по логину и паролю
Войти
Регистрация
Регистрация
Придумай логин и пароль
Создать аккаунт
Назад
←
Ink
🔔
💰
0
🕶️
⚙️
+ Создать чат
Архив за месяц
📥 Скачать и очистить
😊
➤
←
Настройки
✕
←
Мой профиль
✕
←
Новый чат
✕
←
🛒 Покупки
✕
←
❤️ Поддержать 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 }); });