const fs = require('fs'); const request = require('request'); const utf8 = require('utf8'); const Markup = require('telegraf/markup'); const Extra = require('telegraf/extra'); const db_js = require('./db.js'); var db = new db_js("17track"); //=== TOOL FUNCTIONS const track_url = 'https://t.17track.net/restapi/track'; function get_tracking(trck_ids){ let options = { url: track_url, qs:{ "data": [], "guid":"", "timeZoneOffset":-120 } }; for(var id in trck_ids){ options.qs.data.push({num:id+"",fc:0,sc:0}); } return new Promise((resolve,reject)=>{ return request(options, function (err, response, body) { if (err) { return reject(err); } if (response.statusCode != 200 ){ return reject(500); } var resp = JSON.parse(body) if(resp.reply==undefined || resp.reply=='') return reject(500); var results = []; for(var rr in resp.dat){ results.push({id:rr.no, date:rr.z0.a, loc:rr.z0.c, status:rr.z0.z}); } return resolve(results); }); }); // -H 'Accept: application/json, text/javascript, */*; q=0.01' -H 'Accept-Language: en-US,en;q=0.5' // --compressed // -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' // -H 'Referer: https://t.17track.net/en' } //=== MAIN MODULE CONFIG module.exports = function(){ this.key = "17trk"; return { name : "17Track", //Unique Module name key : this.key, //Unique Key for this module, if multiple instances add a number/text to it version : 0.1, //Version Number, Currently unused requirements : { gps: false, //Currently un-used (all module have access to GPS) }, text : [ { trigger : ["/track"], //Array of Triggers public : true, //Should it be shown to user (user can still run the command without knowing it exists) desc : {0:"Tracking with options", 1:"*insert french*", 2:"*insert japanese*", 3:"*insert arabic*", }, requirements : (bot,event,message)=>{ return new Promise((resolve, reject)=>{ return resolve(200); }); }, action : (bot,event,message)=>{ let kb = []; kb.push([bot.mkcb("Add","add",""), bot.mkcb("Delete","del","")]); kb.push([bot.mkcb_close("Close")]); return db.get_v(event.chat.id).then(res =>{ if(res && res != []){ return get_tracking(res).then(res=>{ var text = "*Tracking*\n"; for(var rr in res){ text+=`_${rr.id}_ (${rr.date} - ${rr.loc})\n${rr.status}\n\n`; } return event.reply( text, {"reply_markup":Markup.inlineKeyboard(kb),"parse_mode":"Markdown"}); }); }else{ return event.reply("*No Tracking Yet*", {"reply_markup":Markup.inlineKeyboard(kb),"parse_mode":"Markdown"}); } }) } }, ], reply : [ { requirements : (bot,event,message)=>{ return new Promise((resolve,reject)=>{ if(!message.text || message.reply_to_message.text != "Reply to this message with a tracking id.") return reject(400); return resolve(200); }); }, action : (bot,event,message)=>{ var ids = message.text.replace('.','').replace(',','').split('\n'); return db.get_v(event.chat.id).then(res =>{ if(res && res != []){ return db.set_v(event.chat.id,res.concat(ids)).then(res=>{ return event.reply("Added ids to Tracking.", {"parse_mode":"Markdown"}) }); }else{ return db.set_v(event.chat.id, ids).then(res=>{ console.log(res) return event.reply("Added ids to Tracking.", {"parse_mode":"Markdown"}); }); } }) } } ], regex : [], media : [], callback : [ { trigger : 'add', requirements : (bot,event,data)=>{ return new Promise((resolve, reject)=>{ return resolve(200); }); }, action : (bot,event,data)=>{ return event.reply("Reply to this message with a tracking id."); } }, { trigger : 'del', requirements : (bot,event,data)=>{ return new Promise((resolve, reject)=>{ return resolve(200); }); }, action : (bot,event,data)=>{ console.log(data); if(data){ return db.get_v(event.chat.id).then(res=>{ db.set_v(event.chat.id,res.remove(data)); }); }else{ return db.get_v(event.chat.id).then(res =>{ if(res && res != []){ let kb = []; for(var rr in res){ kb.push([bot.mkcb(rr,"del",rr)]) } kb.push([bot.mkcb_close("Close")]); return event.reply( (res+"") , {"reply_markup":Markup.inlineKeyboard(kb),"parse_mode":"Markdown"}); }else{ return event.reply("*No Tracking To Delete*", {"parse_mode":"Markdown"}) } }); } } } ], inline : [], new_member : (bot,event)=>{}, weburl : [], cron : [] } }