Fb Bot fix (summarize and Chatbot include)

 avatar
user_9381000780
plain_text
2 years ago
92 kB
2
Indexable
Never
const cheerio = require('cheerio');
const request = require('request');
const FormData = require('form-data');
const path = require('path');
const fs = require("fs");
const { keep_alive } = require("./keep_alive.js");
const http = require('https'); // or 'https' for https:// URLs
const login = require("fca-unofficial");
const axios = require("axios");
const YoutubeMusicApi = require('youtube-music-api')
const google = require("googlethis");
const ytdl = require('ytdl-core');
const ffmpeg = require('@ffmpeg-installer/ffmpeg');
const ffmpegs = require('fluent-ffmpeg');
ffmpegs.setFfmpegPath(ffmpeg.path);
const musicApi = new YoutubeMusicApi();
const translate = require('@vitalets/google-translate-api');
const numItemsToGenerate = 5; 
const NLPCloudClient = require('nlpcloud');
const { Configuration, OpenAIApi } = require("openai");

// GLOBAL MESSAGE STORAGE
let msgs = {};
let vips = ['100081067119881', '100078591791882', '100017641331277', '100054067209062', '100036695682488'];
let cd = {};
let bots = ["100081067119881", "100017641331277"];
let prefix = ">";
let on = "";
let off = "";
let commands = on;
let autoreply = on;
/*==================================== LEECH tiktok FUNC ====================================*/

async function leechTT(link) {
    out = await axios.get("https://www.tiktokdownloader.org/check.php?v=" + link).then((response) => { return response.data.download_url }).catch((error) => { return "err" })
    return out
}
/*==================================== LEECH tiktok FUNC ====================================*/

/*==================================== LEECH MP3 FUNC ====================================*/
async function conv(v, t, e) {
    const headers = {
        'Content-Type': 'application/x-www-form-urlencoded',
        'X-Requested-Key': 'de0cfuirtgf67a'
    }
    results = await axios.post("https://backend.svcenter.xyz/api/convert-by-45fc4be8916916ba3b8d61dd6e0d6994", "v_id=" + v + "&ftype=mp3&fquality=128&token=" + t + "&timeExpire=" + e + "&client=yt5s.com", { headers: headers }).then((response) => { return response.data.d_url }).catch((error) => { return error.message });
    return results
}
async function fetch(query) {
    const headers = {
        'Content-Type': 'application/x-www-form-urlencoded'
    }
    results = await axios.post("https://yt5s.com/api/ajaxSearch", "q=" + query + "&vt=mp3", { headers: headers }).then((response) => { return response.data }).catch((error) => { return error.message });
    return results
}

async function leechmp3(query) {
    var songs = fetch(query);
    let resp = await songs.then((response) => {
        let slist = response;
        if (slist == "err") {
            return "err"
        }
        else if (slist.t < 1300) {
            let d_url = conv(slist.vid, slist.token, slist.timeExpires).then((response) => {
                return [response, slist.title]
            });
            return d_url
        }
        else if (slist.p == "search") {
            return 'err'
        }
        else if (slist.mess.startsWith("The video you want to download is posted on TikTok.")) {
            return 'tiktok'
        }
        else {
            return 'pakyo'
        }
    });
    return resp
}

/*==================================== LEECH MP3 FUNC ====================================*/

/*==================================== RANDOM QOUTES FUNC ====================================*/

async function getWiki(q) {
    out = await axios.get("https://en.wikipedia.org/api/rest_v1/page/summary/" + q).then((response) => { return response.data }).catch((error) => { return error })
    return out
}
async function qt() {
    let qoute = await axios.get("https://zenquotes.io/api/random").then((response) => { return response.data[0] }).catch((err) => { return "err " });
    return qoute
}
/*==================================== RANDOM QOUTES FUNC ====================================*/

/*====================================  SAIKIIWRAP FUNC ===========================================*/

async function saikiiWrap(ctx, text, maxWidth) {
    return new Promise(resolve => {
        if (ctx.measureText(text).width < maxWidth) return resolve([text]);
        if (ctx.measureText('W').width > maxWidth) return resolve(null);
        const words = text.split(' ');
        const lines = [];
        let line = '';
        while (words.length > 0) {
            let split = false;
            while (ctx.measureText(words[0]).width >= maxWidth) {
                const temp = words[0];
                words[0] = temp.slice(0, -1);
                if (split) words[1] = `${temp.slice(-1)}${words[1]}`;
                else {
                    split = true;
                    words.splice(1, 0, temp.slice(-1));
                }
            }
            if (ctx.measureText(`${line}${words[0]}`).width < maxWidth) line += `${words.shift()} `;
            else {
                lines.push(line.trim());
                line = '';
            }
            if (words.length === 0) lines.push(line.trim());
        }
        return resolve(lines);
    });
}
/*======================================== BIBLE VERSE ============================================*/

async function verse() {
    let v = await axios.get("http://labs.bible.org/api/?passage=random&type=json").then((response) => {
        return response.data[0]
    }).catch((err) => {
        return "Error"
    })
    return v
}

/*====================================== BIBLE VERSE ==============================================*/
/*==================================== ANIMELIST ====================================*/
async function wholesome() {
    let req = axios("https://wholesomelist.com/api/random");
    return req;
}
/*==================================== ANIMELIST ====================================*/


