Skip to content

Instantly share code, notes, and snippets.

@febritecno
Last active August 31, 2023 03:25
Show Gist options
  • Save febritecno/ddef7c6a8d11380c0119a71de1c23d37 to your computer and use it in GitHub Desktop.
Save febritecno/ddef7c6a8d11380c0119a71de1c23d37 to your computer and use it in GitHub Desktop.
BOT TELEGRAM CEK RESI NINJA EXPRESS https://glitch.com
const express = require("express");
const cs = require("cloudscraper");
const q = require("request");
const qjob = require("qjobs");
const Telegraf = require("telegraf");
const Logs = require("telegraf-update-logger");
const Extra = require("telegraf/extra");
const Markup = require("telegraf/markup");
const Composer = require("telegraf/composer");
const session = require("telegraf/session");
const Stage = require("telegraf/stage");
const WizardScene = require("telegraf/scenes/wizard");
const Date = require("date-format-lite");
const app = express();
const bot = new Telegraf(process.env.BOT_TOKEN);
//method
var parseRupiah = number => {
let tempNum = String(number)
.split("")
.reverse();
let rupiah = "";
for (let i = 0; i < tempNum.length; i++) {
if ((i + 1) % 3 == 0 && i != tempNum.length - 1) {
tempNum[i] = `.${tempNum[i]}`;
}
}
rupiah = `Rp. ${tempNum.reverse().join("")},00`;
return rupiah;
};
var parseTypeTracking = type => {
switch(type)
{
case 'DELIVERY_SUCCESS':
return "Berhasil dikirim."
break;
case 'DRIVER_INBOUND_SCAN':
return "Parcel sedang dikirim."
break;
case 'HUB_INBOUND_SCAN':
return "Berhasil dijemput dari pengirim."
break;
case 'PARCEL_ROUTING_SCAN':
return "Parcel sedang diproses di gudang Ninja Van."
break;
case 'ADDED_TO_SHIPMENT':
return "Berangkat dari gudang Ninja Van - Sedang transit."
break;
case 'DRIVER_PICKUP_SCAN':
return "Pesanan dibuat."
break;
default:
}
}
const error_typing = "Tekan tombol `💬 Masukan Resi` atau ketik /cek";
bot.catch((err, ctx) => {
console.log(`Ooops, encountered an error for ${ctx.updateType}`, err);
});
const stepHandler = new Composer();
stepHandler.action("cek", ctx => {
ctx.replyWithHTML(
"✍️ <i>Silahkan Ketik Resinya ...</i>",
Markup.inlineKeyboard([
Markup.callbackButton("⛔ BATAL !! ", "batal")
]).extra()
);
return ctx.wizard.next();
});
stepHandler.command("cek", ctx => {
ctx.replyWithHTML(
"✍️ <i>Silahkan Ketik Resinya ...</i>",
Markup.inlineKeyboard([
Markup.callbackButton("⛔ BATAL !! ", "batal")
]).extra()
);
return ctx.wizard.next();
});
stepHandler.action("batal", ctx => {
ctx.scene.leave();
ctx.scene.reenter();
return ctx.wizard.stop();
});
stepHandler.command("batal", ctx => {
ctx.scene.leave();
ctx.scene.reenter();
return ctx.wizard.stop();
});
const superWizard = new WizardScene(
"super-wizard",
ctx => {
ctx.replyWithHTML(
`<code>🛰 CEK RESI Ninja Xpress v1.0 🛰</code>
<b>🛑 Silahkan Pilih Menu Dibawah Ini ... </b>`,
Markup.inlineKeyboard([
Markup.callbackButton("💬 Masukan Resi", "cek"),
Markup.callbackButton("❓ Help ", "help")
]).extra()
);
return ctx.wizard.next();
},
stepHandler,
async ctx => {
try {
const input_resi = await ctx.message.text;
cs.get(
"https://api.ninjavan.co/id/dash/1.2/public/orders?tracking_id=" +
input_resi,
async function(err, response, body) {
const wait_data = await JSON.parse(body);
if (response.statusCode != "400") {
//result tracking RESI
const data_general = await wait_data;
const data_tracking = await (wait_data.events);
const data_signature = await wait_data.pods[0];
ctx.replyWithHTML(` ✳ <code> INFORMASI PAKET </code> ✳
✔️ RESI : <code>${data_general.tracking_id}</code>
✔️ PENGIRIM : <code>${data_general.shipper_short_name}</code>
✔️ JENIS PENGIRIMAN : <code>${data_general.service_type}</code>
✔️ BIAYA : <code>${parseRupiah(data_general.goods_amount)}</code>
✔️ TGL_KIRIM : <code>${(data_general.created_at).date("DD MMM YYYY, HH:mm A")}</code>
🔔 STATUS : <b>${data_general.status}</b>
🏡 PENERIMA : <a href="${data_signature.url}">${data_signature.name}</a>
`);
ctx.replyWithHTML(`🧭 <code> RIWAYAT PELACAKAN </code> 🧭
` +
`${Array(wait_data.events.length)
.reverse()
.fill()
.map(
(item, i) => `
|
❎ <code>${parseTypeTracking(data_tracking[i].type)}</code>
|
| 📌 <b>${(typeof data_tracking[i].data.hub_name)=='undefined' ? 'Proses Pengiriman ... ' : data_tracking[i].data.hub_name}</b>
|
| 🕝 <b>${(data_tracking[i].time).date("DD MMM YYYY, HH:mm A")}</b>
|`).join("")}`);
//end result
} else if (response.statusCode == "400") {
ctx.replyWithHTML(` <code>🕜💤 Server Sedang Sibuk ... </code>
<em>mohon tunggu sebentar dan coba lagi.</em>`);
} else if ((wait_data.error.code) == "150003") {
ctx.replyWithHTML(` <code>⛔ Resi Tidak Ditemukan ... </code>`);
} else if (typeof(body) === undefined) {
ctx.replyWithHTML(` <code>🕜💤 Server Sedang Sibuk ... </code>
<em>mohon tunggu sebentar dan coba lagi.</em>`);
} else {
ctx.replyWithHTML(` <code>⛔ Resi Tidak Ditemukan ... </code>`);
}
}
);
} catch (e) {
ctx.replyWithHTML(`<code>✂ Permintaan Dibatalkan ... </code>`);
}
ctx.replyWithMarkdown(
"🔃 `Mau Cek Resi Lagi ... ?`",
Markup.inlineKeyboard([
Markup.callbackButton("🚀 COBA LAGI !! ", "cek")
]).extra()
);
return ctx.scene.leave();
}
);
stepHandler.use(ctx => ctx.replyWithMarkdown(error_typing));
const stage = new Stage([superWizard], { default: "super-wizard" });
// bot.use(Logs({ colors: true }));
bot.use(session());
bot.use(stage.middleware());
bot.command("start", ctx => {
ctx.scene.enter("super-wizard");
});
bot.launch();
app.get("/", (req, res) => {
// cs.get(
// "https://api.ninjavan.co/id/dash/1.2/public/orders?tracking_id=NLIDRP0070005790",
// async function(err, response, body) {
// const wait_data = await JSON.parse(body);
// res.json(`${Array(wait_data.events.length).fill().map((item, i) => `
// ${wait_data.events[i].type}
// `).join('')}`);
// });
res.json({ status: true });
});
const listener = app.listen(process.env.PORT, () => {
console.log("Your app is listening on port " + listener.address().port);
});
{
"name": "bot-cek-resi-telgram",
"version": "0.0.1",
"description": "A simple Node app built on Express, instantly up and running.",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"express": "^4.17.1",
"qjobs": "^1.2.0",
"cloudscraper": "^4.6.0",
"request": "^2.88.2",
"telegraf": "^3.37.0",
"telegraf-update-logger": "^1.1.7",
"date-format-lite": "^17.7.0"
},
"engines": {
"node": "12.x"
},
"repository": {
"url": "https://glitch.com/edit/#!/hello-express"
},
"license": "MIT",
"keywords": [
"node",
"glitch",
"express"
]
}
@Aldiirhab1504
Copy link

Id telegram

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment