fix: stuff

This commit is contained in:
Leifer Mendez
2024-08-15 12:19:50 +02:00
parent 4bd9722e59
commit eb74ceed76
4 changed files with 2376 additions and 1925 deletions

View File

@@ -1,29 +1,60 @@
import "dotenv/config"
import { createBot, createProvider, createFlow, addKeyword, EVENTS } from '@builderbot/bot'
import { MemoryDB as Database } from '@builderbot/bot'
import { BaileysProvider as Provider } from '@builderbot/provider-baileys'
import { MemoryDB } from '@builderbot/bot'
import { BaileysProvider } from '@builderbot/provider-baileys'
import { toAsk, httpInject } from "@builderbot-plugins/openai-assistants"
import { typing } from "./utils/presence"
const PORT = process.env?.PORT ?? 3008
const ASSISTANT_ID = process.env?.ASSISTANT_ID ?? ''
/** Puerto en el que se ejecutará el servidor */
const PORT = process.env.PORT ?? 3008
/** ID del asistente de OpenAI */
const ASSISTANT_ID = process.env.ASSISTANT_ID ?? ''
const welcomeFlow = addKeyword<Provider, Database>(EVENTS.WELCOME)
/**
* Flujo de bienvenida que maneja las respuestas del asistente de IA
* @type {import('@builderbot/bot').Flow<BaileysProvider, MemoryDB>}
*/
const welcomeFlow = addKeyword<BaileysProvider, MemoryDB>(EVENTS.WELCOME)
.addAction(async (ctx, { flowDynamic, state, provider }) => {
await typing(ctx, provider)
const response = await toAsk(ASSISTANT_ID, ctx.body, state)
const chunks = response.split(/\n\n+/);
for (const chunk of chunks) {
await flowDynamic([{ body: chunk.trim() }]);
}
// Dividir la respuesta en chunks y enviarlos secuencialmente
const chunks = response.split(/\n\n+/)
for (const chunk of chunks) {
const cleanedChunk = chunk.trim().replace(/【.*?】/g, "");
await flowDynamic([{ body: cleanedChunk }])
}
})
/**
* Función principal que configura y inicia el bot
* @async
* @returns {Promise<void>}
*/
const main = async () => {
/**
* Flujo del bot
* @type {import('@builderbot/bot').Flow<BaileysProvider, MemoryDB>}
*/
const adapterFlow = createFlow([welcomeFlow])
const adapterProvider = createProvider(Provider)
const adapterDB = new Database()
/**
* Proveedor de servicios de mensajería
* @type {BaileysProvider}
*/
const adapterProvider = createProvider(BaileysProvider)
/**
* Base de datos en memoria para el bot
* @type {MemoryDB}
*/
const adapterDB = new MemoryDB()
/**
* Configuración y creación del bot
* @type {import('@builderbot/bot').Bot<BaileysProvider, MemoryDB>}
*/
const { httpServer } = await createBot({
flow: adapterFlow,
provider: adapterProvider,
@@ -34,4 +65,4 @@ const main = async () => {
httpServer(+PORT)
}
main()
main()