api: fix clients markdown
Signed-off-by: Rodrigo B. de Sousa Martins <rodrigo.sousa.577@gmail.com>
This commit is contained in:
1 parent
9d092a349f
commit
ae47ff6640
1 file changed
+83
-30
+83
-30
@@ -448,7 +448,7 @@ Digite /help para ver todos os comandos disponíveis!
|
||||
• "fiberhome status" - Status das conexões Fiberhome
|
||||
• Use "ver sinal" para interface unificada
|
||||
|
||||
�🔒 SEGURANÇA:
|
||||
🔒 **SEGURANÇA:**
|
||||
🛡️ Bot restrito a usuários autorizados
|
||||
🆔 Para solicitar acesso, forneça seu ID`;
|
||||
|
||||
@@ -2535,9 +2535,9 @@ Digite /help para ver todos os comandos disponíveis!
|
||||
// Se encontrou apenas um cliente, mostrar dados detalhados
|
||||
// Se encontrou apenas um cliente, mostrar dados detalhados
|
||||
const cliente = resultado.clientes[0];
|
||||
let message = `� **Cliente Encontrado**\n\n`;
|
||||
let message = `👤 **Cliente Encontrado**\n\n`;
|
||||
message += `🆔 **ID**: \`${cliente.id}\`\n`;
|
||||
message += `� **Nome**: ${cliente.nome}\n`;
|
||||
message += `👤 **Nome**: ${cliente.nome}\n`;
|
||||
|
||||
if (cliente.cpf) {
|
||||
message += `📄 **CPF**: \`${cliente.cpf}\`\n`;
|
||||
@@ -2579,6 +2579,35 @@ Digite /help para ver todos os comandos disponíveis!
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Escapar caracteres problemáticos para Markdown do Telegram
|
||||
*/
|
||||
escapeMarkdown(text) {
|
||||
if (!text) return text;
|
||||
|
||||
// Escapar caracteres especiais que podem causar problemas no Markdown
|
||||
return text.toString()
|
||||
.replace(/\\/g, '\\\\') // Escape backslash
|
||||
.replace(/\*/g, '\\*') // Escape asterisco
|
||||
.replace(/_/g, '\\_') // Escape underscore
|
||||
.replace(/\[/g, '\\[') // Escape colchete
|
||||
.replace(/\]/g, '\\]') // Escape colchete
|
||||
.replace(/\(/g, '\\(') // Escape parêntese
|
||||
.replace(/\)/g, '\\)') // Escape parêntese
|
||||
.replace(/~/g, '\\~') // Escape til
|
||||
.replace(/>/g, '\\>') // Escape maior que
|
||||
.replace(/#/g, '\\#') // Escape hashtag
|
||||
.replace(/\+/g, '\\+') // Escape mais
|
||||
.replace(/-/g, '\\-') // Escape hífen
|
||||
.replace(/=/g, '\\=') // Escape igual
|
||||
.replace(/\|/g, '\\|') // Escape pipe
|
||||
.replace(/\{/g, '\\{') // Escape chaves
|
||||
.replace(/\}/g, '\\}') // Escape chaves
|
||||
.replace(/\./g, '\\.') // Escape ponto
|
||||
.replace(/!/g, '\\!') // Escape exclamação
|
||||
.replace(/@/g, '\\@'); // Escape arroba
|
||||
}
|
||||
|
||||
/**
|
||||
* Mostrar dados cadastrais completos do cliente
|
||||
*/
|
||||
@@ -2590,9 +2619,8 @@ Digite /help para ver todos os comandos disponíveis!
|
||||
|
||||
if (!resultado.success) {
|
||||
await this.bot.sendMessage(chatId,
|
||||
`❌ **Erro ao buscar dados**\n\n` +
|
||||
`⚠️ ${resultado.error}`,
|
||||
{ parse_mode: 'Markdown' }
|
||||
`❌ Erro ao buscar dados\n\n` +
|
||||
`⚠️ ${resultado.error}`
|
||||
);
|
||||
return;
|
||||
}
|
||||
@@ -2600,24 +2628,34 @@ Digite /help para ver todos os comandos disponíveis!
|
||||
const cliente = resultado.cliente;
|
||||
const servicos = resultado.servicos || [];
|
||||
|
||||
let message = `📋 **Dados Cadastrais Completos**\n\n`;
|
||||
let message = `📋 Dados Cadastrais Completos\n\n`;
|
||||
|
||||
// Dados do cliente
|
||||
message += `👤 **CLIENTE**\n`;
|
||||
message += `🆔 ID: \`${cliente.id}\`\n`;
|
||||
message += `👤 Nome: ${cliente.nome}\n`;
|
||||
message += `👤 CLIENTE\n`;
|
||||
message += `🆔 ID: ${cliente.id}\n`;
|
||||
message += `👤 Nome: ${cliente.nome || 'Não informado'}\n`;
|
||||
|
||||
if (cliente.cpf) {
|
||||
message += `📄 CPF: \`${cliente.cpf}\`\n`;
|
||||
}
|
||||
|
||||
if (cliente.rg) {
|
||||
message += `📄 RG: \`${cliente.rg}\`\n`;
|
||||
message += `📄 RG: ${cliente.rg}\n`;
|
||||
}
|
||||
|
||||
message += `📧 Email: ${cliente.email || 'Não informado'}\n`;
|
||||
message += `📞 Telefone: ${cliente.telefone || 'Não informado'}\n`;
|
||||
message += `📱 Celular: ${cliente.celular || 'Não informado'}\n`;
|
||||
|
||||
if (cliente.telefone && cliente.telefone !== 'Não informado') {
|
||||
message += `📞 Telefone: \`${cliente.telefone}\`\n`;
|
||||
} else {
|
||||
message += `📞 Telefone: Não informado\n`;
|
||||
}
|
||||
|
||||
if (cliente.celular && cliente.celular !== 'Não informado') {
|
||||
message += `📱 Celular: \`${cliente.celular}\`\n`;
|
||||
} else {
|
||||
message += `📱 Celular: Não informado\n`;
|
||||
}
|
||||
|
||||
// Endereço
|
||||
if (cliente.endereco) {
|
||||
@@ -2651,27 +2689,27 @@ Digite /help para ver todos os comandos disponíveis!
|
||||
message += `📝 Observações: ${cliente.observacoes}\n`;
|
||||
}
|
||||
|
||||
message += `\n🌐 **Instância**: ${resultado.instancia}\n\n`;
|
||||
message += `\n🌐 Instância: ${resultado.instancia}\n\n`;
|
||||
|
||||
// Dados dos serviços
|
||||
if (servicos.length > 0) {
|
||||
message += `⚙️ **SERVIÇOS CONTRATADOS**\n\n`;
|
||||
message += `⚙️ SERVIÇOS CONTRATADOS\n\n`;
|
||||
|
||||
servicos.forEach((servico, index) => {
|
||||
message += `📦 **Serviço ${index + 1}**\n`;
|
||||
message += `📦 Serviço ${index + 1}\n`;
|
||||
message += `🏷️ Plano: ${servico.planoNome}\n`;
|
||||
message += `📊 Status: ${servico.statusFormatado}\n`;
|
||||
|
||||
if (servico.login) {
|
||||
message += `👤 Login: \`${servico.login}\`\n`;
|
||||
message += `👤 Login: ${servico.login}\n`;
|
||||
}
|
||||
|
||||
if (servico.senha) {
|
||||
message += `🔑 Senha: \`${servico.senha}\`\n`;
|
||||
message += `🔑 Senha: ${servico.senha}\n`;
|
||||
}
|
||||
|
||||
if (servico.ip) {
|
||||
message += `🌐 IP: \`${servico.ip}\`\n`;
|
||||
message += `🌐 IP: ${servico.ip}\n`;
|
||||
}
|
||||
|
||||
if (servico.vencimento) {
|
||||
@@ -2682,7 +2720,7 @@ Digite /help para ver todos os comandos disponíveis!
|
||||
message += `💰 Valor: R$ ${parseFloat(servico.valor).toFixed(2)}\n`;
|
||||
}
|
||||
|
||||
message += `� Tecnologia: ${servico.tecnologia}\n`;
|
||||
message += `🔧 Tecnologia: ${servico.tecnologia}\n`;
|
||||
|
||||
if (servico.velocidade_down) {
|
||||
message += `⬇️ Download: ${servico.velocidade_down} Mbps\n`;
|
||||
@@ -2694,7 +2732,7 @@ Digite /help para ver todos os comandos disponíveis!
|
||||
|
||||
// Dados FTTH - usando campos reais da API
|
||||
if (servico.tecnologia === 'FTTH' || servico.pon || servico.serial) {
|
||||
message += `\n📡 **Dados FTTH:**\n`;
|
||||
message += `\n📡 Dados FTTH:\n`;
|
||||
|
||||
if (servico.base || servico.id_ap) {
|
||||
message += `🔌 Base/AP: ${servico.base || `AP ${servico.id_ap}`}\n`;
|
||||
@@ -2717,7 +2755,7 @@ Digite /help para ver todos os comandos disponíveis!
|
||||
}
|
||||
|
||||
if (servico.ultimo_rx_power) {
|
||||
message += `� Último RX: ${servico.ultimo_rx_power} dBm\n`;
|
||||
message += `📶 Último RX: ${servico.ultimo_rx_power} dBm\n`;
|
||||
}
|
||||
|
||||
if (servico.ultimo_tx_power) {
|
||||
@@ -2734,21 +2772,21 @@ Digite /help para ver todos os comandos disponíveis!
|
||||
}
|
||||
|
||||
if (servico.ultimo_acesso) {
|
||||
message += `� Último acesso: ${servico.ultimo_acesso}\n`;
|
||||
message += `🕐 Último acesso: ${servico.ultimo_acesso}\n`;
|
||||
}
|
||||
|
||||
if (servico.ultimo_ip) {
|
||||
message += `🌐 Último IP: \`${servico.ultimo_ip}\`\n`;
|
||||
message += `🌐 Último IP: ${servico.ultimo_ip}\n`;
|
||||
}
|
||||
}
|
||||
|
||||
// Dados de instalação
|
||||
if (servico.instalacao_endereco) {
|
||||
message += `\n📍 **Endereço de Instalação:**\n`;
|
||||
message += `\n📍 Endereço de Instalação:\n`;
|
||||
message += `🏠 ${servico.instalacao_endereco}, ${servico.instalacao_numero || 'S/N'}\n`;
|
||||
|
||||
if (servico.instalacao_complemento) {
|
||||
message += `� Complemento: ${servico.instalacao_complemento}\n`;
|
||||
message += `📝 Complemento: ${servico.instalacao_complemento}\n`;
|
||||
}
|
||||
|
||||
message += `🏘️ ${servico.instalacao_bairro}, ${servico.instalacao_cidade}/${servico.instalacao_uf}\n`;
|
||||
@@ -2765,7 +2803,7 @@ Digite /help para ver todos os comandos disponíveis!
|
||||
message += `\n`;
|
||||
});
|
||||
} else {
|
||||
message += `⚙️ **SERVIÇOS**: Nenhum serviço encontrado\n\n`;
|
||||
message += `⚙️ SERVIÇOS: Nenhum serviço encontrado\n\n`;
|
||||
}
|
||||
|
||||
// Botões de ação
|
||||
@@ -2780,19 +2818,34 @@ Digite /help para ver todos os comandos disponíveis!
|
||||
]
|
||||
];
|
||||
|
||||
console.log('📝 Enviando dados do cliente');
|
||||
|
||||
try {
|
||||
await this.bot.sendMessage(chatId, message, {
|
||||
parse_mode: 'Markdown',
|
||||
reply_markup: {
|
||||
inline_keyboard: keyboard
|
||||
}
|
||||
});
|
||||
} catch (telegramError) {
|
||||
console.error('❌ Erro de Markdown no Telegram:', telegramError.message);
|
||||
console.log('🔧 Enviando sem Markdown como fallback...');
|
||||
|
||||
// Fallback: enviar sem Markdown, removendo apenas os backticks
|
||||
const fallbackMessage = message.replace(/`/g, '');
|
||||
|
||||
await this.bot.sendMessage(chatId, fallbackMessage, {
|
||||
reply_markup: {
|
||||
inline_keyboard: keyboard
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ Erro ao buscar dados do cliente:', error);
|
||||
await this.bot.sendMessage(chatId,
|
||||
`❌ **Erro ao buscar dados do cliente**\n\n` +
|
||||
`⚠️ ${error.message}`,
|
||||
{ parse_mode: 'Markdown' }
|
||||
`❌ Erro ao buscar dados do cliente\n\n` +
|
||||
`⚠️ ${error.message}`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user