روبوت الحماية المتطور مرحبا بك في موقعنا: المحتوى محمي بالكامل، وأي محاولة للتفحص أو النسخ يتم التعامل معها تلقائيًا. × روبوت الحماية: مرحباً بك في موقعنا الجميل! نحن نراقب كل شيء لضمان الأمان.
عن المؤلف
مرحبًا، أنا مدوّن تقني شغوف بصناعة المحتوى الرقمي، أشارككم شروحات ومراجعات في مجالات البرمجة والتكنولوجيا.
إرسال تعليق
// script.js
document.addEventListener('DOMContentLoaded', function() {
// عناصر DOM
const chatMessages = document.getElementById('chat-messages');
const messageInput = document.getElementById('message-input');
const sendBtn = document.getElementById('send-btn');
const clearChatBtn = document.getElementById('clear-chat');
const settingsBtn = document.getElementById('settings-btn');
const settingsModal = document.getElementById('settings-modal');
const saveSettingsBtn = document.getElementById('save-settings');
const cancelSettingsBtn = document.getElementById('cancel-settings');
const formattingButtons = document.querySelectorAll('.text-formatting button');
const chatStatus = document.getElementById('chat-status');
// إعدادات الروبوت
let botSettings = {
model: 'gpt-3.5',
temperature: 0.7,
saveChats: true
};
// تحميل الإعدادات والمحادثات المحفوظة
function loadSettings() {
const savedSettings = localStorage.getItem('chatbotSettings');
if (savedSettings) {
botSettings = JSON.parse(savedSettings);
document.getElementById('api-select').value = botSettings.model;
document.getElementById('temperature').value = botSettings.temperature;
document.getElementById('temp-value').textContent = botSettings.temperature;
document.getElementById('save-chats').checked = botSettings.saveChats;
}
if (botSettings.saveChats) {
const savedChat = localStorage.getItem('chatHistory');
if (savedChat) {
chatMessages.innerHTML = savedChat;
scrollToBottom();
}
}
}
// حفظ الإعدادات
function saveSettings() {
botSettings.model = document.getElementById('api-select').value;
botSettings.temperature = parseFloat(document.getElementById('temperature').value);
botSettings.saveChats = document.getElementById('save-chats').checked;
localStorage.setItem('chatbotSettings', JSON.stringify(botSettings));
settingsModal.style.display = 'none';
}
// إضافة رسالة إلى الدردشة
function addMessage(content, isUser) {
const messageDiv = document.createElement('div');
messageDiv.classList.add('message', isUser ? 'user-message' : 'bot-message');
messageDiv.innerHTML = content;
chatMessages.appendChild(messageDiv);
if (botSettings.saveChats) {
localStorage.setItem('chatHistory', chatMessages.innerHTML);
}
scrollToBottom();
}
// التمرير إلى الأسفل
function scrollToBottom() {
chatMessages.scrollTop = chatMessages.scrollHeight;
}
// معالجة إرسال الرسالة
async function sendMessage() {
const message = messageInput.value.trim();
if (!message) return;
// إضافة رسالة المستخدم
addMessage(message, true);
messageInput.value = '';
// عرض حالة "يكتب..."
chatStatus.textContent = 'الروبوت يكتب...';
try {
// استدعاء API الذكاء الاصطناعي
const response = await fetchAIResponse(message, botSettings);
// إضافة رد الروبوت
addMessage(response, false);
chatStatus.textContent = 'جاهز للرد...';
} catch (error) {
console.error('Error:', error);
addMessage('عذرًا، حدث خطأ أثناء معالجة طلبك. يرجى المحاولة مرة أخرى.', false);
chatStatus.textContent = 'حدث خطأ';
setTimeout(() => {
chatStatus.textContent = 'جاهز للرد...';
}, 3000);
}
}
// تكبير حقل الإدخال تلقائيًا
messageInput.addEventListener('input', function() {
this.style.height = 'auto';
this.style.height = (this.scrollHeight) + 'px';
});
// إرسال الرسالة عند الضغط على Enter
messageInput.addEventListener('keydown', function(e) {
if (e.key === 'Enter' !e.shiftKey) {
e.preventDefault();
sendMessage();
}
});
// أحداث الأزرار
sendBtn.addEventListener('click', sendMessage);
clearChatBtn.addEventListener('click', function() {
chatMessages.innerHTML = '';
if (botSettings.saveChats) {
localStorage.removeItem('chatHistory');
}
});
settingsBtn.addEventListener('click', function() {
settingsModal.style.display = 'flex';
});
saveSettingsBtn.addEventListener('click', saveSettings);
cancelSettingsBtn.addEventListener('click', function() {
settingsModal.style.display = 'none';
});
// إغلاق نافذة الإعدادات عند النقر خارجها
window.addEventListener('click', function(e) {
if (e.target === settingsModal) {
settingsModal.style.display = 'none';
}
});
// أزرار تنسيق النص
formattingButtons.forEach(button => {
button.addEventListener('click', function() {
const format = this.getAttribute('data-format');
formatText(format);
});
});
// وظيفة تنسيق النص
function formatText(format) {
const start = messageInput.selectionStart;
const end = messageInput.selectionEnd;
const selectedText = messageInput.value.substring(start, end);
let formattedText = '';
switch(format) {
case 'bold':
formattedText = `**${selectedText}**`;
break;
case 'italic':
formattedText = `*${selectedText}*`;
break;
case 'list':
formattedText = `\n- ${selectedText.replace(/\n/g, '\n- ')}`;
break;
}
messageInput.setRangeText(formattedText, start, end, 'end');
messageInput.focus();
}
// تحديث قيمة درجة الإبداع
document.getElementById('temperature').addEventListener('input', function() {
document.getElementById('temp-value').textContent = this.value;
});
// تحميل الإعدادات عند البدء
loadSettings();
});