TLS/SSL · Port 6697 matrix-irc.discut.biz
API & Statistiques

API REST IRC — Discut.Biz

Affichez en direct sur votre site les infos d'un salon IRC : topic, utilisateurs, modes. Réponse JSON simple à intégrer.

Toutes les réponses sont au format JSON. Utilisez le proxy PHP ci-dessous si votre site bloque les requêtes cross-domain (CORS).
Exemples rapides
Infos d'un salon (JSON)
https://network.discut.biz/rest/service.php/channels/%23accueil
Utilisateurs connectés d'un salon
https://network.discut.biz/rest/service.php/channels/%23accueil/users
Réponse JSON exemple
{
  "channel": "#Accueil",
  "users": "43",
  "topic": "Bienvenue dans le salon d'accueil de Discut.Biz",
  "topic_author": "Cris",
  "modes": "nPrt"
}
Widget JS — compteur d'utilisateurs live
#Accueil utilisateur(s) connecté(s)
<span id="accueilCount">…</span>

<script>
fetch('https://network.discut.biz/rest/service.php/channels/%23accueil')
  .then(r => r.json())
  .then(d => { document.getElementById('accueilCount').textContent = d.users || '0'; })
  .catch(() => { document.getElementById('accueilCount').textContent = 'N/A'; });
</script>
Proxy PHP — anti-CORS + cache 60s

Créez un fichier proxy-irc.php à la racine de votre site. Ce proxy whiteliste les endpoints, ajoute un cache simple et renvoie du JSON proprement.

<?php
header('Content-Type: application/json; charset=utf-8');

$base    = 'https://network.discut.biz/rest/service.php/';
$allowed = ['channels/%23accueil', 'channels/%23accueil/users'];

$endpoint = trim($_GET['endpoint'] ?? '');
if (!in_array($endpoint, $allowed, true)) {
    http_response_code(400);
    echo json_encode(['error' => 'Endpoint non autorisé']);
    exit;
}

$cacheFile = sys_get_temp_dir() . '/' . md5($endpoint) . '.json';
if (file_exists($cacheFile) && (time() - filemtime($cacheFile) < 60)) {
    readfile($cacheFile); exit;
}

$ch = curl_init($base . $endpoint);
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 10]);
$res  = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($code !== 200 || !$res) { http_response_code(502); echo json_encode(['error' => 'Source indisponible']); exit; }
file_put_contents($cacheFile, $res);
echo $res;
Utilisation du proxy
fetch('/proxy-irc.php?endpoint=channels/%23accueil')
  .then(r => r.json())
  .then(d => {
    console.log('Topic:', d.topic);
    console.log('Utilisateurs:', d.users);
  });
Principaux endpoints disponibles
/network/statusStatut global du réseau (users, chans, servers)
/network/maxRecords historiques du réseau
/channels/biggest/10Top 10 des salons les plus peuplés
/channels/%23salonInfos d'un salon spécifique
/channels/%23salon/usersListe des utilisateurs d'un salon
/operatorsListe des opérateurs IRC en ligne