Files
crm.clientright.ru/n8n_code_extract_user_data.js
Fedor 01c4fe80b5 chore: snapshot current working tree changes
Save all currently accumulated repository changes as a backup snapshot for Gitea so no local work is lost.
2026-03-26 14:19:01 +03:00

73 lines
2.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// ============================================
// 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 }];