ваше сообщение коммита

This commit is contained in:
2025-05-28 16:23:11 +03:00
parent 093e599847
commit cd6e9bc663
12 changed files with 1148 additions and 102 deletions

View File

@@ -11,6 +11,7 @@ const db = require('./db'); // Добавляем импорт db
const aiAssistant = require('./services/ai-assistant'); // Добавляем импорт aiAssistant
const fs = require('fs');
const path = require('path');
const messagesRoutes = require('./routes/messages');
// Проверка и создание директорий для хранения данных контрактов
const ensureDirectoriesExist = () => {
@@ -77,7 +78,7 @@ app.use(
'http://127.0.0.1:5173', // Добавляем альтернативный origin
],
credentials: true,
methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'],
allowedHeaders: ['Content-Type', 'Authorization', 'Cookie'],
})
);
@@ -163,6 +164,7 @@ app.use('/api/isic', isicRoutes); // Добавленное использова
app.use('/api/geocoding', geocodingRoutes); // Добавленное использование роута
app.use('/api/dle', dleRoutes); // Добавляем маршрут DLE
app.use('/api/settings', settingsRoutes); // Добавляем маршрут настроек
app.use('/api/messages', messagesRoutes);
const nonceStore = new Map(); // или любая другая реализация хранилища nonce

View File

@@ -97,10 +97,4 @@ async function saveGuestMessageToDatabase(message, language, guestId) {
}
// Экспортируем функции для работы с базой данных
module.exports = {
getPool,
getQuery,
reinitPoolFromDbSettings,
saveGuestMessageToDatabase,
setPoolChangeCallback,
};
module.exports = { getQuery, pool, getPool, setPoolChangeCallback };

View File

@@ -0,0 +1,2 @@
-- Добавление поля preferred_language для хранения языков пользователя (множественный выбор)
ALTER TABLE users ADD COLUMN preferred_language jsonb;

View File

