add economi system

This commit is contained in:
Arthur Puechberty
2026-01-17 18:52:16 +01:00
parent 6c9241f349
commit 7d706b4d79
20 changed files with 2123 additions and 9 deletions
+98
View File
@@ -263,6 +263,103 @@
<button type="submit">Sauvegarder</button>
<div id="status-level-form"></div>
</form>
<form id="economy-form">
<h2>💰 Système d'économie</h2>
<label>
<input type="checkbox" id="economy-enabled" />
Activer le système d'économie
</label>
<label>
Nom de la monnaie :
<br />
<input type="text" id="economy-currency-name" value="coins" />
</label>
<label>
Symbole de la monnaie :
<br />
<input type="text" id="economy-currency-symbol" value="💰" maxlength="10" />
</label>
<label>
Solde de départ :
<br />
<input type="number" id="economy-starting-balance" min="0" value="0" />
</label>
<h3>📅 Récompense quotidienne</h3>
<label>
Montant quotidien :
<br />
<input type="number" id="economy-daily-amount" min="1" value="100" />
</label>
<label>
Cooldown (heures) :
<br />
<input type="number" id="economy-daily-cooldown" min="1" value="24" />
</label>
<h3>💼 Travail</h3>
<label>
Gain minimum :
<br />
<input type="number" id="economy-work-min" min="1" value="50" />
</label>
<label>
Gain maximum :
<br />
<input type="number" id="economy-work-max" min="1" value="150" />
</label>
<label>
Cooldown (minutes) :
<br />
<input type="number" id="economy-work-cooldown" min="1" value="60" />
</label>
<h3>🔫 Crime</h3>
<label>
Gain minimum :
<br />
<input type="number" id="economy-crime-min" min="1" value="100" />
</label>
<label>
Gain maximum :
<br />
<input type="number" id="economy-crime-max" min="1" value="500" />
</label>
<label>
Taux de réussite (%) :
<br />
<input type="number" id="economy-crime-success" min="1" max="100" value="50" />
</label>
<label>
Amende en cas d'échec (% du solde) :
<br />
<input type="number" id="economy-crime-fine" min="0" max="100" value="30" />
</label>
<label>
Cooldown (minutes) :
<br />
<input type="number" id="economy-crime-cooldown" min="1" value="120" />
</label>
<button type="submit">Sauvegarder</button>
<div id="status-economy-form"></div>
</form>
<script src="/guild/guildBase.js"></script>
@@ -271,5 +368,6 @@
<script src="/guild/autoroleNewUserForm.js"></script>
<script src="/guild/autoroleVocalForm.js"></script>
<script src="/guild/levelForm.js"></script>
<script src="/guild/economyForm.js"></script>
</body>
</html>
+68
View File
@@ -0,0 +1,68 @@
const economyForm = document.getElementById("economy-form");
const economyEnabled = document.getElementById("economy-enabled");
const currencyName = document.getElementById("economy-currency-name");
const currencySymbol = document.getElementById("economy-currency-symbol");
const startingBalance = document.getElementById("economy-starting-balance");
const dailyAmount = document.getElementById("economy-daily-amount");
const dailyCooldown = document.getElementById("economy-daily-cooldown");
const workMin = document.getElementById("economy-work-min");
const workMax = document.getElementById("economy-work-max");
const workCooldown = document.getElementById("economy-work-cooldown");
const crimeMin = document.getElementById("economy-crime-min");
const crimeMax = document.getElementById("economy-crime-max");
const crimeSuccess = document.getElementById("economy-crime-success");
const crimeFine = document.getElementById("economy-crime-fine");
const crimeCooldown = document.getElementById("economy-crime-cooldown");
const statusEconomyForm = document.getElementById("status-economy-form");
// Charger la config existante
fetch(`/api/bot/get-economy-config/${guildId}`)
.then(res => res.json())
.then(cfg => {
economyEnabled.checked = cfg.enabled;
currencyName.value = cfg.currencyName;
currencySymbol.value = cfg.currencySymbol;
startingBalance.value = cfg.startingBalance;
dailyAmount.value = cfg.dailyAmount;
dailyCooldown.value = cfg.dailyCooldownHours;
workMin.value = cfg.workMinAmount;
workMax.value = cfg.workMaxAmount;
workCooldown.value = cfg.workCooldownMinutes;
crimeMin.value = cfg.crimeMinAmount;
crimeMax.value = cfg.crimeMaxAmount;
crimeSuccess.value = cfg.crimeSuccessRate;
crimeFine.value = cfg.crimeFinePercent;
crimeCooldown.value = cfg.crimeCooldownMinutes;
})
.catch(console.error);
// Sauvegarder la config
economyForm.addEventListener("submit", async e => {
e.preventDefault();
const res = await fetch("/api/bot/save-economy-config", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
guildId,
economyEnabled: economyEnabled.checked,
currencyName: currencyName.value,
currencySymbol: currencySymbol.value,
startingBalance: parseInt(startingBalance.value, 10),
dailyAmount: parseInt(dailyAmount.value, 10),
dailyCooldownHours: parseInt(dailyCooldown.value, 10),
workMinAmount: parseInt(workMin.value, 10),
workMaxAmount: parseInt(workMax.value, 10),
workCooldownMinutes: parseInt(workCooldown.value, 10),
crimeMinAmount: parseInt(crimeMin.value, 10),
crimeMaxAmount: parseInt(crimeMax.value, 10),
crimeSuccessRate: parseInt(crimeSuccess.value, 10),
crimeFinePercent: parseInt(crimeFine.value, 10),
crimeCooldownMinutes: parseInt(crimeCooldown.value, 10)
})
});
statusEconomyForm.textContent = (await res.json()).success
? "Config économie sauvegardée ✅"
: "Erreur ❌";
});