const axios = require('axios'); module.exports.config = { name: "monitor", version: "1.0.0", hasPermission: 0, description: "Monitor website uptime, search for monitored URLs, and list all monitored URLs", usePrefix: true, credits: "Jonell Magallanes", cooldowns: 6, commandCategory: "System", }; module.exports.run = async function ({ api, event, args }) { const baseUrl = "https://ccprojectapis.ddns.net"; if (!args[0]) { return api.sendMessage("Please specify a command: `add`, `list`, or `search`.", event.threadID, event.messageID); } const wha = await api.sendMessage("Loading.....", event.threadID, event.messageID); const command = args[0]; const urlOrSearch = args[1]; if (command === 'add') { if (!urlOrSearch) { return api.sendMessage("Please provide a URL to add to the monitor list.", event.threadID, event.messageID); } try { const response = await axios.get(`${baseUrl}/uptime?url=${encodeURIComponent(urlOrSearch)}`); const data = response.data; if (data.message === "Website added successfully") { api.editMessage(`๐— ๐—ผ๐—ป๐—ถ๐˜๐—ผ๐—ฟ๐—ฒ๐—ฑ ๐—จ๐—ฟ๐—น ๐—”๐—ฑ๐—ฑ๐—ฒ๐—ฑ\nโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\nMonitor added successfully for URL: ${data.url}`, wha.messageID, event.threadID, event.messageID); } else if (data.message === "URL is already in the list") { api.editMessage(`๐—”๐—น๐—ฟ๐—ฒ๐—ฎ๐—ฑ๐˜† ๐—จ๐—ฝ๐˜๐—ถ๐—บ๐—ฒ๐—ฑ ๐—จ๐—ฅ๐—Ÿ\nโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\nURL is already in the database: ${data.url}`, wha.messageID, event.threadID, event.messageID); } else { api.editMessage("Unknown response from the server.", wha.messageID, event.threadID, event.messageID); } } catch (error) { api.sendMessage("Error adding monitor.", event.threadID, event.messageID); } } else if (command === 'search') { if (!urlOrSearch) { return api.sendMessage("Please provide a URL to search for in the monitor list.", event.threadID, event.messageID); } try { const response = await axios.get(`${baseUrl}/search?url=${encodeURIComponent(urlOrSearch)}`); const data = response.data; if (data.length === 0) { return api.editMessage(`No results found for: ${urlOrSearch}`, wha.messageID, event.threadID, event.messageID); } let message = `๐—ฆ๐—ฒ๐—ฎ๐—ฟ๐—ฐ๐—ต ๐—จ๐—ฟ๐—น ๐— ๐—ผ๐—ป๐—ถ๐˜๐—ผ๐—ฟ๐—ฒ๐—ฑ\nโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\n๐Ÿ” Search:${urlOrSearch}\n`; data.forEach(item => { const status = interpretStatus(item.status); message += `๐ŸŒ URL: ${item.url}\n๐Ÿ“ Status: ${status}\nDuration: ${item.duration}ms\nโฑ๏ธLast Checked: ${new Date(item.lastChecked)}\nโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\n`; }); api.editMessage(message, wha.messageID, event.threadID, event.messageID); } catch (error) { api.sendMessage("Error searching for the URL.", event.threadID, event.messageID); } } else if (command === 'list') { try { const response = await axios.get(`${baseUrl}/list`); const data = response.data; let message = "๐— ๐—ผ๐—ป๐—ถ๐˜๐—ผ๐—ฟ ๐—จ๐—ฝ๐˜๐—ถ๐—บ๐—ฒ๐—ฑ ๐—Ÿ๐—ถ๐˜€๐˜\nโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\n"; data.forEach(item => { const status = interpretStatus(item.status); message += `๐ŸŒ URL: ${item.url}\n๐Ÿ“ Status: ${status}\nDuration: ${item.duration}ms\nโฑ๏ธ Last Checked: ${new Date(item.lastChecked)}\nโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\n`; }); api.editMessage(message, wha.messageID, event.threadID, event.messageID); } catch (error) { api.sendMessage("Error fetching monitor list.", event.threadID, event.messageID); } } else { api.sendMessage("Invalid command. Use `add`, `list`, or `search`.", event.threadID, event.messageID); } }; function interpretStatus(statusEmoji) { switch (statusEmoji) { case '๐Ÿ”ต': return "Up (200 OK)"; case 'โšซ': return "Forbidden or Bad Gateway"; case '๐Ÿ”ด': return "Down"; default: return "Unknown Status"; } }