kyc/src/telegram.js

55 lines
1.9 KiB
JavaScript

const fs = require("fs")
const FormData = require('form-data');
const axios = require('axios').default;
function kebabToTitleCase(str) {
return str.split("_").map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(" ")
}
async function sendInfo(filepath, details) {
// const caption = `Customer Name: \`${customer_name}\`\nMAC Address: \`${mac_address}\`\nDevice Name: \`${device_name}\`\nRoaming: **${roaming ? "Yes" : "No"}**\nGaming: **${gaming ? "Yes" : "No"}**`
let caption = "";
let manualHandles = ["mac_address", "device_name", "is_roaming", "is_gaming"];
for (const key in details) {
if (manualHandles.includes(key)) continue;
if (key.startsWith("is")) {
details[key] = details[key] ? "Yes" : "No"
caption += `${kebabToTitleCase(key)}: **${details[key]}**\n`
continue;
}
caption += `${kebabToTitleCase(key)}: \`${details[key]}\`\n`
}
let macAddresses = details["mac_address"].split(",");
let deviceNames = details["device_name"].split(",");
let isRoaming = details["is_roaming"].split(",");
let isGaming = details["is_gaming"].split(",");
caption += macAddresses.map((macAddress, index) => `\n\`${deviceNames[index]}\`\nMAC Address: \`${macAddress}\`\nIs Roaming: **${isRoaming[index] === "true" ? "Yes" : "No"}**\nIs Gaming: **${isGaming[index] === "true" ? "Yes" : "No"}**`).join("\n");
caption = caption.replace(/-/g, '\\-')
var formData = new FormData();
formData.append("photo", fs.createReadStream(filepath));
const query = new URLSearchParams();
query.append("chat_id", process.env.TELEGRAM_CHAT_ID);
query.append("caption", caption);
query.append("parse_mode", "MarkdownV2");
// upload file to telegram using axios
const response = await axios.post(`${process.env.TG_BOTAPI}${process.env.TELEGRAM_BOT_TOKEN}/sendPhoto?${query.toString()}`, formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
})
if (response.status !== 200) {
console.log(response.data)
}
}
module.exports = {
sendInfo
}