Files
crm.clientright.ru/n8n_code_extract_user_data.js

73 lines
2.4 KiB
JavaScript
Raw Normal View History

// ============================================
// Code нода: Извлечение данных пользователя для записи в БД
// ============================================
// Эта нода должна идти ПОСЛЕ первой Code ноды, которая обрабатывает raw_update
// Входные данные: результат первой Code ноды с полями telegram_id, chat_id, answer_text, answer_type, channel, raw_update
const input = $input.item.json;
const rawUpdate = input.raw_update;
// Инициализируем результат
const result = {
telegram_id: input.telegram_id,
chat_id: input.chat_id,
username: null,
real_first_name: null,
real_last_name: null,
language_code: null,
is_premium: null,
last_activity_at: null,
message_id: null,
answer_text: input.answer_text,
answer_type: input.answer_type,
channel: input.channel || 'telegram',
raw_update: rawUpdate
};
// Определяем источник данных (message или callback_query)
let userData = null;
let messageData = null;
let dateValue = null;
if (rawUpdate.callback_query) {
// Данные из callback_query
userData = rawUpdate.callback_query.from;
messageData = rawUpdate.callback_query.message;
dateValue = messageData?.date;
result.message_id = messageData?.message_id;
} else if (rawUpdate.message) {
// Данные из message
userData = rawUpdate.message.from;
messageData = rawUpdate.message;
dateValue = messageData?.date;
result.message_id = messageData?.message_id;
}
// Извлекаем данные пользователя
if (userData) {
result.username = userData.username || null;
result.real_first_name = userData.first_name || null;
result.real_last_name = userData.last_name || null;
result.language_code = userData.language_code || null;
result.is_premium = userData.is_premium !== undefined ? userData.is_premium : null;
}
// Извлекаем дату (Unix timestamp)
if (dateValue) {
result.last_activity_at = dateValue;
} else if (messageData?.date) {
result.last_activity_at = messageData.date;
}
// Проверки обязательных полей
if (!result.telegram_id) {
throw new Error('Не удалось извлечь telegram_id');
}
if (!result.chat_id) {
throw new Error('Не удалось извлечь chat_id');
}
// Возвращаем результат
return [{ json: result }];