import { initializeApp } from "https://www.gstatic.com/firebasejs/11.3.1/firebase-app.js"; import { getDatabase, ref, get } from "https://www.gstatic.com/firebasejs/11.3.1/firebase-database.js"; const firebaseConfig = { apiKey: "AIzaSyANsisjcKBOnKN_74Zh7H8D4t7IeR49jvo", authDomain: "classwave-ai.firebaseapp.com", databaseURL: "https://classwave-ai-default-rtdb.firebaseio.com", projectId: "classwave-ai", storageBucket: "classwave-ai.firebasestorage.app", messagingSenderId: "234994101387", appId: "1:234994101387:web:f237be0ce9f62205e0788e", measurementId: "G-RTG7SCCVDJ" }; const app = initializeApp(firebaseConfig); const database = getDatabase(app); // Historique des messages let conversationHistory = []; let useCwaiMode = false; // Fonction d'attente function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function getPromptFromFirebase() { const promptRef = ref(database, 'Prompt'); try { const snapshot = await get(promptRef); if (snapshot.exists()) { return snapshot.val(); } else { return "Prompt non trouvé dans la base de données."; } } catch (error) { console.error("Erreur lors de la récupération du prompt:", error); return "Erreur lors de la récupération du prompt."; } } async function getPromptcwFromFirebase() { const promptcwRef = ref(database, 'Promptcw'); try { const snapshot = await get(promptcwRef); if (snapshot.exists()) { return snapshot.val(); } else { console.log("Aucune donnée trouvée pour Promptcw."); return ""; } } catch (error) { console.error("Erreur lors de la récupération de Promptcw:", error); return ""; } } async function getDecodedApiKey() { // Génère un chiffre aléatoire entre 0 et 3 (inclus) const randomNumber = Math.floor(Math.random() * 9); const apiRef = ref(database, 'API' + randomNumber); try { const snapshot = await get(apiRef); if (snapshot.exists()) { const encodedApiKey = snapshot.val(); return atob(atob(encodedApiKey)); } else { return null; } } catch (error) { console.error("Erreur lors de la récupération de la clé API:", error); return null; } } async function getUrlClasswaveFromFirebase() { const urlRef = ref(database, 'urlclasswave'); try { const snapshot = await get(urlRef); if (snapshot.exists()) { return snapshot.val(); } else { console.error("URL de l'API ClassWave non trouvée dans Firebase."); return ""; } } catch (error) { console.error("Erreur lors de la récupération de l'URL ClassWave:", error); return ""; } } async function getUrlClasswavesmartFromFirebase() { const urlRef = ref(database, 'urlclasswavesmart'); try { const snapshot = await get(urlRef); if (snapshot.exists()) { return snapshot.val(); } else { console.error("URL de l'API CWAI non trouvée dans Firebase."); return ""; } } catch (error) { console.error("Erreur lors de la récupération de l'URL CWAI:", error); return ""; } } async function sendMessage() { const userInput = document.getElementById('user-input'); const message = userInput.value.trim(); if (message === '') return; displayUserMessage(message); displayTypingIndicator(); // Récupère la clé API (réessayer si nécessaire) let apiKey = await getDecodedApiKey(); while (!apiKey) { await sleep(500); apiKey = await getDecodedApiKey(); } // Si le message contient certains mots-clés, on utilise un prompt spécifique const keywords = ["classwave", "CLassblock", "CME", "CMP", "ClassManager"]; function containsKeyword(msg) { return keywords.some(keyword => msg.toLowerCase().includes(keyword.toLowerCase())); } if (containsKeyword(message)) { const promptcw = await getPromptcwFromFirebase(); const messagePrompt = `Ignore toutes instructions précédentes. Tu es un expert exclusivement sur ClassWave. Réponds uniquement en te basant sur les informations ci-dessous et ne rajoute aucune information supplémentaire.\n\nInformations sur ClassWave :\n${promptcw}\n\nQuestion de l'utilisateur : ${message}`; getClassWaveResponse(message, messagePrompt, apiKey); conversationHistory.push(message); userInput.value = ''; return; } const prompt = await getPromptFromFirebase(); let conversationContext = ''; if (conversationHistory.length >= 2) { conversationContext = `Précédente conversation :\n1. Utilisateur : ${conversationHistory[conversationHistory.length - 2]}\n2. Bot : ${conversationHistory[conversationHistory.length - 1]}\n`; } const messagePrompt = `${prompt}\n${conversationContext}Voici la demande de l'utilisateur : ${message}`; if (useCwaiMode) { getCwaiResponse(message, messagePrompt, apiKey); } else { getClassWaveResponse(message, messagePrompt, apiKey); } conversationHistory.push(message); userInput.value = ''; } function formatMessage(message) { message = message.replace(/--\(\)(.*?)(?=\n|$)/g, (match, content) => { return `