Exemple : envoyer via un webhook
Les webhooks permettent d'envoyer des messages sous une identité personnalisée sans faire tourner un process bot connecté en permanence — utile pour des notifications CI/CD, un flux RSS, ou une intégration ponctuelle.
Créer le webhook (une fois, via le bot)
import { BloumeChat } from "bloumechat";
const client = new BloumeChat();
await client.login(process.env.BOT_TOKEN!);
const channel = await client.channels.fetch(process.env.DEPLOY_CHANNEL_ID!);
const webhook = await channel.createWebhook({ name: "Déploiements" });
// ⚠️ webhook.token n'est disponible qu'à la création — stockez-le en lieu sûr
// (variable d'environnement du pipeline CI, secret manager…), jamais en clair dans un repo.
console.log("URL du webhook :", webhook.url);const { BloumeChat } = require("bloumechat");
const client = new BloumeChat();
await client.login(process.env.BOT_TOKEN);
const channel = await client.channels.fetch(process.env.DEPLOY_CHANNEL_ID);
const webhook = await channel.createWebhook({ name: "Déploiements" });
// ⚠️ webhook.token n'est disponible qu'à la création — stockez-le en lieu sûr
// (variable d'environnement du pipeline CI, secret manager…), jamais en clair dans un repo.
console.log("URL du webhook :", webhook.url);channel.createWebhook() accepte aussi un avatarUrl optionnel pour personnaliser l'avatar par défaut du webhook :
const webhook = await channel.createWebhook({
name: "Déploiements",
avatarUrl: "https://example.com/ci-icon.png",
});const webhook = await channel.createWebhook({
name: "Déploiements",
avatarUrl: "https://example.com/ci-icon.png",
});Utiliser le webhook (depuis un pipeline CI, sans le SDK complet)
Une fois le token obtenu, plus besoin du client BloumeChat — un simple fetch HTTP suffit, exactement comme fait webhook.send() en interne. Ceci est du JavaScript pur, exécutable tel quel dans n'importe quel script Node ou même un navigateur :
await fetch("https://bloumechat.com/webhooks/<WEBHOOK_ID>/<TOKEN>", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
content: `🚀 Déploiement réussi — commit \`${process.env.GIT_SHA}\``,
username: "CI/CD",
}),
});C'est exactement le principe utilisé par les intégrations GitHub Actions, GitLab CI ou n'importe quel service tiers capable de faire une requête POST — aucune dépendance npm requise côté CI.
Ou avec le SDK, si le process a déjà l'objet Webhook
await webhook.send({
content: "🚀 Nouvelle version déployée !",
username: "CI/CD",
embeds: [
{ title: "Détails du build", fields: [{ name: "Branche", value: "main", inline: true }] },
],
});await webhook.send({
content: "🚀 Nouvelle version déployée !",
username: "CI/CD",
embeds: [
{ title: "Détails du build", fields: [{ name: "Branche", value: "main", inline: true }] },
],
});Recharger un webhook existant à partir de son ID + token
Si votre process CI ne conserve pas l'objet Webhook du SDK entre deux exécutions (cas normal — c'est un process différent à chaque run), il n'est pas nécessaire de recréer un webhook à chaque fois. Gardez id et token dans vos secrets CI et appelez fetch directement — voir la section précédente — ou reconstruisez un objet Webhook côté SDK si vous avez besoin de ses méthodes edit()/delete() :
import { BloumeChat, Webhook } from "bloumechat";
const client = new BloumeChat();
const webhook = new Webhook(client, {
publicId: process.env.WEBHOOK_ID!,
name: "Déploiements",
channelPublicId: process.env.DEPLOY_CHANNEL_ID!,
token: process.env.WEBHOOK_TOKEN!,
});
await webhook.send("🚀 Déploiement terminé !");const { BloumeChat, Webhook } = require("bloumechat");
const client = new BloumeChat();
const webhook = new Webhook(client, {
publicId: process.env.WEBHOOK_ID,
name: "Déploiements",
channelPublicId: process.env.DEPLOY_CHANNEL_ID,
token: process.env.WEBHOOK_TOKEN,
});
await webhook.send("🚀 Déploiement terminé !");Pas besoin de client.login() pour un webhook
webhook.send() fait un fetch HTTP direct — il ne passe jamais par le socket ni par client.apiCall(). Vous pouvez donc instancier BloumeChat sans jamais appeler login() uniquement pour construire un Webhook et envoyer via lui.
Nettoyer un webhook devenu inutile
await webhook.delete();await webhook.delete();Le token du webhook est un secret à part entière
Quiconque le possède peut poster des messages sous cette identité sans avoir besoin d'un token de bot. Traitez-le avec la même rigueur qu'un mot de passe : jamais dans un dépôt public, jamais côté client (navigateur), toujours dans un secret manager ou une variable d'environnement CI.
Voir aussi
- Webhooks, emojis & invitations — référence API complète de
Webhook(edit,delete, gestion du token). - Messages & salons —
channel.createWebhook(),channel.fetchWebhooks(). - Exemple : Rich Presence (RPC) — alternative pour afficher un statut dynamique quand un bot est bel et bien connecté en continu.
