32 lines
1.3 KiB
JavaScript
32 lines
1.3 KiB
JavaScript
|
|
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);
|