// script.js const API_KEY = 'your_secret_api_key'; // Tab Switching document.querySelectorAll('.sidebar-item[data-tab]').forEach(item => { item.addEventListener('click', () => { document.querySelectorAll('.sidebar-item').forEach(i => i.classList.remove('active')); item.classList.add('active'); document.querySelectorAll('.tab-content').forEach(content => content.style.display = 'none'); const tabId = item.getAttribute('data-tab') + '-content'; document.getElementById(tabId).style.display = 'block'; loadTabContent(tabId); }); }); // Profile Photo Click Event document.getElementById('profilePhoto').addEventListener('click', function() { const menu = document.getElementById('profileMenu'); if (menu.style.display === 'block') { menu.style.display = 'none'; } else { menu.style.display = 'block'; } }); // Close Profile Menu when clicking outside window.onclick = function(event) { if (!event.target.matches('#profilePhoto')) { const menu = document.getElementById('profileMenu'); if (menu.style.display === 'block') { menu.style.display = 'none'; } } }; // Toggle Sidebar document.getElementById('toggleSidebar').addEventListener('click', function() { document.getElementById('sidebar').classList.toggle('active'); }); // Fetch System Info async function fetchSystemInfo() { try { const response = await fetch('/api/system-info', { headers: { 'Authorization': API_KEY } }); const data = await response.json(); document.getElementById('osName').textContent = data.os.name; document.getElementById('osVersion').textContent = data.os.version; document.getElementById('uptime').textContent = data.uptime; document.getElementById('storage').textContent = `${(data.storage.total / (1024 ** 3)).toFixed(2)} GB / ${(data.storage.free / (1024 ** 3)).toFixed(2)} GB`; } catch (error) { console.error('Failed to fetch system info:', error); } } // Fetch Bot Stats async function fetchBotStats() { try { const response = await fetch('/api/bot-stats', { headers: { 'Authorization': API_KEY } }); const data = await response.json(); document.getElementById('totalFiles').textContent = data.total_files; document.getElementById('totalUsers').textContent = data.total_users; document.getElementById('totalChats').textContent = data.total_chats; document.getElementById('storageUsed').textContent = data.storage_used; document.getElementById('storageFree').textContent = data.storage_free; } catch (error) { console.error('Failed to fetch bot stats:', error); } } // Fetch Bot Status async function fetchBotStatus() { try { const response = await fetch('/api/bot-status', { headers: { 'Authorization': API_KEY } }); const data = await response.json(); document.getElementById('cpuUsage').textContent = `${data.cpu_usage}%`; document.getElementById('ramUsage').textContent = `${data.ram_usage}%`; document.getElementById('storageUsed').textContent = data.used_storage; document.getElementById('storageFree').textContent = data.free_storage; } catch (error) { console.error('Failed to fetch bot status:', error); } } // Load Tab Content async function loadTabContent(tabId) { if (tabId === 'filters-content') { loadFilters(); } else if (tabId === 'global-filters-content') { loadGlobalFilters(); } else if (tabId === 'users-content') { loadUsers(); } else if (tabId === 'chats-content') { loadChats(); } else if (tabId === 'files-content') { loadFiles(); } else if (tabId === 'connections-content') { loadConnections(); } else if (tabId === 'stats-content') { fetchBotStatus(); } } // Load Filters async function loadFilters() { try { const response = await fetch('/api/filters?chat_id=123456789', { // Replace with actual chat ID headers: { 'Authorization': API_KEY } }); const data = await response.json(); const filtersList = document.getElementById('filtersList'); filtersList.innerHTML = ''; data.filters.forEach(filter => { const filterItem = document.createElement('div'); filterItem.className = 'stat-card'; filterItem.innerHTML = `

${filter}

`; filtersList.appendChild(filterItem); }); } catch (error) { console.error('Failed to load filters:', error); } } // Load Global Filters async function loadGlobalFilters() { try { const response = await fetch('/api/gfilters', { headers: { 'Authorization': API_KEY } }); const data = await response.json(); const gfiltersList = document.getElementById('gfiltersList'); gfiltersList.innerHTML = ''; data.filters.forEach(filter => { const filterItem = document.createElement('div'); filterItem.className = 'stat-card'; filterItem.innerHTML = `

${filter}

`; gfiltersList.appendChild(filterItem); }); } catch (error) { console.error('Failed to load global filters:', error); } } // Load Users async function loadUsers() { try { const response = await fetch('/api/users', { headers: { 'Authorization': API_KEY } }); const data = await response.json(); const usersList = document.getElementById('usersList'); usersList.innerHTML = ''; data.users.forEach(user => { const userItem = document.createElement('div'); userItem.className = 'stat-card'; userItem.innerHTML = `

${user.name}

ID: ${user.id}

`; usersList.appendChild(userItem); }); } catch (error) { console.error('Failed to load users:', error); } } // Load Chats async function loadChats() { try { const response = await fetch('/api/chats', { headers: { 'Authorization': API_KEY } }); const data = await response.json(); const chatsList = document.getElementById('chatsList'); chatsList.innerHTML = ''; data.chats.forEach(chat => { const chatItem = document.createElement('div'); chatItem.className = 'stat-card'; chatItem.innerHTML = `

