// ===== SEND MESSAGE FORM ===== (async function () { const channelSelect = document.getElementById("sendmsg-channel-select"); const messageContent = document.getElementById("sendmsg-content"); const embedEnabled = document.getElementById("sendmsg-embed-enabled"); const embedOptions = document.getElementById("sendmsg-embed-options"); const embedTitle = document.getElementById("sendmsg-embed-title"); const embedDescription = document.getElementById("sendmsg-embed-description"); const embedColor = document.getElementById("sendmsg-embed-color"); const embedAuthorName = document.getElementById("sendmsg-embed-author-name"); const embedAuthorUrl = document.getElementById("sendmsg-embed-author-url"); const embedAuthorIcon = document.getElementById("sendmsg-embed-author-icon"); const embedImage = document.getElementById("sendmsg-embed-image"); const embedThumbnail = document.getElementById("sendmsg-embed-thumbnail"); const embedFooterText = document.getElementById("sendmsg-embed-footer-text"); const embedFooterIcon = document.getElementById("sendmsg-embed-footer-icon"); const embedTimestamp = document.getElementById("sendmsg-embed-timestamp"); const fieldsContainer = document.getElementById("sendmsg-fields-container"); const addFieldBtn = document.getElementById("sendmsg-add-field"); const previewContainer = document.getElementById("sendmsg-preview"); const sendBtn = document.getElementById("sendmsg-send-btn"); const historyContainer = document.getElementById("sendmsg-history"); let fields = []; let sentMessages = []; // Toggle embed options embedEnabled.addEventListener("change", () => { embedOptions.style.display = embedEnabled.checked ? "block" : "none"; updatePreview(); }); // Add field addFieldBtn.addEventListener("click", () => { const fieldIndex = fields.length; fields.push({ name: "", value: "", inline: false }); renderFields(); }); function renderFields() { fieldsContainer.innerHTML = ""; fields.forEach((field, index) => { const fieldDiv = document.createElement("div"); fieldDiv.className = "field-item"; fieldDiv.innerHTML = `
L'aperçu apparaîtra ici...
`; } previewContainer.innerHTML = html; } function escapeHtml(text) { const div = document.createElement("div"); div.textContent = text; return div.innerHTML; } // Add event listeners for preview updates [messageContent, embedTitle, embedDescription, embedAuthorName, embedAuthorUrl, embedAuthorIcon, embedImage, embedThumbnail, embedFooterText, embedFooterIcon].forEach(el => { el.addEventListener("input", updatePreview); }); embedColor.addEventListener("change", updatePreview); embedTimestamp.addEventListener("change", updatePreview); // Send message sendBtn.addEventListener("click", async () => { const channelId = channelSelect.value; if (!channelId) { alert("Veuillez sélectionner un salon."); return; } const content = messageContent.value.trim(); const hasEmbed = embedEnabled.checked; if (!content && !hasEmbed) { alert("Veuillez entrer un message ou activer l'embed."); return; } // Build embed data let embed = null; if (hasEmbed) { embed = { title: embedTitle.value.trim() || null, description: embedDescription.value.trim() || null, color: embedColor.value, author: null, thumbnail: embedThumbnail.value.trim() ? { url: embedThumbnail.value.trim() } : null, image: embedImage.value.trim() ? { url: embedImage.value.trim() } : null, footer: null, timestamp: embedTimestamp.checked, fields: fields.filter(f => f.name.trim() && f.value.trim()) }; if (embedAuthorName.value.trim()) { embed.author = { name: embedAuthorName.value.trim(), url: embedAuthorUrl.value.trim() || null, icon_url: embedAuthorIcon.value.trim() || null }; } if (embedFooterText.value.trim()) { embed.footer = { text: embedFooterText.value.trim(), icon_url: embedFooterIcon.value.trim() || null }; } } sendBtn.disabled = true; sendBtn.textContent = "⏳ Envoi en cours..."; try { const res = await fetch("/api/bot/send-message", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ guildId: window.guildId, channelId, content: content || null, embed }) }); const data = await res.json(); if (data.success) { // Add to history sentMessages.unshift({ channelId, channelName: channelSelect.options[channelSelect.selectedIndex].text, content: content || "(Embed uniquement)", timestamp: new Date().toLocaleString("fr-FR") }); if (sentMessages.length > 10) sentMessages.pop(); renderHistory(); // Clear form messageContent.value = ""; embedTitle.value = ""; embedDescription.value = ""; embedAuthorName.value = ""; embedAuthorUrl.value = ""; embedAuthorIcon.value = ""; embedImage.value = ""; embedThumbnail.value = ""; embedFooterText.value = ""; embedFooterIcon.value = ""; embedTimestamp.checked = false; fields = []; renderFields(); updatePreview(); alert("✅ Message envoyé avec succès !"); } else { alert("❌ Erreur lors de l'envoi: " + (data.error || "Erreur inconnue")); } } catch (err) { console.error(err); alert("❌ Erreur lors de l'envoi du message."); } sendBtn.disabled = false; sendBtn.textContent = "📤 Envoyer le message"; }); function renderHistory() { if (sentMessages.length === 0) { historyContainer.innerHTML = `Aucun message envoyé récemment.
`; return; } historyContainer.innerHTML = sentMessages.map(msg => `