herramienta-img2text.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. const handler = async (m, { conn, text, usedPrefix, command }) => {
  2. // Verificar si se proporcionó una URL de imagen
  3. if (!text) return m.reply(`*🖼️ Image2Text IA*\n\n*Por favor, ingresa la URL de una imagen*\n\nEjemplo:\n.img2text https://ejemplo.com/imagen.jpg`)
  4. try {
  5. // Enviar mensaje inicial de "Procesando"
  6. const { key } = await conn.sendMessage(m.chat, {text: `*🖼️ Image2Text IA*\n▰▱▱▱▱▱▱▱▱\n🔍 Iniciando análisis de imagen...`}, {quoted: m});
  7. // Pequeña pausa
  8. await delay(1000);
  9. // Actualizar progreso
  10. await conn.sendMessage(m.chat, {text: `*🖼️ Image2Text IA*\n▰▰▰▱▱▱▱▱▱\n🔎 Detectando elementos...`, edit: key});
  11. // Otra pausa
  12. await delay(1000);
  13. // Más progreso
  14. await conn.sendMessage(m.chat, {text: `*🖼️ Image2Text IA*\n▰▰▰▰▰▱▱▱▱\n📝 Generando descripción...`, edit: key});
  15. // Codificar la URL de la imagen para la solicitud
  16. const encodedUrl = encodeURIComponent(text)
  17. // Realizar la solicitud a la API
  18. const response = await fetch(`https://api.siputzx.my.id/api/ai/image2text?url=${encodedUrl}`)
  19. // Verificar si la respuesta es válida
  20. if (!response.ok) {
  21. throw new Error('Error en la solicitud a la API')
  22. }
  23. // Parsear la respuesta JSON
  24. const data = await response.json()
  25. // Verificar si hay un resultado válido
  26. if (data && data.status && data.data) {
  27. // Enviar respuesta final editando el mismo mensaje
  28. await conn.sendMessage(m.chat, {
  29. text: `*🖼️ Image2Text IA*\n▰▰▰▰▰▰▰▰▰\n> *KantuBot*\n\n📸 *Descripción de la imagen:*\n\n${data.data}`,
  30. edit: key
  31. });
  32. } else {
  33. throw new Error('No se recibió respuesta válida')
  34. }
  35. } catch (error) {
  36. console.error('Error en Image2Text:', error)
  37. m.reply(`❌ *Error en Image2Text IA*\n\nNo se pudo analizar la imagen. Verifica que la URL sea válida y accesible.\n\nError: ${error.message}`)
  38. }
  39. }
  40. // Función de delay
  41. const delay = (time) => new Promise(resolve => setTimeout(resolve, time))
  42. handler.help = ['img2text']
  43. handler.tags = ['tools']
  44. handler.command = /^(img2text|image2text|imagetotext|i2t)$/i
  45. export default handler