import { TelegramClient } from 'telegram'; import { StringSession } from 'telegram/sessions/index.js'; import input from 'input'; /** * Одноразовый интерактивный вход: вводите телефон/код (и пароль 2FA, если есть), * скрипт печатает строку сессии — её нужно вставить в .env как SESSION=... * Запуск: npm run login */ const apiId = Number(process.env.API_ID); const apiHash = process.env.API_HASH; if (!Number.isInteger(apiId) || !apiHash) { console.error('Сначала задайте API_ID и API_HASH в .env (получить: https://my.telegram.org).'); process.exit(1); } const client = new TelegramClient(new StringSession(''), apiId, apiHash, { connectionRetries: 5 }); await client.start({ phoneNumber: () => input.text('Телефон (в формате +7...): '), password: () => input.text('Пароль 2FA (если нет — Enter): '), phoneCode: () => input.text('Код из Telegram: '), onError: (err) => console.error(err), }); console.log('\n✅ Готово. Вставьте строку в .env как SESSION=\n'); console.log(client.session.save()); console.log('\nНикому не передавайте её — это полный доступ к аккаунту.'); await client.disconnect(); process.exit(0);