Botpack / modules /commands /monitor.js
Jonell01's picture
Upload 64 files
2821330 verified
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";
}
}