🌙
BotStrike
Introduction
Installation
Ressources
Fonctions
Transferts
Croissance
Exemples
Récapitulatif

💰 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.

⚠️ Attention : N'utilisez pas ResourcesLib pour de simples compteurs. Pour un simple nombre sans croissance, utilisez Bot.setProp() directement. ResourcesLib est idéal quand vous avez besoin de croissance automatique, de transferts ou de vérifications de solde.
⚠️ Sensible à la casse ! Les noms de ressources "money", "Money" et "MONEY" sont 3 ressources distinctes.

Installation

ResourcesLib est une bibliothèque installable depuis l'application BotStrike.

📱 Étapes d'installation

  1. Ouvrez votre bot dans l'application BotStrike
  2. Allez dans l'onglet 📚 Bibliothèque
  3. Trouvez ResourcesLib dans la liste
  4. Cliquez sur le bouton « Installer sur [nom du bot] »
  5. C'est fait ! Vous pouvez maintenant utiliser ResLib dans vos commandes
💡 Objet global : Une fois installée, la bibliothèque est accessible via l'objet 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.).

JavaScript
Python
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.

JavaScript
Python
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))
💡 Propriété name : Chaque ressource a une propriété 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).

JavaScript
Python
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).

JavaScript
Python
// 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.

💡 Que retourne 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.
JavaScript
Python
// "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.

⚠️ Forcer le transfert — même si le solde est insuffisant :
res.transferToAnyway(autreRes, montant)
res.takeFromAnotherAnyway(autreRes, montant)
JavaScript
Python
// 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.

JavaScript
Python
// É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.

JavaScript
Python
// 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.

JavaScript
Python
// +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.

JavaScript
Python
// +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

OptionDescription
valueValeur à ajouter (peut être négatif)
intervalIntervalle en secondes
maxValeur maximale (optionnel)
minValeur minimale (optionnel)
max_iterations_countNombre maximum d'itérations (optionnel)

Contrôler la croissance

MéthodeDescription
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%.

JavaScript
Python
// 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

JavaScript
Python
// 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éthodeDescription
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.valueProprié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
⚠️ Les noms sont sensibles à la casse. "gold" et "Gold" sont deux ressources différentes.
✅ Python : Toutes les méthodes en camelCase ont un alias en snake_case. Exemple : userRes → user_res, baseValue → base_value, transferTo → transfer_to.