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
+89
-36
+89
-36
@@ -448,7 +448,7 @@ Digite /help para ver todos os comandos disponíveis!
|
|||||||
• "fiberhome status" - Status das conexões Fiberhome
|
• "fiberhome status" - Status das conexões Fiberhome
|
||||||
• Use "ver sinal" para interface unificada
|
• Use "ver sinal" para interface unificada
|
||||||
|
|
||||||
�🔒 SEGURANÇA:
|
🔒 **SEGURANÇA:**
|
||||||
🛡️ Bot restrito a usuários autorizados
|
🛡️ Bot restrito a usuários autorizados
|
||||||
🆔 Para solicitar acesso, forneça seu ID`;
|
🆔 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
|
||||||
// Se encontrou apenas um cliente, mostrar dados detalhados
|
// Se encontrou apenas um cliente, mostrar dados detalhados
|
||||||
const cliente = resultado.clientes[0];
|
const cliente = resultado.clientes[0];
|
||||||
let message = `� **Cliente Encontrado**\n\n`;
|
let message = `👤 **Cliente Encontrado**\n\n`;
|
||||||
message += `🆔 **ID**: \`${cliente.id}\`\n`;
|
message += `🆔 **ID**: \`${cliente.id}\`\n`;
|
||||||
message += `� **Nome**: ${cliente.nome}\n`;
|
message += `👤 **Nome**: ${cliente.nome}\n`;
|
||||||
|
|
||||||
if (cliente.cpf) {
|
if (cliente.cpf) {
|
||||||
message += `📄 **CPF**: \`${cliente.cpf}\`\n`;
|
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
|
* Mostrar dados cadastrais completos do cliente
|
||||||
*/
|
*/
|
||||||
@@ -2590,9 +2619,8 @@ Digite /help para ver todos os comandos disponíveis!
|
|||||||
|
|
||||||
if (!resultado.success) {
|
if (!resultado.success) {
|
||||||
await this.bot.sendMessage(chatId,
|
await this.bot.sendMessage(chatId,
|
||||||
`❌ **Erro ao buscar dados**\n\n` +
|
`❌ Erro ao buscar dados\n\n` +
|
||||||
`⚠️ ${resultado.error}`,
|
`⚠️ ${resultado.error}`
|
||||||
{ parse_mode: 'Markdown' }
|
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -2600,24 +2628,34 @@ Digite /help para ver todos os comandos disponíveis!
|
|||||||
const cliente = resultado.cliente;
|
const cliente = resultado.cliente;
|
||||||
const servicos = resultado.servicos || [];
|
const servicos = resultado.servicos || [];
|
||||||
|
|
||||||
let message = `📋 **Dados Cadastrais Completos**\n\n`;
|
let message = `📋 Dados Cadastrais Completos\n\n`;
|
||||||
|
|
||||||
// Dados do cliente
|
// Dados do cliente
|
||||||
message += `👤 **CLIENTE**\n`;
|
message += `👤 CLIENTE\n`;
|
||||||
message += `🆔 ID: \`${cliente.id}\`\n`;
|
message += `🆔 ID: ${cliente.id}\n`;
|
||||||
message += `👤 Nome: ${cliente.nome}\n`;
|
message += `👤 Nome: ${cliente.nome || 'Não informado'}\n`;
|
||||||
|
|
||||||
if (cliente.cpf) {
|
if (cliente.cpf) {
|
||||||
message += `📄 CPF: \`${cliente.cpf}\`\n`;
|
message += `📄 CPF: \`${cliente.cpf}\`\n`;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cliente.rg) {
|
if (cliente.rg) {
|
||||||
message += `📄 RG: \`${cliente.rg}\`\n`;
|
message += `📄 RG: ${cliente.rg}\n`;
|
||||||
}
|
}
|
||||||
|
|
||||||
message += `📧 Email: ${cliente.email || 'Não informado'}\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
|
// Endereço
|
||||||
if (cliente.endereco) {
|
if (cliente.endereco) {
|
||||||
@@ -2651,27 +2689,27 @@ Digite /help para ver todos os comandos disponíveis!
|
|||||||
message += `📝 Observações: ${cliente.observacoes}\n`;
|
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
|
// Dados dos serviços
|
||||||
if (servicos.length > 0) {
|
if (servicos.length > 0) {
|
||||||
message += `⚙️ **SERVIÇOS CONTRATADOS**\n\n`;
|
message += `⚙️ SERVIÇOS CONTRATADOS\n\n`;
|
||||||
|
|
||||||
servicos.forEach((servico, index) => {
|
servicos.forEach((servico, index) => {
|
||||||
message += `📦 **Serviço ${index + 1}**\n`;
|
message += `📦 Serviço ${index + 1}\n`;
|
||||||
message += `🏷️ Plano: ${servico.planoNome}\n`;
|
message += `🏷️ Plano: ${servico.planoNome}\n`;
|
||||||
message += `📊 Status: ${servico.statusFormatado}\n`;
|
message += `📊 Status: ${servico.statusFormatado}\n`;
|
||||||
|
|
||||||
if (servico.login) {
|
if (servico.login) {
|
||||||
message += `👤 Login: \`${servico.login}\`\n`;
|
message += `👤 Login: ${servico.login}\n`;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (servico.senha) {
|
if (servico.senha) {
|
||||||
message += `🔑 Senha: \`${servico.senha}\`\n`;
|
message += `🔑 Senha: ${servico.senha}\n`;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (servico.ip) {
|
if (servico.ip) {
|
||||||
message += `🌐 IP: \`${servico.ip}\`\n`;
|
message += `🌐 IP: ${servico.ip}\n`;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (servico.vencimento) {
|
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 += `💰 Valor: R$ ${parseFloat(servico.valor).toFixed(2)}\n`;
|
||||||
}
|
}
|
||||||
|
|
||||||
message += `� Tecnologia: ${servico.tecnologia}\n`;
|
message += `🔧 Tecnologia: ${servico.tecnologia}\n`;
|
||||||
|
|
||||||
if (servico.velocidade_down) {
|
if (servico.velocidade_down) {
|
||||||
message += `⬇️ Download: ${servico.velocidade_down} Mbps\n`;
|
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
|
// Dados FTTH - usando campos reais da API
|
||||||
if (servico.tecnologia === 'FTTH' || servico.pon || servico.serial) {
|
if (servico.tecnologia === 'FTTH' || servico.pon || servico.serial) {
|
||||||
message += `\n📡 **Dados FTTH:**\n`;
|
message += `\n📡 Dados FTTH:\n`;
|
||||||
|
|
||||||
if (servico.base || servico.id_ap) {
|
if (servico.base || servico.id_ap) {
|
||||||
message += `🔌 Base/AP: ${servico.base || `AP ${servico.id_ap}`}\n`;
|
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) {
|
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) {
|
if (servico.ultimo_tx_power) {
|
||||||
@@ -2734,21 +2772,21 @@ Digite /help para ver todos os comandos disponíveis!
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (servico.ultimo_acesso) {
|
if (servico.ultimo_acesso) {
|
||||||
message += `� Último acesso: ${servico.ultimo_acesso}\n`;
|
message += `🕐 Último acesso: ${servico.ultimo_acesso}\n`;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (servico.ultimo_ip) {
|
if (servico.ultimo_ip) {
|
||||||
message += `🌐 Último IP: \`${servico.ultimo_ip}\`\n`;
|
message += `🌐 Último IP: ${servico.ultimo_ip}\n`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dados de instalação
|
// Dados de instalação
|
||||||
if (servico.instalacao_endereco) {
|
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`;
|
message += `🏠 ${servico.instalacao_endereco}, ${servico.instalacao_numero || 'S/N'}\n`;
|
||||||
|
|
||||||
if (servico.instalacao_complemento) {
|
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`;
|
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`;
|
message += `\n`;
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
message += `⚙️ **SERVIÇOS**: Nenhum serviço encontrado\n\n`;
|
message += `⚙️ SERVIÇOS: Nenhum serviço encontrado\n\n`;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Botões de ação
|
// Botões de ação
|
||||||
@@ -2780,19 +2818,34 @@ Digite /help para ver todos os comandos disponíveis!
|
|||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
await this.bot.sendMessage(chatId, message, {
|
console.log('📝 Enviando dados do cliente');
|
||||||
parse_mode: 'Markdown',
|
|
||||||
reply_markup: {
|
try {
|
||||||
inline_keyboard: keyboard
|
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) {
|
} catch (error) {
|
||||||
console.error('❌ Erro ao buscar dados do cliente:', error);
|
console.error('❌ Erro ao buscar dados do cliente:', error);
|
||||||
await this.bot.sendMessage(chatId,
|
await this.bot.sendMessage(chatId,
|
||||||
`❌ **Erro ao buscar dados do cliente**\n\n` +
|
`❌ Erro ao buscar dados do cliente\n\n` +
|
||||||
`⚠️ ${error.message}`,
|
`⚠️ ${error.message}`
|
||||||
{ parse_mode: 'Markdown' }
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user