🐍 BSPy — moteur Python
API Python pour programmer vos bots Telegram dans BotStrike — Chaque commande = un fichier .py, zéro import
Introduction
moteur Python est le API Python de BotStrike. Il permet de créer des bots Telegram en Python avec une architecture simple :
- Chaque commande dans un fichier
.pyséparé (start.py, help.py…) - Zéro import —
bot,Api,Propssont injectés automatiquement - Info utilisateur dans le dict
u(prête à l'emploi)
.py. Le token du bot est configuré séparément dans l'onglet Config.
Structure des fichiers
Chaque commande est un fichier .py dans le dossier commands/. Le API moteur Python charge automatiquement tous les fichiers.
commands/start.py → commande /start, commands/help.py → commande /help
Variables globales (dans chaque .py)
| Variable | Type | Description |
|---|---|---|
bot / Bot | Bot | Instance du bot — toutes les méthodes d'envoi |
u / user | dict | Info utilisateur : u["id"], u["nom"], u["texte"] |
chat_id | int | ID du chat actuel |
message | str | Texte du message entrant |
params | str | Texte après la commande (/cmd texte → "texte") |
Api | ApiProxy | Appels directs à l'API Telegram |
Props | PropsProxy | Stockage persistant (500 KB) |
HTTP | HttpProxy | Requêtes HTTP : HTTP.get(url), HTTP.post(url, body=...) |
User | UserProxy | Propriétés utilisateur : User.setProp(), User.getProp() |
request | dict | Données brutes de l'update Telegram |
options | dict | Données passées via bot.action(next=...) |
Contenu du dict u :
| Clé | Description |
|---|---|
u["id"] | ID Telegram |
u["nom"] | Nom complet (prénom + nom) |
u["prenom"] | Prénom |
u["username"] | @username |
u["texte"] | Texte du message |
u["photo"] | file_id de la photo de profil |
u["chat_id"] | ID du chat |
u["message_id"] | ID du message |
u["langue"] | Code langue (fr, en…) |
Envoi de messages
Bot.sendMessage(text)
Envoie un message texte au chat actuel (chat_id automatique). Formatage HTML activé.
# start.py — Commande /start Bot.sendMessage(f"Bienvenue <b>{u['nom']}</b> ! 👋")
Suppression automatique (delete_after)
Passez un objet en second paramètre avec delete_after pour supprimer le message après N secondes :
# Le message disparaît après 5 secondes Bot.sendMessage("Ce message va disparaître... 👻", {"delete_after": 5})
Options d'envoi
Toutes les méthodes d'envoi acceptent un objet d'options :
| Option | Description |
|---|---|
"delete_after": N | Supprime le message après N secondes |
"silent": True | Envoie sans notification |
"pin": True | Épingle le message |
"pin_silent": True | Épingle sans message système |
# Exemple combiné Bot.sendMessage("📌 Annonce", {"pin": True, "silent": True})
Bot.sendButtons(text, buttons)
Envoie un clavier inline. Chaque bouton a text + data (callback) ou url.
Bot.sendButtons("Choisissez une option :", [ {"text": "📦 Catalogue", "data": "catalogue"}, {"text": "📞 Contact", "data": "contact"}, {"text": "🔗 Site web", "url": "https://exemple.com"}, ])
Bot.sendMenu(text, options)
Envoie un reply keyboard (menu persistant en bas de l'écran).
Bot.sendMenu("Menu principal :", [ ["📊 Stats", "⚙️ Paramètres"], ["❓ Aide"] ])
Photos, Vidéos, Documents
| Méthode | Description |
|---|---|
Bot.sendPhoto(photo, caption="") | Envoyer une photo (URL ou file_id) |
Bot.sendVideo(video, caption="") | Envoyer une vidéo |
Bot.sendDocument(doc, caption="") | Envoyer un document |
Bot.sendPhoto("https://exemple.com/produit.jpg", "<b>Notre produit</b>")
Actions
Bot.action(type, wait, next)
Affiche un indicateur (typing…), attend X secondes, puis exécute automatiquement une commande. Le chat_id est automatique.
| Paramètre | Défaut | Description |
|---|---|---|
type | "typing" | Action : typing, upload_photo, upload_video… |
wait | 0 | Nombre de secondes à attendre |
next | None | Commande à exécuter après ("/contact") |
# Afficher "en train d'écrire…" pendant 2 sec puis lancer /contact Bot.action(type="typing", wait=2, next="/contact")
Exécuter une autre commande (runCommand)
Utilisez Bot.action(next="/commande") pour chaîner l'exécution vers une autre commande :
# Rediriger vers /catalogue après 1 seconde Bot.action(wait=1, next="/catalogue") # Exécuter immédiatement /help Bot.action(next="/help")
next permet d'enchaîner les commandes comme un flux conversationnel. L'indicateur "typing" est affiché automatiquement pendant l'attente.
Requêtes HTTP
Appelez des APIs externes directement depuis vos commandes. Utilisez le proxy HTTP (recommandé) ou bot.http_get().
| Méthode | Description |
|---|---|
HTTP.get(url, headers, token) | Requête GET → retourne JSON |
HTTP.post(url, body, headers, token) | Requête POST → retourne JSON |
HTTP.put(url, body, headers, token) | Requête PUT |
HTTP.delete(url, body, headers, token) | Requête DELETE |
HTTP.patch(url, body, headers, token) | Requête PATCH |
HTTP.request(method, url, body, headers, token) | Requête personnalisée |
# GET — récupérer des données data = HTTP.get("https://api.exemple.com/users", token="mon_token_api") Bot.sendMessage(f"Résultat : {data}")
# POST — envoyer des données result = HTTP.post("https://api.exemple.com/order", body={"product": "A1", "qty": 2}) Bot.sendMessage(f"Commande : {result}")
bot.http_get(url) et bot.http_post(url, body=...) avec les paramètres onSuccess / onError pour rediriger vers une commande.
Stockage (Props)
Stockez des données persistantes par bot. Limite : 500 KB.
| Méthode | Description |
|---|---|
Props.set(key, value) | Sauvegarder une donnée |
Props.get(key) | Récupérer une donnée |
Props.delete(key) | Supprimer une donnée |
Props.storage() | Usage → {"used": X, "remaining": Y} (KB) |
# Enregistrer le solde d'un utilisateur Props.set(f"balance_{u['id']}", 100) # Le récupérer balance = Props.get(f"balance_{u['id']}") Bot.sendMessage(f"💰 Solde : {balance}") # Vérifier l'espace utilisé info = Props.storage() Bot.sendMessage(f"Utilisé : {info['used']} KB / restant : {info['remaining']} KB")
bot.set(key, value), bot.get_data(key), bot.delete(key), bot.storage() directement sur le bot.
Commandes
Chaque commande est un fichier .py dans le dossier commands/. Le nom du fichier = le nom de la commande.
Voir la documentation Commandes BSPy →
Commande Master (*)
Le fichier _.py (underscore) capture tous les messages qui ne correspondent à aucune commande enregistrée.
# _.py — commande master (capture tout) Bot.sendMessage(f"Vous avez dit : {message}")
Callbacks (boutons inline)
Quand un utilisateur clique sur un bouton inline avec data, le callback correspondant est déclenché.
# Enregistrer un callback Bot.registerCallback("catalogue", ma_fonction)
data est routé vers le callback correspondant.
Api — Appels Telegram directs
L'objet Api permet d'appeler n'importe quelle méthode de l'API Bot Telegram directement, sans limitation.
# Envoyer un message avec options avancées Api.sendMessage({ "chat_id": chat_id, "text": "<b>Message formaté</b>", "parse_mode": "HTML", "disable_notification": True })
Api.sendPhoto
# Envoyer une photo avec légende Api.sendPhoto({ "chat_id": chat_id, "photo": "https://exemple.com/img.jpg", "caption": "<b>Légende en HTML</b>", "parse_mode": "HTML" })
Api.sendVideo
# Envoyer une vidéo Api.sendVideo({ "chat_id": chat_id, "video": "https://exemple.com/video.mp4", "caption": "Ma vidéo", "parse_mode": "HTML" })
Api.sendDocument
# Envoyer un document / fichier Api.sendDocument({ "chat_id": chat_id, "document": "https://exemple.com/fichier.pdf", "caption": "Votre fichier 📎", "parse_mode": "HTML" })
Api.editMessageText
# Modifier un message existant Api.editMessageText({ "chat_id": chat_id, "message_id": u["message_id"], "text": "Texte mis à jour ✅" })
Api.deleteMessage
# Supprimer un message Api.deleteMessage({ "chat_id": chat_id, "message_id": u["message_id"] })