Parabéns pelo trabalho, pelo que explicou ficou excelente mesmo!
Também estou desenvolvendo um chatbot com o whatsapp-web.js (porém sem a integração com o GPT) inclusive estou usando uma lógica parecida com a sua, de sessões e cada sessão processa um tipo de informação. Porém tenho uma dúvida sobre como você tratou as mensagens do usuário, toda mensagem vc faz um request na API salvando a mensagem do usuário ou você trata diretamente? (a ação client.on('message'...)), pois estou enfrentando um problema que ao deixar o whatsapp fechado por algum tempo e abrir novamente, chega muitas mensagens de uma só vez, causando problema no fluxo.
Não me recordo se isso chegou a ser um problema, uma vez que as instâncias ficam ligadas 24/7, mas o sistema quando receba múltiplas mensagens (através da sincronização do WhatsApp) ele armazena utilizando a data de recebimento no aparelho como data da mensagem no banco de dados, assim uma mensagem recebida às 10:00 caso seja enviada ao servidor apenas às 14:00 ainda será salva como 10:00, então os fluxos levam essa data em consideração para realizar as ações.
Limitei o WhatsAppWebJs (em NodeJs) para fazer exclusivamente o trabalho com o WhatsApp, ele não leva nenhuma configuração de regra de negócio ou algo assim, as regras de negócio ficam exclusivamentes no sistema web, assim consigo por exemplo, utilizar o WhatsAppWebJs que criei para outros projetos distintos.
Entendi, obrigado! Vou tentar salvar as mensagens via API e tratar múltiplas mensagens.