// bot.js
import { Bot, defineBot, isMainModule } from '@botmesh/core'
import { BaileysProvider } from '@botmesh/baileys'
// Cada respuesta con las frases que llevan a ella
const FAQ = [
{ ask: ['horario', 'horarios', 'a que hora abren'], answer: '🕘 De lunes a sábado, de 9:00 a 19:00.' },
{ ask: ['direccion', 'donde estan', 'ubicacion'], answer: '📍 Calle Mayor 42, en el centro.' },
{ ask: ['precios', 'precio', 'cuanto cuesta'], answer: '💲 Café $2 · Pastel $4 · Combo $5' },
]
const createBot = defineBot((provider) => {
const bot = new Bot({ provider, lang: 'es' })
// Mensaje completo, normalizado: "HORARIO", "Horario " y "hórario" coinciden con 'horario'
for (const { ask, answer } of FAQ) bot.when(ask, (ctx) => ctx.reply(answer))
bot.when(['ayuda', 'faq', 'menu'], (ctx) =>
ctx.reply('❓ Pregúntame por: horario · dirección · precios · domicilio\nO envía un número de pedido como #1234.'),
)
// `contains`: la palabra en cualquier parte del mensaje
bot.when({ pattern: 'domicilio', match: 'contains' }, (ctx) =>
ctx.reply('🛵 Llevamos a domicilio a 3 km a la redonda. Gratis en pedidos de más de $10.'),
)
// Una regex: un número de pedido como #1234
bot.when(/#\d{4,}/, (ctx) => ctx.reply(`📦 El pedido ${/#\d{4,}/.exec(ctx.body)[0]} va en camino.`))
// Solo corre si ningún trigger de arriba coincidió
bot.onMessage((ctx) => ctx.reply('🤷 Eso todavía no lo sé. Envía "ayuda" para ver los temas.'))
return bot
})
export default createBot
// `node bot.js` conecta con WhatsApp; `npx botmesh dev bot.js` se salta este bloque
if (isMainModule(import.meta)) {
const bot = await createBot(new BaileysProvider({ session: 'faq-bot' }))
bot.on('ready', () => console.log('✅ Conectado. Escribe "ayuda" desde otro teléfono.'))
await bot.start()
}