Edit: /tmp/tsx-0/17887-5078c70c91038845a6179ff73dc3793e7e2567ff (8419B)
{"code":"__filename=\"/opt/canhelp/apps/api/src/lib/telegram.ts\";(()=>{\n\"use strict\";var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __name=(target,value)=>__defProp(target,\"name\",{value,configurable:true});var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:true})};var __copyProps=(to,from,except,desc)=>{if(from&&typeof from===\"object\"||typeof from===\"function\"){for(let key of __getOwnPropNames(from))if(!__hasOwnProp.call(to,key)&&key!==except)__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable})}return to};var __toCommonJS=mod=>__copyProps(__defProp({},\"__esModule\",{value:true}),mod);var telegram_exports={};__export(telegram_exports,{LOCALES:()=>LOCALES,invalidateTelegramCache:()=>invalidateTelegramCache,isNewTaskPostEnabled:()=>isNewTaskPostEnabled,isRegistrationNotifyEnabled:()=>isRegistrationNotifyEnabled,notifyAdmin:()=>notifyAdmin,postTaskToChannels:()=>postTaskToChannels,testTelegramConnection:()=>testTelegramConnection});module.exports=__toCommonJS(telegram_exports);var import_db=require(\"../db.js\");var import_db2=require(\"@canhelp/db\");var import_drizzle_orm=require(\"drizzle-orm\");const LOCALES=[\"el\",\"en\",\"ru\",\"uk\"];let _cache=null;let _cacheAt=0;const CACHE_TTL=6e4;async function loadConfig(){if(Date.now()-_cacheAt
[]);const kv={};for(const r of rows)kv[r.key]=r.value;_cache={botToken:kv[\"telegram.botToken\"]??\"\",adminChatId:kv[\"telegram.adminChatId\"]??\"\",channels:{el:kv[\"telegram.channelId.el\"]??\"\",en:kv[\"telegram.channelId.en\"]??\"\",ru:kv[\"telegram.channelId.ru\"]??\"\",uk:kv[\"telegram.channelId.uk\"]??\"\"},notifyRegistrations:kv[\"telegram.notifyRegistrations\"]===\"true\",postNewTasks:kv[\"telegram.postNewTasks\"]===\"true\"};_cacheAt=Date.now();return _cache}__name(loadConfig,\"loadConfig\");function invalidateTelegramCache(){_cacheAt=0;_cache=null}__name(invalidateTelegramCache,\"invalidateTelegramCache\");async function sendMessage(botToken,chatId,text){if(!botToken||!chatId)return;const url=`https://api.telegram.org/bot${botToken}/sendMessage`;const res=await fetch(url,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify({chat_id:chatId,text,parse_mode:\"HTML\"})});if(!res.ok){const body=await res.text().catch(()=>\"\");throw new Error(`Telegram API error ${res.status}: ${body}`)}}__name(sendMessage,\"sendMessage\");async function notifyAdmin(text){const cfg=await loadConfig();if(!cfg.botToken||!cfg.adminChatId)return;await sendMessage(cfg.botToken,cfg.adminChatId,text)}__name(notifyAdmin,\"notifyAdmin\");async function isRegistrationNotifyEnabled(){const cfg=await loadConfig();return!!(cfg.botToken&&cfg.adminChatId&&cfg.notifyRegistrations)}__name(isRegistrationNotifyEnabled,\"isRegistrationNotifyEnabled\");async function isNewTaskPostEnabled(){const cfg=await loadConfig();return!!(cfg.botToken&&cfg.postNewTasks&&LOCALES.some(l=>cfg.channels[l]))}__name(isNewTaskPostEnabled,\"isNewTaskPostEnabled\");async function postTaskToChannels(task,siteUrl){const cfg=await loadConfig();if(!cfg.botToken||!cfg.postNewTasks)return;const localeTitle={el:task.titleEl||task.title,en:task.titleEn||task.title,ru:task.titleRu||task.title,uk:task.titleUk||task.title};const localeDesc={el:task.descriptionEl||task.description,en:task.descriptionEn||task.description,ru:task.descriptionRu||task.description,uk:task.descriptionUk||task.description};const link=`${siteUrl}/tasks/${task.id}`;await Promise.allSettled(LOCALES.filter(l=>cfg.channels[l]).map(l=>{const title=localeTitle[l];const desc=localeDesc[l];const budget=task.budget?`\\u{1F4B0} ${task.budget} \\u20AC`:\"\";const location=task.location?`\\u{1F4CD} ${task.location}`:\"\";const lines=[`\\u{1F4CB} ${title}`,desc?desc.slice(0,200)+(desc.length>200?\"\\u2026\":\"\"):\"\",[budget,location].filter(Boolean).join(\" \"),`\\u{1F517} ${link}`].filter(Boolean);return sendMessage(cfg.botToken,cfg.channels[l],lines.join(\"\\n\"))}))}__name(postTaskToChannels,\"postTaskToChannels\");async function testTelegramConnection(botToken,chatId){try{const meRes=await fetch(`https://api.telegram.org/bot${botToken}/getMe`);if(!meRes.ok){const body=await meRes.text().catch(()=>\"\");return{ok:false,error:`Invalid bot token: ${body}`}}const me=await meRes.json();const botName=me.result?.username||me.result?.first_name||\"Bot\";await sendMessage(botToken,chatId,`\\u2705 CanHelp connected!\nBot: @${botName}`);return{ok:true,botName}}catch(err){return{ok:false,error:String(err)}}}__name(testTelegramConnection,\"testTelegramConnection\");0&&(module.exports={LOCALES,invalidateTelegramCache,isNewTaskPostEnabled,isRegistrationNotifyEnabled,notifyAdmin,postTaskToChannels,testTelegramConnection});\n})()\n","warnings":[],"map":{"version":3,"mappings":";mvBAAA,2ZAAmB,oBACnB,IAAAA,WAA0C,uBAC1C,uBAAwB,uBAIjB,MAAM,QAAU,CAAC,KAAM,KAAM,KAAM,IAAI,EAW9C,IAAI,OAAgC,KACpC,IAAI,SAAW,EACf,MAAM,UAAY,IAElB,eAAe,YAAsC,CACnD,GAAI,KAAK,IAAI,EAAI,SAAW,WAAa,OAAQ,OAAO,OAExD,MAAM,KAAO,MAAM,aAChB,OAAO,EACP,KAAK,WAAAC,QAAa,EAClB,SACC,4BAAQ,WAAAA,SAAc,IAAK,CACzB,oBACA,uBACA,wBACA,wBACA,wBACA,wBACA,+BACA,uBACF,CAAC,CACH,EACC,MAAM,IAAM,CAAC,CAAC,EAEjB,MAAM,GAA6B,CAAC,EACpC,UAAW,KAAK,KAAM,GAAG,EAAE,GAAG,EAAI,EAAE,MAEpC,OAAS,CACP,SAAqB,GAAG,mBAAmB,GAAgB,GAC3D,YAAqB,GAAG,sBAAsB,GAAa,GAC3D,SAAU,CACR,GAAI,GAAG,uBAAuB,GAAK,GACnC,GAAI,GAAG,uBAAuB,GAAK,GACnC,GAAI,GAAG,uBAAuB,GAAK,GACnC,GAAI,GAAG,uBAAuB,GAAK,EACrC,EACA,oBAAqB,GAAG,8BAA8B,IAAM,OAC5D,aAAqB,GAAG,uBAAuB,IAAa,MAC9D,EACA,SAAW,KAAK,IAAI,EACpB,OAAO,MACT,CArCe,gCAuCR,SAAS,yBAA0B,CACxC,SAAW,EACX,OAAS,IACX,CAHgB,0DAOhB,eAAe,YAAY,SAAkB,OAAgB,KAA6B,CACxF,GAAI,CAAC,UAAY,CAAC,OAAQ,OAC1B,MAAM,IAAM,+BAA+B,QAAQ,eACnD,MAAM,IAAM,MAAM,MAAM,IAAK,CAC3B,OAAQ,OACR,QAAS,CAAE,eAAgB,kBAAmB,EAC9C,KAAM,KAAK,UAAU,CAAE,QAAS,OAAQ,KAAM,WAAY,MAAO,CAAC,CACpE,CAAC,EACD,GAAI,CAAC,IAAI,GAAI,CACX,MAAM,KAAO,MAAM,IAAI,KAAK,EAAE,MAAM,IAAM,EAAE,EAC5C,MAAM,IAAI,MAAM,sBAAsB,IAAI,MAAM,KAAK,IAAI,EAAE,CAC7D,CACF,CAZe,kCAiBf,eAAsB,YAAY,KAA6B,CAC7D,MAAM,IAAM,MAAM,WAAW,EAC7B,GAAI,CAAC,IAAI,UAAY,CAAC,IAAI,YAAa,OACvC,MAAM,YAAY,IAAI,SAAU,IAAI,YAAa,IAAI,CACvD,CAJsB,kCAOtB,eAAsB,6BAAgD,CACpE,MAAM,IAAM,MAAM,WAAW,EAC7B,MAAO,CAAC,EAAE,IAAI,UAAY,IAAI,aAAe,IAAI,oBACnD,CAHsB,kEAMtB,eAAsB,sBAAyC,CAC7D,MAAM,IAAM,MAAM,WAAW,EAC7B,MAAO,CAAC,EAAE,IAAI,UAAY,IAAI,cAAgB,QAAQ,KAAM,GAAM,IAAI,SAAS,CAAC,CAAC,EACnF,CAHsB,oDAsBtB,eAAsB,mBAAmB,KAAmB,QAAgC,CAC1F,MAAM,IAAM,MAAM,WAAW,EAC7B,GAAI,CAAC,IAAI,UAAY,CAAC,IAAI,aAAc,OAExC,MAAM,YAAsC,CAC1C,GAAI,KAAK,SAAW,KAAK,MACzB,GAAI,KAAK,SAAW,KAAK,MACzB,GAAI,KAAK,SAAW,KAAK,MACzB,GAAI,KAAK,SAAW,KAAK,KAC3B,EACA,MAAM,WAAqC,CACzC,GAAI,KAAK,eAAiB,KAAK,YAC/B,GAAI,KAAK,eAAiB,KAAK,YAC/B,GAAI,KAAK,eAAiB,KAAK,YAC/B,GAAI,KAAK,eAAiB,KAAK,WACjC,EAEA,MAAM,KAAO,GAAG,OAAO,UAAU,KAAK,EAAE,GAExC,MAAM,QAAQ,WACZ,QAAQ,OAAQ,GAAM,IAAI,SAAS,CAAC,CAAC,EAAE,IAAK,GAAM,CAChD,MAAM,MAAQ,YAAY,CAAC,EAC3B,MAAM,KAAO,WAAW,CAAC,EACzB,MAAM,OAAS,KAAK,OAAS,aAAM,KAAK,MAAM,UAAO,GACrD,MAAM,SAAW,KAAK,SAAW,aAAM,KAAK,QAAQ,GAAK,GACzD,MAAM,MAAQ,CACZ,gBAAS,KAAK,OACd,KAAO,KAAK,MAAM,EAAG,GAAG,GAAK,KAAK,OAAS,IAAM,SAAM,IAAM,GAC7D,CAAC,OAAQ,QAAQ,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI,EAC5C,sBAAe,IAAI,KAAK,IAAI,MAC9B,EAAE,OAAO,OAAO,EAChB,OAAO,YAAY,IAAI,SAAU,IAAI,SAAS,CAAC,EAAG,MAAM,KAAK,IAAI,CAAC,CACpE,CAAC,CACH,CACF,CAlCsB,gDAwCtB,eAAsB,uBAAuB,SAAkB,OAAuF,CACpJ,GAAI,CACF,MAAM,MAAQ,MAAM,MAAM,+BAA+B,QAAQ,QAAQ,EACzE,GAAI,CAAC,MAAM,GAAI,CACb,MAAM,KAAO,MAAM,MAAM,KAAK,EAAE,MAAM,IAAM,EAAE,EAC9C,MAAO,CAAE,GAAI,MAAO,MAAO,sBAAsB,IAAI,EAAG,CAC1D,CACA,MAAM,GAAM,MAAM,MAAM,KAAK,EAC7B,MAAM,QAAU,GAAG,QAAQ,UAAY,GAAG,QAAQ,YAAc,MAEhE,MAAM,YAAY,SAAU,OAAQ;AAAA,QAA+B,OAAO,EAAE,EAC5E,MAAO,CAAE,GAAI,KAAM,OAAQ,CAC7B,OAAS,IAAK,CACZ,MAAO,CAAE,GAAI,MAAO,MAAO,OAAO,GAAG,CAAE,CACzC,CACF,CAfsB","names":["import_db","settingsTable"],"ignoreList":[],"sources":["/opt/canhelp/apps/api/src/lib/telegram.ts"],"sourcesContent":[null]}}