Rattrapage
Un événement peut manquer : bot arrêté, point de réception injoignable au-delà des tentatives. L'API du service rend l'état courant, et son client vit dans son propre module, qui ne charge ni node:http ni node:crypto.
import { createClient } from '@fca.gg/lfp-webhooks/client'
const api = createClient({
baseUrl: process.env.LFP_API_URL,
token: process.env.LFP_API_TOKEN,
})
const state = await api.match('2640560')
const live = await api.matches({ season: '2026', matchday: 3 })
const table = await api.standings('24', '2026')
const stats = await api.player('54321', { season: '2026' })
const lineup = await api.lineupImage('2640560', { side: 'home' })
Options
baseUrl: la racine de l'API du service ;token: le jeton de l'API ; sans lui, les requêtes partent sans en-tête d'autorisation ;timeout: abandon d'une requête, en millisecondes (10 000 par défaut).
Méthodes
| Méthode | Rend |
|---|---|
match(matchId) | l'état complet d'un match : infos, équipes, composition, buts, cartons, remplacements ; null si inconnu |
matches({ competition, season, matchday }) | la liste des matchs correspondants |
standings(competitionId, season) | le classement d'une compétition |
players({ search, team }) | les joueurs trouvés |
player(playerId, { season, competition }) | les statistiques cumulées d'un joueur et le détail de ses matchs ; null si inconnu |
lineupImage(matchId, { side, etag }) | l'image de la composition, en PNG transparent : { image, etag } |
health() | l'état du service |
side vaut home, away ou both. Passez l'etag d'une image déjà reçue : si elle n'a pas changé, le service répond 304 et la méthode rend null, sans retélécharger l'image.
Erreurs
Une réponse 404 devient null. Toute autre erreur lève une ApiError qui porte son status, ce qui distingue une réponse du service d'une panne réseau :
import { ApiError } from '@fca.gg/lfp-webhooks/client'
try {
await api.standings('24', '2026')
} catch (error) {
if (error instanceof ApiError && error.status === 401) console.error('Jeton refus é')
else throw error
}
Deux jetons, deux sens
| Canal | Sens | Jeton |
|---|---|---|
| Webhooks | service → bot | vérifié par createReceiver({ token }) |
| API | bot → service | présenté par createClient({ token }) |
Ce sont deux secrets distincts : celui des webhooks part chez le destinataire à chaque livraison, l'autre ouvre l'API en lecture. Leur donner la même valeur ferait d'une fuite de l'un une fuite de l'autre.