| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>Bot Dashboard</title> |
| <style> |
| body { |
| font-family: "Helvetica Neue", Arial, sans-serif; |
| background-color: #D3F2C2; |
| } |
| |
| .navbar { |
| background-color: #34A853; |
| color: white; |
| padding: 12px 30px; |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| } |
| |
| .navbar h1 { |
| margin: 0; |
| font-size: 28px; |
| } |
| |
| .dashboard { |
| background-color: white; |
| margin: 2em auto; |
| padding: 2em; |
| border-radius: 10px; |
| box-shadow: 0 4px 6px rgba(0,0,0,0.1); |
| width: 90%; |
| max-width: 600px; |
| } |
| |
| .dashboard h2 { |
| color: #333; |
| margin-bottom: 15px; |
| } |
| |
| .dashboard .stat { |
| padding: 20px; |
| background-color: #edf4ed; |
| margin-bottom: 20px; |
| border-radius: 10px; |
| } |
| |
| .dashboard .stat:last-child { |
| margin-bottom: 0; |
| } |
| |
| button { |
| background-color: #34A853; |
| color: white; |
| border: none; |
| padding: 12px 25px; |
| margin: 10px 0; |
| cursor: pointer; |
| font-size: 16px; |
| border-radius: 20px; |
| } |
| |
| button:hover { |
| background-color: #2C7A4B; |
| } |
| </style> |
| <script |
| src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.0.0/socket.io.min.js"></script> |
| <script> |
| document.addEventListener('DOMContentLoaded', function() { |
| const socket = io(); |
| |
| fetch('/dashboard') |
| .then(response => response.json()) |
| .then(data => { |
| document.getElementById('bot-name').textContent = data.botName; |
| document.getElementById('fca').textContent = data.fca; |
| document.getElementById('bot-uid').textContent = data.botUid; |
| document.getElementById('owner-name').textContent = data.ownerName; |
| document.getElementById('bot-prefix').textContent = data.prefix; |
| document.getElementById('commands-count').textContent = data.commandsCount; |
| document.getElementById('events-count').textContent = data.eventsCount; |
| document.getElementById('bot-uptime').textContent = new Date(data.uptime).toISOString().substr(11, 8); |
| }) |
| .catch(error => console.error('Error fetching dashboard data:', error)); |
| |
| socket.on('real-time-data', data => { |
| document.getElementById('bot-uptime').textContent = new Date(data.uptime).toISOString().substr(11, 8); |
| }); |
| }); |
| </script> |
| </head> |
| <body> |
| <div class="navbar"> |
| <h1>Bot Dashboard</h1> |
| </div> |
| <div class="dashboard"> |
| <div class="stat"> |
| <h2>Bot Information</h2> |
| Name: <span id="bot-name">Loading...</span><br> |
| UID: <span id="bot-uid">Loading...</span><br> |
| Owner: <span id="owner-name">Loading...</span><br> |
| Prefix: <span id="bot-prefix">Loading...</span><br> |
| FCA Module: <span id="fca">Loading....</span> |
| </div> |
| <div class="stat"> |
| <h2>Statistics</h2> |
| Commands Count: <span id="commands-count">Loading...</span><br> |
| Events Count: <span id="events-count">Loading...</span> |
| </div> |
| <div class="stat"> |
| <h2>Status</h2> |
| Uptime: <span id="bot-uptime">Loading...</span> |
| </div> |
| <button onclick="location.href='/dashboard/refresh'">Refresh</button> |
| </div> |
| </body> |
| </html> |