topsapp: fix liberar cliente no handler

Signed-off-by: Rodrigo B. de Sousa Martins <rodrigo.sousa.577@gmail.com>
This commit is contained in:
rodrigo committed 2025-08-11 21:42:05 -03:00
1 parent bae6adefcb
commit 81603be0a5
1 file changed
+78 -30
+78 -30
View File
@@ -3303,25 +3303,16 @@ Digite /help para ver todos os comandos disponíveis!
const clienteId = parts[0]; const clienteId = parts[0];
const location = parts[1] ? parts[1].replace(/_/g, ' ') : ''; const location = parts[1] ? parts[1].replace(/_/g, ' ') : '';
await this.bot.answerCallbackQuery(callbackQuery.id, 'Processando liberação...'); await this.bot.answerCallbackQuery(callbackQuery.id, 'Carregando opções...');
await this.bot.editMessageText( // Usar a mesma lógica do comando NLP para mostrar opções de serviços
`🔓 **Liberando cliente ID: ${clienteId}**\n\n⏳ Aguarde...`, // Em vez de liberar tudo diretamente, mostrar menu de seleção
{ const servicosResult = await this.topsapp.obterServicosCliente(clienteId, location);
chat_id: chatId,
message_id: callbackQuery.message.message_id,
parse_mode: 'Markdown'
}
);
const resultado = await this.topsapp.liberarCliente(clienteId, location);
if (!resultado.success) { if (!servicosResult.success) {
await this.bot.editMessageText( await this.bot.editMessageText(
`❌ **Erro ao liberar cliente**\n\n` + `❌ **Erro ao buscar serviços**\n\n` +
`🆔 Cliente ID: ${clienteId}\n` + `⚠️ ${servicosResult.error}`,
`🌐 Instância: ${location}\n` +
`⚠️ Erro: ${resultado.error}`,
{ {
chat_id: chatId, chat_id: chatId,
message_id: callbackQuery.message.message_id, message_id: callbackQuery.message.message_id,
@@ -3330,29 +3321,86 @@ Digite /help para ver todos os comandos disponíveis!
); );
return; return;
} }
let message = `🔓 **Cliente liberado com sucesso!**\n\n`; if (!servicosResult.servicos || servicosResult.servicos.length === 0) {
message += `🆔 Cliente ID: ${clienteId}\n`; await this.bot.editMessageText(
message += `🌐 Instância: ${resultado.instancia}\n`; `📋 **Nenhum serviço encontrado**\n\n` +
message += `📊 Serviços liberados: ${resultado.total}\n\n`; `🆔 Cliente ID: ${clienteId}`,
{
if (resultado.servicosLiberados && resultado.servicosLiberados.length > 0) { chat_id: chatId,
message += `📋 **Detalhes das liberações:**\n`; message_id: callbackQuery.message.message_id,
resultado.servicosLiberados.forEach((servico, index) => { parse_mode: 'Markdown'
message += `${index + 1}. ${servico.descricao}: ${servico.resultado.success ? '✅ Liberado' : '❌ Erro'}\n`; }
}); );
return;
} }
// Verificar se há serviços bloqueados
const servicosBloqueados = servicosResult.servicos.filter(s =>
s.status === 'bloqueado' || s.statusNumerico === 2
);
if (servicosBloqueados.length === 0) {
await this.bot.editMessageText(
`✅ **Nenhum serviço bloqueado**\n\n` +
`🆔 Cliente ID: ${clienteId}\n` +
`📊 Todos os ${servicosResult.servicos.length} serviços estão liberados.`,
{
chat_id: chatId,
message_id: callbackQuery.message.message_id,
parse_mode: 'Markdown'
}
);
return;
}
// Criar menu de seleção de serviços
let message = `🔓 **Selecionar Serviços para Liberar**\n\n`;
message += `🆔 **Cliente ID**: ${clienteId}\n`;
message += `🌐 **Instância**: ${location}\n\n`;
message += `� **Serviços bloqueados** (${servicosBloqueados.length}):\n\n`;
const keyboard = [];
servicosBloqueados.forEach((servico, index) => {
message += `${index + 1}. **${servico.nome}**\n`;
message += ` 💰 Valor: R$ ${servico.valorMensal}\n`;
message += ` 🆔 ID: ${servico.id}\n\n`;
// Botão para liberar este serviço específico
keyboard.push([{
text: `🔓 Liberar ${servico.nome}`,
callback_data: `confirm_unblock_service_${servico.id}_${clienteId}_${location.replace(/\s+/g, '_')}`
}]);
});
// Botão para liberar todos
if (servicosBloqueados.length > 1) {
keyboard.push([{
text: `🔓 Liberar TODOS os serviços (${servicosBloqueados.length})`,
callback_data: `confirm_unblock_all_${clienteId}_${location.replace(/\s+/g, '_')}`
}]);
}
// Botão cancelar
keyboard.push([{
text: '❌ Cancelar',
callback_data: 'cancel_action'
}]);
await this.bot.editMessageText(message, { await this.bot.editMessageText(message, {
chat_id: chatId, chat_id: chatId,
message_id: callbackQuery.message.message_id, message_id: callbackQuery.message.message_id,
parse_mode: 'Markdown' parse_mode: 'Markdown',
reply_markup: {
inline_keyboard: keyboard
}
}); });
} catch (error) { } catch (error) {
console.error('❌ Erro ao liberar cliente:', error); console.error('❌ Erro ao preparar liberação:', error);
await this.bot.editMessageText( await this.bot.editMessageText(
`❌ **Erro interno ao liberar cliente**\n\n` + `❌ **Erro ao preparar liberação**\n\n` +
`🆔 Cliente ID: ${clienteId}\n` + `🆔 Cliente ID: ${clienteId}\n` +
`⚠️ ${error.message}`, `⚠️ ${error.message}`,
{ {