BotStrike
BotStrike
🌙
Introduction
Requête GET
Requête POST
Autres méthodes
Options avancées
Réponse & Callbacks
API unifiée

🌐 Requêtes HTTP

Envoyer des requêtes HTTP depuis vos commandes pour récupérer des données ou interagir avec des APIs externes

Introduction

BotStrike permet d'effectuer des requêtes HTTP directement depuis vos commandes pour communiquer avec des APIs, télécharger du contenu ou interagir avec des services web externes.

MéthodeDescription
GETRécupérer des données depuis un serveur
POSTEnvoyer des données vers un serveur
PUTMettre à jour une ressource existante
DELETESupprimer une ressource
📖 Syntaxe différente — La syntaxe varie selon le langage choisi (Python ou JavaScript). Utilisez les onglets ci-dessous pour voir la bonne version.

Requête GET

Récupérer le contenu d'une page web ou les données d'une API.

🐍 Python
⚡ JavaScript
# Requête GET simple
result = bot.http_get("https://api.example.com/data")
bot.sendMessage(str(result))

Avec headers personnalisés

# Requête GET avec token d'authentification
result = bot.http_get(
    "https://api.example.com/users",
    token="votre_token_ici"
)
bot.sendMessage(str(result))

Avec callbacks de succès/erreur

# Redirige vers une commande après la requête
bot.http_get(
    "https://api.example.com/data",
    headers={"Authorization": "Bearer mon_token"},
    onSuccess="/onLoading",
    onError="/onError",
    _ctx=u   # passer le contexte utilisateur
)
// Requête GET simple
HTTP.get({
    url: "https://api.example.com/data",
    success: "/onLoading",
    error: "/onError"
})

Avec headers personnalisés

// GET avec headers
HTTP.get({
    url: "https://api.example.com/users",
    success: "/onLoading",
    error: "/onError",
    headers: { "Authorization": "Bearer mon_token" }
})
⚠️ Par défaut, le header content-type est application/json. Si l'API cible ne le supporte pas, définissez headers: { "content-type": null }

Requête POST

Envoyer des données vers un serveur ou une API.

🐍 Python
⚡ JavaScript
# Envoyer des données en POST
result = bot.http_post(
    "https://api.example.com/submit",
    body={"name": "BotStrike", "version": "1.0"}
)
bot.sendMessage("Réponse : " + str(result))

Avec token et callbacks

result = bot.http_post(
    "https://api.example.com/auth",
    body={"username": "admin", "password": "secret"},
    token="api_key_ici",
    onSuccess="/onSuccess",
    onError="/onError",
    _ctx=u
)
// Envoyer des données en POST
HTTP.post({
    url: "https://api.example.com/submit",
    body: { name: "BotStrike", version: "1.0" },
    success: "/onSuccess",
    error: "/onError"
})

Avec cookies et redirections

HTTP.post({
    url: "https://api.example.com/auth",
    body: { username: "admin" },
    cookies: "session=abc123",
    folow_redirects: true,
    success: "/onSuccess"
})

Autres méthodes HTTP

🐍 Python
⚡ JavaScript

En Python, vous pouvez utiliser la nouvelle API unifiée HTTP.* qui supporte toutes les méthodes (GET, POST, PUT, DELETE, PATCH) ainsi que les anciens raccourcis bot.http_get() / bot.http_post().

# API moderne (recommandée)
result = HTTP.get("https://api.example.com/data")
result = HTTP.post("https://api.example.com/data", body={"key": "value"})
result = HTTP.put("https://api.example.com/users/42", body={"name": "Alice"})
result = HTTP.delete("https://api.example.com/users/42")
result = HTTP.patch("https://api.example.com/users/42", body={"online": True})

# Anciens raccourcis (toujours valides)
result = bot.http_get("https://api.example.com/data")
result = bot.http_post("https://api.example.com/data", body={"key": "value"})

En JavaScript, toutes les méthodes HTTP sont disponibles :

// PUT — mettre à jour une ressource
HTTP.put({
    url: "https://api.example.com/users/42",
    body: { name: "Nouveau nom" },
    success: "/onUpdated"
})

// DELETE — supprimer une ressource
HTTP.delete({
    url: "https://api.example.com/users/42",
    success: "/onDeleted"
})

// OPTIONS — vérifier les méthodes supportées
HTTP.options({
    url: "https://api.example.com/users",
    success: "/onOptions"
})
✅ Toutes les méthodes — HTTP.get, HTTP.post, HTTP.put, HTTP.delete, HTTP.options sont disponibles en BSJS.

Options avancées

