maycol-utils
Version:
Un paquete para ayudar a los creadores de bots de WhatsApp.
173 lines (152 loc) • 5.64 kB
JavaScript
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
};