"use client"; import { useState, useEffect, useRef } from "react"; import { motion } from "framer-motion"; interface Message { id: string; role: "user" | "assistant"; content: string; timestamp: number; } export default function HorusChat() { const [input, setInput] = useState(""); const [messages, setMessages] = useState([ { id: "welcome", role: "assistant", content: "👁️ ¡Hola! Soy Horus. Chatea conmigo aquí o en Telegram. ¿En qué puedo ayudarte?", timestamp: Date.now(), } ]); const [isProcessing, setIsProcessing] = useState(false); const messagesEndRef = useRef(null); useEffect(() => { messagesEndRef.current?.scrollIntoView({ behavior: "smooth" }); }, [messages]); // Poll for responses from Horus (Telegram) useEffect(() => { let pollInterval: NodeJS.Timeout; if (isProcessing) { pollInterval = setInterval(async () => { try { const res = await fetch("/api/horus-mc-response"); const data = await res.json(); if (data.response) { setMessages(prev => [...prev, { id: `horus_${Date.now()}`, role: "assistant", content: data.response, timestamp: Date.now(), }]); setIsProcessing(false); } } catch (e) { console.error("Poll error:", e); } }, 3000); } return () => clearInterval(pollInterval); }, [isProcessing]); const handleSend = async () => { if (!input.trim() || isProcessing) return; const userMessage: Message = { id: `user_${Date.now()}`, role: "user", content: input, timestamp: Date.now(), }; setMessages(prev => [...prev, userMessage]); setInput(""); setIsProcessing(true); try { // Send to Horus via Telegram await fetch("/api/horus-mc-send", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ message: userMessage.content }), }); // Will receive response via polling } catch (e) { console.error("Send error:", e); setMessages(prev => [...prev, { id: `error_${Date.now()}`, role: "assistant", content: "Error de conexión. Prueba en Telegram.", timestamp: Date.now(), }]); setIsProcessing(false); } }; const handleKeyPress = (e: React.KeyboardEvent) => { if (e.key === "Enter" && !e.shiftKey) { e.preventDefault(); handleSend(); } }; return (
{/* Header */}
👁️ Horus
{isProcessing && ( Escribiendo... )}
{/* Messages */}
{messages.map((msg) => (
{msg.content}
))}
{/* Input */}
setInput(e.target.value)} onKeyPress={handleKeyPress} placeholder="Escribe a Horus..." className="flex-1 bg-white/5 border border-white/10 rounded-lg px-4 py-2 text-sm text-white placeholder:text-white/40 focus:outline-none focus:border-brand-pink" disabled={isProcessing} />

Respondo en Telegram - ¡Escríbeme ahí también!

); }