@@ -1,83 +1,664 @@
{"level":"info","message":"Директория существует: /app/contracts-data","timestamp":"2025-05-28T11:14:31.805Z"}
{"level":"info","message":"Директория доступна для записи: /app/contracts-data","timestamp":"2025-05-28T11:14:31.808Z"}
{"level":"info","message":"Директория существует: /app/contracts-data/dles","timestamp":"2025-05-28T11:14:31.808Z"}
{"level":"info","message":"Директория доступна для записи: /app/contracts-data/dles","timestamp":"2025-05-28T11:14:31.810Z"}
{"level":"info","message":"Директория существует: /app/temp","timestamp":"2025-05-28T11:14:31.810Z"}
{"level":"info","message":"Директория доступна для записи: /app/temp","timestamp":"2025-05-28T11:14:31.811Z"}
{"level":"info","message":"Ethers version: 6.13.5","timestamp":"2025-05-28T11:14:32.459Z"}
{"level":"info","message":"[EmailBot] start() called","timestamp":"2025-05-28T11:14:32.469Z"}
{"host":"mail.hostland.ru","keepalive":{"forceNoop":true,"idleInterval":300000,"interval":10000},"level":"info","message":"[EmailBot] IMAP config:","password":"***","port":993,"timestamp":"2025-05-28T11:14:32.522Z","tls":true,"tlsOptions":{"rejectUnauthorized":false},"user":"info@hb3-accelerator.com"}
{"level":"info","message":"[EmailBot] IMAP connect attempt 1","timestamp":"2025-05-28T11:14:32.523Z"}
{"level":"info","message":"[EmailBot] IMAP connection ready","timestamp":"2025-05-28T11:14:37.608Z"}
{"level":"info","message":"[EmailBot] Email bot started and IMAP connection initiated","timestamp":"2025-05-28T11:14:37.612Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T11:14:38.439Z"}
{"level":"info","message":"Директория существует: /app/contracts-data","timestamp":"2025-05-28T11:18:59.102Z"}
{"level":"info","message":"Директория доступна для записи: /app/contracts-data","timestamp":"2025-05-28T11:18:59.105Z"}
{"level":"info","message":"Директория существует: /app/contracts-data/dles","timestamp":"2025-05-28T11:18:59.106Z"}
{"level":"info","message":"Директория доступна для записи: /app/contracts-data/dles","timestamp":"2025-05-28T11:18:59.107Z"}
{"level":"info","message":"Директория существует: /app/temp","timestamp":"2025-05-28T11:18:59.108Z"}
{"level":"info","message":"Директория доступна для записи: /app/temp","timestamp":"2025-05-28T11:18:59.109Z"}
{"level":"info","message":"Ethers version: 6.13.5","timestamp":"2025-05-28T11:18:59.493Z"}
{"level":"info","message":"[EmailBot] start() called","timestamp":"2025-05-28T11:18:59.514Z"}
{"host":"mail.hostland.ru","keepalive":{"forceNoop":true,"idleInterval":300000,"interval":10000},"level":"info","message":"[EmailBot] IMAP config:","password":"***","port":993,"timestamp":"2025-05-28T11:18:59.627Z","tls":true,"tlsOptions":{"rejectUnauthorized":false},"user":"info@hb3-accelerator.com"}
{"level":"info","message":"[EmailBot] IMAP connect attempt 1","timestamp":"2025-05-28T11:18:59.628Z"}
{"level":"info","message":"[EmailBot] IMAP connection ready","timestamp":"2025-05-28T11:19:00.194Z"}
{"level":"info","message":"[EmailBot] Email bot started and IMAP connection initiated","timestamp":"2025-05-28T11:19:00.198Z"}
{"level":"info","message":"[IdentityService] No user found with identity email:avtarabanov@gmail.com","timestamp":"2025-05-28T11:19:01.087Z"}
{"level":"info","message":"[IdentityService] Saving identity for user 96: email:avtarabanov@gmail.com","timestamp":"2025-05-28T11:19:01.094Z"}
{"level":"info","message":"[IdentityService] Created new identity email:avtarabanov@gmail.com for user 96","timestamp":"2025-05-28T11:19:01.113Z"}
{"level":"info","message":"[getLinkedWallet] Called with userId: 96 (Type: number)","timestamp":"2025-05-28T11:19:01.113Z"}
{"level":"info","message":"[getLinkedWallet] DB query result for userId 96:","timestamp":"2025-05-28T11:19:01.115Z"}
{"level":"info","message":"[getLinkedWallet] Returning address: undefined for userId 96","timestamp":"2025-05-28T11:19:01.116Z"}
{"level":"info","message":"Email sent to avtarabanov@gmail.com","timestamp":"2025-05-28T11:19:42.428Z"}
{"level":"error","message":"[EmailBot] IMAP connection error: Timed out while authenticating with server","timestamp":"2025-05-28T11:19:59.653Z"}
{"level":"warn","message":"[EmailBot] IMAP reconnecting in 10 seconds (attempt 2)...","timestamp":"2025-05-28T11:19:59.654Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T11:19:59.654Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T11:19:59.654Z"}
{"level":"info","message":"[EmailBot] IMAP connect attempt 2","timestamp":"2025-05-28T11:20:09.668Z"}
{"level":"info","message":"[EmailBot] IMAP connection ready","timestamp":"2025-05-28T11:20:10.393Z"}
{"level":"info","message":"[EmailBot] Email bot started and IMAP connection initiated","timestamp":"2025-05-28T11:20:10.394Z"}
{"level":"info","message":"[IdentityService] Found user 96 with identity email:avtarabanov@gmail.com","timestamp":"2025-05-28T11:20:11.292Z"}
{"level":"info","message":"[getLinkedWallet] Called with userId: 96 (Type: number)","timestamp":"2025-05-28T11:20:11.293Z"}
{"level":"info","message":"[getLinkedWallet] DB query result for userId 96:","timestamp":"2025-05-28T11:20:11.295Z"}
{"level":"info","message":"[getLinkedWallet] Returning address: undefined for userId 96","timestamp":"2025-05-28T11:20:11.295Z"}
{"level":"info","message":"Email sent to avtarabanov@gmail.com","timestamp":"2025-05-28T11:20:17.273Z"}
{"level":"info","message":"[IdentityService] Found user 96 with identity email:avtarabanov@gmail.com","timestamp":"2025-05-28T11:20:50.149Z"}
{"level":"info","message":"[getLinkedWallet] Called with userId: 96 (Type: number)","timestamp":"2025-05-28T11:20:50.150Z"}
{"level":"info","message":"[getLinkedWallet] DB query result for userId 96:","timestamp":"2025-05-28T11:20:50.151Z"}
{"level":"info","message":"[getLinkedWallet] Returning address: undefined for userId 96","timestamp":"2025-05-28T11:20:50.152Z"}
{"level":"info","message":"Email sent to avtarabanov@gmail.com","timestamp":"2025-05-28T11:21:00.967Z"}
{"level":"info","message":"[IdentityService] Found user 96 with identity email:avtarabanov@gmail.com","timestamp":"2025-05-28T11:21:06.155Z"}
{"level":"info","message":"[getLinkedWallet] Called with userId: 96 (Type: number)","timestamp":"2025-05-28T11:21:06.155Z"}
{"level":"info","message":"[getLinkedWallet] DB query result for userId 96:","timestamp":"2025-05-28T11:21:06.157Z"}
{"level":"info","message":"[getLinkedWallet] Returning address: undefined for userId 96","timestamp":"2025-05-28T11:21:06.157Z"}
{"level":"info","message":"Email sent to avtarabanov@gmail.com","timestamp":"2025-05-28T11:21:11.991Z"}
{"level":"info","message":"[IdentityService] Found user 96 with identity email:avtarabanov@gmail.com","timestamp":"2025-05-28T11:21:45.098Z"}
{"level":"info","message":"[getLinkedWallet] Called with userId: 96 (Type: number)","timestamp":"2025-05-28T11:21:45.099Z"}
{"level":"info","message":"[getLinkedWallet] DB query result for userId 96:","timestamp":"2025-05-28T11:21:45.100Z"}
{"level":"info","message":"[getLinkedWallet] Returning address: undefined for userId 96","timestamp":"2025-05-28T11:21:45.101Z"}
{"level":"info","message":"Email sent to avtarabanov@gmail.com","timestamp":"2025-05-28T11:21:52.644Z"}
{"level":"info","message":"[IdentityService] Found user 96 with identity email:avtarabanov@gmail.com","timestamp":"2025-05-28T11:22:01.200Z"}
{"level":"info","message":"[getLinkedWallet] Called with userId: 96 (Type: number)","timestamp":"2025-05-28T11:22:01.200Z"}
{"level":"info","message":"[getLinkedWallet] DB query result for userId 96:","timestamp":"2025-05-28T11:22:01.202Z"}
{"level":"info","message":"[getLinkedWallet] Returning address: undefined for userId 96","timestamp":"2025-05-28T11:22:01.202Z"}
{"code":"EPROTOCOL","command":"CONN","level":"error","message":"Error sending email: Invalid greeting. response=421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220: 421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220","response":"421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220","responseCode":421,"stack":"Error: Invalid greeting. response=421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220: 421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220\n at SMTPConnection._actionGreeting (/app/node_modules/nodemailer/lib/smtp-connection/index.js:1251:27)\n at SMTPConnection._processResponse (/app/node_modules/nodemailer/lib/smtp-connection/index.js:993:20)\n at SMTPConnection._onData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:774:14)\n at SMTPConnection._onSocketData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:195:44)\n at TLSSocket.emit (node:events:524:28)\n at addChunk (node:internal/streams/readable:561:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)\n at Readable.push (node:internal/streams/readable:392:5)\n at TLSWrap.onStreamRead (node:internal/stream_base_commons:191:23)","timestamp":"2025-05-28T11:22:09.742Z"}
{"code":"EPROTOCOL","command":"CONN","level":"error","message":"Error processing incoming email: Invalid greeting. response=421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220: 421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220","response":"421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220","responseCode":421,"stack":"Error: Invalid greeting. response=421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220: 421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220\n at SMTPConnection._actionGreeting (/app/node_modules/nodemailer/lib/smtp-connection/index.js:1251:27)\n at SMTPConnection._processResponse (/app/node_modules/nodemailer/lib/smtp-connection/index.js:993:20)\n at SMTPConnection._onData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:774:14)\n at SMTPConnection._onSocketData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:195:44)\n at TLSSocket.emit (node:events:524:28)\n at addChunk (node:internal/streams/readable:561:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)\n at Readable.push (node:internal/streams/readable:392:5)\n at TLSWrap.onStreamRead (node:internal/stream_base_commons:191:23)","timestamp":"2025-05-28T11:22:09.743Z"}
{"level":"info","message":"[IdentityService] Found user 96 with identity email:avtarabanov@gmail.com","timestamp":"2025-05-28T11:22:40.095Z"}
{"level":"info","message":"[getLinkedWallet] Called with userId: 96 (Type: number)","timestamp":"2025-05-28T11:22:40.096Z"}
{"level":"info","message":"[getLinkedWallet] DB query result for userId 96:","timestamp":"2025-05-28T11:22:40.097Z"}
{"level":"info","message":"[getLinkedWallet] Returning address: undefined for userId 96","timestamp":"2025-05-28T11:22:40.097Z"}
{"code":"EPROTOCOL","command":"CONN","level":"error","message":"Error sending email: Invalid greeting. response=421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220: 421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220","response":"421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220","responseCode":421,"stack":"Error: Invalid greeting. response=421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220: 421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220\n at SMTPConnection._actionGreeting (/app/node_modules/nodemailer/lib/smtp-connection/index.js:1251:27)\n at SMTPConnection._processResponse (/app/node_modules/nodemailer/lib/smtp-connection/index.js:993:20)\n at SMTPConnection._onData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:774:14)\n at SMTPConnection._onSocketData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:195:44)\n at TLSSocket.emit (node:events:524:28)\n at addChunk (node:internal/streams/readable:561:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)\n at Readable.push (node:internal/streams/readable:392:5)\n at TLSWrap.onStreamRead (node:internal/stream_base_commons:191:23)","timestamp":"2025-05-28T11:22:51.094Z"}
{"code":"EPROTOCOL","command":"CONN","level":"error","message":"Error processing incoming email: Invalid greeting. response=421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220: 421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220","response":"421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220","responseCode":421,"stack":"Error: Invalid greeting. response=421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220: 421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220\n at SMTPConnection._actionGreeting (/app/node_modules/nodemailer/lib/smtp-connection/index.js:1251:27)\n at SMTPConnection._processResponse (/app/node_modules/nodemailer/lib/smtp-connection/index.js:993:20)\n at SMTPConnection._onData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:774:14)\n at SMTPConnection._onSocketData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:195:44)\n at TLSSocket.emit (node:events:524:28)\n at addChunk (node:internal/streams/readable:561:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)\n at Readable.push (node:internal/streams/readable:392:5)\n at TLSWrap.onStreamRead (node:internal/stream_base_commons:191:23)","timestamp":"2025-05-28T11:22:51.094Z"}
{"level":"info","message":"[IdentityService] Found user 96 with identity email:avtarabanov@gmail.com","timestamp":"2025-05-28T11:22:56.139Z"}
{"level":"info","message":"[getLinkedWallet] Called with userId: 96 (Type: number)","timestamp":"2025-05-28T11:22:56.140Z"}
{"level":"info","message":"[getLinkedWallet] DB query result for userId 96:","timestamp":"2025-05-28T11:22:56.141Z"}
{"level":"info","message":"[getLinkedWallet] Returning address: undefined for userId 96","timestamp":"2025-05-28T11:22:56.141Z"}
{"code":"EPROTOCOL","command":"CONN","level":"error","message":"Error sending email: Invalid greeting. response=421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220: 421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220","response":"421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220","responseCode":421,"stack":"Error: Invalid greeting. response=421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220: 421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220\n at SMTPConnection._actionGreeting (/app/node_modules/nodemailer/lib/smtp-connection/index.js:1251:27)\n at SMTPConnection._processResponse (/app/node_modules/nodemailer/lib/smtp-connection/index.js:993:20)\n at SMTPConnection._onData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:774:14)\n at SMTPConnection._onSocketData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:195:44)\n at TLSSocket.emit (node:events:524:28)\n at addChunk (node:internal/streams/readable:561:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)\n at Readable.push (node:internal/streams/readable:392:5)\n at TLSWrap.onStreamRead (node:internal/stream_base_commons:191:23)","timestamp":"2025-05-28T11:23:00.237Z"}
{"code":"EPROTOCOL","command":"CONN","level":"error","message":"Error processing incoming email: Invalid greeting. response=421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220: 421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220","response":"421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220","responseCode":421,"stack":"Error: Invalid greeting. response=421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220: 421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220\n at SMTPConnection._actionGreeting (/app/node_modules/nodemailer/lib/smtp-connection/index.js:1251:27)\n at SMTPConnection._processResponse (/app/node_modules/nodemailer/lib/smtp-connection/index.js:993:20)\n at SMTPConnection._onData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:774:14)\n at SMTPConnection._onSocketData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:195:44)\n at TLSSocket.emit (node:events:524:28)\n at addChunk (node:internal/streams/readable:561:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)\n at Readable.push (node:internal/streams/readable:392:5)\n at TLSWrap.onStreamRead (node:internal/stream_base_commons:191:23)","timestamp":"2025-05-28T11:23:00.237Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T11:23:24.639Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T11:23:24.661Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T11:23:24.673Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T11:23:24.682Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T11:23:24.693Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T11:23:24.704Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:02:07.765Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:02:13.313Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:02:13.318Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:02:13.337Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:02:13.339Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:02:13.350Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:02:13.356Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:02:13.370Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:02:13.374Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:02:13.388Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:02:13.391Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:02:13.407Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:02:13.411Z"}
{"level":"info","message":"PATCH /api/users/13","timestamp":"2025-05-28T13:02:23.168Z"}
{"level":"info","message":"PATCH /api/users/13","timestamp":"2025-05-28T13:02:27.166Z"}
{"level":"info","message":"PATCH /api/users/13","timestamp":"2025-05-28T13:02:29.854Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:02:43.540Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:02:43.545Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:02:43.560Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:02:43.563Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:02:43.573Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:02:43.576Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:02:43.591Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:02:43.597Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:02:43.614Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:02:43.617Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:02:43.636Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:02:43.639Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:02:53.678Z"}
{"level":"error","message":"[EmailBot] IMAP connection error: Timed out while authenticating with server","timestamp":"2025-05-28T13:03:06.859Z"}
{"level":"warn","message":"[EmailBot] IMAP reconnecting in 10 seconds (attempt 3)...","timestamp":"2025-05-28T13:03:06.860Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:03:06.860Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:03:06.860Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:03:06.860Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:03:06.861Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:03:06.861Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:03:06.861Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:03:06.861Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:03:13.521Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:03:13.531Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:03:13.557Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:03:13.560Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:03:13.593Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:03:13.598Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:03:13.634Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:03:13.642Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:03:13.660Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:03:13.665Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:03:13.683Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:03:13.685Z"}
{"level":"info","message":"[EmailBot] IMAP connect attempt 3","timestamp":"2025-05-28T13:03:16.868Z"}
{"level":"info","message":"[EmailBot] IMAP connection ready","timestamp":"2025-05-28T13:03:17.471Z"}
{"level":"info","message":"[EmailBot] Email bot started and IMAP connection initiated","timestamp":"2025-05-28T13:03:17.473Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:03:23.798Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:03:48.341Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:03:57.375Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:04:04.340Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:04:04.362Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:04:04.379Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:04:04.383Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:04:04.402Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:04:04.409Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:04:04.435Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:04:04.438Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:04:04.457Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:04:04.460Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:04:04.482Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:04:04.485Z"}
{"level":"info","message":"PATCH /api/users/13","timestamp":"2025-05-28T13:04:06.073Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:04:13.965Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:04:13.967Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:04:13.987Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:04:13.990Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:04:14.010Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:04:14.014Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:04:14.028Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:04:14.032Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:04:14.053Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:04:14.063Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:04:14.079Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:04:14.083Z"}
{"level":"error","message":"[EmailBot] IMAP connection error: Timed out while authenticating with server","timestamp":"2025-05-28T13:04:17.747Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:04:17.747Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:04:17.748Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:04:17.748Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:04:17.748Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:04:43.277Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:04:44.204Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:04:44.208Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:04:44.228Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:04:44.231Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:04:44.247Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:04:44.253Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:04:44.267Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:04:44.269Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:04:44.284Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:04:44.288Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:04:44.312Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:04:44.317Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:04:56.674Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:04:56.745Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:04:56.784Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:05:12.662Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:05:12.663Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:05:38.648Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:05:38.697Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:05:45.752Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:05:45.761Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:05:45.775Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:05:45.777Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:05:45.798Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:05:45.809Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:05:45.847Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:05:45.850Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:05:45.872Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:05:45.874Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:05:45.892Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:05:45.894Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:05:51.635Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:06:07.601Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:06:07.608Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:06:07.609Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:06:32.967Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:06:33.045Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:06:44.699Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:06:44.714Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:06:44.717Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:06:44.744Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:06:44.748Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:06:44.761Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:06:44.764Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:06:44.791Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:06:44.793Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:06:44.807Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:06:44.810Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:06:44.821Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:06:44.823Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:06:58.150Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:07:23.712Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:07:41.568Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:07:41.568Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:07:41.569Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:07:41.569Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:07:41.569Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:07:46.782Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:07:46.789Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:07:46.822Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:07:46.830Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:07:46.845Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:07:46.848Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:07:46.861Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:07:46.863Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:07:46.881Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:07:46.884Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:07:46.894Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:07:46.899Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:07:53.443Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:07:53.491Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:08:22.751Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:08:36.453Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:08:47.821Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:08:47.827Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:08:47.852Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:08:47.869Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:08:47.887Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:08:47.891Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:08:47.909Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:08:47.912Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:08:47.933Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:08:47.935Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:08:47.953Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:08:47.957Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:08:52.415Z"}
{"level":"info","message":"Директория существует: /app/contracts-data","timestamp":"2025-05-28T13:09:08.491Z"}
{"level":"info","message":"Директория доступна для записи: /app/contracts-data","timestamp":"2025-05-28T13:09:08.557Z"}
{"level":"info","message":"Директория существует: /app/contracts-data/dles","timestamp":"2025-05-28T13:09:08.558Z"}
{"level":"info","message":"Директория доступна для записи: /app/contracts-data/dles","timestamp":"2025-05-28T13:09:08.564Z"}
{"level":"info","message":"Директория существует: /app/temp","timestamp":"2025-05-28T13:09:08.565Z"}
{"level":"info","message":"Директория доступна для записи: /app/temp","timestamp":"2025-05-28T13:09:08.567Z"}
{"level":"info","message":"Ethers version: 6.13.5","timestamp":"2025-05-28T13:09:13.816Z"}
{"level":"info","message":"[EmailBot] start() called","timestamp":"2025-05-28T13:09:13.842Z"}
{"host":"mail.hostland.ru","keepalive":{"forceNoop":true,"idleInterval":300000,"interval":10000},"level":"info","message":"[EmailBot] IMAP config:","password":"***","port":993,"timestamp":"2025-05-28T13:09:13.955Z","tls":true,"tlsOptions":{"rejectUnauthorized":false},"user":"info@hb3-accelerator.com"}
{"level":"info","message":"[EmailBot] IMAP connect attempt 1","timestamp":"2025-05-28T13:09:13.958Z"}
{"level":"info","message":"[EmailBot] IMAP connection ready","timestamp":"2025-05-28T13:09:19.185Z"}
{"level":"info","message":"[EmailBot] Email bot started and IMAP connection initiated","timestamp":"2025-05-28T13:09:19.190Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:09:24.232Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:09:49.791Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:09:49.800Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:09:50.292Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:09:50.296Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:09:50.373Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:09:50.376Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:09:50.402Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:09:50.417Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:09:50.440Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:09:50.442Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:09:50.458Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:09:50.460Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:10:15.881Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:10:54.211Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:10:54.216Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:10:54.234Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:10:54.237Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:10:54.251Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:10:54.254Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:10:54.269Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:10:54.273Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:10:54.286Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:10:54.289Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:10:54.310Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:10:54.314Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:11:09.745Z"}
{"level":"info","message":"Executing UP migration from 026_add_preferred_language_to_users.sql...","timestamp":"2025-05-28T13:11:42.195Z"}
{"level":"info","message":"Migration 026_add_preferred_language_to_users.sql executed successfully","timestamp":"2025-05-28T13:11:42.217Z"}
{"level":"info","message":"Function link_guest_messages.sql executed successfully","timestamp":"2025-05-28T13:11:42.971Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:11:49.604Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:11:49.608Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:11:49.619Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:11:49.621Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:11:51.449Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:11:51.470Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:11:51.495Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:11:51.497Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:11:51.508Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:11:51.510Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:11:51.520Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:11:51.522Z"}
{"level":"info","message":"Директория существует: /app/contracts-data","timestamp":"2025-05-28T13:12:00.418Z"}
{"level":"info","message":"Директория доступна для записи: /app/contracts-data","timestamp":"2025-05-28T13:12:00.423Z"}
{"level":"info","message":"Директория существует: /app/contracts-data/dles","timestamp":"2025-05-28T13:12:00.424Z"}
{"level":"info","message":"Директория доступна для записи: /app/contracts-data/dles","timestamp":"2025-05-28T13:12:00.426Z"}
{"level":"info","message":"Директория существует: /app/temp","timestamp":"2025-05-28T13:12:00.427Z"}
{"level":"info","message":"Директория доступна для записи: /app/temp","timestamp":"2025-05-28T13:12:00.429Z"}
{"level":"info","message":"Ethers version: 6.13.5","timestamp":"2025-05-28T13:12:07.330Z"}
{"level":"info","message":"[EmailBot] start() called","timestamp":"2025-05-28T13:12:07.358Z"}
{"host":"mail.hostland.ru","keepalive":{"forceNoop":true,"idleInterval":300000,"interval":10000},"level":"info","message":"[EmailBot] IMAP config:","password":"***","port":993,"timestamp":"2025-05-28T13:12:07.447Z","tls":true,"tlsOptions":{"rejectUnauthorized":false},"user":"info@hb3-accelerator.com"}
{"level":"info","message":"[EmailBot] IMAP connect attempt 1","timestamp":"2025-05-28T13:12:07.452Z"}
{"level":"error","message":"[EmailBot] IMAP connection error: Timed out while authenticating with server","timestamp":"2025-05-28T13:12:13.523Z"}
{"level":"warn","message":"[EmailBot] IMAP reconnecting in 10 seconds (attempt 2)...","timestamp":"2025-05-28T13:12:13.524Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:12:13.901Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:13.908Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:18.961Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:18.969Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:12:19.012Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:19.014Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:19.052Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:19.056Z"}
{"level":"info","message":"GET /api/tokens/balances?address=0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-05-28T13:12:19.088Z"}
{"level":"info","message":"Fetching token balances for address: 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-05-28T13:12:19.090Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:19.115Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:19.126Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:19.256Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:19.259Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:12:19.626Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:19.629Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:12:19.653Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:19.669Z"}
{"level":"info","message":"GET /api/dle","timestamp":"2025-05-28T13:12:19.692Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:12:19.733Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:19.744Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:19.827Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:12:19.834Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:19.837Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:19.841Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:12:19.889Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:19.895Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:20.794Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:20.803Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:12:20.810Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:20.813Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:20.831Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:20.835Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:12:20.839Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:20.842Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:20.873Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:20.878Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:12:20.888Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:20.890Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:20.905Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:20.909Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:20.924Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:12:20.929Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:20.932Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:20.935Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:20.947Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:20.955Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:12:20.963Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:20.974Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:20.993Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:20.996Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:21.016Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:21.021Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:21.040Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:21.042Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:21.061Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:21.068Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:21.085Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:21.087Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:21.103Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:21.107Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:21.127Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:21.129Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:21.145Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:21.148Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:21.174Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:21.178Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:21.196Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:21.198Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:21.214Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:21.217Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:21.236Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:21.240Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:21.257Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:21.261Z"}
{"level":"info","message":"[EmailBot] IMAP connect attempt 2","timestamp":"2025-05-28T13:12:21.082Z"}
{"level":"info","message":"[EmailBot] IMAP connection ready","timestamp":"2025-05-28T13:12:22.374Z"}
{"level":"info","message":"[EmailBot] Email bot started and IMAP connection initiated","timestamp":"2025-05-28T13:12:22.378Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:12:23.844Z"}
{"level":"info","message":"GET /api/users","timestamp":"2025-05-28T13:12:27.308Z"}
{"level":"info","message":"GET /api/messages?userId=90","timestamp":"2025-05-28T13:12:33.034Z"}
{"level":"info","message":"PATCH /api/users/90","timestamp":"2025-05-28T13:12:41.021Z"}
{"level":"info","message":"PATCH /api/users/90","timestamp":"2025-05-28T13:12:43.063Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:46.888Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:46.891Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:49.531Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:49.534Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:49.546Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:49.550Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:49.571Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:49.580Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:49.601Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:49.604Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:12:49.642Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:12:49.644Z"}
{"level":"info","message":"PATCH /api/users/90","timestamp":"2025-05-28T13:13:18.947Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:21.855Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:21.859Z"}
{"level":"info","message":"GET /api/messages?userId=96","timestamp":"2025-05-28T13:13:23.756Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:13:24.400Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:29.681Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:29.700Z"}
{"level":"info","message":"GET /api/messages?userId=96","timestamp":"2025-05-28T13:13:29.723Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:29.747Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:29.753Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:29.773Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:29.779Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:29.800Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:29.803Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:29.814Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:29.819Z"}
{"level":"info","message":"PATCH /api/users/96","timestamp":"2025-05-28T13:13:33.171Z"}
{"level":"info","message":"PATCH /api/users/96","timestamp":"2025-05-28T13:13:33.550Z"}
{"level":"info","message":"PATCH /api/users/96","timestamp":"2025-05-28T13:13:34.571Z"}
{"level":"info","message":"PATCH /api/users/96","timestamp":"2025-05-28T13:13:36.772Z"}
{"level":"info","message":"PATCH /api/users/96","timestamp":"2025-05-28T13:13:39.354Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:13:48.297Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:48.299Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:48.491Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:48.494Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:13:48.517Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:48.519Z"}
{"level":"info","message":"GET /api/tokens/balances?address=0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-05-28T13:13:48.554Z"}
{"level":"info","message":"Fetching token balances for address: 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-05-28T13:13:48.555Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:13:48.559Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:48.562Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:13:49.641Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:52.382Z"}
{"level":"info","message":"GET /api/users","timestamp":"2025-05-28T13:13:52.400Z"}
{"level":"info","message":"GET /api/dle","timestamp":"2025-05-28T13:13:52.402Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:52.418Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:52.423Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:13:52.443Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:52.448Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:54.680Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:54.683Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:13:54.687Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:54.692Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:54.709Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:54.719Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:13:54.728Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:54.732Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:54.748Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:54.763Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:13:54.782Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:54.787Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:54.802Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:54.813Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:13:54.833Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:54.840Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:54.864Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:54.867Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:13:54.898Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:54.906Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:54.908Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:54.911Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:54.936Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:54.938Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:13:54.941Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:54.947Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:54.956Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:54.959Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:13:54.978Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:54.982Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:54.987Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:54.994Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:55.014Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:55.018Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:55.051Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:55.053Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:55.070Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:55.073Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:55.092Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:55.094Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:55.111Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:55.114Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:55.131Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:55.134Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:55.151Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:55.154Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:55.168Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:55.171Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:55.198Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:55.202Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:55.225Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:55.228Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:55.245Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:55.250Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:55.271Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:55.273Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:13:55.287Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:13:55.289Z"}
{"level":"info","message":"POST /api/auth/logout","timestamp":"2025-05-28T13:14:06.836Z"}
{"address":null,"authType":null,"authenticated":false,"cookie":{"expires":"2025-06-27T11:09:43.800Z","httpOnly":true,"originalMaxAge":2592000000,"path":"/","sameSite":"lax","secure":false},"email":null,"guestId":null,"isAdmin":false,"level":"info","message":"[SessionService] Saving session data:","pendingEmail":null,"previousGuestId":null,"processedGuestIds":[],"telegramId":null,"timestamp":"2025-05-28T13:14:06.837Z","userId":null}
{"level":"info","message":"Session saved successfully","timestamp":"2025-05-28T13:14:06.842Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:14:06.856Z"}
{"cookie":{"expires":"2025-06-27T13:14:06.854Z","httpOnly":true,"originalMaxAge":2592000000,"path":"/","sameSite":"lax","secure":false},"guestId":"3fe8a3e22225b0e8b06d7b4b3098ecf9","level":"info","message":"[SessionService] Saving session data:","timestamp":"2025-05-28T13:14:06.857Z"}
{"level":"info","message":"Session saved successfully","timestamp":"2025-05-28T13:14:06.861Z"}
{"level":"error","message":"[EmailBot] IMAP connection error: Timed out while authenticating with server","timestamp":"2025-05-28T13:14:17.520Z"}
{"level":"warn","message":"[EmailBot] IMAP reconnecting in 10 seconds (attempt 3)...","timestamp":"2025-05-28T13:14:17.521Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:14:17.521Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:14:17.522Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:14:17.522Z"}
{"level":"info","message":"[EmailBot] IMAP connect attempt 3","timestamp":"2025-05-28T13:14:27.529Z"}
{"level":"info","message":"[EmailBot] IMAP connection ready","timestamp":"2025-05-28T13:14:28.651Z"}
{"level":"info","message":"[EmailBot] Email bot started and IMAP connection initiated","timestamp":"2025-05-28T13:14:28.655Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:14:29.491Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:15:08.086Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:15:28.736Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:16:07.430Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:16:19.287Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:17:03.083Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:17:13.102Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:17:58.822Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:18:14.356Z"}
{"level":"info","message":"GET /","timestamp":"2025-05-28T13:18:22.790Z"}
{"level":"error","message":"Error: undefined","timestamp":"2025-05-28T13:18:22.803Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:18:47.896Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:18:48.634Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:18:48.648Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:18:48.658Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:18:48.670Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:18:48.720Z"}
{"level":"info","message":"GET /api/auth/nonce?address=0xF45aa4917b3775bA37f48Aeb3dc1a943561e9e0B","timestamp":"2025-05-28T13:18:52.434Z"}
{"level":"info","message":"Nonce 0ca114de0a1d32e9e42068d34968e368 сохранен для адреса 0xF45aa4917b3775bA37f48Aeb3dc1a943561e9e0B","timestamp":"2025-05-28T13:18:52.441Z"}
{"level":"info","message":"POST /api/auth/verify","timestamp":"2025-05-28T13:18:55.064Z"}
{"level":"info","message":"[verify] Verifying signature for address: 0xF45aa4917b3775bA37f48Aeb3dc1a943561e9e0B","timestamp":"2025-05-28T13:18:55.065Z"}
{"level":"info","message":"Checking admin role for address: 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-05-28T13:18:55.132Z"}
{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"454852.0","contract":"0x351f59de4fedbdf7601f5592b93db3b9330c1c1d","hasTokens":true,"level":"info","message":"Token balance on polygon:","minBalance":"10.000000000000000000","timestamp":"2025-05-28T13:18:55.711Z"}
{"level":"info","message":"Found admin tokens on polygon","timestamp":"2025-05-28T13:18:55.712Z"}
{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"1500000.0","contract":"0xd95a45fc46a7300e6022885afec3d618d7d3f27c","hasTokens":true,"level":"info","message":"Token balance on ethereum:","minBalance":"10.000000000000000000","timestamp":"2025-05-28T13:18:56.141Z"}
{"level":"info","message":"Found admin tokens on ethereum","timestamp":"2025-05-28T13:18:56.141Z"}
{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"499999.9","contract":"0xdCe769b847a0a697239777D0B1C7dd33b6012ba0","hasTokens":true,"level":"info","message":"Token balance on arbitrum:","minBalance":"100.000000000000000000","timestamp":"2025-05-28T13:18:56.266Z"}
{"level":"info","message":"Found admin tokens on arbitrum","timestamp":"2025-05-28T13:18:56.266Z"}
{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"500000.0","contract":"0x4b294265720b09ca39bfba18c7e368413c0f68eb","hasTokens":true,"level":"info","message":"Token balance on bsc:","minBalance":"10.000000000000000000","timestamp":"2025-05-28T13:18:56.268Z"}
{"level":"info","message":"Found admin tokens on bsc","timestamp":"2025-05-28T13:18:56.268Z"}
{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"110.0","contract":"0xef49261169B454f191678D2aFC5E91Ad2e85dfD8","hasTokens":true,"level":"info","message":"Token balance on sepolia:","minBalance":"50.000000000000000000","timestamp":"2025-05-28T13:18:56.276Z"}
{"level":"info","message":"Found admin tokens on sepolia","timestamp":"2025-05-28T13:18:56.276Z"}
{"balances":{"arbitrum":"499999.9","bsc":"500000.0","ethereum":"1500000.0","polygon":"454852.0","sepolia":"110.0"},"level":"info","message":"Admin role summary for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b:","networks":["polygon","ethereum","arbitrum","bsc","sepolia"],"timestamp":"2025-05-28T13:18:56.277Z"}
{"level":"info","message":"Admin role granted for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-05-28T13:18:56.278Z"}
{"level":"info","message":"[verify] Found or created user 1 for wallet 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-05-28T13:18:56.278Z"}
{"level":"info","message":"[IdentityService] Converting guest identity for user 1 to guest_user_mapping: 3fe8a3e22225b0e8b06d7b4b3098ecf9","timestamp":"2025-05-28T13:18:56.279Z"}
{"level":"info","message":"Checking admin tokens for address: 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-05-28T13:18:56.292Z"}
{"level":"info","message":"Checking admin role for address: 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-05-28T13:18:56.292Z"}
{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"500000.0","contract":"0x4b294265720b09ca39bfba18c7e368413c0f68eb","hasTokens":true,"level":"info","message":"Token balance on bsc:","minBalance":"10.000000000000000000","timestamp":"2025-05-28T13:18:56.570Z"}
{"level":"info","message":"Found admin tokens on bsc","timestamp":"2025-05-28T13:18:56.570Z"}
{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"110.0","contract":"0xef49261169B454f191678D2aFC5E91Ad2e85dfD8","hasTokens":true,"level":"info","message":"Token balance on sepolia:","minBalance":"50.000000000000000000","timestamp":"2025-05-28T13:18:56.730Z"}
{"level":"info","message":"Found admin tokens on sepolia","timestamp":"2025-05-28T13:18:56.731Z"}
{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"1500000.0","contract":"0xd95a45fc46a7300e6022885afec3d618d7d3f27c","hasTokens":true,"level":"info","message":"Token balance on ethereum:","minBalance":"10.000000000000000000","timestamp":"2025-05-28T13:18:56.742Z"}
{"level":"info","message":"Found admin tokens on ethereum","timestamp":"2025-05-28T13:18:56.742Z"}
{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"454852.0","contract":"0x351f59de4fedbdf7601f5592b93db3b9330c1c1d","hasTokens":true,"level":"info","message":"Token balance on polygon:","minBalance":"10.000000000000000000","timestamp":"2025-05-28T13:18:56.910Z"}
{"level":"info","message":"Found admin tokens on polygon","timestamp":"2025-05-28T13:18:56.910Z"}
{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","balance":"499999.9","contract":"0xdCe769b847a0a697239777D0B1C7dd33b6012ba0","hasTokens":true,"level":"info","message":"Token balance on arbitrum:","minBalance":"100.000000000000000000","timestamp":"2025-05-28T13:18:56.928Z"}
{"level":"info","message":"Found admin tokens on arbitrum","timestamp":"2025-05-28T13:18:56.928Z"}
{"balances":{"arbitrum":"499999.9","bsc":"500000.0","ethereum":"1500000.0","polygon":"454852.0","sepolia":"110.0"},"level":"info","message":"Admin role summary for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b:","networks":["bsc","sepolia","ethereum","polygon","arbitrum"],"timestamp":"2025-05-28T13:18:56.928Z"}
{"level":"info","message":"Admin role granted for 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-05-28T13:18:56.929Z"}
{"level":"info","message":"Updated user 1 role to admin based on token holdings","timestamp":"2025-05-28T13:18:56.934Z"}
{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","authType":"wallet","authenticated":true,"cookie":{"expires":"2025-06-27T13:14:06.854Z","httpOnly":true,"originalMaxAge":2592000000,"path":"/","sameSite":"lax","secure":false},"guestId":"3fe8a3e22225b0e8b06d7b4b3098ecf9","isAdmin":true,"level":"info","message":"[SessionService] Saving session data:","timestamp":"2025-05-28T13:18:56.937Z","userId":1}
{"level":"info","message":"Session saved successfully","timestamp":"2025-05-28T13:18:56.941Z"}
{"level":"info","message":"[linkGuestMessages] Starting for user 1 with guestId=3fe8a3e22225b0e8b06d7b4b3098ecf9, previousGuestId=undefined","timestamp":"2025-05-28T13:18:56.943Z"}
{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=3fe8a3e22225b0e8b06d7b4b3098ecf9","timestamp":"2025-05-28T13:18:56.949Z"}
{"level":"info","message":"Processing guest messages for user 1 with guest ID 3fe8a3e22225b0e8b06d7b4b3098ecf9","timestamp":"2025-05-28T13:18:56.951Z"}
{"level":"info","message":"No guest messages found for guest ID 3fe8a3e22225b0e8b06d7b4b3098ecf9","timestamp":"2025-05-28T13:18:56.961Z"}
{"level":"info","message":"Marked guest mapping as processed (no messages found) for guest ID 3fe8a3e22225b0e8b06d7b4b3098ecf9","timestamp":"2025-05-28T13:18:56.965Z"}
{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=22ffc8b90cb9797d120322ebfc24fb5f","timestamp":"2025-05-28T13:18:56.969Z"}
{"level":"info","message":"Processing guest messages for user 1 with guest ID 22ffc8b90cb9797d120322ebfc24fb5f","timestamp":"2025-05-28T13:18:56.969Z"}
{"level":"info","message":"Guest messages for guest ID 22ffc8b90cb9797d120322ebfc24fb5f were already processed.","timestamp":"2025-05-28T13:18:56.972Z"}
{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=d66e4157dfd0dd76e64369ee84bf4009","timestamp":"2025-05-28T13:18:56.977Z"}
{"level":"info","message":"Processing guest messages for user 1 with guest ID d66e4157dfd0dd76e64369ee84bf4009","timestamp":"2025-05-28T13:18:56.977Z"}
{"level":"info","message":"Guest messages for guest ID d66e4157dfd0dd76e64369ee84bf4009 were already processed.","timestamp":"2025-05-28T13:18:56.979Z"}
{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=dfb1bffd21993323e084091b0534ff4f","timestamp":"2025-05-28T13:18:56.985Z"}
{"level":"info","message":"Processing guest messages for user 1 with guest ID dfb1bffd21993323e084091b0534ff4f","timestamp":"2025-05-28T13:18:56.985Z"}
{"level":"info","message":"Guest messages for guest ID dfb1bffd21993323e084091b0534ff4f were already processed.","timestamp":"2025-05-28T13:18:56.987Z"}
{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=8f23022510a7d82d4724b6e69619a706","timestamp":"2025-05-28T13:18:56.994Z"}
{"level":"info","message":"Processing guest messages for user 1 with guest ID 8f23022510a7d82d4724b6e69619a706","timestamp":"2025-05-28T13:18:56.994Z"}
{"level":"info","message":"Guest messages for guest ID 8f23022510a7d82d4724b6e69619a706 were already processed.","timestamp":"2025-05-28T13:18:56.995Z"}
{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=b2185db5534f63a29075ae66404db5c1","timestamp":"2025-05-28T13:18:56.999Z"}
{"level":"info","message":"Processing guest messages for user 1 with guest ID b2185db5534f63a29075ae66404db5c1","timestamp":"2025-05-28T13:18:56.999Z"}
{"level":"info","message":"Guest messages for guest ID b2185db5534f63a29075ae66404db5c1 were already processed.","timestamp":"2025-05-28T13:18:57.001Z"}
{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=ec9893a230932ecc5abcd333d350876e","timestamp":"2025-05-28T13:18:57.004Z"}
{"level":"info","message":"Processing guest messages for user 1 with guest ID ec9893a230932ecc5abcd333d350876e","timestamp":"2025-05-28T13:18:57.005Z"}
{"level":"info","message":"Guest messages for guest ID ec9893a230932ecc5abcd333d350876e were already processed.","timestamp":"2025-05-28T13:18:57.006Z"}
{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=dff2dcf575964f9437437d5fd1ff9c0a","timestamp":"2025-05-28T13:18:57.009Z"}
{"level":"info","message":"Processing guest messages for user 1 with guest ID dff2dcf575964f9437437d5fd1ff9c0a","timestamp":"2025-05-28T13:18:57.010Z"}
{"level":"info","message":"Guest messages for guest ID dff2dcf575964f9437437d5fd1ff9c0a were already processed.","timestamp":"2025-05-28T13:18:57.011Z"}
{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=bf01418860b15404bd4a8576f2c71a92","timestamp":"2025-05-28T13:18:57.015Z"}
{"level":"info","message":"Processing guest messages for user 1 with guest ID bf01418860b15404bd4a8576f2c71a92","timestamp":"2025-05-28T13:18:57.015Z"}
{"level":"info","message":"Guest messages for guest ID bf01418860b15404bd4a8576f2c71a92 were already processed.","timestamp":"2025-05-28T13:18:57.017Z"}
{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=f2b6e1c8c2f5ed8ef53d5d1b6bf6e56e","timestamp":"2025-05-28T13:18:57.020Z"}
{"level":"info","message":"Processing guest messages for user 1 with guest ID f2b6e1c8c2f5ed8ef53d5d1b6bf6e56e","timestamp":"2025-05-28T13:18:57.021Z"}
{"level":"info","message":"Guest messages for guest ID f2b6e1c8c2f5ed8ef53d5d1b6bf6e56e were already processed.","timestamp":"2025-05-28T13:18:57.023Z"}
{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=59fc98c0423c96b7a7ba11af5b873ba4","timestamp":"2025-05-28T13:18:57.027Z"}
{"level":"info","message":"Processing guest messages for user 1 with guest ID 59fc98c0423c96b7a7ba11af5b873ba4","timestamp":"2025-05-28T13:18:57.029Z"}
{"level":"info","message":"Guest messages for guest ID 59fc98c0423c96b7a7ba11af5b873ba4 were already processed.","timestamp":"2025-05-28T13:18:57.032Z"}
{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=8a9ae1e5c07ba11c666e5974141e8f54","timestamp":"2025-05-28T13:18:57.035Z"}
{"level":"info","message":"Processing guest messages for user 1 with guest ID 8a9ae1e5c07ba11c666e5974141e8f54","timestamp":"2025-05-28T13:18:57.036Z"}
{"level":"info","message":"Guest messages for guest ID 8a9ae1e5c07ba11c666e5974141e8f54 were already processed.","timestamp":"2025-05-28T13:18:57.037Z"}
{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=d1db5bb388f00ecd1cf268492853c489","timestamp":"2025-05-28T13:18:57.040Z"}
{"level":"info","message":"Processing guest messages for user 1 with guest ID d1db5bb388f00ecd1cf268492853c489","timestamp":"2025-05-28T13:18:57.040Z"}
{"level":"info","message":"Guest messages for guest ID d1db5bb388f00ecd1cf268492853c489 were already processed.","timestamp":"2025-05-28T13:18:57.042Z"}
{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=172cc69ec74cac73b96cfacdc2ebc94c","timestamp":"2025-05-28T13:18:57.044Z"}
{"level":"info","message":"Processing guest messages for user 1 with guest ID 172cc69ec74cac73b96cfacdc2ebc94c","timestamp":"2025-05-28T13:18:57.045Z"}
{"level":"info","message":"Guest messages for guest ID 172cc69ec74cac73b96cfacdc2ebc94c were already processed.","timestamp":"2025-05-28T13:18:57.046Z"}
{"level":"info","message":"[processGuestMessagesWrapper] Processing messages: userId=1, guestId=d2149d70299a2e847d19e783804bf71d","timestamp":"2025-05-28T13:18:57.049Z"}
{"level":"info","message":"Processing guest messages for user 1 with guest ID d2149d70299a2e847d19e783804bf71d","timestamp":"2025-05-28T13:18:57.050Z"}
{"level":"info","message":"Guest messages for guest ID d2149d70299a2e847d19e783804bf71d were already processed.","timestamp":"2025-05-28T13:18:57.051Z"}
{"address":"0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","authType":"wallet","authenticated":true,"cookie":{"expires":"2025-06-27T13:14:06.854Z","httpOnly":true,"originalMaxAge":2592000000,"path":"/","sameSite":"lax","secure":false},"guestId":"3fe8a3e22225b0e8b06d7b4b3098ecf9","isAdmin":true,"level":"info","message":"[SessionService] Saving session data:","processedGuestIds":["3fe8a3e22225b0e8b06d7b4b3098ecf9","22ffc8b90cb9797d120322ebfc24fb5f","d66e4157dfd0dd76e64369ee84bf4009","dfb1bffd21993323e084091b0534ff4f","8f23022510a7d82d4724b6e69619a706","b2185db5534f63a29075ae66404db5c1","ec9893a230932ecc5abcd333d350876e","dff2dcf575964f9437437d5fd1ff9c0a","bf01418860b15404bd4a8576f2c71a92","f2b6e1c8c2f5ed8ef53d5d1b6bf6e56e","59fc98c0423c96b7a7ba11af5b873ba4","8a9ae1e5c07ba11c666e5974141e8f54","d1db5bb388f00ecd1cf268492853c489","172cc69ec74cac73b96cfacdc2ebc94c","d2149d70299a2e847d19e783804bf71d"],"timestamp":"2025-05-28T13:18:57.054Z","userId":1}
{"level":"info","message":"Session saved successfully","timestamp":"2025-05-28T13:18:57.058Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:18:57.276Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:18:57.278Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:18:57.294Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:18:57.297Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:18:57.311Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:18:57.313Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:18:57.324Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:18:57.326Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:18:57.338Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:18:57.339Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:18:57.352Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:18:57.354Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:18:57.370Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:18:57.371Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:18:57.389Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:18:57.391Z"}
{"level":"info","message":"GET /api/auth/check","timestamp":"2025-05-28T13:18:57.417Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:18:57.420Z"}
{"level":"info","message":"GET /api/tokens/balances?address=0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-05-28T13:18:57.442Z"}
{"level":"info","message":"Fetching token balances for address: 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-05-28T13:18:57.443Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:18:57.454Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:18:57.458Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:18:57.476Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:18:57.477Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:18:57.491Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:18:57.494Z"}
{"level":"info","message":"GET /api/tokens/balances?address=0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-05-28T13:18:58.785Z"}
{"level":"info","message":"Fetching token balances for address: 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b","timestamp":"2025-05-28T13:18:58.786Z"}
{"action":"call","code":"CALL_EXCEPTION","data":null,"info":{"error":{"code":19,"message":"Unable to perform request"},"payload":{"id":2,"jsonrpc":"2.0","method":"eth_call","params":[{"data":"0x70a08231000000000000000000000000f45aa4917b3775ba37f48aeb3dc1a943561e9e0b","to":"0x351f59de4fedbdf7601f5592b93db3b9330c1c1d"},"latest"]}},"invocation":null,"level":"error","message":"[getUserTokenBalances] Ошибка получения баланса для HB3A (0x351f59de4fedbdf7601f5592b93db3b9330c1c1d) в сети polygon: missing revert data (action=\"call\", data=null, reason=null, transaction={ \"data\": \"0x70a08231000000000000000000000000f45aa4917b3775ba37f48aeb3dc1a943561e9e0b\", \"to\": \"0x351F59dE4FEdBDf7601F5592B93db3B9330c1C1d\" }, invocation=null, revert=null, code=CALL_EXCEPTION, version=6.13.5)","reason":null,"revert":null,"shortMessage":"missing revert data","stack":"Error: missing revert data (action=\"call\", data=null, reason=null, transaction={ \"data\": \"0x70a08231000000000000000000000000f45aa4917b3775ba37f48aeb3dc1a943561e9e0b\", \"to\": \"0x351F59dE4FEdBDf7601F5592B93db3B9330c1C1d\" }, invocation=null, revert=null, code=CALL_EXCEPTION, version=6.13.5)\n at makeError (/app/node_modules/ethers/lib.commonjs/utils/errors.js:129:21)\n at getBuiltinCallException (/app/node_modules/ethers/lib.commonjs/abi/abi-coder.js:105:37)\n at AbiCoder.getBuiltinCallException (/app/node_modules/ethers/lib.commonjs/abi/abi-coder.js:206:16)\n at JsonRpcProvider.getRpcError (/app/node_modules/ethers/lib.commonjs/providers/provider-jsonrpc.js:676:43)\n at /app/node_modules/ethers/lib.commonjs/providers/provider-jsonrpc.js:302:45\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","timestamp":"2025-05-28T13:19:00.049Z","transaction":{"data":"0x70a08231000000000000000000000000f45aa4917b3775ba37f48aeb3dc1a943561e9e0b","to":"0x351F59dE4FEdBDf7601F5592B93db3B9330c1C1d"}}
{"level":"info","message":"GET /api/dle","timestamp":"2025-05-28T13:19:00.417Z"}
{"level":"info","message":"GET /api/users","timestamp":"2025-05-28T13:19:02.102Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:19:04.148Z"}
{"level":"info","message":"GET /api/messages?userId=90","timestamp":"2025-05-28T13:19:11.148Z"}
{"level":"info","message":"GET /api/messages?userId=46","timestamp":"2025-05-28T13:19:22.150Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:19:27.570Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:19:27.572Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:19:27.705Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:19:27.707Z"}
{"level":"info","message":"DELETE /api/users/46","timestamp":"2025-05-28T13:19:30.248Z"}
{"level":"info","message":"GET /api/users","timestamp":"2025-05-28T13:19:30.277Z"}
{"level":"info","message":"GET /api/messages?userId=75","timestamp":"2025-05-28T13:19:33.467Z"}
{"level":"info","message":"DELETE /api/users/75","timestamp":"2025-05-28T13:19:38.198Z"}
{"level":"info","message":"GET /api/users","timestamp":"2025-05-28T13:19:38.215Z"}
{"level":"info","message":"GET /api/messages?userId=58","timestamp":"2025-05-28T13:19:41.268Z"}
{"level":"info","message":"DELETE /api/users/58","timestamp":"2025-05-28T13:19:46.451Z"}
{"level":"info","message":"GET /api/users","timestamp":"2025-05-28T13:19:46.470Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:19:47.252Z"}
{"level":"info","message":"GET /api/messages?userId=47","timestamp":"2025-05-28T13:19:50.970Z"}
{"level":"info","message":"DELETE /api/users/47","timestamp":"2025-05-28T13:19:55.863Z"}
{"level":"info","message":"GET /api/users","timestamp":"2025-05-28T13:19:55.882Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:19:57.804Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:19:57.805Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:19:57.946Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:19:57.948Z"}
{"level":"info","message":"GET /api/messages?userId=57","timestamp":"2025-05-28T13:19:59.198Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:19:59.208Z"}
{"level":"info","message":"DELETE /api/users/57","timestamp":"2025-05-28T13:20:03.449Z"}
{"level":"info","message":"GET /api/users","timestamp":"2025-05-28T13:20:03.467Z"}
{"level":"info","message":"GET /api/messages?userId=56","timestamp":"2025-05-28T13:20:07.240Z"}
{"level":"info","message":"DELETE /api/users/56","timestamp":"2025-05-28T13:20:09.526Z"}
{"level":"info","message":"GET /api/users","timestamp":"2025-05-28T13:20:09.545Z"}
{"level":"info","message":"GET /api/messages?userId=55","timestamp":"2025-05-28T13:20:14.152Z"}
{"level":"info","message":"DELETE /api/users/55","timestamp":"2025-05-28T13:20:18.249Z"}
{"level":"info","message":"GET /api/users","timestamp":"2025-05-28T13:20:18.267Z"}
{"level":"info","message":"GET /api/messages?userId=54","timestamp":"2025-05-28T13:20:21.980Z"}
{"level":"info","message":"DELETE /api/users/54","timestamp":"2025-05-28T13:20:26.596Z"}
{"level":"info","message":"GET /api/users","timestamp":"2025-05-28T13:20:26.615Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:20:28.030Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:20:28.032Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:20:28.177Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:20:28.178Z"}
{"level":"info","message":"GET /api/messages?userId=53","timestamp":"2025-05-28T13:20:29.804Z"}
{"level":"info","message":"DELETE /api/users/53","timestamp":"2025-05-28T13:20:33.840Z"}
{"level":"info","message":"GET /api/users","timestamp":"2025-05-28T13:20:33.861Z"}
{"level":"info","message":"GET /api/messages?userId=52","timestamp":"2025-05-28T13:20:36.940Z"}
{"level":"info","message":"DELETE /api/users/52","timestamp":"2025-05-28T13:20:41.795Z"}
{"level":"info","message":"GET /api/users","timestamp":"2025-05-28T13:20:41.810Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:20:42.232Z"}
{"level":"info","message":"GET /api/messages?userId=51","timestamp":"2025-05-28T13:20:46.479Z"}
{"level":"info","message":"DELETE /api/users/51","timestamp":"2025-05-28T13:20:50.305Z"}
{"level":"info","message":"GET /api/users","timestamp":"2025-05-28T13:20:50.324Z"}
{"level":"info","message":"GET /api/messages?userId=50","timestamp":"2025-05-28T13:20:53.902Z"}
{"level":"info","message":"DELETE /api/users/50","timestamp":"2025-05-28T13:20:57.699Z"}
{"level":"info","message":"GET /api/users","timestamp":"2025-05-28T13:20:57.719Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:20:58.258Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:20:58.259Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:20:58.389Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:20:58.401Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:20:58.403Z"}
{"level":"info","message":"GET /api/messages?userId=49","timestamp":"2025-05-28T13:21:03.118Z"}
{"level":"info","message":"DELETE /api/users/49","timestamp":"2025-05-28T13:21:04.581Z"}
{"level":"info","message":"GET /api/users","timestamp":"2025-05-28T13:21:04.600Z"}
{"level":"info","message":"GET /api/messages?userId=48","timestamp":"2025-05-28T13:21:08.081Z"}
{"level":"info","message":"DELETE /api/users/48","timestamp":"2025-05-28T13:21:11.771Z"}
{"level":"info","message":"GET /api/users","timestamp":"2025-05-28T13:21:11.789Z"}
{"level":"info","message":"GET /api/messages?userId=88","timestamp":"2025-05-28T13:21:21.666Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:21:28.491Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:21:28.493Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:21:28.634Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:21:28.636Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:21:32.657Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:21:53.446Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:21:58.743Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:21:58.746Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:21:58.873Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:21:58.875Z"}
{"level":"info","message":"GET /api/users","timestamp":"2025-05-28T13:22:12.041Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:22:26.447Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:22:26.450Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:22:26.570Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:22:26.572Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:22:28.172Z"}
{"level":"info","message":"No new messages found","timestamp":"2025-05-28T13:22:48.242Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:22:56.975Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:22:56.978Z"}
{"level":"info","message":"GET /api/auth/identities","timestamp":"2025-05-28T13:22:56.990Z"}
{"level":"info","message":"[IdentityService] Found 3 identities for user 1","timestamp":"2025-05-28T13:22:56.992Z"}

View File

@@ -1,9 +1,31 @@
{"level":"error","message":"[EmailBot] IMAP connection error: Timed out while authenticating with server","timestamp":"2025-05-28T11:19:59.653Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T11:19:59.654Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T11:19:59.654Z"}
{"code":"EPROTOCOL","command":"CONN","level":"error","message":"Error sending email: Invalid greeting. response=421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220: 421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220","response":"421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220","responseCode":421,"stack":"Error: Invalid greeting. response=421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220: 421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220\n at SMTPConnection._actionGreeting (/app/node_modules/nodemailer/lib/smtp-connection/index.js:1251:27)\n at SMTPConnection._processResponse (/app/node_modules/nodemailer/lib/smtp-connection/index.js:993:20)\n at SMTPConnection._onData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:774:14)\n at SMTPConnection._onSocketData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:195:44)\n at TLSSocket.emit (node:events:524:28)\n at addChunk (node:internal/streams/readable:561:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)\n at Readable.push (node:internal/streams/readable:392:5)\n at TLSWrap.onStreamRead (node:internal/stream_base_commons:191:23)","timestamp":"2025-05-28T11:22:09.742Z"}
{"code":"EPROTOCOL","command":"CONN","level":"error","message":"Error processing incoming email: Invalid greeting. response=421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220: 421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220","response":"421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220","responseCode":421,"stack":"Error: Invalid greeting. response=421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220: 421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220\n at SMTPConnection._actionGreeting (/app/node_modules/nodemailer/lib/smtp-connection/index.js:1251:27)\n at SMTPConnection._processResponse (/app/node_modules/nodemailer/lib/smtp-connection/index.js:993:20)\n at SMTPConnection._onData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:774:14)\n at SMTPConnection._onSocketData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:195:44)\n at TLSSocket.emit (node:events:524:28)\n at addChunk (node:internal/streams/readable:561:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)\n at Readable.push (node:internal/streams/readable:392:5)\n at TLSWrap.onStreamRead (node:internal/stream_base_commons:191:23)","timestamp":"2025-05-28T11:22:09.743Z"}
{"code":"EPROTOCOL","command":"CONN","level":"error","message":"Error sending email: Invalid greeting. response=421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220: 421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220","response":"421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220","responseCode":421,"stack":"Error: Invalid greeting. response=421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220: 421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220\n at SMTPConnection._actionGreeting (/app/node_modules/nodemailer/lib/smtp-connection/index.js:1251:27)\n at SMTPConnection._processResponse (/app/node_modules/nodemailer/lib/smtp-connection/index.js:993:20)\n at SMTPConnection._onData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:774:14)\n at SMTPConnection._onSocketData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:195:44)\n at TLSSocket.emit (node:events:524:28)\n at addChunk (node:internal/streams/readable:561:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)\n at Readable.push (node:internal/streams/readable:392:5)\n at TLSWrap.onStreamRead (node:internal/stream_base_commons:191:23)","timestamp":"2025-05-28T11:22:51.094Z"}
{"code":"EPROTOCOL","command":"CONN","level":"error","message":"Error processing incoming email: Invalid greeting. response=421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220: 421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220","response":"421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220","responseCode":421,"stack":"Error: Invalid greeting. response=421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220: 421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220\n at SMTPConnection._actionGreeting (/app/node_modules/nodemailer/lib/smtp-connection/index.js:1251:27)\n at SMTPConnection._processResponse (/app/node_modules/nodemailer/lib/smtp-connection/index.js:993:20)\n at SMTPConnection._onData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:774:14)\n at SMTPConnection._onSocketData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:195:44)\n at TLSSocket.emit (node:events:524:28)\n at addChunk (node:internal/streams/readable:561:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)\n at Readable.push (node:internal/streams/readable:392:5)\n at TLSWrap.onStreamRead (node:internal/stream_base_commons:191:23)","timestamp":"2025-05-28T11:22:51.094Z"}
{"code":"EPROTOCOL","command":"CONN","level":"error","message":"Error sending email: Invalid greeting. response=421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220: 421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220","response":"421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220","responseCode":421,"stack":"Error: Invalid greeting. response=421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220: 421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220\n at SMTPConnection._actionGreeting (/app/node_modules/nodemailer/lib/smtp-connection/index.js:1251:27)\n at SMTPConnection._processResponse (/app/node_modules/nodemailer/lib/smtp-connection/index.js:993:20)\n at SMTPConnection._onData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:774:14)\n at SMTPConnection._onSocketData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:195:44)\n at TLSSocket.emit (node:events:524:28)\n at addChunk (node:internal/streams/readable:561:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)\n at Readable.push (node:internal/streams/readable:392:5)\n at TLSWrap.onStreamRead (node:internal/stream_base_commons:191:23)","timestamp":"2025-05-28T11:23:00.237Z"}
{"code":"EPROTOCOL","command":"CONN","level":"error","message":"Error processing incoming email: Invalid greeting. response=421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220: 421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220","response":"421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220","responseCode":421,"stack":"Error: Invalid greeting. response=421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220: 421 4.7.0 smtp.hostland.ru Error: too many connections from 5.139.232.220\n at SMTPConnection._actionGreeting (/app/node_modules/nodemailer/lib/smtp-connection/index.js:1251:27)\n at SMTPConnection._processResponse (/app/node_modules/nodemailer/lib/smtp-connection/index.js:993:20)\n at SMTPConnection._onData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:774:14)\n at SMTPConnection._onSocketData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:195:44)\n at TLSSocket.emit (node:events:524:28)\n at addChunk (node:internal/streams/readable:561:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)\n at Readable.push (node:internal/streams/readable:392:5)\n at TLSWrap.onStreamRead (node:internal/stream_base_commons:191:23)","timestamp":"2025-05-28T11:23:00.237Z"}
{"level":"error","message":"[EmailBot] IMAP connection error: Timed out while authenticating with server","timestamp":"2025-05-28T13:03:06.859Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:03:06.860Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:03:06.860Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:03:06.860Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:03:06.861Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:03:06.861Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:03:06.861Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:03:06.861Z"}
{"level":"error","message":"[EmailBot] IMAP connection error: Timed out while authenticating with server","timestamp":"2025-05-28T13:04:17.747Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:04:17.747Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:04:17.748Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:04:17.748Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:04:17.748Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:04:43.277Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:05:12.662Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:05:12.663Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:06:07.601Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:06:07.608Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:06:07.609Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:07:41.568Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:07:41.568Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:07:41.569Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:07:41.569Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:07:41.569Z"}
{"level":"error","message":"[EmailBot] IMAP connection error: Timed out while authenticating with server","timestamp":"2025-05-28T13:12:13.523Z"}
{"level":"error","message":"[EmailBot] IMAP connection error: Timed out while authenticating with server","timestamp":"2025-05-28T13:14:17.520Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:14:17.521Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:14:17.522Z"}
{"level":"error","message":"IMAP connection error during check: Timed out while authenticating with server","timestamp":"2025-05-28T13:14:17.522Z"}
{"level":"error","message":"Error: undefined","timestamp":"2025-05-28T13:18:22.803Z"}
{"action":"call","code":"CALL_EXCEPTION","data":null,"info":{"error":{"code":19,"message":"Unable to perform request"},"payload":{"id":2,"jsonrpc":"2.0","method":"eth_call","params":[{"data":"0x70a08231000000000000000000000000f45aa4917b3775ba37f48aeb3dc1a943561e9e0b","to":"0x351f59de4fedbdf7601f5592b93db3b9330c1c1d"},"latest"]}},"invocation":null,"level":"error","message":"[getUserTokenBalances] Ошибка получения баланса для HB3A (0x351f59de4fedbdf7601f5592b93db3b9330c1c1d) в сети polygon: missing revert data (action=\"call\", data=null, reason=null, transaction={ \"data\": \"0x70a08231000000000000000000000000f45aa4917b3775ba37f48aeb3dc1a943561e9e0b\", \"to\": \"0x351F59dE4FEdBDf7601F5592B93db3B9330c1C1d\" }, invocation=null, revert=null, code=CALL_EXCEPTION, version=6.13.5)","reason":null,"revert":null,"shortMessage":"missing revert data","stack":"Error: missing revert data (action=\"call\", data=null, reason=null, transaction={ \"data\": \"0x70a08231000000000000000000000000f45aa4917b3775ba37f48aeb3dc1a943561e9e0b\", \"to\": \"0x351F59dE4FEdBDf7601F5592B93db3B9330c1C1d\" }, invocation=null, revert=null, code=CALL_EXCEPTION, version=6.13.5)\n at makeError (/app/node_modules/ethers/lib.commonjs/utils/errors.js:129:21)\n at getBuiltinCallException (/app/node_modules/ethers/lib.commonjs/abi/abi-coder.js:105:37)\n at AbiCoder.getBuiltinCallException (/app/node_modules/ethers/lib.commonjs/abi/abi-coder.js:206:16)\n at JsonRpcProvider.getRpcError (/app/node_modules/ethers/lib.commonjs/providers/provider-jsonrpc.js:676:43)\n at /app/node_modules/ethers/lib.commonjs/providers/provider-jsonrpc.js:302:45\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","timestamp":"2025-05-28T13:19:00.049Z","transaction":{"data":"0x70a08231000000000000000000000000f45aa4917b3775ba37f48aeb3dc1a943561e9e0b","to":"0x351F59dE4FEdBDf7601F5592B93db3B9330c1C1d"}}

View File

@@ -0,0 +1,23 @@
const express = require('express');
const router = express.Router();
const db = require('../db');
// GET /api/messages?userId=123
router.get('/', async (req, res) => {
const userId = req.query.userId;
if (!userId) return res.status(400).json({ error: 'userId required' });
try {
const result = await db.getQuery()(
`SELECT id, user_id, sender_type, content, channel, role, direction, created_at, attachment_filename, attachment_mimetype, attachment_size, attachment_data, metadata
FROM messages
WHERE user_id = $1
ORDER BY created_at ASC`,
[userId]
);
res.json(result.rows);
} catch (e) {
res.status(500).json({ error: 'DB error', details: e.message });
}
});
module.exports = router;

View File

@@ -138,4 +138,54 @@ router.get('/', async (req, res) => {
});
*/
// PATCH /api/users/:id — обновить имя и язык
router.patch('/:id', async (req, res) => {
const userId = req.params.id;
const { name, language } = req.body;
if (!name && !language) return res.status(400).json({ error: 'Nothing to update' });
try {
const fields = [];
const values = [];
let idx = 1;
if (name !== undefined) {
// Разделяем имя на first_name и last_name (по пробелу)
const [firstName, ...lastNameArr] = name.split(' ');
fields.push(`first_name = $${idx++}`);
values.push(firstName);
fields.push(`last_name = $${idx++}`);
values.push(lastNameArr.join(' ') || null);
}
if (language !== undefined) {
fields.push(`preferred_language = $${idx++}`);
values.push(Array.isArray(language) ? JSON.stringify(language) : language);
}
values.push(userId);
const sql = `UPDATE users SET ${fields.join(', ')} WHERE id = $${idx} RETURNING *`;
const result = await db.getQuery()(sql, values);
res.json(result.rows[0]);
} catch (e) {
res.status(500).json({ error: 'DB error', details: e.message });
}
});
// DELETE /api/users/:id — удалить контакт и все связанные данные
router.delete('/:id', async (req, res) => {
const userId = req.params.id;
const client = await db.getPool().connect();
try {
await client.query('BEGIN');
await client.query('DELETE FROM user_identities WHERE user_id = $1', [userId]);
await client.query('DELETE FROM messages WHERE user_id = $1', [userId]);
// Добавьте другие связанные таблицы, если нужно
await client.query('DELETE FROM users WHERE id = $1', [userId]);
await client.query('COMMIT');
res.json({ success: true });
} catch (e) {
await client.query('ROLLBACK');
res.status(500).json({ error: 'DB error', details: e.message });
} finally {
client.release();
}
});
module.exports = router;

View File

@@ -0,0 +1,320 @@
<template>
<div class="contact-details-modal">
<div class="contact-details-header">
<h2>Детали контакта</h2>
<button class="close-btn" @click="$emit('close')">×</button>
</div>
<div class="contact-info-block">
<div>
<strong>Имя:</strong>
<input v-model="editableName" class="edit-input" @blur="saveName" @keyup.enter="saveName" />
<span v-if="isSavingName" class="saving">Сохранение...</span>
</div>
<div><strong>Email:</strong> {{ contact.email || '-' }}</div>
<div><strong>Telegram:</strong> {{ contact.telegram || '-' }}</div>
<div><strong>Кошелек:</strong> {{ contact.wallet || '-' }}</div>
<div>
<strong>Язык:</strong>
<div class="multi-select">
<div class="selected-langs">
<span v-for="lang in selectedLanguages" :key="lang" class="lang-tag">
{{ getLanguageLabel(lang) }}
<span class="remove-tag" @click="removeLanguage(lang)">×</span>
</span>
<input
v-model="langInput"
@focus="showLangDropdown = true"
@input="showLangDropdown = true"
@keydown.enter.prevent="addLanguageFromInput"
class="lang-input"
placeholder="Добавить язык..."
/>
</div>
<ul v-if="showLangDropdown" class="lang-dropdown">
<li
v-for="lang in filteredLanguages"
:key="lang.value"
@mousedown.prevent="addLanguage(lang.value)"
:class="{ selected: selectedLanguages.includes(lang.value) }"
>
{{ lang.label }}
</li>
</ul>
</div>
<span v-if="isSavingLangs" class="saving">Сохранение...</span>
</div>
<div><strong>Дата создания:</strong> {{ formatDate(contact.created_at) }}</div>
<div><strong>Дата последнего сообщения:</strong> {{ formatDate(lastMessageDate) }}</div>
<button class="delete-btn" @click="deleteContact">Удалить контакт</button>
</div>
<div class="messages-block">
<h3>История сообщений</h3>
<div v-if="isLoading" class="loading">Загрузка...</div>
<div v-else-if="messages.length === 0" class="empty">Нет сообщений</div>
<div v-else class="messages-list">
<Message v-for="msg in messages" :key="msg.id" :message="msg" />
</div>
</div>
</div>
</template>
<script setup>
import { ref, onMounted, watch, computed } from 'vue';
import Message from './Message.vue';
import messagesService from '../services/messagesService';
import contactsService from '../services/contactsService';
const props = defineProps({
contact: { type: Object, required: true }
});
const emit = defineEmits(['close', 'contact-deleted', 'contact-updated']);
const messages = ref([]);
const isLoading = ref(false);
const lastMessageDate = ref(null);
const editableName = ref(props.contact.name || '');
const isSavingName = ref(false);
const isSavingLangs = ref(false);
// --- Языки ---
const allLanguages = [
{ value: 'ru', label: 'Русский' },
{ value: 'en', label: 'English' },
{ value: 'de', label: 'Deutsch' },
{ value: 'fr', label: 'Français' },
{ value: 'es', label: 'Español' },
{ value: 'zh', label: '中文' },
{ value: 'ar', label: 'العربية' },
{ value: 'pt', label: 'Português' },
{ value: 'it', label: 'Italiano' },
{ value: 'ja', label: '日本語' },
{ value: 'tr', label: 'Türkçe' },
{ value: 'pl', label: 'Polski' },
{ value: 'uk', label: 'Українська' },
{ value: 'other', label: 'Другое' }
];
const selectedLanguages = ref(Array.isArray(props.contact.language) ? props.contact.language : (props.contact.language ? [props.contact.language] : []));
const langInput = ref('');
const showLangDropdown = ref(false);
const filteredLanguages = computed(() => {
const input = langInput.value.toLowerCase();
return allLanguages.filter(
l => !selectedLanguages.value.includes(l.value) && l.label.toLowerCase().includes(input)
);
});
function getLanguageLabel(val) {
const found = allLanguages.find(l => l.value === val);
return found ? found.label : val;
}
function addLanguage(lang) {
if (!selectedLanguages.value.includes(lang)) {
selectedLanguages.value.push(lang);
saveLanguages();
}
langInput.value = '';
showLangDropdown.value = false;
}
function addLanguageFromInput() {
const found = filteredLanguages.value[0];
if (found) addLanguage(found.value);
}
function removeLanguage(lang) {
selectedLanguages.value = selectedLanguages.value.filter(l => l !== lang);
saveLanguages();
}
function saveLanguages() {
isSavingLangs.value = true;
contactsService.updateContact(props.contact.id, { language: selectedLanguages.value })
.then(() => emit('contact-updated'))
.finally(() => { isSavingLangs.value = false; });
}
// --- Имя ---
function saveName() {
if (editableName.value !== props.contact.name) {
isSavingName.value = true;
contactsService.updateContact(props.contact.id, { name: editableName.value })
.then(() => emit('contact-updated'))
.finally(() => { isSavingName.value = false; });
}
}
// --- Удаление ---
function deleteContact() {
if (confirm('Удалить контакт?')) {
contactsService.deleteContact(props.contact.id)
.then(() => emit('contact-deleted', props.contact.id))
.catch(() => alert('Ошибка удаления контакта'));
}
}
function formatDate(date) {
if (!date) return '-';
return new Date(date).toLocaleString();
}
async function loadMessages() {
if (!props.contact || !props.contact.id) return;
isLoading.value = true;
try {
messages.value = await messagesService.getMessagesByUserId(props.contact.id);
if (messages.value.length > 0) {
lastMessageDate.value = messages.value[messages.value.length - 1].created_at;
} else {
lastMessageDate.value = null;
}
} catch (e) {
messages.value = [];
lastMessageDate.value = null;
} finally {
isLoading.value = false;
}
}
onMounted(loadMessages);
watch(() => props.contact, loadMessages);
</script>
<style scoped>
.contact-details-modal {
background: #fff;
border-radius: 16px;
box-shadow: 0 4px 32px rgba(0,0,0,0.12);
padding: 32px 24px 24px 24px;
max-width: 700px;
margin: 40px auto;
position: relative;
overflow-x: auto;
}
.contact-details-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 18px;
}
.close-btn {
background: none;
border: none;
font-size: 2rem;
cursor: pointer;
color: #bbb;
transition: color 0.2s;
}
.close-btn:hover {
color: #333;
}
.contact-info-block {
margin-bottom: 18px;
font-size: 1.08rem;
line-height: 1.7;
}
.edit-input {
border: 1px solid #ccc;
border-radius: 6px;
padding: 4px 10px;
font-size: 1rem;
margin-left: 8px;
min-width: 120px;
}
.saving {
color: #17a2b8;
font-size: 0.95rem;
margin-left: 8px;
}
.delete-btn {
background: #dc3545;
color: #fff;
border: none;
border-radius: 6px;
padding: 7px 18px;
cursor: pointer;
font-size: 1rem;
margin-top: 18px;
transition: background 0.2s;
}
.delete-btn:hover {
background: #b52a37;
}
.multi-select {
position: relative;
display: inline-block;
min-width: 220px;
}
.selected-langs {
display: flex;
flex-wrap: wrap;
gap: 6px;
align-items: center;
min-height: 36px;
background: #f5f7fa;
border-radius: 6px;
padding: 4px 8px;
border: 1px solid #ccc;
}
.lang-tag {
background: #e6f7ff;
color: #138496;
border-radius: 4px;
padding: 2px 8px;
font-size: 0.97rem;
display: flex;
align-items: center;
}
.remove-tag {
margin-left: 4px;
cursor: pointer;
color: #888;
font-weight: bold;
}
.remove-tag:hover {
color: #dc3545;
}
.lang-input {
border: none;
outline: none;
background: transparent;
font-size: 1rem;
min-width: 80px;
margin-left: 4px;
}
.lang-dropdown {
position: absolute;
left: 0;
top: 100%;
background: #fff;
border: 1px solid #ccc;
border-radius: 6px;
box-shadow: 0 2px 8px rgba(0,0,0,0.08);
z-index: 10;
min-width: 180px;
max-height: 180px;
overflow-y: auto;
margin-top: 2px;
padding: 0;
list-style: none;
}
.lang-dropdown li {
padding: 7px 14px;
cursor: pointer;
font-size: 1rem;
}
.lang-dropdown li.selected {
background: #e6f7ff;
color: #138496;
}
.lang-dropdown li:hover {
background: #f0f0f0;
}
.messages-block {
background: #f8fafc;
border-radius: 10px;
padding: 18px;
box-shadow: 0 2px 8px rgba(0,0,0,0.04);
}
.messages-list {
max-height: 350px;
overflow-y: auto;
margin-top: 10px;
}
.loading, .empty {
color: #888;
text-align: center;
margin: 20px 0;
}
</style>

View File

@@ -12,6 +12,7 @@
<th>Telegram</th>
<th>Кошелек</th>
<th>Дата создания</th>
<th>Действие</th>
</tr>
</thead>
<tbody>
@@ -21,6 +22,9 @@
<td>{{ contact.telegram || '-' }}</td>
<td>{{ contact.wallet || '-' }}</td>
<td>{{ formatDate(contact.created_at) }}</td>
<td>
<button class="details-btn" @click="showDetails(contact)">Подробнее</button>
</td>
</tr>
</tbody>
</table>
@@ -28,14 +32,18 @@
</template>
<script setup>
import { defineProps } from 'vue';
import { defineProps, defineEmits } from 'vue';
const props = defineProps({
contacts: { type: Array, required: true }
});
const emit = defineEmits(['show-details']);
function formatDate(date) {
if (!date) return '-';
return new Date(date).toLocaleString();
}
function showDetails(contact) {
emit('show-details', contact);
}
</script>
<style scoped>
@@ -119,4 +127,17 @@ function formatDate(date) {
font-size: 1.1rem;
}
}
.details-btn {
background: #17a2b8;
color: #fff;
border: none;
border-radius: 6px;
padding: 6px 14px;
cursor: pointer;
font-size: 0.98rem;
transition: background 0.2s;
}
.details-btn:hover {
background: #138496;
}
</style>

View File

@@ -7,5 +7,13 @@ export default {
return res.data.contacts;
}
return [];
},
async updateContact(id, data) {
const res = await api.patch(`/api/users/${id}`, data);
return res.data;
},
async deleteContact(id) {
const res = await api.delete(`/api/users/${id}`);
return res.data;
}
};

View File

@@ -0,0 +1,9 @@
import axios from 'axios';
export default {
async getMessagesByUserId(userId) {
if (!userId) return [];
const { data } = await axios.get(`/api/messages?userId=${userId}`);
return data;
}
};

View File

@@ -20,7 +20,8 @@
<i class="fas fa-address-book"></i> Подробнее
</button>
</div>
<ContactTable v-if="showContacts" :contacts="contacts" @close="showContacts = false" />
<ContactTable v-if="showContacts" :contacts="contacts" @close="showContacts = false" @show-details="openContactDetails" />
<ContactDetails v-if="showContactDetails" :contact="selectedContact" @close="showContactDetails = false" @contact-deleted="onContactDeleted" />
</div>
</BaseLayout>
</template>
@@ -36,6 +37,7 @@ import dleService from '../services/dleService';
import ContactTable from '../components/ContactTable.vue';
import contactsService from '../services/contactsService.js';
import DleManagement from '../components/DleManagement.vue';
import ContactDetails from '../components/ContactDetails.vue';
// Определяем props
const props = defineProps({
@@ -58,6 +60,8 @@ const showDleManagement = ref(false);
const showContacts = ref(false);
const contacts = ref([]);
const isLoadingContacts = ref(false);
const selectedContact = ref(null);
const showContactDetails = ref(false);
// Функция для перехода на домашнюю страницу и открытия боковой панели
const goToHomeAndShowSidebar = () => {
@@ -135,6 +139,16 @@ async function loadContacts() {
watch(showContacts, (val) => {
if (val) loadContacts();
});
function openContactDetails(contact) {
selectedContact.value = contact;
showContactDetails.value = true;
}
function onContactDeleted() {
showContactDetails.value = false;
loadContacts();
}
</script>
<style scoped>