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