Internet : ctx.fetch

Mode code

ctx.fetch appelle un site déclaré : une API météo, le statut d’un jeu, un flux, un service à toi.

JavaScript
module.uses('api.open-meteo.com');

module.command('meteo', async (ctx) => {
  await ctx.defer();
  const res = await ctx.fetch('https://api.open-meteo.com/v1/forecast?latitude=48.85&longitude=2.35&current=temperature_2m');
  if (!res.ok) return ctx.editReply('Service indisponible (' + res.status + ').');
  await ctx.editReply('Il fait ' + res.json.current.temperature_2m + ' °C à Paris.');
});

Options

OptionDétail
methodGET (par défaut), POST, PUT, PATCH, DELETE, HEAD
headersEn-têtes (30 max). Certains sont réservés (host, content-length…).
jsonUn objet envoyé en JSON (ajoute le bon en-tête)
bodyUn texte brut
JavaScript
await ctx.fetch('https://hooks.exemple.com/evenement', {
  method: 'POST',
  headers: { Authorization: 'Bearer ' + ctx.config.cle },
  json: { membre: ctx.member.name, action: 'arrivée' },
});

La réponse

ChampContenu
oktrue si le statut est entre 200 et 299
statusLe statut HTTP
urlL’adresse finale (après redirections)
headersLes en-têtes de la réponse
bodyLe texte (si la réponse est textuelle)
jsonL’objet, si la réponse est en JSON
base64Le contenu binaire (image…) en base64
contentTypeLe type de contenu
sizeLa taille en octets

Une image téléchargée peut être renvoyée telle quelle sur Discord : files: [{ name: 'carte.png', base64: res.base64 }].

Règles

https seulement, sites déclarés, 10 secondes et 2 Mo par réponse, 20 appels par exécution et 60 par minute. Tout est détaillé dans Les sites internet.

Internet : ctx.fetch · Documentation Opale