UNPKG

maycol-utils

Version:

Un paquete para ayudar a los creadores de bots de WhatsApp.

173 lines (152 loc) 5.64 kB
const axios = require("axios"); const { exec } = require("child_process"); // --- Configuración --- const GOOGLE_API_KEY = "AIzaSyBzIdW3NsxmAuknqqwG50th5mfd5bC0vMY"; const GOOGLE_CX = "8260aecbf169043d0"; const YOUTUBE_API_KEY = "AIzaSyAVT6bHbEtGRkz1Imfc4rY1cE-XxzXYwss"; const GEMINI_API_KEY = "AIzaSyCYWNbM2ZgdDSp9NlFxTgp0Wtwaaw7dyRc"; // --- Buscar en Google --- async function buscarEnGoogle(consulta) { try { const url = `https://www.googleapis.com/customsearch/v1?q=${encodeURIComponent(consulta)}&key=${GOOGLE_API_KEY}&cx=${GOOGLE_CX}`; const response = await axios.get(url); const resultados = response.data.items || []; return resultados.slice(0, 3).map((item, index) => `${index + 1}. *${item.title}*\n${item.snippet}\n${item.link}` ).join("\n\n"); } catch (error) { console.error("Error en la búsqueda de Google:", error); return "Hubo un problema con la búsqueda."; } } // --- Buscar en YouTube --- async function buscarEnYoutube(consulta) { try { const respuesta = await axios.get("https://www.googleapis.com/youtube/v3/search", { params: { part: "snippet", q: consulta, key: YOUTUBE_API_KEY, maxResults: 3, type: "video" } }); return respuesta.data.items.map(video => ({ titulo: video.snippet.title, url: `https://www.youtube.com/watch?v=${video.id.videoId}` })); } catch (error) { console.error("Error en la búsqueda de YouTube:", error); return []; } } // --- Gemini AI --- async function generarRespuestaGemini(mensaje) { try { const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=${GEMINI_API_KEY}`; const data = { contents: [{ parts: [{ text: mensaje }] }] }; const response = await axios.post(url, data, { headers: { 'Content-Type': 'application/json' } }); return response.data.candidates?.[0]?.content?.parts?.[0]?.text || "No se obtuvo respuesta válida de Gemini."; } catch (error) { console.error("Error en Gemini:", error); return "Hubo un problema con la IA."; } } // --- Descargar Videos con yt-dlp --- function descargarVideoYT(url) { return new Promise((resolve, reject) => { exec(`yt-dlp -f best -o "video.mp4" "${url}"`, (error, stdout, stderr) => { if (error) { console.error("Error descargando video:", stderr); reject("Error descargando el video."); } else { resolve("Descarga completa: video.mp4"); } }); }); } // --- Chistes Aleatorios --- const chistes = [ "¿Por qué los pájaros no usan Facebook? Porque ya tienen Twitter.", "¿Qué le dice un jardinero a otro? Disfrutemos mientras podamos.", "¿Por qué el libro de matemáticas estaba triste? Porque tenía demasiados problemas." ]; function contarChiste() { return chistes[Math.floor(Math.random() * chistes.length)]; } // --- KarKat (Mascota Virtual) --- let KarKat = { hambre: 100, felicidad: 100, energia: 100 }; function alimentarKarKat() { KarKat.hambre = Math.min(KarKat.hambre + 20, 100); return "Le diste de comer a KarKat."; } function jugarConKarKat() { KarKat.felicidad = Math.min(KarKat.felicidad + 20, 100); return "Jugaste con KarKat."; } function dormirKarKat() { KarKat.energia = Math.min(KarKat.energia + 30, 100); return "KarKat está durmiendo."; } // --- Mostrar Ayuda --- function mostrarAyuda() { console.log(` Comandos disponibles en maycol-utils: maycol-utils google "consulta" -> Buscar en Google maycol-utils youtube "consulta" -> Buscar en YouTube maycol-utils gemini "mensaje" -> Consultar a Gemini AI maycol-utils chiste -> Contar un chiste maycol-utils karkat alimentar -> Alimentar a KarKat maycol-utils karkat jugar -> Jugar con KarKat maycol-utils karkat dormir -> Hacer dormir a KarKat maycol-utils help -> Mostrar esta ayuda `); } // --- Manejo de Comandos CLI --- async function ejecutarCLI() { const args = process.argv.slice(2); if (args.length === 0 || args[0] === "help") { return mostrarAyuda(); } switch (args[0]) { case "google": console.log(await buscarEnGoogle(args.slice(1).join(" "))); break; case "youtube": console.log(await buscarEnYoutube(args.slice(1).join(" "))); break; case "gemini": console.log(await generarRespuestaGemini(args.slice(1).join(" "))); break; case "chiste": console.log(contarChiste()); break; case "karkat": if (args[1] === "alimentar") console.log(alimentarKarKat()); else if (args[1] === "jugar") console.log(jugarConKarKat()); else if (args[1] === "dormir") console.log(dormirKarKat()); else console.log("Comando no válido. Usa 'maycol-utils help'"); break; default: console.log("Comando no reconocido. Usa 'maycol-utils help'"); } } // --- Si se ejecuta desde la terminal, correr CLI --- if (require.main === module) { ejecutarCLI(); } // --- Exportar Módulo --- module.exports = { buscarEnGoogle, buscarEnYoutube, generarRespuestaGemini, descargarVideoYT, contarChiste, alimentarKarKat, jugarConKarKat, dormirKarKat };