UNPKG

plaintl

Version:
1 lines 1.84 kB
import e from"fs";import s from"lodash";import r from"path";import o from"dotenv";import n from"events";import{Logger as t,sessions as i,TelegramClient as m}from"telegram";export{Api}from"telegram";o.config();const a=new n,u=({apiId:o,apiHash:n,forceSMS:u=!1,logLevel:p="info"}={})=>{const d=new t(p),l=r.resolve(".ptl.session");return new Promise(((r,t)=>{const p=e=>{d.error(e),t(new Error(e))};try{const t=new i.StringSession(e.existsSync(l)?e.readFileSync(l,"utf8"):process.env.API_SESSION||""),c=new m(t,s.toNumber(o||process.env.API_ID),s.toString(n||process.env.API_HASH),{baseLogger:d});return c.start({phoneNumber:()=>(e=>new Promise((r=>{s.isEmpty(a.listeners("RequiresPhoneNumber"))&&e("You need to set a listener on 'RequiresPhoneNumber' event"),a.emit("RequiresPhoneNumber",(e=>{r(e)}))})))(p),phoneCode:e=>(d.info("You will receive phone code via "+(e?"App":"SMS")),(e=>new Promise((r=>{s.isEmpty(a.listeners("RequiresPhoneCode"))&&e("You need to set a listener on 'RequiresPhoneCode' event"),a.emit("RequiresPhoneCode",(e=>{r(e)}))})))(p)),password:e=>(d.info(`The hint for your password is '${e}'`),(e=>new Promise((r=>{s.isEmpty(a.listeners("RequiresPassword"))&&e("You need to set a listener on 'RequiresPassword' event"),a.emit("RequiresPassword",(e=>{r(e)}))})))(p)),firstAndLastNames:()=>(e=>new Promise((r=>{s.isEmpty(a.listeners("RequiresFirstAndLastNames"))&&e("You need to set a listener on 'RequiresFirstAndLastNames' event"),a.emit("RequiresFirstAndLastNames",((e,s=null)=>{r([e,s])}))})))(p),onError:({message:e})=>{p(e)},forceSMS:u}).then((()=>e.promises.writeFile(l,c.session.save()))).then((()=>{d.info("Successfully connected and save session"),c.addEventHandler((e=>{a.emit(e.className,e)})),r(c)})).catch((({message:e})=>{p(e)}))}catch({message:e}){p(e)}}))};export{a as eventEmitter,u as startSession};