💰 ResourcesLib — Gestion de Ressources
Gérez les soldes, devises, points de vie et toute ressource numérique dans votre bot avec la bibliothèque ResourcesLib
Introduction
ResourcesLib vous permet de gérer des ressources numériques pour chaque utilisateur ou chat de votre bot. Balances, devises de jeu, points de vie, or, bois — tout ce qui peut être représenté par un nombre.
💰 ResLib.userRes() / ResLib.chatRes()
Accédez à une ressource par nom. Les ressources utilisateur sont partagées entre tous les chats, les ressources chat sont uniques par conversation.
📈 Croissance automatique
Ajoutez de la croissance linéaire, en pourcentage ou avec intérêts composés. Idéal pour des systèmes de revenus passifs, régénération de vie, etc.
🔄 Transferts
Transférez des ressources entre utilisateurs, échangez des types différents (or contre bois), prenez depuis un autre compte.
Bot.setProp() directement. ResourcesLib est idéal quand vous avez besoin de croissance automatique, de transferts ou de vérifications de solde.
"money", "Money" et "MONEY" sont 3 ressources distinctes.
Installation
ResourcesLib est une bibliothèque installable depuis l'application BotStrike.
📱 Étapes d'installation
- Ouvrez votre bot dans l'application BotStrike
- Allez dans l'onglet 📚 Bibliothèque
- Trouvez ResourcesLib dans la liste
- Cliquez sur le bouton « Installer sur [nom du bot] »
- C'est fait ! Vous pouvez maintenant utiliser
ResLibdans vos commandes
ResLib dans tous vos scripts (JavaScript et Python).
Ressource utilisateur & chat
Ressource utilisateur
Une ressource utilisateur est liée à l'utilisateur Telegram : même ressource dans tous les chats (privé, groupe, etc.).
var money = ResLib.userRes("money")
Bot.sendMessage("💰 Votre solde : " + money.value)
money = ResLib.userRes("money")
Bot.sendMessage("💰 Votre solde : " + str(money.value))
Ressource chat
Une ressource chat est unique par conversation. Un utilisateur peut avoir des valeurs différentes dans chaque chat.
var gold = ResLib.chatRes("gold")
Bot.sendMessage("🪙 Or dans ce chat : " + gold.value)
gold = ResLib.chatRes("gold")
Bot.sendMessage("🪙 Or dans ce chat : " + str(gold.value))
res.name qui retourne son nom. Par exemple : ResLib.userRes("BTC").name retourne "BTC".
Fonctions de base
Valeur actuelle
res.value — propriété qui retourne la valeur courante (incluant la croissance si activée). S'utilise sans parenthèses : wallet.value.
Définir / Réinitialiser la valeur
res.set(montant) — remplace la valeur par un montant précis et supprime la croissance active.
res.reset() — remet la ressource à 0 et supprime la croissance. Équivalent à res.set(0).
var wallet = ResLib.userRes("wallet")
wallet.set(1000)
wallet.add(100) // +100 → 1100
wallet.sub(20) // -20 → 1080
wallet.reset() // → 0
wallet.set(500)
var v = wallet.value // propriété, sans () → 500
Bot.sendMessage("💰 Solde : " + wallet.value)
wallet = ResLib.userRes("wallet")
wallet.set(1000)
wallet.add(100) # +100 → 1100
wallet.sub(20) # -20 → 1080
wallet.reset() # → 0
wallet.set(500)
v = wallet.value # propriété, sans () → 500
Bot.sendMessage("💰 Solde : " + str(wallet.value))
Ajouter / Soustraire
res.add(montant) — ajoute un montant à la ressource.
res.sub(montant) — soustrait un montant inconditionnellement (le solde peut devenir négatif). Alias de removeAnyway.
Vérifier le solde
res.have(montant) — retourne true si la ressource contient au moins ce montant.
Retirer
res.remove(montant) — retire le montant seulement si le solde est suffisant. Retourne true si réussi, false si insuffisant.
res.removeAnyway(montant) — retire le montant même si le solde est insuffisant (peut devenir négatif). Alias : res.sub(montant).
// Commande /acheter var gold = ResLib.userRes("gold") gold.set(50) gold.add(25) // gold vaut maintenant 75 if (gold.have(30)) { gold.remove(30) Bot.sendMessage("✅ Achat réussi ! Reste : " + gold.value) } else { Bot.sendMessage("❌ Pas assez d'or !") }
# Commande /acheter gold = ResLib.userRes("gold") gold.set(50) gold.add(25) # gold vaut maintenant 75 if gold.have(30): gold.remove(30) Bot.sendMessage("✅ Achat réussi ! Reste : " + str(gold.value)) else: Bot.sendMessage("❌ Pas assez d'or !")
Transferts entre utilisateurs
Accéder aux ressources d'un autre utilisateur
Le deuxième paramètre est l'ID Telegram de l'utilisateur cible (un nombre, passé en string ou en entier).
Vous pouvez l'obtenir via user.telegramid lors d'une interaction, ou le stocker vous-même.
La ressource retournée fonctionne exactement comme une ressource normale : vous pouvez lire, modifier,
transférer, etc.
otherMoney.value ?Un nombre (ex:
150) — le solde actuel de la ressource "money"
pour cet utilisateur. Retourne 0 si la ressource n'a jamais été initialisée pour lui.
// "987654321" = ID Telegram de l'autre utilisateur // Ou dynamiquement : user.telegramid var otherMoney = ResLib.anotherUserRes("money", "987654321") // otherMoney.value retourne un nombre (ex: 150), ou 0 si jamais initialisé Bot.sendMessage("Son solde : " + otherMoney.value)
# "987654321" = ID Telegram de l'autre utilisateur # Ou dynamiquement : user["telegramid"] other_money = ResLib.anotherUserRes("money", "987654321") # other_money.value retourne un nombre (ex: 150), ou 0 si jamais initialisé Bot.sendMessage("Son solde : " + str(other_money.value))
Transférer des ressources
res.transferTo(autreRes, montant) — transfère si le solde est suffisant.
res.takeFromAnother(autreRes, montant) — prend depuis l'autre si son solde est suffisant.
res.transferToAnyway(autreRes, montant)res.takeFromAnotherAnyway(autreRes, montant)
// Envoyer 50 pièces à un ami
var myGold = ResLib.userRes("gold")
var friendGold = ResLib.anotherUserRes("gold", "987654321")
if (myGold.transferTo(friendGold, 50)) {
Bot.sendMessage("✅ 50 pièces envoyées !")
} else {
Bot.sendMessage("❌ Solde insuffisant")
}
# Envoyer 50 pièces à un ami
my_gold = ResLib.userRes("gold")
friend_gold = ResLib.anotherUserRes("gold", "987654321")
if my_gold.transferTo(friend_gold, 50):
Bot.sendMessage("✅ 50 pièces envoyées !")
else:
Bot.sendMessage("❌ Solde insuffisant")
Échanger des ressources différentes
res.exchangeTo(autreRes, { remove_amount: X, add_amount: Y }) — échange X de cette ressource contre Y d'une autre.
// Échanger 10 or contre 23 bois
var gold = ResLib.userRes("gold")
var wood = ResLib.userRes("wood")
gold.exchangeTo(wood, { remove_amount: 10, add_amount: 23 })
# Échanger 10 or contre 23 bois
gold = ResLib.userRes("gold")
wood = ResLib.userRes("wood")
gold.exchangeTo(wood, {"remove_amount": 10, "add_amount": 23})
Croissance automatique
Les ressources peuvent avoir une croissance automatique — la valeur augmente (ou diminue) automatiquement avec le temps.
Croissance linéaire
res.growth.add({ value, interval }) — ajoute value toutes les interval secondes.
// Régénérer 5 PV toutes les 10 secondes, max 100
var health = ResLib.userRes("health")
health.set(1)
health.growth.add({ value: 5, interval: 10, max: 100 })
# Régénérer 5 PV toutes les 10 secondes, max 100
health = ResLib.userRes("health")
health.set(1)
health.growth.add({"value": 5, "interval": 10, "max": 100})
Croissance en pourcentage
res.growth.addPercent({ value, interval }) — ajoute value% tous les interval secondes.
// +15% chaque mois sur 100 USD
var usd = ResLib.userRes("usd")
usd.set(100)
var secsInMonth = 60 * 60 * 24 * 31
usd.growth.addPercent({ value: 15, interval: secsInMonth })
# +15% chaque mois sur 100 USD
usd = ResLib.userRes("usd")
usd.set(100)
secs_in_month = 60 * 60 * 24 * 31
usd.growth.addPercent({"value": 15, "interval": secs_in_month})
Intérêts composés
res.growth.addCompoundInterest({ value, interval }) — croissance avec réinvestissement automatique.
// +0.8% par jour sur 0.5 BTC avec réinvestissement
var btc = ResLib.userRes("BTC")
btc.set(0.5)
var secsInDay = 60 * 60 * 24
btc.growth.addCompoundInterest({ value: 0.8, interval: secsInDay })
# +0.8% par jour sur 0.5 BTC avec réinvestissement
btc = ResLib.userRes("BTC")
btc.set(0.5)
secs_in_day = 60 * 60 * 24
btc.growth.addCompoundInterest({"value": 0.8, "interval": secs_in_day})
Options de croissance
| Option | Description |
|---|---|
value | Valeur à ajouter (peut être négatif) |
interval | Intervalle en secondes |
max | Valeur maximale (optionnel) |
min | Valeur minimale (optionnel) |
max_iterations_count | Nombre maximum d'itérations (optionnel) |
Contrôler la croissance
| Méthode | Description |
|---|---|
res.growth.info() | Informations sur la croissance active |
res.growth.isEnabled() | Retourne true si la croissance est active |
res.growth.stop() | Met en pause la croissance |
res.growth.resume() | Reprend après une pause |
res.growth.remove() | Supprime la croissance |
res.growth.progress() | Progression vers la prochaine itération (0 à 1) |
res.growth.willCompletedAfter() | Secondes avant la prochaine itération |
res.growth.title() | Description lisible (ex: "add 5 once at 10 secs") |
res.baseValue() | Valeur de base sans la croissance |
res.resetGrowth() | Supprime la croissance (alias de growth.remove) |
Exemples complets
💰 Système de portefeuille + dépôt bancaire
Un portefeuille de 500$ et un dépôt bancaire de 100$ avec un rendement annuel de 10%.
// Commande /start — initialisation
var wallet = ResLib.userRes("wallet")
wallet.set(500)
var deposit = ResLib.userRes("deposit")
deposit.set(100)
var secsInYear = 60 * 60 * 24 * 365
deposit.growth.addPercent({ value: 10, interval: secsInYear })
// Commande /retirer — récupérer les intérêts
var wallet = ResLib.userRes("wallet")
var deposit = ResLib.userRes("deposit")
var baseValue = deposit.baseValue()
var delta = deposit.value - baseValue
wallet.add(delta)
deposit.set(baseValue)
Bot.sendMessage("💵 Intérêts récupérés : " + delta.toFixed(2) + "$")
# Commande /start — initialisation
wallet = ResLib.userRes("wallet")
wallet.set(500)
deposit = ResLib.userRes("deposit")
deposit.set(100)
secs_in_year = 60 * 60 * 24 * 365
deposit.growth.addPercent({"value": 10, "interval": secs_in_year})
# Commande /retirer — récupérer les intérêts
wallet = ResLib.userRes("wallet")
deposit = ResLib.userRes("deposit")
base_value = deposit.baseValue()
delta = deposit.value - base_value
wallet.add(delta)
deposit.set(base_value)
Bot.sendMessage("💵 Intérêts récupérés : " + str(round(delta, 2)) + "$")
🎮 Jeu avec plusieurs ressources
// Commande /start — créer les ressources du joueur var gold = ResLib.userRes("gold") var wood = ResLib.userRes("wood") var health = ResLib.userRes("health") gold.set(100) wood.set(50) health.set(100) // Régénération de vie : +1 PV toutes les 30 secondes, max 100 health.growth.add({ value: 1, interval: 30, max: 100 }) Bot.sendMessage("🎮 Bienvenue !\n🪙 Or: " + gold.value + "\n🪵 Bois: " + wood.value + "\n❤️ Vie: " + health.value)
// Commande /shop — acheter du bois avec de l'or
var gold = ResLib.userRes("gold")
var wood = ResLib.userRes("wood")
if (gold.exchangeTo(wood, { remove_amount: 10, add_amount: 25 })) {
Bot.sendMessage("✅ Acheté 25 bois pour 10 or !")
} else {
Bot.sendMessage("❌ Pas assez d'or (il faut 10)")
}
# Commande /start — créer les ressources du joueur gold = ResLib.userRes("gold") wood = ResLib.userRes("wood") health = ResLib.userRes("health") gold.set(100) wood.set(50) health.set(100) # Régénération de vie : +1 PV toutes les 30 secondes, max 100 health.growth.add({"value": 1, "interval": 30, "max": 100}) Bot.sendMessage("🎮 Bienvenue !\n🪙 Or: " + str(gold.value) + "\n🪵 Bois: " + str(wood.value) + "\n❤️ Vie: " + str(health.value))
# Commande /shop — acheter du bois avec de l'or
gold = ResLib.userRes("gold")
wood = ResLib.userRes("wood")
if gold.exchangeTo(wood, {"remove_amount": 10, "add_amount": 25}):
Bot.sendMessage("✅ Acheté 25 bois pour 10 or !")
else:
Bot.sendMessage("❌ Pas assez d'or (il faut 10)")
Récapitulatif
| Méthode | Description |
|---|---|
ResLib.userRes(nom) | Ressource utilisateur (partagée entre chats) |
ResLib.chatRes(nom) | Ressource chat (unique par conversation) |
ResLib.anotherUserRes(nom, id) | Ressource d'un autre utilisateur |
ResLib.anotherChatRes(nom, id) | Ressource d'un autre chat |
res.value | Propriété — valeur actuelle (avec croissance). S'utilise sans () |
res.baseValue() | Valeur de base (sans croissance) |
res.set(montant) | Définir la valeur (supprime la croissance) |
res.reset() | Remet à 0 (supprime la croissance) |
res.add(montant) | Ajouter au montant |
res.sub(montant) | Soustraire inconditionnellement (peut devenir négatif) |
res.have(montant) | Vérifie si le solde est suffisant |
res.remove(montant) | Retirer (si suffisant — retourne true/false) |
res.removeAnyway(montant) | Retirer (même négatif) — alias : sub() |
res.transferTo(autre, montant) | Transférer vers une autre ressource |
res.transferToAnyway(autre, montant) | Transférer même si solde insuffisant |
res.takeFromAnother(autre, montant) | Prendre depuis une autre ressource |
res.takeFromAnotherAnyway(autre, montant) | Prendre même si solde insuffisant |
res.exchangeTo(autre, opts) | Échanger des ressources différentes |
res.growth.add(opts) | Croissance linéaire |
res.growth.addPercent(opts) | Croissance en pourcentage |
res.growth.addCompoundInterest(opts) | Intérêts composés |
"gold" et "Gold" sont deux ressources différentes.
userRes → user_res, baseValue → base_value, transferTo → transfer_to.