yaainnnxitstore/YASIN_XIT_BOTPublic · Bot Template

ProfileTelegram

AIYASIN XIT FREE KEY appears to be a Telegram automation bot. Commands include /menu, /addfund, /confirm_buyitem, /rembal, /sendorderkey_input, /removeproduct, /add_reseller, /addkey. Observed in code: messaging, keyboards, payments, games, libs, web.

Utilityutility
140 commands0 envUpdated 1mo agoCreated Sep 11, 2026
Back to folder

commands/_points_admin.js

javascript · 116 lines

Raw
1/**#command2name: /points_admin3answer: 4keyboard: 5parse_mode: markdown6aliases: 7allow_only_group: false8need_reply: false9is_web: 010#command**/11 12function __esc(v){return String(v==null?"":v).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");}13var __u=(typeof update!=="undefined"&&update)?update:null;14var __cb=(__u&&__u.callback_query)?__u.callback_query:null;15var __cbm=(__cb&&__cb.message)?__cb.message:null;16try{if(typeof request!=="undefined"&&request&&__cb){if(__cb.message)request.message=__cb.message;if(!request.id&&__cb.id)request.id=__cb.id;}}catch(__ne){}17function __uiSend(t,o){18 o=o||{};var cid=(typeof chat!=="undefined"&&chat)?chat.chatid:null;19 var mk=o.reply_markup;if(mk&&typeof mk!=="string"){try{mk=JSON.stringify(mk);}catch(e1){}}20 var mid=(__cbm&&__cbm.message_id)?Number(__cbm.message_id):0;21 if(!mid){try{mid=Number(User.getProperty("main_menu_message_id")||User.getProperty("pending_menu_message_id")||0);}catch(e2){mid=0;}}22 t=String(t==null?"":t);23 if(mid&&cid){24  try{25   if(__cbm&&(__cbm.photo||__cbm.video||__cbm.document||__cbm.animation))Api.editMessageCaption({chat_id:cid,message_id:mid,caption:t,parse_mode:o.parse_mode,reply_markup:mk});26   else Api.editMessageText({chat_id:cid,message_id:mid,text:t,parse_mode:o.parse_mode,reply_markup:mk});27   try{User.setProperty("main_menu_message_id",String(mid),"string");User.setProperty("pending_menu_message_id",String(mid),"string");}catch(e3){}28   return true;29  }catch(e4){if(String(e4).toLowerCase().indexOf("not modified")>=0)return true;if(__cb)return false;}30 }31 if(__cb)return false;32 try{var s=Api.sendMessage({chat_id:cid,text:t,parse_mode:o.parse_mode,reply_markup:mk});if(s&&s.message_id){User.setProperty("main_menu_message_id",String(s.message_id),"string");User.setProperty("pending_menu_message_id",String(s.message_id),"string");}return true;}catch(e5){return false;}33}34function __ack(){try{if(__cb&&__cb.id)Api.answerCallbackQuery({callback_query_id:String(__cb.id)});}catch(e6){}}35function __alert(t){try{if(__cb&&__cb.id)Api.answerCallbackQuery({callback_query_id:String(__cb.id),text:String(t),show_alert:true});}catch(e7){}}36function __ptsGet(u){var v=Number(Bot.getProperty("points_"+String(u))||0);return isFinite(v)?v:0;}37function __ptsSet(u,v){if(!isFinite(v)||v<0)v=0;Bot.setProperty("points_"+String(u),Number(v),"number");return Number(v);}38function __refPoints(){var v=Number(Bot.getProperty("ref_points"));return (isFinite(v)&&v>=0)?v:10;}39function __fjList(){var c=Bot.getProperty("fj_channels")||[];return Array.isArray(c)?c:[];}40function __fjMissing(uid){var l=__fjList(),o=[];for(var i=0;i<l.length;i++){var ok=true;try{var r=Api.getChatMember({chat_id:String(l[i].id),user_id:String(uid)});var st=r?String(r.status||(r.result&&r.result.status)||""):"";if(st)ok=(st==="member"||st==="administrator"||st==="creator");}catch(e8){ok=true;}if(!ok)o.push(l[i]);}return o;}41function __fjScreen(ms){var kb=[];for(var i=0;i<ms.length;i++)kb.push([{text:"\ud83d\udce2 "+String(ms[i].title||"Channel"),url:String(ms[i].url)}]);kb.push([{text:"\u2705 Check Subscription",callback_data:"/fjcheck"}]);__uiSend("\ud83d\udd12 <b>ACCESS LOCKED</b>\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\n\u27a1 You must join our channel(s) to use this bot.\n\u27a1 Join all of them, then tap <b>Check Subscription</b>.",{parse_mode:"HTML",reply_markup:{inline_keyboard:kb}});}42function __awardRefPoints(uid){try{uid=String(uid);var ref=Bot.getProperty("referred_by_"+uid);if(!ref)return;ref=String(ref);if(ref===uid)return;if(Bot.getProperty("ref_points_paid_"+uid)===true)return;var rp=__refPoints();Bot.setProperty("ref_points_paid_"+uid,true,"boolean");if(rp<=0)return;var nb=__ptsSet(ref,__ptsGet(ref)+rp);Bot.setProperty("ref_points_total_"+ref,Number(Bot.getProperty("ref_points_total_"+ref)||0)+rp,"number");try{Api.sendMessage({chat_id:ref,parse_mode:"HTML",text:"\ud83c\udf89 <b>NEW REFERRAL VERIFIED</b>\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\u27a1 Reward: <b>+"+rp+" points</b>\n\u27a1 Balance: <b>"+nb+" points</b>",reply_markup:JSON.stringify({inline_keyboard:[[{text:"\ud83d\udc8e Free Points",callback_data:"/freepoints"}]]})});}catch(e9){}}catch(e10){}}43function __pointPrice(p,pl){var v=Number(Bot.getProperty("point_price_"+p+"_"+pl));return (isFinite(v)&&v>0)?v:0;}44try {45var oid2=String(Bot.getProperty("owner_id")||"8225479428"),me=String(user.telegramid);46if(me!==oid2&&Bot.getProperty("co_admin_"+me)!==true){__alert("\u274c Administrators only.");return;}47__ack();48var a=String(params||"").trim().split(/\s+/);49var mode=a[0]||"";50if(mode==="chdel"){51  var di=Number(a[1]),cl=__fjList();52  if(isFinite(di)&&di>=0&&di<cl.length){cl.splice(di,1);Bot.setProperty("fj_channels",cl,"json");}53  mode="ch";54}55if(mode==="ch"){56  var cs=__fjList(),tx="\ud83d\udce2 <b>FORCE JOIN CHANNELS</b>\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\n",kb=[];57  if(!cs.length)tx+="\u274c No channel added yet.\n<i>The bot is open to everyone until you add one.</i>\n";58  for(var i=0;i<cs.length;i++){tx+="\u27a1 <b>"+__esc(cs[i].title)+"</b>\n   <code>"+__esc(cs[i].id)+"</code>\n";kb.push([{text:"\ud83d\uddd1 Remove: "+String(cs[i].title).slice(0,20),callback_data:"/points_admin chdel "+i}]);}59  tx+="\n\u26a0 <b>The bot must be an administrator in every channel</b>, otherwise the check is skipped.";60  kb.push([{text:"\u2795 Add Channel",callback_data:"/points_admin chadd"}]);61  kb.push([{text:"\ud83d\udd19 Points System",callback_data:"/points_admin"}]);62  __uiSend(tx,{parse_mode:"HTML",reply_markup:{inline_keyboard:kb}});return;63}64if(mode==="chadd"){65  User.setProperty("awaiting_fj_channel",true,"boolean");66  __uiSend("\u2795 <b>ADD FORCE-JOIN CHANNEL</b>\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\nSend it in one of these formats:\n\n\u27a1 <code>@mychannel</code>\n\u27a1 <code>@mychannel | My Channel</code>\n\u27a1 <code>-1001234567890 | https://t.me/+abcdef | VIP Channel</code>\n\n\u2139 Use the third format for private channels.\n\u26a0 Add the bot as an administrator there first.",{parse_mode:"HTML",reply_markup:{inline_keyboard:[[{text:"\u274c Cancel",callback_data:"/points_admin ch"}]]}});return;67}68if(mode==="refp"){69  User.setProperty("awaiting_ref_points",true,"boolean");70  __uiSend("\ud83c\udf81 <b>POINTS PER REFERRAL</b>\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\n\u27a1 <b>Current:</b> "+__refPoints()+" points\n\nSend the new value as a number. Example: <code>10</code>",{parse_mode:"HTML",reply_markup:{inline_keyboard:[[{text:"\u274c Cancel",callback_data:"/points_admin"}]]}});return;71}72if(mode==="give"){73  User.setProperty("awaiting_points_give",true,"boolean");74  __uiSend("\ud83d\udc64 <b>GIVE / TAKE POINTS</b>\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\nSend it as <code>UserID | Amount</code>\n\n\u27a1 <code>123456789 | 100</code> \u2192 adds 100 points\n\u27a1 <code>123456789 | -50</code> \u2192 removes 50 points",{parse_mode:"HTML",reply_markup:{inline_keyboard:[[{text:"\u274c Cancel",callback_data:"/points_admin"}]]}});return;75}76if(mode==="ppset"){77  var sp=Number(a[1]),sl=Number(a[2]);78  var sps=Bot.getProperty("stored_products")||[];if(!Array.isArray(sps))sps=[];79  var spr=sps[sp],spl=(spr&&Array.isArray(spr.plans))?spr.plans[sl]:null;80  if(!spr||!spl){__uiSend("\u274c Plan not found.",{parse_mode:"HTML",reply_markup:{inline_keyboard:[[{text:"\ud83d\udd19 Back",callback_data:"/points_admin pp"}]]}});return;}81  User.setProperty("awaiting_point_price",JSON.stringify({p:sp,pl:sl}),"string");82  __uiSend("\ud83d\udcb0 <b>SET POINT PRICE</b>\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\n\ud83c\udfae <b>Product:</b> "+__esc(spr.name)+"\n\u23f3 <b>Duration:</b> "+__esc(String(spl.durationDisplay||(spl.days+" Days")))+"\n\ud83d\udc8e <b>Current:</b> "+(__pointPrice(sp,sl)>0?__pointPrice(sp,sl)+" points":"not redeemable")+"\n\nSend how many points this plan should cost. Example: <code>50</code>\nSend <code>0</code> to remove it from the points shop.",{parse_mode:"HTML",reply_markup:{inline_keyboard:[[{text:"\u274c Cancel",callback_data:"/points_admin ppp "+sp}]]}});return;83}84if(mode==="ppp"){85  var qi=Number(a[1]),qs=Bot.getProperty("stored_products")||[];if(!Array.isArray(qs))qs=[];86  var qp=qs[qi];87  if(!qp||!Array.isArray(qp.plans)){__uiSend("\u274c Product not found.",{parse_mode:"HTML",reply_markup:{inline_keyboard:[[{text:"\ud83d\udd19 Back",callback_data:"/points_admin pp"}]]}});return;}88  var qt="\ud83d\udcb0 <b>"+__esc(qp.name)+"</b>\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\n",qk=[];89  for(var q=0;q<qp.plans.length;q++){90    var qd=String(qp.plans[q].durationDisplay||(qp.plans[q].days+" Days")),qv=__pointPrice(qi,q);91    qt+="\u27a1 <b>"+__esc(qd)+"</b> \u2014 "+(qv>0?qv+" pts":"not redeemable")+" | stock: "+Number(qp.plans[q].stock_count||0)+"\n";92    qk.push([{text:qd+" \u2014 "+(qv>0?qv+" pts":"set price"),callback_data:"/points_admin ppset "+qi+" "+q}]);93  }94  if(!qp.plans.length)qt+="\u274c This product has no plan yet.\n";95  qk.push([{text:"\ud83d\udd19 Back",callback_data:"/points_admin pp"}]);96  __uiSend(qt,{parse_mode:"HTML",reply_markup:{inline_keyboard:qk}});return;97}98if(mode==="pp"){99  var ws=Bot.getProperty("stored_products")||[];if(!Array.isArray(ws))ws=[];100  var wk=[];101  for(var w=0;w<ws.length;w++){102    if(!ws[w])continue;var wn=0;103    if(Array.isArray(ws[w].plans))for(var v=0;v<ws[w].plans.length;v++)if(__pointPrice(w,v)>0)wn++;104    wk.push([{text:(wn?"\ud83d\udc8e ":"\u2796 ")+String(ws[w].name)+(wn?" ("+wn+")":""),callback_data:"/points_admin ppp "+w}]);105  }106  wk.push([{text:"\ud83d\udd19 Points System",callback_data:"/points_admin"}]);107  __uiSend("\ud83d\udcb0 <b>POINT PRICES</b>\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\n"+(ws.length?"Pick a product, then set a point price for each plan.\n\ud83d\udc8e = already redeemable":"\u274c No product in the shop yet."),{parse_mode:"HTML",reply_markup:{inline_keyboard:wk}});return;108}109var ap=Bot.getProperty("stored_products")||[];if(!Array.isArray(ap))ap=[];110var pc=0,sk=0;111for(var m2=0;m2<ap.length;m2++){112  if(!ap[m2]||!Array.isArray(ap[m2].plans))continue;113  for(var n2=0;n2<ap[m2].plans.length;n2++)if(__pointPrice(m2,n2)>0){pc++;sk+=Number(ap[m2].plans[n2].stock_count||0);}114}115__uiSend("\ud83d\udc8e <b>POINTS SYSTEM</b>\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\u27a1 <b>Force-join channels:</b> "+__fjList().length+"\n\u27a1 <b>Points per referral:</b> "+__refPoints()+"\n\u27a1 <b>Redeemable plans:</b> "+pc+"\n\u27a1 <b>Stock on those plans:</b> "+sk+"\n\u27a1 <b>Total redeems:</b> "+Number(Bot.getProperty("points_redeem_count")||0)+"\n\u27a1 <b>Points spent:</b> "+Number(Bot.getProperty("points_spent_total")||0)+"\n\n<i>Points are paid only after the invited user joins every channel and verifies their phone.</i>",{parse_mode:"HTML",reply_markup:{inline_keyboard:[[{text:"\ud83d\udce2 Force Join Channels",callback_data:"/points_admin ch"}],[{text:"\ud83c\udf81 Points Per Referral",callback_data:"/points_admin refp"}],[{text:"\ud83d\udcb0 Point Prices",callback_data:"/points_admin pp"}],[{text:"\ud83d\udc64 Give / Take Points",callback_data:"/points_admin give"}],[{text:"\ud83d\udd19 Admin Panel",callback_data:"/admin"}]]}});116} catch(ePA) { __uiSend("\u26a0\ufe0f Points admin error: "+ePA.message); }