-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpremiumManager.js
More file actions
169 lines (134 loc) · 4.43 KB
/
Copy pathpremiumManager.js
File metadata and controls
169 lines (134 loc) · 4.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
const fs = require('fs');
const path = require('path');
const PREMIUM_FILE = path.join(__dirname, 'premium_users.json');
const ADMIN_IDS = [7995816749]; // ⚠️ Remplace par ton vrai ID Telegram
let premiumUsers = {};
// Charger les utilisateurs premium
function loadPremiumUsers() {
try {
if (fs.existsSync(PREMIUM_FILE)) {
const data = fs.readFileSync(PREMIUM_FILE, 'utf8');
premiumUsers = JSON.parse(data);
console.log('✅ Utilisateurs premium chargés:', Object.keys(premiumUsers).length);
} else {
savePremiumUsers();
}
} catch (error) {
console.error('Erreur lors du chargement des utilisateurs premium:', error);
premiumUsers = {};
}
}
// Sauvegarder les utilisateurs premium
function savePremiumUsers() {
try {
fs.writeFileSync(PREMIUM_FILE, JSON.stringify(premiumUsers, null, 2));
} catch (error) {
console.error('Erreur lors de la sauvegarde des utilisateurs premium:', error);
}
}
// Vérifier si un utilisateur est admin
function isAdmin(userId) {
return ADMIN_IDS.includes(userId);
}
// Vérifier le statut premium (RECHARGE À CHAQUE FOIS)
// Vérifier le statut premium (RECHARGE À CHAQUE FOIS)
async function checkPremium(userId) {
// 🔄 RECHARGER LES DONNÉES À CHAQUE VÉRIFICATION
loadPremiumUsers();
// 🔍 LOG DE DÉBOGAGE
console.log('🔍 Vérification premium:');
console.log(' User ID recherché:', userId, 'Type:', typeof userId);
console.log(' IDs premium en base:', Object.keys(premiumUsers));
const user = premiumUsers[userId];
console.log(' Utilisateur trouvé:', user ? 'OUI ✅' : 'NON ❌');
if (!user) return false;
// Vérifier l'expiration
if (user.expiresAt) {
const isExpired = new Date(user.expiresAt) < new Date();
console.log(' Expiration:', user.expiresAt);
console.log(' Est expiré:', isExpired);
if (isExpired) {
delete premiumUsers[userId];
savePremiumUsers();
return false;
}
}
console.log(' ✅ PREMIUM VALIDE');
return true;
}
// Ajouter un utilisateur premium
async function addPremium(userId, username, durationDays = null) {
// 🔄 RECHARGER AVANT D'AJOUTER
loadPremiumUsers();
const userData = {
userId: userId, // 📌 Ajouter l'ID explicitement
username: username,
addedAt: new Date().toISOString()
};
// Définir la date d'expiration si durée spécifiée
if (durationDays) {
const expiresAt = new Date();
expiresAt.setDate(expiresAt.getDate() + durationDays);
userData.expiresAt = expiresAt.toISOString();
}
premiumUsers[userId] = userData;
savePremiumUsers();
console.log(`✅ Premium ajouté pour ${username} (${userId})`);
return userData;
}
// Retirer un utilisateur premium
async function removePremium(userId) {
// 🔄 RECHARGER AVANT DE RETIRER
loadPremiumUsers();
if (!premiumUsers[userId]) {
return false;
}
delete premiumUsers[userId];
savePremiumUsers();
console.log(`❌ Premium retiré pour l'utilisateur ${userId}`);
return true;
}
// Obtenir la liste des utilisateurs premium
function getPremiumList() {
// 🔄 RECHARGER AVANT DE LISTER
loadPremiumUsers();
return Object.entries(premiumUsers).map(([userId, data]) => ({
userId,
...data
}));
}
// Obtenir les infos d'un utilisateur premium
function getPremiumInfo(userId) {
// 🔄 RECHARGER AVANT DE RÉCUPÉRER
loadPremiumUsers();
return premiumUsers[userId] || null;
}
// Nettoyer les abonnements expirés
function cleanExpiredPremium() {
loadPremiumUsers();
const now = new Date();
let cleaned = 0;
for (const [userId, data] of Object.entries(premiumUsers)) {
if (data.expiresAt && new Date(data.expiresAt) < now) {
delete premiumUsers[userId];
cleaned++;
}
}
if (cleaned > 0) {
savePremiumUsers();
console.log(`🧹 ${cleaned} abonnement(s) expiré(s) nettoyé(s)`);
}
}
// Charger au démarrage
loadPremiumUsers();
// Nettoyer toutes les heures
setInterval(cleanExpiredPremium, 3600000);
module.exports = {
isAdmin,
checkPremium,
addPremium,
removePremium,
getPremiumList,
getPremiumInfo,
cleanExpiredPremium
};