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