login({ appState: JSON.parse(fs.readFileSync('fbstate.json', 'utf8')) }, (err, api) => {
    if (err) return console.error(err);
    api.setOptions({ listenEvents: true, selfListen: true });


    /*====================================== AUTO ACCEPT THREAD ==============================================*/
    function getThread(){
        let taggs = ["OTHER", "unread"];
        let tagg = ["PENDING", "unread"];
        api.getThreadList(1, null, taggs, (err, list) => {
            if (err) return console.error("error getting list");
            if (list.length != 0) {
                try {
                    api.handleMessageRequest(list[0]['threadID'], true, (err) => {
                        if (err) return console.log("HANDLE MESSAGE REQUEST ERROR");
                        console.log('Thread Accepted')


                        api.sendMessage(`*=================================*\n\n💠Hello This is Kevz Bot at your service how can I help you?\n\nI'm here to monitor and serve.\n💠For more info and to know me further just type >help to know me further\n\nA friendly message from the Creator💕\n\n*=================================*`, list[0]['threadID']);
    
                        api.changeNickname("Kevz Bot", list[0]['threadID'], "100081067119881", (err) => {
                            if (err) return console.error("CHANGE NICKNAME ERROR");
                        });
                    });
                } catch(err) {

                }
            }
        });
        api.getThreadList(1, null, tagg, (err, list) => {
            if (err) return console.error("error getting list");
            if (list.length != 0) {
                try {
                    api.handleMessageRequest(list[0]['threadID'], true, (err) => {
                        if (err) return console.log("HANDLE MESSAGE REQUEST ERROR");
                        console.log('Thread Accepted')
                        api.sendMessage("Hello This is Kevz Bot at your service how can I help you?\n\nType: I'm here to monitor and serve. For more info and to know me further just type >help\n\nA friendly message from the Creator💕", list[0]['threadID']);
    
                        api.changeNickname("Kevz Bot", list[0]['threadID'], "100081067119881", (err) => {
                            if (err) return console.error("CHANGE NICKNAME ERROR");
                        });
                    });
                } catch(err) {

                }
            }
        }); 
    }
    var x = setInterval(getThread, 90000);
/*====================================== AUTO ACCEPT THREAD ==============================================*/


    const listenEmitter = api.listen(async (err, event) => {
        if (err) return console.error(err);
        let sdrid = event.senderID;
        let trid = event.threadID;
        let msgid = event.messageID
        let input = event.body;
        /*====================================== AUTO CHANGE NICKNAME ==============================================*/
        function changeNN() {
            api.getThreadInfo(trid, (err, call) => {
              try {
                if (call.nicknames.hasOwnProperty('100081067119881')) {
                    if (call.nicknames['100081067119881'] != "Kevz Bot") {
                        api.changeNickname("Kevz Bot", trid, "100081067119881", (err) => {
                            if (err) return console.error(err);
                        });
                    }
                } else {

                    api.changeNickname("Kevz Bot", trid, "100081067119881", (err) => {
                        if (err) return console.error(err);
                    });
                }
              } catch(err) {
                
              }
            })
        }
/*====================================== AUTO CHANGE NICKNAME ==============================================*/
switch (event.type) {        
case "event":
                switch (event.logMessageType) {
                    case "log:subscribe":

                        api.getThreadInfo(trid, (err, call) => {
                            console.log(call);
                            if (call.isGroup) {
                                let mess = {
                                    body: `*=================================*\n💠Hello I am Kevz Bot in charge of monitoring and providing service in this group💠\n*=================================*\n\n*=================================*\nWelcome😍 @${event.logMessageData.addedParticipants[0].fullName}, You're the ${call.participantIDs.length} Member of ${call.threadName}\n\nPlease follow the terms of use, respect all members and admins. Hope that you enjoy and find friends here.\n💠For more info about me just type " >help " to know my function.\n⚠️Please don't spam using command to avoid the bot from being muted as much as possible request again after finishing the other requests\n💠Use Responsibly\nLet the bot do there job💕\n\n~NerfKevz (Mark Kevin Manalo)\nA friendly message from the Creator💕\n*=================================*`,
                                    mentions: [{
                                        tag: event.logMessageData.addedParticipants[0].fullName,
                                        id: event.logMessageData.addedParticipants[0].userFbId
                                    }]
                                }
                                api.sendMessage(mess, trid);
                            }
                        })
                        break;
                        case "log:unsubscribe":
                            var id = event.logMessageData.leftParticipantFbId;

                            api.getThreadInfo(event.threadID, (err, gc) => {
                                if (err) done(err);
                                console.log(gc)
                                api.getUserInfo(parseInt(id), (err, data) => {
                                    if (err) {
                                        console.log(err)
                                    } else {
                                        console.log(data)
                                        for (var prop in data) {
                                            if (data.hasOwnProperty(prop) && data[prop].name) {
                                                var gcn = gc.threadName;
                                                api.sendMessage({
                                                    body: "Hanggang sa muli, @" + data[prop].name + " senpai🥺😥\n\nKaming lahat ng " + gcn + " ay mamimiss ka🥺😭", mentions: [{ tag: '@' + data[prop].name, id: id, }], attachment:
                                                        fs.createReadStream(__dirname + "/goodbye.mp3")
                                                }, event.threadID)
                                            }
                                        }
                                    }
                                })
                            })
                            await new Promise(resolve => setTimeout(resolve, 7500));
                            api.getThreadInfo(event.threadID, (err, gc) => {
                                if (err) done(err);
                                var gcn = gc.threadName;
                                var arr = gc.participantIDs;
                                var Tmem = arr.length;
                                api.sendMessage(gcn + "\n\n💠Total Member(Updated)💠\n\n =>" + Tmem, event.threadID, event.messageID)
                            })
                        break;
                }
                break;
            
            case "message_reply":
                let replysid = event.messageReply.senderID;
                let replytid = event.messageReply.threadID;
                if (vips.includes(event.senderID)) {
                    api.setMessageReaction("😍", event.messageID, (err) => {
                    }, true);
                }
                // else {
                // api.setMessageReaction("🥱", //event.messageID, (err) => {
                //   }, true);
                //  }
                msgs[msgid] = input;
                if (input.startsWith(">redeem")) {
                    let data = input.split(" ");
                    if (data.length < 3) {
                        api.sendMessage("❌Invalid Use Of Command!\n💡Usage: >redeem id vcode", event.threadID);
                    } else {
                        try {
                            let gameid = data[1];
                            let vcode = data[2];
                            let code = event.messageReply.body;
                            function redeem(gameid, vcode, code) {
                                (async () => {
                                    try {
                                        const response = await axios.post('https://api.mobilelegends.com/mlweb/sendCdk', { "redeemCode": code, "roleId": gameid, "vCode": vcode, "language": "en" });
                                        const msgs = ('{"-20023": "Invalid Game ID","-20027":"Request too Frequent!...","-20010":"Invalid Verification Code!","0":"Redeemed Successfully!","1401":"redeem in specified zone","1402":"This CDKey does not exist","1403":"CDKey expired","1404":"Incorrect format of CDKey","1405":"This CDKey has been redeemed.","1406":"Bound Account CDKey. Incorrect account.","1407":"Exceeds exchange amount limit.","1408":"Can only redeem in specified zone.","1409":"Restriction Requirement Configuration Error","1410":"This CDKey is being redeemed by many players. The Server is processing... Please try again later.","1411":"It\'s not exchange time, please wait.","1412":"Limit reached for number of people exchanging.","1413":"You are not a new user","1414":"You haven\'t purchased yet","1415":"Your level is too high","1416":"You can not redeem the CDKey through your channel","1036":"The amount limitation of CDKey redeemption"}');
                                        let responses = JSON.parse(msgs);
                                        let resp = response.data.code;
                                        let respcode = resp.toString();
                                        let msg = responses[respcode];
                                        let stat = response.data.status;
                                        api.sendMessage("💠Kevz Bot x Redeemer💠\n\n🆔Game Id: " + gameid + "\n🔰Status: " + stat + "\n📧Message: " + msg + "", event.threadID);
                                    } catch (error) {
                                        console.log(error.message);
                                    }
                                })();
                            }
                            api.sendMessage("🔁Trying to Redeem...(" + code + ")", event.threadID);
                            redeem(gameid, vcode, code);
                        } catch (err) {
                            api.sendMessage("❌Error: " + err.message, event.threadID);
                        }
                    }
                }


                if (input.startsWith(">sendvc")) {
                    let data = input.split(" ");
                    if (data.length < 1) {
                        api.sendMessage("❌Invalid Use Of Command!\n💡Usage: >sendvc id", event.threadID);
                    } else {
                        try {
                            let gameid = event.messageReply.body;
                            function sendvc(gameid) {
                                (async () => {
                                    try {
                                        const response = await axios.get('https://api.mobilelegends.com/mlweb/sendMail?roleId=' + gameid.toString() + '&language=en');
                                        const msgs = ('{"9601": "Error sending and receiving vcode","-20023": "Invalid Game ID","-20027":"Request too Frequent!...","-20028":"Verification code already sent...","-20010":"Invalid Verification Code!","0":"Verification Code Sent Successfully!","1401":"redeem in specified zone","1402":"This CDKey does not exist","1403":"CDKey expired","1404":"Incorrect format of CDKey","1405":"This CDKey has been redeemed.","1406":"Bound Account CDKey. Incorrect account.","1407":"Exceeds exchange amount limit.","1408":"Can only redeem in specified zone.","1409":"Restriction Requirement Configuration Error","1410":"This CDKey is being redeemed by many players. The Server is processing... Please try again later.","1411":"It\'s not exchange time, please wait.","1412":"Limit reached for number of people exchanging.","1413":"You are not a new user","1414":"You haven\'t purchased yet","1415":"Your level is too high","1416":"You can not redeem the CDKey through your channel","1036":"The amount limitation of CDKey redeemption"}');
                                        let responses = JSON.parse(msgs);
                                        let resp = response.data.code;
                                        let respcode = resp.toString();
                                        let msg = responses[respcode];
                                        let stat = response.data.status;
                                        api.sendMessage("💠Kevz Bot x Redeemer💠\n\n🆔Game Id: " + gameid + "\nStatus: " + stat + "\nMessage: " + msg + "", event.threadID);
                                    } catch (error) {
                                        console.log(error.response.body);
                                    }
                                })();
                            }
                            api.sendMessage("Sending Verification Code...(" + gameid + ")", event.threadID);
                            sendvc(gameid);
                        } catch (err) {
                            api.sendMessage("Error: " + err.message, event.threadID);
                        }
                    }
                }
                
                
                if (input.startsWith(">removebg")) {
          const { threadID, messageID, type, messageReply } = event;
if (type != "message_reply") return           
	if (messageReply.attachments.length < 1){
	api.sendMessage("[ERR]⚠️No Image Detected!", event.threadID,event.messageID);
	} else if (messageReply.attachments.length > 1){
	api.sendMessage("[ERR]❌Cannot use bulk bg remover at multiple image at same time, Select 1 Image Only!", event.threadID,event.messageID);
	}
	else if ((messageReply.attachments.length === 1)&&(messageReply.attachments[0].type == 'photo')){
const url = messageReply.attachments[0].url;
request(url).pipe(fs.createWriteStream("SharedFilesphoto.png")).on('finish',() => {
const inputPath = 'SharedFilesphoto.png';
const formData = new FormData();
formData.append('size', 'auto');
formData.append('image_file', fs.createReadStream(inputPath), path.basename(inputPath));

axios({
  method: 'post',
  url: 'https://api.remove.bg/v1.0/removebg',
  data: formData,
  responseType: 'arraybuffer',
  headers: {
    ...formData.getHeaders(),
    'X-Api-Key': '698ahJBaGvBmxTUp5iMC6bnt',
  },
  encoding: null
})

.then((res) => {
  if(res.status != 200) return console.error('Error:', res.status, res.statusText);
  fs.writeFileSync("SharedFilesphoto.png", res.data);
  var message = {
         body:("KEVZ BG Remover"),
         attachment: 
fs.createReadStream(__dirname + "/SharedFilesphoto.png")}  
  api.sendMessage(message, event.threadID,event.messageID);
})
.catch((error) => {
api.sendMessage("[ERR]❌Request Failed\n\n"+error, event.threadID,event.messageID);
    return console.error('Request failed:', error);
});
})}

}
if (input.startsWith(">add")) {    
                                api.addUserToGroup(replysid, (err,data) => {
                                if (err) return api.sendMessage("User not Found",trid,msgid);
                                
                            });
}

if (input.startsWith(">fb")) {

                    api.getUserInfo(replysid, (err, data) => {
                        if (err) return console.log(err);

                        let name = data[replysid]['name'];
                        let vanity = data[replysid]['vanity'];
                        let profileUrl = data[replysid]['profileUrl'];
                        let profileBio = data[replysid]['profileBio'];
                        

                        request(`https://graph.facebook.com/${replysid}/picture?height=720&width=720&access_token=6628568379%7Cc1e620fa708a1d5696fb991c1bde5662`).pipe(fs.createWriteStream('files.jpg')).on('finish', function () {
                            console.log('finished downloading files..');
                            var message = {
                                body: `👤Name: ${name}\n💳NameID: ${vanity}\n🆔Id: ${replysid}\n🔗Profile: ${profileUrl}`,
                                attachment: fs.createReadStream(__dirname + '/files.jpg')
                                    .on("end", async () => {
                                        if (fs.existsSync(__dirname + '/files.jpg')) {
                                            fs.unlink(__dirname + '/files.jpg', function (err) {
                                                if (err) console.log(err);
                                                console.log(__dirname + '/files.jpg is deleted');
                                            })
                                        }
                                    })
                            }
                            
                            api.sendMessage(message, replytid);

                        })

                    })

                    }

                    break;


            case "message":
                if (vips.includes(event.senderID)) {
                    api.setMessageReaction("😍", event.messageID, (err) => {
                    }, true);
                }
                //  else {
                // api.setMessageReaction("🥱", //event.messageID, (err) => {
                //  }, true);
                //    }
                if (event.attachments.length != 0) {
                    if (event.attachments[0].type == "photo") {
                        msgs[event.messageID] = ['img', event.attachments[0].url]
                    }
                    else if (event.attachments[0].type == "animated_image") {
                        msgs[event.messageID] = ['gif', event.attachments[0].url]
                    }
                    else if (event.attachments[0].type == "sticker") {
                        msgs[event.messageID] = ['sticker', event.attachments[0].url]
                    }
                    else if (event.attachments[0].type == "video") {
                        msgs[event.messageID] = ['vid', event.attachments[0].url]
                    }
                    else if (event.attachments[0].type == "audio") {
                        msgs[event.messageID] = ['vm', event.attachments[0].url]
                    }
                } else {
                    msgs[event.messageID] = event.body
                }
                if (event.body != null) {
                    let input = event.body;




                    // THIS BOT WAS CREATED BY Earl Shine! DO NOT STEAL WITHOUT PROPER CREDITS!
                    if (input.startsWith(">help")) {

                        let data = input.split(" ");
                        if (data.length < 2) {
                            api.getUserID("Zodiac.lang.malakas", (err, data) => {
                                api.sendMessage({
                                    body: "💠List of Commands💠\n\nPrefix: >\n\n>play (music title)\n\n>leech (yt link)\n\n>tiktokdl (tiktok link)\n\n>motivation\n\n>meme\n\n>verse\n\n>animequote\n\n>RemoveBG (reply this command to a picture you want to remove background)\n\n>fb (reply these to a message you want to stalk) or type >fb @(then mention)\n\n>add <fb id> (to add user to the group)\n\n>landscape (landscape picture)\n\n>anime <version> <endpoint> ( if ever you are worry use the command >endpoint to know the version and endpoint\n\n>endpoint (showing the list of version and endpoints)\n\n>info (see creator's message and other info)\n\n💠Text to Speech 💠\n\n>saytag (tagalog voice)\n\n>sayjap (Japanese voice)\n\n💠For Admin Commands💠\n\n>promote (to promote a member into admin)\n\n>demote (to demote a member from being admin)\n\n>kick (to kick members from the group)\n\n💠For Educational Purposes💠\n\n>wiki (word)\n\n>search (your queries) [google response]\n\n>dsearch (your queries) [powered by duckduck go]\n\n>Brainly (your question)\n\n>summarize (text you want to summarize)\n\n💠FOR ML PURPOSES💠\n\n>sendvc (ml id) or reply >sendvc to na game id\n\n>redeem (ml id, vcode,) then reply this to a code\n\n💠AI Chat Bot💠\n🔰Kevin (an AI with interesting but sarcastic behavior.\nIf you feel you're alone, looking for chat mates He's here for you)💠\n\n💠This function well if the command goes well\n💠Upon using this bot\nDo not Spam to avoid getting error\nand to provide your request\nUse responsibly\n💠Message from the Creator\n\nMade by:  " + '@Kevz Himself' + "" + "\n\n\n",
                                    mentions: [{
                                        tag: '@Kevz Himself',
                                        id: data[0].userID,
                                    }]
                                }, event.threadID, event.messageID);
                            });
                        }
                    }

                    if (input.includes("kevz") || input.includes("Kevz") && !bots.includes(event.senderID)) {
                        api.getUserInfo(event.senderID, (err, data) => {
                            if (err) {
                                console.log(err)
                            } else {
                                api.sendMessage(("Yes po Ma'am/Sir, " + data[event.senderID]['name'] + "! Bakit nyo po hinahanap si master Mark Kevin Manalo? He's not online now Maybe he was busy.\n\nKevz Bot Auto reply"), event.threadID, event.messageID)
                            }
                        })
                    }
                    if (input.includes("mark") || input.includes("Mark") && !bots.includes(event.senderID)) {
                        api.getUserInfo(event.senderID, (err, data) => {
                            if (err) {
                                console.log(err)
                            } else {
                                api.sendMessage(("  " + data[event.senderID]['name'] + " Si Mark tahimik lang pero sumisigaw ang gawa🎶\n\nKevz Bot Auto reply"), event.threadID, event.messageID)
                            }
                        })
                    }
                    if (input.includes("pogi") || input.includes("Pogi") && !bots.includes(event.senderID)) {
                        api.getUserInfo(event.senderID, (err, data) => {
                            if (err) {
                                console.log(err)
                            } else {
                                api.sendMessage(("Pag pogi pinag uusapan " + data[event.senderID]['name'] + " Si Master Mark Kevin Manalo at ako lng wala ng iba. Charizzzz\n\nKevz Bot Auto reply"), event.threadID, event.messageID)
                            }
                        })
                    }
                    if (input.includes("ganda") || input.includes("beautiful") && !bots.includes(event.senderID)) {
                        api.getUserInfo(event.senderID, (err, data) => {
                            if (err) {
                                console.log(err)
                            } else {
                                api.sendMessage(("Wag kang assuming " + data[event.senderID]['name'] + " Ang panget panget mo kaya! Charizzz\n\nKevz Bot Auto reply"), event.threadID, event.messageID)
                            }
                        })
                    }
                    if (input.includes("mahal") || input.includes("love") && !bots.includes(event.senderID)) {
                        api.getUserInfo(event.senderID, (err, data) => {
                            if (err) {
                                console.log(err)
                            } else {
                                api.sendMessage(("Asa ka " + data[event.senderID]['name'] + " na mahal kapa nya, Mabuti pa mag move on kana at tanggapin ang katotohanan na may iba na sya\n\nKevz Bot Auto reply"), event.threadID, event.messageID)
                            }
                        })
                    }
                    if (input.includes("hirap") || input.includes("Difficult") && !bots.includes(event.senderID)) {
                        api.getUserInfo(event.senderID, (err, data) => {
                            if (err) {
                                console.log(err)
                            } else {
                                api.sendMessage(("Mahirap talaga " + data[event.senderID]['name'] + " tanggapin ang katotohanan na iniwan pinagpalit ka nya. Ganyan talaga yan sa umpisa\n\nKevz Bot Auto reply"), event.threadID, event.messageID)
                            }
                        })
                        }
                        if (input.startsWith(">landscape")){
                   request("https://source.unsplash.com/1600x900/?landscape").pipe(fs.createWriteStream(__dirname + '/landscape.png')).on('finish',() =>{
                   var message = {
                   attachment: 
fs.createReadStream(__dirname + '/landscape.png')}
api.sendMessage(message ,event.threadID,event.messageID)
                   })
                    }
                    if (input.startsWith(">saytag")) {
                        let data = input.split(" ");
                        if (data.length < 2) {
                            api.sendMessage("Invalid Use of Command:>saytag message", trid, msgid);
                        } else {
                            try {
                                data.shift();
                                let responses = "https://texttospeech.responsivevoice.org/v1/text:synthesize?text=" + encodeURIComponent(data.join(" ")) + "&lang=fil-PH&engine=g1&rate=0.5&key=0POmS5Y2&gender=female&pitch=0.5&volume=1";
                                var file = fs.createWriteStream(__dirname + '/say.mp3');
                                var gifRequest = http.get(responses, function (gifResponse) {
                                    gifResponse.pipe(file);
                                    file.on('finish', function () {
                                        console.log('finished downloading')
                                        var message = {
                                            attachment: fs.createReadStream(__dirname + '/say.mp3')
                                                .on("end", async () => {
                                                    if (fs.existsSync(__dirname + '/say.mp3')) {
                                                        fs.unlink(__dirname + '/say.mp3', function (err) {
                                                            if (err) console.log(err);
                                                            console.log(__dirname + '/say.mp3 is deleted');
                                                        })
                                                    }
                                                })
                                        }
                                        api.sendMessage(message, trid, msgid);
                                    });
                                });

                            } catch {
                                api.sendMessage("Unexpected Error", trid, msgid);
                            }
                        }
                        }
                        if (input.startsWith(">sayjap")) {
                        let data = input.split(" ");
                        if (data.length < 2) {
                                api.sendMessage("Invalid Use of Command: >sayjap message", trid, msgid);
                            } else {
                                try {    
                                    data.shift();
                                    let responses = "https://texttospeech.responsivevoice.org/v1/text:synthesize?text="+encodeURIComponent(data.join(" "))+"&lang=ja&engine=g1&rate=0.5&key=0POmS5Y2&gender=female&pitch=0.5&volume=1";
                                    var file = fs.createWriteStream(__dirname + '/sayjap.mp3');
                                    var gifRequest = http.get(responses, function (gifResponse) {
                                        gifResponse.pipe(file);
                                        file.on('finish', function () {
                                            console.log('finished downloading')
                                            var message = {
                                                attachment: fs.createReadStream(__dirname + '/sayjap.mp3')
                                                .on("end", async () => {
                                                    if (fs.existsSync(__dirname + '/sayjap.mp3')) {
                                                        fs.unlink(__dirname + '/sayjap.mp3', function (err) {
                                                            if (err) console.log(err);
                                                            console.log(__dirname + '/sayjap.mp3 is deleted');  
                                                        })
                                                    }
                                                })
                                            }
                                            api.sendMessage(message, trid, msgid);
                                        });
                                    });
                                } catch {
                                    api.sendMessage("Unexpected Error", trid, msgid);
                                }

                            }
                        }
                        if (input.startsWith(">hsouce")) {
                         let data = input.split(" ");
                         let dls = wholesome();
                            dls.then((response) => {
                                let tags = response.data.entry.tags.join(', ');
                                try {    
    
                                    let responses = response.data.entry.image;
                                    var file = fs.createWriteStream(__dirname + '/hsouce.png');
                                    var gifRequest = http.get(responses, function (gifResponse) {
                                        gifResponse.pipe(file);
                                        file.on('finish', function () {
                                            console.log('finished downloading')
                                            
                var messages = {
                    body: `Title: ${response.data.entry.title}\nAuthor: ${response.data.entry.author}\nTag(s): ${tags}\nNote: ${response.data.entry.note}\nParody: ${response.data.entry.parody}\nTier: ${response.data.entry.tier}\nPages: ${response.data.entry.pages}\nLink: ${response.data.entry.link}`,
                    attachment: fs.createReadStream(__dirname + '/hsouce.png')
                    .on('end', async () => {
                        if (fs.existsSync(__dirname + '/hsouce.png')) {
                            fs.unlink(__dirname + '/hsouce.png', function (err) {
                                if (err) console.log(err);
                                console.log(__dirname + '/hsouce.png is deleted');  
                            })
                        }
                    })
                }
                api.sendMessage(messages, trid, msgid);
                                        });
                                    });
                                } catch {
                                    api.sendMessage("Unexpected Error", trid, msgid);
                                }
                                });
                    }
                    if (input.startsWith(">kick")) {
                        api.getThreadInfo(event.threadID, (err, gc) => {
                            var { mentions, senderID, threadID, messageID } = event;
                            var mentionid = `${Object.keys(mentions)[0]}`;
                            var admin = gc.adminIDs;
                            const res = [];
                            for (let i = 0; i < admin.length; i++) {
                                var gca = admin[i].id;
                                res.push(gca);
                            }
                            var admin = res;
                            if (admin.includes(event.senderID)) {
                                if (admin.includes("100081067119881")) {
                                    api.removeUserFromGroup(mentionid, threadID)
                                } else {
                                    api.sendMessage("[ERR]❌Possible Reasons\n\n1. Bot is not an Admin on GC.\n\nNote: To use !Kick @user feature make sure to add this bot on your group admin", threadID, messageID)
                                }
                            } else {
                                api.sendMessage("[ERR]⚠️User is not a Group Admin", threadID, messageID)
                            }
                        })
                    }
                    if (/(goodmorning|good morning|magandang umaga|magandangumaga)/ig.test(input.toLowerCase())) {
                        api.getUserInfo(event.senderID, (err, data) => {
                            api.sendMessage({
                                body: "Good Morning😘💕" + '@' + data[event.senderID]['name'] + "\nRise up, start fresh see the bright opportunity in each day💕\n\n~Kevz Bot Auto Greet",
                                mentions: [{
                                    tag: '@' + data[event.senderID]['name'],
                                    id: event.senderID,
                                    fromIndex: 0
                                }],
                            }, event.threadID, event.messageID)
                        })
                    }
                    else if (/(goodafternoon|good afternoon|magandang hapon|magandanghapon)/ig.test(input.toLowerCase())) {
                        api.getUserInfo(event.senderID, (err, data) => {
                            api.sendMessage({
                                body: "Good Afternoon😘💕" + '@' + data[event.senderID]['name'] + "\nThe afternoon is that time in the day when you can fulfill that big dream of yours.\nHave the best afternoon💕\n\n~Kevz Bot Auto Greet ",
                                mentions: [{
                                    tag: '@' + data[event.senderID]['name'],
                                    id: event.senderID,
                                    fromIndex: 0
                                }],
                            }, event.threadID, event.messageID)
                        })
                    }
                    else if (/(goodevening|good evening|magandang gabi|magandanggabi)/ig.test(input.toLowerCase())) {
                        api.getUserInfo(event.senderID, (err, data) => {
                            api.sendMessage({
                                body: "Good Evening😘💕" + '@' + data[event.senderID]['name'] + "\nEvenings are ways to end the days stress and struggle. I hope you didn't give yourself too much stress.\nHave a great evening💕\n\n~Kevz Bot AutoGreet",
                                mentions: [{
                                    tag: '@' + data[event.senderID]['name'],
                                    id: event.senderID,
                                    fromIndex: 0
                                }],
                            }, event.threadID, event.messageID)
                        })
                    }
                    else if (/(goodnight|good night|gnight|nyt)/ig.test(input.toLowerCase())) {
                        api.getUserInfo(event.senderID, (err, data) => {
                            api.sendMessage({
                                body: "Good Night😘💕" + '@' + data[event.senderID]['name'] + "\nTonight, It will be your most colorful dream and your sweetest sleep in life. Just let me in when I knock on the door of your heart. Again Good night💕\n\n~Kevz Bot AutoGreet",
                                mentions: [{
                                    tag: '@' + data[event.senderID]['name'],
                                    id: event.senderID,
                                    fromIndex: 0
                                }],
                            }, event.threadID, event.messageID)
                        })
                    }
                    
                    else if (input.startsWith(">info")) {

                        let data = input.split(" ");
                        if (data.length < 2) {
                            api.getUserID("Zodiac.lang.malakas", (err, data) => {
                                api.sendMessage({
                                    body: "💠Kevz Bot Information💠\n\n💠Created by:  " + '@NerfKevz' + "\n💠Description: Kevz Bot is a Facebook messenger chat bot made using NodeJS, Axios and the Unofficial Facebook Chat API.\n\n\n💠Thanks to:\n©️Earl and Company and to all We are Bot's Dev's TeamLabyu all mga boss\n\n💠special thanks\n💠Boss Jet\n💠Boss Justine\n\nFor fixing error and fixing bugs\nMade with💕 by: NerfKevz with the help of the mentioned above\n\n💠Upon using this bot make sure to used responsibly\nto avoid getting muted or malfunction\n\n" + "\n\n\n",
                                    mentions: [{
                                        tag: '@NerfKevz',
                                        id: data[0].userID,
                                    }]
                                }, event.threadID, event.messageID);
                            });

                        }
                    }

                    if (input.startsWith(">verse")) {
                        let v = verse()
                        v.then((response) => {
                            api.sendMessage("From the book of " + response.bookname + " chapter " + response.chapter + " verse " + response.verse + "\n\n" + response.text, event.threadID)
                        }).catch((err) => {
                            console.log(err)
                        })

} 
  
else if (input.startsWith(">brainly")) {
var text = input;     
text = text.substring(7)
const r = await google.search("Brainly"+text);
const url = r.results[0].url;
    const { data } = await axios.get(url);
    //console.log(data)
    //fs.writeFileSync("Axios.txt", data, "utf8");
    const $ = cheerio.load(data);
    const mainClass = $("h1[data-testid='question_box_text']");
    const mainClass2 = $("div[class='brn-qpage-next-answer-box__content js-answer-content-section'] div div div");
    const res = [];
    mainClass.each((idx, el) => {
    const total = {};
      total.question = $(el).children("span[class='sg-text sg-text--large sg-text--bold sg-text--break-words brn-qpage-next-question-box-content__primary']").text();
      res.push(total);
      });
      const res2 = [];
      mainClass2.each((idx, el) => {
      const total2 = {};
      total2.answer = $(el).children("p").text();
      res2.push(total2);
    });
    if ((res.length < 1) && (res2.length < 1)){
    api.sendMessage("[ERR]❌There's no available anwers for this question on brainly. try different one.",event.threadID,event.messageID)
    }else{
    var q = res[0].question;
    var a = res2[0].answer;
    api.sendMessage("💠Brainly Ft. KevzBot💠\n\n🔰Question: "+q+"\n"+a,event.threadID,event.messageID)}
    }

else if (input.startsWith(">dsearch")) {
        let data = input.split(" ");
         if (data.length < 2) {
            api.sendMessage("❌Invalid Use Of Command!\n💡Usage: >dsearch (powered by duckduckgo)", event.threadID);
        }else{
            data.shift()
        let texts = data.join(" ");
        let text = data.join(" ");
            axios.get('https://api.duckduckgo.com/?q='+text+'&format=json&pretty=1')
                 .then(response => {
                    api.sendMessage("You search for: " + text + "\nTopic: " +response.data.Heading + "\n\n" + response.data.Abstract + "\n\n" + response.data.Image + "", event.threadID, event.messageID);
                         })
                         .catch(error => {
                        api.sendMessage(`${err.message}`, event.threadID, event.messageID);
                       });
                     }
                     }
                     else if (input.startsWith(">summarize")) {
var {mentions, senderID, threadID, messageID} = event;
                    if (input.split(" ").length < 2){
                    api.sendMessage("⚠️Invalid Use Of Command!\n💡Usage: >summarize <text/paragraph>",threadID,messageID)
                    }else{
                    var text = input.substring(11);
                    const client = new NLPCloudClient('bart-large-cnn','515b430b172c93d62dd9f149c3274037839083ff')
client.summarization(text).then(function ({data}) {
    api.sendMessage("💠Kevz Bot x Summarizer💠: \n\n"+data.summary_text,threadID,messageID)
  }).catch(function (err) {
    api.sendMessage("⚠️[ERR]: Status:"+err.response.status+"\nError Details: "+err.response.data.detail,threadID,messageID)
  });
}
}
else if (input.startsWith("Kevin")){
                   var {mentions, senderID, threadID, messageID} = event;
                    if (input.split(" ").length < 2){
                    api.sendMessage("⚠️Invalid Use Of Command!\n💡Usage: Kevin <anything>",threadID,messageID)
                    }else{
                    var text = input.substring(6)
                    const configuration = new Configuration({
  apiKey: "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",
});
                    const openai = new OpenAIApi(configuration);
const {data} = await openai.createCompletion("text-davinci-002", {
  prompt: text,
  temperature: 0.5,
  max_tokens: 60,
  top_p: 0.3,
  frequency_penalty: 0.5,
  presence_penalty: 0.0,
});
          api.sendMessage(data.choices[0].text, threadID, messageID)
                    }
                     }
                     
                    else if (input.startsWith(">animequote")) {
                        axios.get('https://animechan.vercel.app/api/random')
                            .then(response => {
                                api.sendMessage("'" + response.data.quote + "'" + "\n\n- " + response.data.character + " (" + response.data.anime + ")", event.threadID, event.messageID);
                            })
                            .catch(error => {
                                api.sendMessage(error, event.threadID, event.messageID);
                            });
                    }
                    else if (input.startsWith(">promote")) {
                        if (Object.keys(event.mentions).length === 0) { api.sendMessage("[ERR] Invalid use of command, missing tagged user", event.threadID, event.messageID) }
                        else {
                            api.getThreadInfo(event.threadID, (err, gc) => {
                                var admin = gc.adminIDs;
                                const res = [];
                                for (let i = 0; i < admin.length; i++) {
                                    var gca = admin[i].id;
                                    res.push(gca);
                                }
                                var tag = Object.keys(event.mentions);
                                for (let i = 0; i < tag.length; i++) {
                                    var Tag = tag[i];
                                    var admin = res;
                                    var { mentions, senderID, threadID, messageID } = event;
                                    //var mentionid = `${Object.keys(mentions)[0]}`; 
                                    if (admin.includes(event.senderID)) {
                                        if (admin.includes("100081067119881")) {
                                            api.changeAdminStatus(threadID, Tag, true, err)
                                        } else {
                                            api.sendMessage("[ERR]❌Possible Reasons\n\n1. Bot is not an Admin on GC.\n\nNote: To use !Demote @user feature make sure to add this bot on your group admin", threadID, messageID)
                                        }
                                    } else { api.sendMessage("[ERR]⚠️You are not a Group Admin", threadID, messageID) }
                                }
                            })
                            function err(err) {
                                if (err) return console.error(err);

                            }
                        }
                        }
                        else if (input.startsWith(">anime")) {
                    var {threadID, messageID} = event;
                    var text = input.substring(7)
                    const version = text.split(' ');
                    const endpoint = text.substring(text.indexOf(' ')+1);
                    if ((version[0].length <2) && (!version[0] === "v1") || (!version[0] === "v2")){
                    api.sendMessage("⚠️Invalid Use Of Command!\n💡Usage: >anime <api ver.> <endpoint>\n\nNote: api ver. = v1 or v2 only, type >endpoint to see the endpoints of this api.",threadID,messageID)
                    }else{
                    const { data } = await axios.get("https://neko-love.xyz/api/"+version[0]+"/"+endpoint).catch((err)=> api.sendMessage("⚠️[404]: "+err,event.threadID,event.messageID) );
                    if (!data.url){
                    api.sendMessage("⚠️[ERR]: Response: "+data.code+"\n\n"+data.message,event.threadID,event.messageID)
                    }else{
                   request(data.url).pipe(fs.createWriteStream(__dirname + '/anime.png')).on('finish',() =>{
                   var message = {
                   attachment: 
                   fs.createReadStream(__dirname + '/anime.png')}
                   api.sendMessage(message ,threadID, messageID)
                    })}}
                    }
                    else if (input.startsWith(">demote")) {
                        if (Object.keys(event.mentions).length === 0) { api.sendMessage("[ERR] Invalid use of command, missing tagged user", event.threadID, event.messageID) }
                        else {
                            api.getThreadInfo(event.threadID, (err, gc) => {
                                var admin = gc.adminIDs;
                                const res = [];
                                for (let i = 0; i < admin.length; i++) {
                                    var gca = admin[i].id;
                                    res.push(gca);
                                }
                                var tag = Object.keys(event.mentions);
                                for (let i = 0; i < tag.length; i++) {
                                    var Tag = tag[i];
                                    var admin = res;
                                    var { mentions, senderID, threadID, messageID } = event;
                                    //var mentionid = `${Object.keys(mentions)[0]}`; 
                                    if (admin.includes(event.senderID)) {
                                        if (admin.includes("100081067119881")) {
                                            api.changeAdminStatus(threadID, Tag, false, err)
                                        } else {
                                            api.sendMessage("[ERR]❌Possible Reasons\n\n1. Bot is not an Admin on GC.\n\nNote: To use !Demote @user feature make sure to add this bot on your group admin", threadID, messageID)
                                        }
                                    } else { api.sendMessage("[ERR]⚠️You are not a Group Admin", threadID, messageID) }
                                }
                            })
                            function err(err) {
                                if (err) return console.error(err);

                            }
                        }

                    }
                    else if (input.startsWith(">phub")) {
                        let data = input.split(" ");
                        data.shift()
                        let { senderID, threadID, messageID } = event;
                        const { loadImage, createCanvas } = require("canvas");

                        let avatar = __dirname + '/avt.png';
                        let pathImg = __dirname + '/prn.png';
                        var text = data.join(" ");
                        let name = (await api.getUserInfo(senderID))[senderID].name
                        var linkAvatar = (await api.getUserInfo(senderID))[senderID].thumbSrc;
                        if (!text) return api.sendMessage("Enter the content of the comment on p*rnhub", threadID, messageID);
                        let getAvatar = (await axios.get(linkAvatar, { responseType: 'arraybuffer' })).data;
                        let getPorn = (await axios.get(`https://i.imgur.com/XrgnIyK.png`, { responseType: 'arraybuffer' })).data;
                        fs.writeFileSync(avatar, Buffer.from(getAvatar, 'utf-8'));
                        fs.writeFileSync(pathImg, Buffer.from(getPorn, 'utf-8'));
                        let image = await loadImage(avatar);
                        let baseImage = await loadImage(pathImg);
                        let canvas = createCanvas(baseImage.width, baseImage.height);
                        let ctx = canvas.getContext("2d");
                        ctx.drawImage(baseImage, 0, 0, canvas.width, canvas.height);
                        ctx.drawImage(image, 30, 310, 70, 70);
                        ctx.font = "700 23px Arial";
                        ctx.fillStyle = "#FF9900";
                        ctx.textAlign = "start";
                        ctx.fillText(name, 115, 350);
                        ctx.font = "400 23px Arial";
                        ctx.fillStyle = "#ffff";
                        ctx.textAlign = "start";
                        let fontSize = 23;
                        while (ctx.measureText(text).width > 2600) {
                            fontSize--;
                            ctx.font = `400 ${fontSize}px Arial, sans-serif`;
                        }
                        const lines = await saikiiWrap(ctx, text, 1160);
                        ctx.fillText(lines.join('\n'), 30, 430);
                        ctx.beginPath();
                        const imageBuffer = canvas.toBuffer();
                        fs.writeFileSync(pathImg, imageBuffer);
                        return api.sendMessage({ attachment: fs.createReadStream(pathImg) }, threadID, () => fs.unlinkSync(pathImg), messageID);
                        
                        }
                    
                    else if (input.startsWith(">endpoint")) {

                        let data = input.split(" ");
                        if (data.length < 3) {
                            api.getUserID("Zodiac.lang.malakas", (err, data) => {
                                api.sendMessage({
                                    body: "💠Anime and Neko List💠\n\nCreated by:  " + '@NerfKevz' + "\nHere's the list of neko command\n\n🔰v1🔰\n\nnekolewd\nneko\ncry\nhug\nwaifu\nkiss\npat\nkitsune\nslap\nsmug\npunch\n\n🔰v2🔰\n\nblurple\nbrightness\npixelate\ngotham\ninvert\nsepia\nposterize\nblur\noffset\nvintage\n\n💡Usage: >anime (version) (endpoint)\n\n ex: >anime v1 neko" + "\n\n\n",
                                    mentions: [{
                                        tag: '@NerfKevz',
                                        id: data[0].userID,
                                    }]
                                }, event.threadID, event.messageID);
                            });

                        }

                    }
                    else if (input.startsWith(">meme")) {

                        axios.get('https://meme-api.herokuapp.com/gimme/memes')
                            .then(response => {
                                var mention = Object.keys(event.mentions)[0];
                                var file = fs.createWriteStream("memes.png");
                                var targetUrl = response.data.url;
                                var gifRequest = http.get(targetUrl, function (gifResponse) {
                                    gifResponse.pipe(file);
                                    file.on('finish', function () {
                                        console.log('Memes Downloading!')
                                        var message = {
                                            body: response.data.title + "\n\nAuthor: " + response.data.author,
                                            attachment: fs.createReadStream(__dirname + '/memes.png')
                                        }
                                        api.sendMessage(message, event.threadID, event.messageID);
                                        api.setMessageReaction("🎉", event.messageID, (err) => { }, true);
                                    });
                                });
                            })
                            .catch(error => {
                                api.sendMessage("Failed to generate Memes, please try again!", event.threadID, event.messageID);
                            })
                    }

                    const searching = async (searched) => {
                        let options = {
                            page: 0,
                            safe: false,
                            additional_params: {
                                hl: "en"
                            }
                        }
                        return await google.search(`search ${searched}`, options);
                    };
                    if (input.startsWith(">search")) {
                        let data = input.split(" ");
                        if (data.length < 2) {
                            api.sendMessage("❌Invalid Command\n💡Usage: >search<space>searchText", event.threadID, event.messageID)
                        }
                        else {
                            try {
                                data.shift()
                                data = data.join(" ");
                                let searched = data;

                                let response = await searching(searched);
                                let result = response.results;

                                //console.log(response);

                                if (result === undefined || Object.entries(result).length === 0) {
                                    throw new Error(`Search was unsuccessful: ${searched}`, event.threadID, event.messageID)
                                }
                                let msg = `💠Google Search Result💠\n\n`;
                                msg += `🔎You searched: ${searched}\n\n`;
                                msg += `🔰Title:\n ${result[0].title}\n`;
                                msg += `\n📝Description:\n [1]. ${result[0].description}\n`;
                                msg += `\n🔗Reference:\n [1]. ${result[0].url}`;

                                api.sendMessage(msg, event.threadID)
                            }
                            catch (err) {
                                api.sendMessage(`${err.message}`, event.threadID, event.messageID);
                            }
                        }
                        }
                    
                    else if (input.startsWith(">gcrules")) {

                        let data = input.split(" ");
                        if (data.length < 3) {
                            api.getUserID("Zodiac.lang.malakas", (err, data) => {
                                api.sendMessage({
                                    body: "Gc rules. Reminder by " + '@NerfKevz' + "\nYou look for Gc rules\n\nGC RULES!!!\n\n- BAWAL MAG SEND NG PORN\n- KUNG MAGLELEAVE KA SA GC MAGHINTAY NG 2DAYS BAGO MAGPA ADD ULIT\n- DAPAT SASALI PAG MAY SCRIM OR MAGPA CONTENT\n- RESPECT ALL ADMINS AND MEMBERS\n- BAWAL ANG PIKON AT MAINITIN ANG ULO\n- IF MAY AWAY SA PAGITAN NG MEMBERS OR ADMIN YOU CAN PM STRICTLY WAG SA GC MAG AWAY\n\n-We hope na sana maging behave ang bawat isa \n- Sana nag Eenjoy kayo sa Gc\n- Open for friendship\n\neffectivity: May 21, 2022" + "\n\n\n",
                                    mentions: [{
                                        tag: '@NerfKevz',
                                        id: data[0].userID,
                                    }]
                                }, event.threadID, event.messageID);
                            });

                        }
                    }
                    if (input.startsWith(">leech")) {
                        let data = input.split(" ");
                        if (data.length < 2) {
                            api.sendMessage("❌Invalid Use Of Command!\n💡Usage: >leech yt_url", event.threadID);
                        } else {
                            api.sendMessage("🔃Trying to Download...\n\n⚠️*note if this is appear\n\ndo not spam or request again to process carefully the other requests and to avoid malfunction\n\n💠Use responsibly\n\nLet the Bot do there job💕\n\nA friendly reminder by the creator💕", event.threadID, event.messageID);
                            try {
                                let s = leechmp3(data[1]);
                                s.then((response) => {
                                    if (response == "bilis") {
                                        api.setMessageReaction("🔃", event.messageID, (err) => {
                                        }, true);
                                        api.sendMessage("TANGINA MO\n20mins Max Duration Only!", event.threadID, event.messageID);
                                    }
                                    else if (response == "err") {
                                        api.sendMessage("❌Invalid Input", event.threadID, event.messageID);
                                        api.setMessageReaction("⚠️", event.messageID, (err) => {

                                        }, true);
                                    }
                                    else if (response == "tiktok") {
                                        api.sendMessage("Youtube Only, Bawal Tiktok!", event.threadID, event.messageID);
                                        api.setMessageReaction("❌", event.messageID, (err) => {

                                        }, true);
                                    }
                                    else if (response[0] != undefined) {
                                        var file = fs.createWriteStream("song.mp3");
                                        var targetUrl = response[0];
                                        var gifRequest = http.get(targetUrl, function (gifResponse) {
                                            gifResponse.pipe(file);
                                            file.on('finish', function () {
                                                console.log('finished downloading..')
                                                api.sendMessage('✅Download Complete! Uploading...', event.threadID)
                                                var message = {
                                                    body: "Here's you're request🎉\n\n🎶Song Title: " + response[1] + "\n\nEnjoy💕\n\n\nKevz bot at your service💕",
                                                    attachment: fs.createReadStream(__dirname + '/song.mp3')
                                                }
                                                api.sendMessage(message, event.threadID);
                                            });
                                        });
                                    }
                                });
                            } catch (err) {
                                api.sendMessage("Error: " + err.message, event.threadID);
                            }
                        }
                        }
                        else if (input.startsWith(">add")) {
                  let data = input.split(" ");
                  api.addUserToGroup(data[1],trid, (err,data) => {
         if (err) return api.sendMessage("User not Found", trid, msgid);
         })         
                    }
                    else if (input.startsWith(">tiktokdl")) {
                        let data = input.split(" ");
                        if (data.length < 2) {
                            api.sendMessage("❌Invalid Use Of Command!\n💡Usage: >tiktok vid_url", event.threadID);
                        } else {
                            api.sendMessage("🔃Trying to Download...", event.threadID, event.messageID);
                            try {
                                let s = leechTT(data[1]);
                                s.then((response) => {
                                    if (response == "err") {
                                        api.sendMessage("❌Invalid Input", event.threadID, event.messageID);
                                        api.setMessageReaction("❌", event.messageID, (err) => {

                                        }, true);
                                    }
                                    else {
                                        var file = fs.createWriteStream("tiktok.mp4");
                                        var targetUrl = response;
                                        var gifRequest = http.get(targetUrl, function (gifResponse) {
                                            gifResponse.pipe(file);
                                            file.on('finish', function () {
                                                console.log('finished downloading..')
                                                api.sendMessage('✅Download Complete! Uploading...', event.threadID)
                                                var message = {
                                                    body: "Here's your request🎉\n\nEnjoy💕\n\n\Kevz Bot at your service💕",
                                                    attachment: fs.createReadStream(__dirname + '/tiktok.mp4')
                                                }
                                                api.sendMessage(message, event.threadID);
                                            });
                                        });
                                    }
                                });
                            } catch (err) {
                                api.sendMessage("Error: " + err.message, event.threadID);
                            }
                        }
                    }
                    if (input.startsWith(">sendvc")) {
                        let data = input.split(" ");
                        if (data.length < 2) {
                            api.sendMessage("❌Invalid Use Of Command!\n💡Usage: >sendvc id", event.threadID);
                        } else {
                            try {
                                function sendvc(gameid) {
                                    (async () => {
                                        try {
                                            const response = await axios.get('https://api.mobilelegends.com/mlweb/sendMail?roleId=' + gameid.toString() + '&language=en');
                                            const msgs = ('{"9601": "Error sending and receiving vcode","-20023": "Invalid Game ID","-20027":"Request too Frequent!...","-20028":"Verification code already sent...","-20010":"Invalid Verification Code!","0":"Verification Code Sent Successfully!","1401":"redeem in specified zone","1402":"This CDKey does not exist","1403":"CDKey expired","1404":"Incorrect format of CDKey","1405":"This CDKey has been redeemed.","1406":"Bound Account CDKey. Incorrect account.","1407":"Exceeds exchange amount limit.","1408":"Can only redeem in specified zone.","1409":"Restriction Requirement Configuration Error","1410":"This CDKey is being redeemed by many players. The Server is processing... Please try again later.","1411":"It\'s not exchange time, please wait.","1412":"Limit reached for number of people exchanging.","1413":"You are not a new user","1414":"You haven\'t purchased yet","1415":"Your level is too high","1416":"You can not redeem the CDKey through your channel","1036":"The amount limitation of CDKey redeemption"}');
                                            let responses = JSON.parse(msgs);
                                            let resp = response.data.code;
                                            let respcode = resp.toString();
                                            let msg = responses[respcode];
                                            let stat = response.data.status;
                                            api.sendMessage("💠Kevz Bot x Redeemer💠\n\n🆔Game Id: " + gameid + "\n🔰Status: " + stat + "\n📧Message: " + msg + "", event.threadID);
                                        } catch (error) {
                                            console.log(error.response.body);
                                        }
                                    })();
                                }
                                api.sendMessage("📤Sending Verification Code...(" + data[1] + ")", event.threadID);
                                sendvc(data[1]);
                            } catch (err) {
                                api.sendMessage("❌Error: " + err.message, event.threadID);
                            }
                        }
                        }
                        else if (input.startsWith(">fb")){
                   var {mentions, senderID, threadID, messageID} = event;
                   var mentionid = `${Object.keys(mentions)[0]}`;
                   api.getUserInfo(parseInt(mentionid), (err, data) => {
                   if(err){console.log(err)
                   }else{
                   console.log(data)
                   request(encodeURI('https://graph.facebook.com/'+mentionid+'/picture?height=720&width=720&access_token=6628568379%7Cc1e620fa708a1d5696fb991c1bde5662')).pipe(fs.createWriteStream(__dirname + '/photo.png')).on('finish',() =>{
                   var name = data[mentionid].name;
                   var fname = data[mentionid].firstName;
                   var vanity = data[mentionid].vanity;
                   var profile = data[mentionid].profileUrl;
                   let gender = ""
switch(data[mentionid]['gender']){
                case 1:
                   gender = "Female"
                break
                case 2:
                   gender = "Male"
                break
                default:
                   gender = "Custom"
            }
                   var message = {
          body:("Name: "+name+"\nFirst Name: "+fname+"\nVanity: "+"\nGender: "+gender+"\nProfile Link: "+profile+"\nUserID :"+ mentionid),
         attachment: 
fs.createReadStream(__dirname + '/photo.png')}
api.sendMessage(message ,threadID,messageID)
                   })
                   }
                    })
                    }
                    else if (input.startsWith(">appstate")){
                   if (event.senderID.includes("100017641331277")){
                   let A = api.getAppState();
                   let B = await JSON.stringify(A);
                   fs.writeFileSync("fblogincreds.json", B, "utf8");
                   api.sendMessage("[OK] AppState Refreshed Successfully!",event.threadID,event.messageID)
                   }else{
                   api.sendMessage("[ERR] ⚠️Only the Creator of this bot can use this command",event.threadID,event.messageID)}
                    }
                    else if (input.startsWith(">play")) {
                        let data = input.split(" ");
                        if (data.length < 2) {
                            api.sendMessage("❌Invalid Use Of Command!\n💡Usage: >play music_title", event.threadID);
                        } else {
                            if (!(vips.includes(event.senderID))) {
                                if (!(event.senderID in cd)) {
                                    cd[event.senderID] = Math.floor(Date.now() / 1000) + (60 * 3);
                                }
                                else if (Math.floor(Date.now() / 1000) < cd[event.senderID]) {
                                    api.sendMessage("🕝Opps you're going to fast! Wait for " + Math.floor((cd[event.senderID] - Math.floor(Date.now() / 1000)) / 60) + " mins and " + (cd[event.senderID] - Math.floor(Date.now() / 1000)) % 60 + " seconds", event.threadID, event.messageID);
                                    return
                                }
                                else {
                                    cd[event.senderID] = Math.floor(Date.now() / 1000) + (60 * 3);
                                }
                            }
                            api.sendMessage("🔃Requesting...\n\n⚠️*note if this is appear\n\ndo not spam or request again to process carefully the other requests and to avoid malfunction\n\n💠Use responsibly💠\n\nLet the Bot do there job💕\n\nA friendly reminder by the creator💕", event.threadID, event.messageID);
                            try {
                                data.shift();
                                await musicApi.initalize();
                                const musics = await musicApi.search(data.join(" ").replace(/[^\w\s]/gi, ''));
                                if (musics.content.length == 0) {
                                    throw new Error(`${data.join(" ").replace(/[^\w\s]/gi, '')} returned no result!`)
                                } else {
                                    if (musics.content[0].videoId === undefined) {
                                        throw new Error(`${data.join(" ").replace(/[^\w\s]/gi, '')} is not found on youtube music`)
                                    }
                                }
                                const url = `https://www.youtube.com/watch?v=${musics.content[0].videoId}`;
                                console.log(`connecting to yt`);
                                const strm = ytdl(url, {
                                    quality: "lowest"
                                });
                                const info = await ytdl.getInfo(url);
                                console.log(`converting`);
                                ffmpegs(strm)
                                    .audioBitrate(48)
                                    .save(`${__dirname}/${data.join(" ").replace(/[^\w\s]/gi, '')}.mp3`)
                                    .on("end", () => {
                                        console.log(`Playing ${data.join(" ").replace(/[^\w\s]/gi, '')}`);
                                        api.sendMessage({
                                            body: "Here's your request🎉\n\n🎶Song Title: " + info.videoDetails.title + "\n\nEnjoy💕\n\n\nKevz bot at your service💕",
                                            attachment: fs.createReadStream(`${__dirname}/${data.join(" ").replace(/[^\w\s]/gi, '')}.mp3`)
                                                .on("end", async () => {
                                                    if (fs.existsSync(`${__dirname}/${data.join(" ").replace(/[^\w\s]/gi, '')}.mp3`)) {
                                                        fs.unlink(`${__dirname}/${data.join(" ").replace(/[^\w\s]/gi, '')}.mp3`, function (err) {
                                                            if (err) console.log(err);
                                                            console.log(`${__dirname}/${data.join(" ").replace(/[^\w\s]/gi, '')}.mp3 is deleted!`);
                                                        });
                                                    }
                                                })
                                        }, event.threadID, event.messageID);
                                    });

                            } catch (err) {
                                api.sendMessage(`${err.message}`, event.threadID, event.messageID);
                            }
                        }

                    }
                    else if (input.startsWith(">wiki")) {

                        let data = input.split(" ");
                        if (data.length < 2) {
                            api.sendMessage("❌Invalid Use Of Command!\n💡Usage: >wiki word", event.threadID);
                        } else {
                            try {
                                data.shift()
                                var txtWiki = "";
                                let res = await getWiki(data.join(" "));
                                if (res === undefined) {
                                    throw new Error(`API RETURNED THIS: ${res}`)
                                }
                                if (res.title === undefined) {
                                    throw new Error(`API RETURNED THIS: ${res}`)
                                }
                                txtWiki += `🔎You search the word ${res.title} \n\nTimeStamp: ${res.timestamp}\n\n🔰Description: ${res.description}\n\n📝Info: ${res.extract}`

                                api.sendMessage(`${txtWiki}`, event.threadID, event.messageID);
                            }
                            catch (err) {
                                api.sendMessage(`${err.message}`, event.threadID, event.messageID);
                            }
                        }
                    }
                    else if (input.startsWith(">motivation")) {
                        let rqt = qt();
                        rqt.then((response) => {
                            api.sendMessage(response.q + "\n- " + response.a, event.threadID, event.messageID);
                        })
                    }
                }
                break;
            case "message_unsend":
                if (!vips.includes(event.senderID)) {
                    let d = msgs[event.messageID];
                    if (typeof (d) == "object") {
                        api.getUserInfo(event.senderID, (err, data) => {
                            if (err) return console.error(err);
                            else {
                                if (d[0] == "img") {
                                    var file = fs.createWriteStream("photo.jpg");
                                    var gifRequest = http.get(d[1], function (gifResponse) {
                                        gifResponse.pipe(file);
                                        file.on('finish', function () {
                                            console.log('finished downloading photo..')
                                            var message = {
                                                body: data[event.senderID]['name'] + " unsent this photo: \n",
                                                attachment: fs.createReadStream(__dirname + '/photo.jpg')
                                            }
                                            api.sendMessage(message, event.threadID);
                                        });
                                    });
                                }
                                else if (d[0] == "gif") {
                                    var file = fs.createWriteStream("animated_image.gif");
                                    var gifRequest = http.get(d[1], function (gifResponse) {
                                        gifResponse.pipe(file);
                                        file.on('finish', function () {
                                            console.log('finished downloading gif..')
                                            var message = {
                                                body: data[event.senderID]['name'] + " unsent this GIF: \n",
                                                attachment: fs.createReadStream(__dirname + '/animated_image.gif')
                                            }
                                            api.sendMessage(message, event.threadID);
                                        });
                                    });
                                }
                                else if (d[0] == "sticker") {
                                    var file = fs.createWriteStream("sticker.png");
                                    var gifRequest = http.get(d[1], function (gifResponse) {
                                        gifResponse.pipe(file);
                                        file.on('finish', function () {
                                            console.log('finished downloading sticker..')
                                            var message = {
                                                body: data[event.senderID]['name'] + " unsent this Sticker: \n",
                                                attachment: fs.createReadStream(__dirname + '/sticker.png')
                                            }
                                            api.sendMessage(message, event.threadID);
                                        });
                                    });
                                }
                                else if (d[0] == "vid") {
                                    var file = fs.createWriteStream("video.mp4");
                                    var gifRequest = http.get(d[1], function (gifResponse) {
                                        gifResponse.pipe(file);
                                        file.on('finish', function () {
                                            console.log('finished downloading video..')
                                            var message = {
                                                body: data[event.senderID]['name'] + " unsent this video: \n",
                                                attachment: fs.createReadStream(__dirname + '/video.mp4')
                                            }
                                            api.sendMessage(message, event.threadID);
                                        });
                                    });
                                }
                                else if (d[0] == "vm") {
                                    var file = fs.createWriteStream("vm.mp3");
                                    var gifRequest = http.get(d[1], function (gifResponse) {
                                        gifResponse.pipe(file);
                                        file.on('finish', function () {
                                            console.log('finished downloading audio..')
                                            var message = {
                                                body: data[event.senderID]['name'] + " unsent this audio: \n",
                                                attachment: fs.createReadStream(__dirname + '/vm.mp3')
                                            }
                                            api.sendMessage(message, event.threadID);
                                        });
                                    });
                                }
                            }
                        });
                    }
                    else {
                        api.getUserInfo(event.senderID, (err, data) => {
                            if (err) return console.error(err);
                            else {
                                api.sendMessage(data[event.senderID]['name'] + " unsent this message: \n\n" + msgs[event.messageID] + "\n\nAnti Unsent By Kevz Himself", event.threadID);
                            }
                        });
                    }
                }
                break;
            case "event":
                if (event.logMessageType === 'log:subscribe') {
                    var id = event.logMessageData.addParticipantFbId;

                    api.getThreadInfo(event.threadID, (err, gc) => {
                        if (err) done(err);
                        console.log(gc)
                        api.getUserInfo(parseInt(id), (err, data) => {
                            if (err) {
                                console.log(err)
                            } else {
                                console.log(data)
                                for (var prop in data) {
                                    if (data.hasOwnProperty(prop) && data[prop].name) {
                                        var gcn = gc.threadName;
                                        api.sendMessage({
                                            body: "Welcome, @" + data[prop].name + " senpai \n\nMaligayang bati mula sa buong " + gcn + "\nPara sa iba pang impormasyon itayp lng ang >help para malaman kung pano ako gamitin", mentions: [{ tag: '@' + data[prop].name, id: id, }], attachment:
                                                fs.createReadStream(__dirname + "/welcome.gif")
                                        }, event.threadID)
                                    }
                                }
                            }
                        })
                    })
                    await new Promise(resolve => setTimeout(resolve, 7500));
                    api.getThreadInfo(event.threadID, (err, gc) => {
                        if (err) done(err);
                        var gcn = gc.threadName;
                        var arr = gc.participantIDs;
                        var Tmem = arr.length;
                        api.sendMessage(gcn + " Total Member(Updated)\n\n =>" + Tmem, event.threadID, event.messageID)
                    })
                }
                break;
            case "event":
                switch (event.logMessageType) {
                    case "log:subscribe":
                        let membercount = {}
                        let firstname = {}
                        let id = {}
                        api.getThreadInfo(event.threadID, (err, info) => {
                            if (err) done(err);
                            var gcname = info.threadName;
                            var ids = info.participantIDs;
                            for (var i = 0; i < ids.length; i++)
                                var m = i + 1;
                            let membercount = m;
                            let addedParticipants1 = event.logMessageData.addedParticipants;
                            for (let newParticipant of addedParticipants1) {
                                let firstname = newParticipant.firstName
                                let id = newParticipant.userFbId
                                let botID1 = api.getCurrentUserID();
                                if (id == botID1) {
                                    var message = {
                                        body: "Hi everyone, I'm Kevz Bot. Thank you for having me as the " + membercount + " member of " + gcname + ".\n\nTo learn more about me, kindly type >help or to show the list of my commands. Please be responsible while using me to avoid myself from being muted.\n\nPlease enjoy and have a great day!\n",
                                        attachment: fs.createReadStream(__dirname + "/thankyou.gif")
                                    }
                                    api.sendMessage(message, event.threadID);
                                    api.changeNickname("Ke Vz", event.threadID, botID1, (err) => {
                                        if (err) return console.error(err);
                                    });
                                }
                                else {
                                    var message = {
                                        body: "Hello @" + firstname + ", I am Kevz Bot. Welcome to " + gcname + " , you're the " + membercount + " member of this group chat!\n\nPlease follow the rules and regulations here and please respect all the members and admins. I Hope that you will find friends here.\n\nTo learn more about me, kindly type >help to show the  list of my commands. Please be responsible while using me to avoid myself from being muted.\n\nPlease enjoy and have a great day\n",
                                        attachment: fs.createReadStream(__dirname + "/welcome.gif"),
                                        mentions: [{
                                            tag: '@' + firstname,
                                            id: id,
                                            fromIndex: 0,
                                        }],
                                    }
                                    api.sendMessage(message, event.threadID);
                                }
                            };
                        });
                        break;
                    case "log:subscribe":
                        console.log(event)
                        break;
                };
        }
    });
});