${chat.title}

ID: ${chat.id}

`; chatsList.appendChild(chatItem); }); } catch (error) { console.error('Failed to load chats:', error); } } // Load Files async function loadFiles() { try { const response = await fetch('/api/files', { headers: { 'Authorization': API_KEY } }); const data = await response.json(); const filesList = document.getElementById('filesList'); filesList.innerHTML = ''; data.files.forEach(file => { const fileItem = document.createElement('div'); fileItem.className = 'stat-card'; fileItem.innerHTML = `

${file.file_name}

Size: ${get_size(file.file_size)}

`; filesList.appendChild(fileItem); }); } catch (error) { console.error('Failed to load files:', error); } } // Load Connections async function loadConnections() { try { const response = await fetch('/api/connections', { headers: { 'Authorization': API_KEY } }); const data = await response.json(); const connectionsList = document.getElementById('connectionsList'); connectionsList.innerHTML = ''; data.connections.forEach(connection => { const connectionItem = document.createElement('div'); connectionItem.className = 'stat-card'; connectionItem.innerHTML = `

${connection.title}

ID: ${connection.id}

`; connectionsList.appendChild(connectionItem); }); } catch (error) { console.error('Failed to load connections:', error); } } // Add Filter document.getElementById('addFilterForm').addEventListener('submit', async function(event) { event.preventDefault(); const chatId = document.getElementById('chatId').value; const text = document.getElementById('filterText').value; const replyText = document.getElementById('replyText').value; const btn = document.getElementById('btn').value; const file = document.getElementById('file').value; const alert = document.getElementById('alert').value; try { const response = await fetch('/api/add-filter', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': API_KEY }, body: `chat_id=${encodeURIComponent(chatId)}&text=${encodeURIComponent(text)}&reply_text=${encodeURIComponent(replyText)}&btn=${encodeURIComponent(btn)}&file=${encodeURIComponent(file)}&alert=${encodeURIComponent(alert)}`, }); const data = await response.json(); alert(data.message); loadFilters(); } catch (error) { console.error('Failed to add filter:', error); alert('Failed to add filter'); } }); // Delete Filter async function deleteFilter(text) { try { const response = await fetch('/api/delete-filter', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': API_KEY }, body: `chat_id=123456789&text=${encodeURIComponent(text)}`, // Replace with actual chat ID }); const data = await response.json(); alert(data.message); loadFilters(); } catch (error) { console.error('Failed to delete filter:', error); alert('Failed to delete filter'); } } // Add Global Filter document.getElementById('addGFilterForm').addEventListener('submit', async function(event) { event.preventDefault(); const text = document.getElementById('gfilterText').value; const replyText = document.getElementById('greplyText').value; const btn = document.getElementById('gbtn').value; const file = document.getElementById('gfile').value; const alert = document.getElementById('galert').value; try { const response = await fetch('/api/add-gfilter', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': API_KEY }, body: `text=${encodeURIComponent(text)}&reply_text=${encodeURIComponent(replyText)}&btn=${encodeURIComponent(btn)}&file=${encodeURIComponent(file)}&alert=${encodeURIComponent(alert)}`, }); const data = await response.json(); alert(data.message); loadGlobalFilters(); } catch (error) { console.error('Failed to add global filter:', error); alert('Failed to add global filter'); } }); // Delete Global Filter async function deleteGFilter(text) { try { const response = await fetch('/api/delete-gfilter', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': API_KEY }, body: `text=${encodeURIComponent(text)}`, }); const data = await response.json(); alert(data.message); loadGlobalFilters(); } catch (error) { console.error('Failed to delete global filter:', error); alert('Failed to delete global filter'); } } // Ban User async function banUser(userId, banReason) { try { const response = await fetch('/api/ban-user', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': API_KEY }, body: `user_id=${encodeURIComponent(userId)}&ban_reason=${encodeURIComponent(banReason)}`, }); const data = await response.json(); alert(data.message); loadUsers(); } catch (error) { console.error('Failed to ban user:', error); alert('Failed to ban user'); } } // Unban User async function unbanUser(userId) { try { const response = await fetch('/api/unban-user', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': API_KEY }, body: `user_id=${encodeURIComponent(userId)}`, }); const data = await response.json(); alert(data.message); loadUsers(); } catch (error) { console.error('Failed to unban user:', error); alert('Failed to unban user'); } } // Disable Chat async function disableChat(chatId, reason) { try { const response = await fetch('/api/disable-chat', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': API_KEY }, body: `chat_id=${encodeURIComponent(chatId)}&reason=${encodeURIComponent(reason)}`, }); const data = await response.json(); alert(data.message); loadChats(); } catch (error) { console.error('Failed to disable chat:', error); alert('Failed to disable chat'); } } // Enable Chat async function enableChat(chatId) { try { const response = await fetch('/api/enable-chat', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': API_KEY }, body: `chat_id=${encodeURIComponent(chatId)}`, }); const data = await response.json(); alert(data.message); loadChats(); } catch (error) { console.error('Failed to enable chat:', error); alert('Failed to enable chat'); } } // Upload File document.getElementById('uploadFileForm').addEventListener('submit', async function(event) { event.preventDefault(); const formData = new FormData(this); try { const response = await fetch('/api/upload-file', { method: 'POST', headers: { 'Authorization': API_KEY }, body: formData, }); const data = await response.json(); alert(data.message); loadFiles(); } catch (error) { console.error('Failed to upload file:', error); alert('Failed to upload file'); } }); // Delete File async function deleteFile(fileId) { try { const response = await fetch('/api/delete-file', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': API_KEY }, body: `file_id=${encodeURIComponent(fileId)}`, }); const data = await response.json(); alert(data.message); loadFiles(); } catch (error) { console.error('Failed to delete file:', error); alert('Failed to delete file'); } } // Broadcast Message document.getElementById('broadcastForm').addEventListener('submit', async function(event) { event.preventDefault(); const messageText = document.getElementById('broadcastText').value; try { const response = await fetch('/api/broadcast', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': API_KEY }, body: `message_text=${encodeURIComponent(messageText)}`, }); const data = await response.json(); alert(`Broadcast completed. Success: ${data.success}, Blocked: ${data.blocked}, Deleted: ${data.deleted}`); } catch (error) { console.error('Failed to broadcast message:', error); alert('Failed to broadcast message'); } }); // Add Connection document.getElementById('addConnectionForm').addEventListener('submit', async function(event) { event.preventDefault(); const groupId = document.getElementById('groupId').value; const userId = document.getElementById('userId').value; try { const response = await fetch('/api/add-connection', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': API_KEY }, body: `group_id=${encodeURIComponent(groupId)}&user_id=${encodeURIComponent(userId)}`, }); const data = await response.json(); alert(data.message); loadConnections(); } catch (error) { console.error('Failed to add connection:', error); alert('Failed to add connection'); } }); // Delete Connection async function deleteConnection(groupId, userId) { try { const response = await fetch('/api/delete-connection', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': API_KEY }, body: `group_id=${encodeURIComponent(groupId)}&user_id=${encodeURIComponent(userId)}`, }); const data = await response.json(); alert(data.message); loadConnections(); } catch (error) { console.error('Failed to delete connection:', error); alert('Failed to delete connection'); } } // Save Settings document.getElementById('saveSettingsForm').addEventListener('submit', async function(event) { event.preventDefault(); const chatId = document.getElementById('settingsChatId').value; const settingKey = document.getElementById('settingKey').value; const settingValue = document.getElementById('settingValue').value; try { const response = await fetch('/api/save-settings', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': API_KEY }, body: `chat_id=${encodeURIComponent(chatId)}&setting_key=${encodeURIComponent(settingKey)}&setting_value=${encodeURIComponent(settingValue)}`, }); const data = await response.json(); alert(data.message); } catch (error) { console.error('Failed to save settings:', error); alert('Failed to save settings'); } }); // Restart Bot document.getElementById('restartBotForm').addEventListener('submit', async function(event) { event.preventDefault(); try { const response = await fetch('/api/restart-bot', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': API_KEY }, body: `admin_id=${encodeURIComponent(${ADMINS[0]})}`, // Replace with actual admin ID }); const data = await response.json(); alert(data.message); } catch (error) { console.error('Failed to restart bot:', error); alert('Failed to restart bot'); } }); // Performance Chart const performanceCtx = document.getElementById('performanceChart').getContext('2d'); new Chart(performanceCtx, { type: 'line', data: { labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'], datasets: [{ label: 'Uploads', data: [65, 59, 80, 81, 56, 55], borderColor: '#3b82f6', tension: 0.4 }] }, options: { responsive: true, maintainAspectRatio: false, scales: { y: { beginAtZero: true } } } }); // Platform Distribution Chart const platformCtx = document.getElementById('platformChart').getContext('2d'); new Chart(platformCtx, { type: 'doughnut', data: { labels: ['YouTube', 'Instagram', 'Facebook', 'WhatsApp', 'Pinterest', 'LinkedIn', 'TikTok', 'Twitter', 'Reddit', 'Telegram'], datasets: [{ data: [45, 30, 25, 15, 10, 8, 7, 6, 5, 4], backgroundColor: ['#ff0000', '#e4405f', '#1877F2', '#25D366', '#BD081C', '#0077B5', '#000000', '#1DA1F2', '#FF4500', '#0088CC'] }] }, options: { responsive: true, maintainAspectRatio: false } }); // Fetch System Info on Page Load document.addEventListener('DOMContentLoaded', function() { fetchSystemInfo(); fetchBotStats(); fetchBotStatus(); loadFilters(); loadGlobalFilters(); loadUsers(); loadChats(); loadFiles(); loadConnections(); }); // Utility Function to Format Size function get_size(size) { const units = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB"]; size = parseFloat(size); let i = 0; while (size >= 1024.0 && i < units.length) { i += 1; size /= 1024.0; } return `${size.toFixed(2)} ${units[i]}`; }