UNPKG

discordplace-sync

Version:

SDK officiel pour synchroniser automatiquement les statistiques de votre bot Discord avec DiscordPlace

166 lines (138 loc) 4.32 kB
const DiscordPlaceSDK = require('./index'); // Exemple d'utilisation basique async function exempleBasique() { const sdk = new DiscordPlaceSDK({ apiKey: 'votre_cle_api_ici', botId: '123456789012345678', autoSync: true, syncInterval: 300000 // 5 minutes }); // Gestionnaires d'événements sdk.on('success', (data) => { console.log('✅ Statistiques synchronisées:', data); }); sdk.on('error', (error) => { console.error('❌ Erreur:', error.message); }); sdk.on('start', () => { console.log('🚀 SDK démarré'); }); // Démarrer le SDK sdk.start(); // Envoyer des statistiques manuellement try { await sdk.updateStats({ guildCount: 150, userCount: 50000, channelCount: 1200, commandsUsed: 125000, uptime: process.uptime() * 1000, memoryUsage: process.memoryUsage().heapUsed / 1024 / 1024, latency: 45, version: '2.1.0' }); } catch (error) { console.error('Erreur lors de l\'envoi des stats:', error); } } // Exemple avec Discord.js async function exempleDiscordJS() { const { Client, GatewayIntentBits } = require('discord.js'); const client = new Client({ intents: [GatewayIntentBits.Guilds] }); const sdk = new DiscordPlaceSDK({ apiKey: process.env.DISCORDPLACE_API_KEY, botId: client.user?.id || 'bot_id_ici', autoSync: true }); client.once('ready', async () => { console.log(`Bot connecté: ${client.user.tag}`); // Démarrer le SDK sdk.start(); // Première synchronisation await sdk.autoCollectStats(client); // Programmer une synchronisation automatique toutes les 5 minutes setInterval(async () => { try { await sdk.autoCollectStats(client); } catch (error) { console.error('Erreur de synchronisation automatique:', error); } }, 5 * 60 * 1000); }); // client.login(process.env.BOT_TOKEN); } // Exemple de récupération des statistiques async function exempleRecuperationStats() { const sdk = new DiscordPlaceSDK({ apiKey: 'votre_cle_api_ici', botId: '123456789012345678' }); sdk.start(); try { // Récupérer les stats des dernières 24h const stats24h = await sdk.getStats('24h'); console.log('Statistiques 24h:', stats24h); // Récupérer les stats de la dernière semaine const stats7d = await sdk.getStats('7d'); console.log('Statistiques 7 jours:', stats7d); // Informations de la clé API const apiInfo = await sdk.getApiKeyInfo(); console.log('Infos clé API:', apiInfo); } catch (error) { console.error('Erreur:', error); } } // Exemple avec gestion d'erreurs avancée async function exempleAvance() { const sdk = new DiscordPlaceSDK({ apiKey: 'votre_cle_api_ici', botId: '123456789012345678', autoSync: true, retries: 5, timeout: 15000 }); // Gestion détaillée des événements sdk.on('success', (data) => { console.log(`✅ Stats synchronisées - Bot ${data.success ? 'en ligne' : 'hors ligne'}`); }); sdk.on('error', (error) => { if (error.message.includes('401')) { console.error('🔑 Clé API invalide ou expirée'); } else if (error.message.includes('429')) { console.error('⏰ Rate limit atteint, réessai automatique...'); } else { console.error('❌ Erreur:', error.message); } }); sdk.start(); // Simuler des statistiques qui changent let commandCount = 0; setInterval(async () => { commandCount += Math.floor(Math.random() * 10) + 1; try { await sdk.updateStats({ guildCount: 100 + Math.floor(Math.random() * 50), commandsUsed: commandCount, uptime: process.uptime() * 1000, memoryUsage: process.memoryUsage().heapUsed / 1024 / 1024, version: '1.0.0' }); } catch (error) { // L'erreur est déjà gérée par l'event listener } }, 10000); // Toutes les 10 secondes pour la démo } // Exporter les exemples module.exports = { exempleBasique, exempleDiscordJS, exempleRecuperationStats, exempleAvance }; // Exécuter un exemple si le fichier est lancé directement if (require.main === module) { console.log('🚀 Exécution de l\'exemple basique...'); exempleBasique().catch(console.error); }