OptionDescriptionDisponible
headersEn-têtes HTTP personnalisésPython & JS
tokenToken Bearer automatiquePython
bodyCorps de la requête (POST/PUT)Python & JS
cookiesCookies à envoyerJS
folow_redirectsSuivre les redirectionsJS
backgroundExécuter en arrière-plan (timeout plus long)JS
onSuccess / successCommande exécutée si la requête réussitPython & JS
onError / errorCommande exécutée si la requête échouePython & JS
🐍 Python
⚡ JavaScript
# Requête avec toutes les options
result = bot.http_post(
    "https://api.example.com/webhook",
    body={"event": "new_user", "user_id": u["id"]},
    headers={"X-Custom": "valeur"},
    token="mon_api_key",
    onSuccess="/onWebhookOK",
    onError="/onWebhookFail",
    _ctx=u
)
// Requête en arrière-plan pour les pages lentes
HTTP.get({
    url: "https://slow-api.example.com/data",
    success: "/onLoaded",
    error: "/onError",
    background: true,    // timeout plus long
    folow_redirects: true,
    headers: { "content-type": null }
})
💡 background: true — Utilisez cette option si la page web est lente à répondre. La tâche en arrière-plan a un timeout plus élevé mais s'exécute plus lentement.

Réponse & Callbacks

Quand une requête HTTP utilise des callbacks (success / error), la commande cible reçoit des variables spéciales :

🐍 Python
⚡ JavaScript

Commande de succès (onSuccess)

# La réponse est dans u["response"]
response = u.get("response", {})
bot.sendMessage("Données reçues : " + str(response))

Commande d'erreur (onError)

# L'erreur est dans u["error"]
error = u.get("error", "Erreur inconnue")
bot.sendMessage("Erreur : " + error)

Commande de succès (/onLoading)

// Le contenu téléchargé est dans la variable content
Bot.sendMessage(content);

Bot.inspect(http_status);   // "200"
Bot.inspect(http_headers);  // en-têtes de la réponse
Bot.inspect(cookies);       // cookies reçus

Commande d'erreur (/onError)

Bot.sendMessage("Erreur lors du téléchargement");

Bot.inspect(http_status);   // code HTTP d'erreur
Bot.inspect(http_headers);  // en-têtes de la réponse
Bot.inspect(cookies);
VariableDescriptionLangage
contentContenu de la réponse (texte brut)JS
http_statusCode de statut HTTP (200, 404, etc.)JS
http_headersEn-têtes de la réponseJS
cookiesCookies reçus dans la réponseJS
u["response"]Réponse parsée (JSON)Python
u["error"]Message d'erreurPython

⚡ API HTTP.* unifiée (Python & JavaScript)

L'objet global HTTP est disponible dans les deux langages avec la même syntaxe. Toutes les méthodes retournent un objet JSON :

MéthodeSignatureDescription
HTTP.getHTTP.get(url, headers?, token?)Récupérer des données
HTTP.postHTTP.post(url, body?, headers?, token?)Envoyer des données
HTTP.putHTTP.put(url, body?, headers?, token?)Mettre à jour
HTTP.deleteHTTP.delete(url, body?, headers?, token?)Supprimer
HTTP.patchHTTP.patch(url, body?, headers?, token?)Modifier partiellement
HTTP.requestHTTP.request({url, method, body, headers, token})Requête générique
🐍 Python
⚡ JavaScript
# Récupérer la météo
res = HTTP.get("https://wttr.in/Paris?format=j1")
temp = res["current_condition"][0]["temp_C"]
Bot.sendMessage(f"🌡️ Paris : {temp}°C")

# Avec token Bearer (auto-injecté dans Authorization)
res = HTTP.get("https://api.openai.com/v1/models", token="sk-xxx")

# Avec headers custom
res = HTTP.post(
    "https://api.example.com/webhook",
    body={"event": "signup", "user": user["id"]},
    headers={"X-Api-Key": "abc", "User-Agent": "MyBot/1.0"}
)
Bot.sendMessage(f"Status : {res.get('status', 'OK')}")
⏱️ Timeout — 30 secondes par défaut. Pour les uploads de fichiers, jusqu'à 120 secondes.
// Syntaxe simple : url en string
let res = HTTP.get("https://wttr.in/Paris?format=j1");
let temp = res.current_condition[0].temp_C;
Bot.sendMessage(`🌡️ Paris : ${temp}°C`);

// Syntaxe objet (compatible avec callbacks success/error)
HTTP.get({
    url: "https://api.example.com/data",
    headers: { "X-Api-Key": "abc" },
    success: "/onLoaded",
    error: "/onError"
});

// POST
let res2 = HTTP.post(
    "https://api.example.com/webhook",
    { event: "signup", user: user.id },
    { "X-Api-Key": "abc" }
);
Bot.sendMessage(`Status : ${res2.status || "OK"}`);
💡 Deux syntaxes — HTTP.get("url") retourne directement le résultat, HTTP.get({url, success, error}) utilise les callbacks (style asynchrone).

📥 Format de la réponse

# JSON valide : le corps parse est renvoye DIRECTEMENT
# (pas d'enveloppe status/body/headers).
{
    "id": 42,
    "name": "Alice"
}

# Reponse NON-JSON (HTML, texte brut) :
# Python  -> dictionnaire d'erreur, le corps n'est pas accessible
# JavaScript -> le texte brut dans la cle `raw`
# Python :
{ "error": "Expecting value: line 1 column 1 (char 0)" }

# JavaScript :
{ "raw": "<html>...</html>", "__http_status": 200 }

# En JavaScript, le code HTTP est disponible via __http_status
# sur toute reponse. En Python il n'est pas expose : testez la
# presence de la cle "error" pour detecter un echec.