🧰 Outils — Git, CSV & Analytics
Trois intégrations puissantes pour sauvegarder votre bot, charger des données externes et analyser son utilisation.
S1 — Vue d'ensemble
L'onglet Outils (accessible depuis Bot → Gérer → Tools) regroupe trois intégrations externes qui étendent les capacités de votre bot sans écrire une seule ligne de code supplémentaire.
props.json du bot et accessibles depuis le code via Bot.getProperty("__tool_xxx").
S2 — Git Sync : import / export GitHub
Git Sync est l'outil de versionning de votre bot. Il vous permet de :
- 📤 Exporter tout votre code (commandes, config, libs) vers un dépôt Git
- 📥 Importer un bot complet depuis un dépôt — utile pour partager des templates
- 💾 Sauvegarder uniquement l'URL du dépôt sans toucher au code
Étape 1 — Ouvrir Git Sync
- Ouvrez votre bot dans BotStrike
- Allez dans l'onglet Tools
- Cliquez sur la carte Git Sync (icône violette 🔄)
Étape 2 — Coller l'URL du dépôt
Une boîte de dialogue s'ouvre avec un champ texte. Collez-y l'URL de votre dépôt Git :
# Dépôt public HTTPS https://github.com/votre-pseudo/mon-bot.git # Dépôt SSH (privé, nécessite Deploy Key) git@github.com:votre-pseudo/mon-bot.git # GitLab, Bitbucket, Gitea — aussi supportés https://gitlab.com/votre-pseudo/mon-bot.git
Étape 3 — Choisir une action
Trois boutons sont disponibles dans le dialogue :
| Bouton | Action | Affecte le code ? |
|---|---|---|
| Save | Sauvegarde uniquement l'URL du dépôt dans les propriétés du bot | ❌ Non |
| Import | git clone du dépôt → copie tous les fichiers dans les commandes du bot |
✅ Oui (écrase) |
| Export | Copie toutes les commandes du bot → git push vers le dépôt |
❌ Non (côté bot) |
Exemple complet — Exporter votre bot vers GitHub
- Créez un nouveau dépôt sur GitHub :
https://github.com/votre-pseudo/mon-bot - Dans l'app : Tools → Git Sync
- Collez :
https://github.com/votre-pseudo/mon-bot.git - Cliquez Export
- ✅ Message vert : « Bot exporté vers Git avec succès »
- Sur GitHub, vous verrez tous vos fichiers
Structure du dépôt après un Export
mon-bot/ ├── _config.json ← Configuration du bot (token retiré) ├── _libs.json ← Librairies installées ├── start.js ← Commande /start ├── help.js ← Commande /help ├── onMessage.js ← Handler de messages ├── _stats.js ← Commande WebApp └── admin/ ├── ban.js ← /admin/ban └── stats.py ← Commande Python
_config.json. Vous le reconfigurerez manuellement après un import.
Dépôts privés — Deploy Keys SSH
Pour les dépôts privés, le serveur BotStrike doit pouvoir s'authentifier auprès de GitHub. La méthode recommandée est la Deploy Key SSH :
- Le serveur BotStrike génère une clé SSH lors du premier accès (
~/.ssh/id_ed25519) - Récupérez la clé publique via le bouton « Voir la clé SSH » de l'app
- Sur GitHub : Settings → Deploy Keys → Add deploy key
- Collez la clé publique
- Pour pouvoir Export, cochez « Allow write access »
- Utilisez l'URL SSH :
git@github.com:user/repo.git
S3 — CSV URL : Google Spreadsheet
CSV URL permet à votre bot de lire des données depuis un fichier CSV en ligne ou un Google Spreadsheet publié. Idéal pour stocker des listes que vous pouvez modifier sans toucher au code du bot.
Étape 1 — Préparer le Google Sheet
- Créez un Google Spreadsheet avec vos données
- Menu Fichier → Partager → Publier sur le web
- Choisissez « Valeurs séparées par des virgules (.csv) »
- Cliquez sur Publier, copiez le lien généré
Étape 2 — Configurer dans l'app
- Allez dans Bot → Gérer → Tools
- Cliquez sur la carte CSV URL (icône verte 📊)
- Collez l'URL générée par Google Sheets :
https://docs.google.com/spreadsheets/d/e/2PACX-xxxxx/pub?output=csv
- Cliquez Save
- ✅ « Sauvegardé avec succès »
Étape 3 — Lire le CSV dans une commande
// Récupère l'URL CSV configurée const csvUrl = Bot.getProperty("__tool_csv_url"); // Télécharge le CSV const csv = await Bot.httpGet(csvUrl); // Parse les lignes (séparateur virgule) const lines = csv.split("\n").map(l => l.split(",")); const headers = lines[0]; const rows = lines.slice(1); // Exemple : afficher la 1ère colonne rows.forEach(row => Bot.sendMessage(row[0]));
# Récupère l'URL CSV configurée csv_url = bot.get_property("__tool_csv_url") # Télécharge le CSV csv = bot.http_get(csv_url) # Parse les lignes lines = [l.split(",") for l in csv.split("\n")] headers = lines[0] rows = lines[1:] # Exemple : afficher la 1ère colonne for row in rows: bot.send_message(row[0])
Cas d'usage typiques
| Cas | Colonnes du Sheet | Bénéfice |
|---|---|---|
| Catalogue produits | nom, prix, stock, image |
Mettre à jour les prix sans redéployer |
| Traductions | clé, fr, en, es, de |
Traducteurs travaillent dans Sheets |
| FAQ | question, réponse, catégorie |
Édition collaborative |
| Whitelist | user_id, niveau, expiration |
Gestion d'accès dynamique |
| Codes promo | code, réduction, max_uses |
Marketing crée les codes |
httpGet télécharge le CSV. Pour éviter de spammer Google, mettez en cache via la lib Caching (voir aussi : Bot.cacheable).
S4 — Segment API Key : Analytics
Segment.com est une plateforme d'Customer Data Platform qui centralise les événements de votre application et les envoie vers vos outils d'analyse (Google Analytics, Mixpanel, Amplitude, etc.).
Étape 1 — Créer un compte Segment
- Inscrivez-vous sur segment.com
- Créez une Source → Server → Node.js / HTTP API
- Copiez le Write Key affiché (commence souvent par des lettres aléatoires)
Étape 2 — Configurer dans l'app
- Bot → Gérer → Tools
- Cliquez sur la carte Segment API Key (icône violet foncé 📈)
- Collez votre Write Key
- Cliquez Save
Étape 3 — Tracker des événements
const key = Bot.getProperty("__tool_segment_key");
const auth = "Basic " + btoa(key + ":");
// Track : enregistrer un événement
await Bot.httpPost("https://api.segment.io/v1/track", {
headers: { "Authorization": auth, "Content-Type": "application/json" },
body: JSON.stringify({
userId: String(user.telegramid),
event: "command_used",
properties: { command: "/start", source: "telegram" }
})
});
# base64 est déjà disponible : aucun import
key = bot.get_property("__tool_segment_key")
auth = "Basic " + base64.b64encode(f"{key}:".encode()).decode()
bot.http_post("https://api.segment.io/v1/track",
headers={"Authorization": auth, "Content-Type": "application/json"},
body={
"userId": str(user["telegramid"]),
"event": "command_used",
"properties": {"command": "/start", "source": "telegram"}
}
)
Événements à tracker
| Événement | Quand le déclencher | Properties utiles |
|---|---|---|
user_signup | Première interaction (/start) | language, source |
command_used | Toute commande exécutée | command, params |
purchase | Achat finalisé | amount, currency, product_id |
conversion | Inscription, formulaire rempli | type, funnel_step |
error | Erreur dans une commande | code, message, command |
userId, utilisez anonymousId avec le chat_id. Segment dédupliquera automatiquement.
S5 — Où sont stockées les données ?
Les trois valeurs configurées dans l'onglet Tools sont sauvegardées dans le fichier props.json du bot, sur le serveur BotStrike :
| Clé interne | Outil | Type | Exemple |
|---|---|---|---|
__tool_git_repo |
Git Sync | URL | https://github.com/u/repo.git |
__tool_csv_url |
CSV URL | URL | https://docs.google.com/.../pub?output=csv |
__tool_segment_key |
Segment Key | String | aBc123XyZ_writeKey |
Vous pouvez accéder à ces valeurs depuis n'importe quelle commande :
// JS const repo = Bot.getProperty("__tool_git_repo"); const csv = Bot.getProperty("__tool_csv_url"); const seg = Bot.getProperty("__tool_segment_key"); # Python repo = bot.get_property("__tool_git_repo") csv = bot.get_property("__tool_csv_url") seg = bot.get_property("__tool_segment_key")
S6 — Endpoints API
Pour les utilisateurs avancés et les intégrations tierces, les outils sont aussi pilotables via l'API REST :
| Méthode | Endpoint | Description |
|---|---|---|
GET |
/api/bots/<hash>/tools/config |
Récupérer la configuration des trois outils |
PUT |
/api/bots/<hash>/tools/config |
Sauvegarder la configuration (mise à jour partielle acceptée) |
POST |
/api/bots/<hash>/tools/git/export |
Lancer un export Git |
POST |
/api/bots/<hash>/tools/git/import |
Lancer un import Git |
Exemple : récupérer la config
curl -X GET https://api.botstrike.app/api/bots/abc123/tools/config \
-H "Authorization: Bearer YOUR_API_TOKEN"
# Réponse
{
"git_repo": "https://github.com/u/r.git",
"csv_url": "https://docs.google.com/.../pub?output=csv",
"segment_key": "***masked***"
}
Exemple : déclencher un export
curl -X POST https://api.botstrike.app/api/bots/abc123/tools/git/export \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"message": "Backup automatique du 2026-04-21"}'
# Réponse
{ "ok": true, "commit": "a1b2c3d", "files_pushed": 42 }
S7 — Cas d'usage avancés
🔄 Backup automatique nocturne via Git
Programmez un export Git toutes les nuits pour avoir un historique versionné de votre bot :
// Dans un cron / commande planifiée
const repo = Bot.getProperty("__tool_git_repo");
if (repo) {
await Bot.httpPost(`/api/bots/${BOT_HASH}/tools/git/export`, {
body: JSON.stringify({ message: `Backup ${new Date().toISOString()}` })
});
Bot.sendMessage(ADMIN_ID, "✅ Backup nocturne effectué");
}
📊 Catalogue produits depuis Google Sheets
Permettez à votre équipe marketing de gérer le catalogue sans toucher au code :
// catalog.js — commande /catalogue
const csv = await Bot.httpGet(Bot.getProperty("__tool_csv_url"));
const products = csv.split("\n").slice(1).map(l => {
const [name, price, stock] = l.split(",");
return { name, price: parseFloat(price), stock: parseInt(stock) };
});
const inStock = products.filter(p => p.stock > 0);
const message = inStock.map(p => `📦 ${p.name} — ${p.price}€`).join("\n");
Bot.sendMessage(message);
📈 Funnel de conversion via Segment
Mesurez où vos utilisateurs abandonnent dans un parcours d'achat :
// Étape 1 : voit le catalogue trackSegment("funnel_step", { step: "view_catalog" }); // Étape 2 : ajoute au panier trackSegment("funnel_step", { step: "add_to_cart", product: name }); // Étape 3 : commence le paiement trackSegment("funnel_step", { step: "checkout_started" }); // Étape 4 : finalise l'achat trackSegment("purchase", { amount: total, currency: "EUR" });
S8 — FAQ & Dépannage
❓ « Erreur d'authentification » lors d'un Export Git
Vérifiez :
- L'URL utilise bien le format SSH (
git@github.com:...) et non HTTPS - La Deploy Key est ajoutée dans Settings → Deploy Keys du dépôt cible
- L'option « Allow write access » est cochée
- La clé n'est pas réutilisée — chaque dépôt nécessite sa propre Deploy Key
❓ Mon CSV Google ne se met pas à jour
Google met en cache la version publiée pendant environ 5 minutes. Pour forcer une actualisation :
- Patientez 5 min après modification
- Ou : Fichier → Partager → Publier sur le web → Arrêter → Republier
- Ajoutez un timestamp à l'URL pour casser le cache :
?output=csv&t=${Date.now()}
❓ Segment ne reçoit pas mes événements
- Vérifiez que vous utilisez le Write Key Server-Side (pas Browser/JS)
- L'header
Authorizationdoit êtreBasic base64(writeKey + ":")— notez les deux-points - Consultez le Debugger Segment pour voir les events reçus en temps réel
- Les events bloqués apparaissent dans Source → Schema
❓ Comment supprimer une valeur configurée ?
Réouvrez le dialogue de l'outil concerné, videz le champ texte, et cliquez Save. La propriété est supprimée du props.json.
❓ Puis-je versionner uniquement certains fichiers ?
Oui : créez un fichier .gitignore dans le dépôt avec les patterns à exclure. Lors du prochain Export, ces fichiers seront ignorés.
# .gitignore
_config.json
secrets/
*.tmp
test_*.js
Bot.getProperty("__tool_*").