180 lines
4.7 KiB
JavaScript
180 lines
4.7 KiB
JavaScript
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 : []
|
|
}
|
|
|
|
} |