BotStrike
BotStrike · BSPy
🌙

🐍 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 :

🐍 Important — Dans l'application BotStrike, les commandes Python sont créées comme fichiers .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.

📁 Exemple — commands/start.py → commande /start, commands/help.py → commande /help

Variables globales (dans chaque .py)

VariableTypeDescription
bot / BotBotInstance du bot — toutes les méthodes d'envoi
u / userdictInfo utilisateur : u["id"], u["nom"], u["texte"]
chat_idintID du chat actuel
messagestrTexte du message entrant
paramsstrTexte après la commande (/cmd texte → "texte")
ApiApiProxyAppels directs à l'API Telegram
PropsPropsProxyStockage persistant (500 KB)
HTTPHttpProxyRequêtes HTTP : HTTP.get(url), HTTP.post(url, body=...)
UserUserProxyPropriétés utilisateur : User.setProp(), User.getProp()
requestdictDonnées brutes de l'update Telegram
optionsdictDonné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 :

OptionDescription
"delete_after": NSupprime le message après N secondes
"silent": TrueEnvoie 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"},
])

Envoie un reply keyboard (menu persistant en bas de l'écran).

Bot.sendMenu("Menu principal :", [
    ["📊 Stats", "⚙️ Paramètres"],
    ["❓ Aide"]
])

Photos, Vidéos, Documents

MéthodeDescription
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ètreDéfautDescription
type"typing"Action : typing, upload_photo, upload_video…
wait0Nombre de secondes à attendre
nextNoneCommande à 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")
💡 Astuce — Le paramètre 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éthodeDescription
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}")
💡 Alternative — Vous pouvez aussi utiliser 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éthodeDescription
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")
💡 Accès direct — Vous pouvez aussi utiliser 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.

📖 Documentation complète — Configuration, réactions, attente de réponse, variables, exemples…
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)
💡 Dans l'app BotStrike — Les callbacks sont configurés automatiquement via l'interface de configuration des commandes. Chaque bouton inline avec 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"]
})
📖 Référence — Toutes les méthodes sur core.telegram.org/bots/api →