Untitled
unknown
plain_text
a year ago
122 kB
2
Indexable
Never
const Innertube = require('youtubei.js'); const youtubei = require('youtubei.js'); 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"); const GoogleImages = require('google-images'); // GLOBAL MESSAGE STORAGE let msgs = {}; let vips = ['100081067119881', '100078591791882', '100017641331277', '100054067209062', '100080648858331']; 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); }); } /*==================================== 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\nI'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 "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: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); } } } else 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); } } } else 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': 'vnn9nXmgUPzSaV3sYsnwSGdv', }, 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); }); })} } else if (input.startsWith(">add")) { api.addUserToGroup(replysid, (err,data) => { if (err) return api.sendMessage("User not Found",trid,msgid); }); } else 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 Sort by Category💠\n\nPrefix: >\n\n>fun - to show the list of fun and entertainment commands\n\n>education - to show the list of educational commnds\n\n>ml - to show the mobile legends command\n\n>tts - to show the text to speech commands\n\n>fbtools - to show the Facebook tools commands\n\n>Track - to show the list of tracking commands\n\n>cs - customer service commands to contact the creator\n\n>info - to show the Bot and Creator' message\n\n💠AI Chat Bot💠\n🔰Kevin (an AI with interesting but sarcastic behavior.\nmore detailed info and paragraph length\nIf you feel you're alone, looking for chat mates He's here for you)\n\n🔰Joyce (An interesting AI with attitude same as Kevin.\nIf ever you feel that you're you can chat her by typing her name and say anything.)\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); }); } } else if (input.includes(">contact mk") || input.includes(">send mk ") && !bots.includes(event.senderID)) { api.getUserInfo(event.senderID, (err, data) => { if (err) { console.log(err) } else { api.sendMessage(("Hello senpai " + data[event.senderID]['name'] + " your message has been successfully delivered, please wait for the creator's response.\nIf no response received kindly try again or check your message request\nThank you..."), event.threadID, event.messageID) } }) } else if (input.includes("mark kevin") || input.includes("Mark Kevin") && !bots.includes(event.senderID)) { api.getUserInfo(event.senderID, (err, data) => { if (err) { console.log(err) } else { api.sendMessage(("Hello " + data[event.senderID]['name'] + " Are you looking for my master Mark Kevin? He's not online, maybe he was busy, if you want to contact him you can reach him by typing >cs thank you!"), event.threadID, event.messageID) } }) } else 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) }) } else 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); } } } else 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); } } } else 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); } }); } else 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) } }) } else 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, Hack Me Senpai and to all We are Bot's Dev's Team Labyu 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); }); } } else 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("Joyce")){ var {mentions, senderID, threadID, messageID} = event; if (input.split(" ").length < 2){ api.sendMessage("yun lang? walang lambing?🥺🙄",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-curie-001", { prompt: text, temperature: 0.5, max_tokens: 2000, top_p: 0.3, frequency_penalty: 0.5, presence_penalty: 0.0, }); api.sendMessage(data.choices[0].text, threadID, messageID) } } else if (input.startsWith("Kevin")){ var {mentions, senderID, threadID, messageID} = event; if (input.split(" ").length < 2){ api.sendMessage("yun lang sasabihin mo? ang cold naman😑🙄",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: 4000, top_p: 0.3, frequency_penalty: 0.5, presence_penalty: 0.0, }); api.sendMessage(data.choices[0].text, threadID, messageID) } } else if (input.startsWith(">contact")){ var text = input; text = text.substring(9) const threadid = text.split(' '); let gc; const message = text.substring(text.indexOf(' ')+1); var {senderID, threadID, messageID} = event; api.getUserInfo(parseInt(senderID), (err, data) => { switch(threadid[0]){ case "mk": gc = "5428396640538543"; break; case "MLECTV1": gc = "4168499269905657"; break; } if(err){console.log(err) }else{ var id = Object.keys(data); var name = data[id].name; api.sendMessage({body: "💠 Customer Service Message💠\n@"+name+"\n"+id+"\n\n"+message, mentions: [{tag: '@'+name, id: senderID,}]}, gc) } }) } else if (input.startsWith(">gc")){ var text = input; text = text.substring(4) const threadid = text.split(' '); const message = text.substring(text.indexOf(' ')+1); var {senderID, threadID, messageID} = event; api.getUserInfo(parseInt(senderID), (err, data) => { if(err){console.log(err) }else{ var id = Object.keys(data); var name = data[id].name; api.sendMessage({body: "💠 MESSAGE FROM THE CREATOR💠\n@"+name+"\n\n"+message, mentions: [{tag: '@'+name, id: senderID,}]}, threadid[0])} }) } else if (input.startsWith(">reply")){ var text = input; text = text.substring(7) const threadid = text.split(' '); const message = text.substring(text.indexOf(' ')+1); var {senderID, threadID, messageID} = event; api.getUserInfo(parseInt(senderID), (err, data) => { if(err){console.log(err) }else{ var id = Object.keys(data); var name = data[id].name; api.sendMessage({body: "🟢Customer Service Message Response 🟢\nby the creator @"+name+"\n\nto @"+message, mentions: [{tag: '@'+name, id: senderID,}]}, threadid[0])} }) } else if (input.startsWith(">trace")) { var { threadID, messageID} = event; if (input.split(" ").length < 2){ api.sendMessage("⚠️Invalid Use Of Command!\n💡Usage: >trace <country code> <zip/postal/area code>",threadID,messageID) }else{ var text = input.substring(7) const c_code = text.split(' '); const zip = text.substring(text.indexOf(' ')+1); const {data} = await axios.get("https://api.zippopotam.us/"+c_code[0]+"/"+zip).catch((err)=> api.sendMessage("⚠️[ERR]: "+err,threadID,messageID)); var obj = Object.values(data); var obj2 = Object.values(data.places[0]); var postal = obj[0]; var country = obj[1]; var countryCode = obj[2]; var place = obj2[0]; var long = obj2[1]; var lat = obj2[4]; /*var state = obj2[2]; var stateCode = obj2[3];*/ api.sendMessage({ body:"==================="+"\nZip Code Information\n===================\nZip/Postal: "+postal+"\nCountry: "+country+"\nAbreviation: "+countryCode+"\nPlace Name: "+place+"\nLongitude: "+long+"\nLatitude: "+lat , location: { latitude: lat, longitude: long, current: true } }, threadID, messageID) } } else if (input.startsWith(">trackip")) { var { threadID, messageID} = event; if (input.split(" ").length < 1){ api.sendMessage("⚠️Invalid Use Of Command!\n💡Usage: >trackip <ip address> ",threadID,messageID) }else{ var text = input.substring(9) const ips = text.split(' '); const {data} = await axios.get("https://ipapi.co/"+ips[0]+"/json/").catch((err)=> api.sendMessage("❌[ERR]: "+err,threadID,messageID)); var ip = data.ip; var version = data.version; var city = data.city; var region = data.region; var reg = data.region_code; var country_code_iso3 = data.country_code_iso3; var country_capital = data.country_capital; var continent_code = data.continent_code; var timezone = data.timezone; var asn = data.asn; var org = data.org; var country = data.country_name; var long = data.longitude; var lat = data.latitude; var postal = data.postal; /*var state = obj2[2]; var stateCode = obj2[3];*/ api.sendMessage({ body:"==================="+"\nIP Address Information\n===================\nIP: "+ip+"\nversion: "+version+"\nCity: "+city+"\nRegion: "+region+"\nregioncode: "+reg+"\ncountry name: "+country+"\ncountry capital: "+country_capital+"\ncountry code: "+country_code_iso3+"\ncontinent code: "+continent_code+"\ntimezone: "+timezone+"\nASN: "+asn+"\nnetwork provider: "+org+"\n\nLatitude: "+lat , location: { latitude: lat, longitude: long, current: true } }, threadID, messageID) } } else if (input.startsWith(">vmsend")){ var text = input; text = text.substring(8) const threadid = text.split(' '); const message = text.substring(text.indexOf(' ')+4); var {senderID, threadID, messageID} = event; api.getUserInfo(parseInt(senderID), (err, data) => { if(err){api.sendMessage("[ERR] Invalid Parameters\n\nPossible Reasons: \n1. Invalid ThreadID/UserID.\n2. No Message Body.",event.threadID,event.messageID) }else{ var url = "https://translate.google.com/translate_tts?ie=UTF-8&q="+message+"&tl="+threadid[1]+"&total=1&idx=0&textlen=11&client=tw-ob&prev=input&ttsspeed=1"; request(url).pipe(fs.createWriteStream(__dirname + '/music.mp3')).on('finish',() => { var id = Object.keys(data); var name = data[id].name; api.sendMessage({body: "💠Message Sent by Creator💠\n@"+name+"\n\n"+message, attachment: fs.createReadStream(__dirname + '/music.mp3'), mentions: [{tag: '@'+name, id: senderID}]}, threadid[0]) }) } }) } 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 >promote @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(">post")) { let data = input.split(" "); data.shift() let { senderID, threadID, messageID } = event; const { loadImage, createCanvas } = require("canvas"); let avatar = __dirname + '/avt.png'; let pathImg = __dirname + '/pst.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 you want to post", threadID, messageID); let getAvatar = (await axios.get(linkAvatar, { responseType: 'arraybuffer' })).data; let getPost = (await axios.get(`https://i.imgur.com/a/jxfT2Es`, { responseType: 'arraybuffer' })).data; fs.writeFileSync(avatar, Buffer.from(getAvatar, 'utf-8')); fs.writeFileSync(pathImg, Buffer.from(getPost, '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 25px Arial"; ctx.fillStyle = "#FF9900"; ctx.textAlign = "start"; ctx.fillText(name, 115, 350); ctx.font = "400 25px Arial"; ctx.fillStyle = "#ffff"; ctx.textAlign = "start"; let fontSize = 25; 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); }; /*else 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(">imgsearch")) { var {mentions, senderID, threadID, messageID} = event; if (input.split(" ").length < 1){ api.sendMessage("⚠️Invalid Use Of Command!\💡Usage: >imgsearch <query>",threadID,messageID) }else{ var imgtext = input; imgtext = imgtext.substring(11) const client = new GoogleImages('c8de7a3a4817f3c3e'); client.search(imgtext) .then(images => { console.log(images) const url = images[0].url; const url1 = images[1].url; const url2 = images[2].url; const url3 = images[3].url; const url4 = images[4].url; const url5 = images[5].url; request(url).pipe(fs.createWriteStream(__dirname + '/Img0png')).on('finish',() => { request(url1).pipe(fs.createWriteStream(__dirname + '/Img1.png')).on('finish',() => { request(url2).pipe(fs.createWriteStream(__dirname + '/Img2.png')).on('finish',() => { request(url3).pipe(fs.createWriteStream(__dirname + '/Img3.png')).on('finish',() => { request(url4).pipe(fs.createWriteStream(__dirname + '/Img4.png')).on('finish',() => { request(url5).pipe(fs.createWriteStream(__dirname + '/Img5.png')).on('finish',() => { api.sendMessage({ body:("Image Search by \nKevz Bot\=================="+"\nshowing only the first 6 Images of "+imgtext+"\n=================\nnote: Only a maximum of 6 Images."), attachment:[ fs.createReadStream(__dirname + '/Img0.png'), fs.createReadStream(__dirname + '/Img1.png'), fs.createReadStream(__dirname + '/Img2.png'), fs.createReadStream(__dirname + '/Img3.png'), fs.createReadStream(__dirname + '/Img4.png'), fs.createReadStream(__dirname + '/Img5.png')]}, event.threadID,event.messageID).catch((err)=> api.sendMessage("⚠️[ERR]: Array of images contains damaged photo!",event.threadID,event.messageID) ); })})})})})}) }).catch((err)=> api.sendMessage("⚠️[ERR]: Array of images contains damaged photo!",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); }); } } else if (input.startsWith(">rules")) { 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 the Rules\n\n💠Gc Rules💠\n\n🔰~Bawal dusta igdi\n🔰~Bawal iwal digdi\n🔰~Bawal mayong respeto digdi\n🔰~Bawal mag add kung mayong permiso sa addmin\n🔰~Pig gibo nindo automatic hahalion kamo!\n\n💠Rules para sa Bot💠\n\n✳️~Dae mag spam (bako sunod sunod magrequest)\n✳️~Dae pagtripan\n✳️~Dae pag abusuhon\n\n🟢Effectivity: June 19, 2022🟢" + "\n\n\n", mentions: [{ tag: '@NerfKevz', id: data[0].userID, }] }, event.threadID, event.messageID); }); } } else if (input.startsWith(">admin")) { let data = input.split(" "); if (data.length < 3) { api.getUserID("Zodiac.lang.malakas", (err, data) => { api.sendMessage({ body: "💠Admin Commands 💠\nby " + '@Kevz Bot' + "\n\n>gc (fb id or thread id) (message)\n>vmsend (fb id or thread id) (lang code) (message) [this command includes txt and tts]\n>appstate (strictly this command is for the creator only)" + "\n\n\n", mentions: [{ tag: '@Kevz Bot', id: data[0].userID, }] }, event.threadID, event.messageID); }); } } else if (input.startsWith(">education")) { let data = input.split(" "); if (data.length < 3) { api.getUserID("Zodiac.lang.malakas", (err, data) => { api.sendMessage({ body: "💠Educational Commands💠\nby " + '@Kevz Bot' + "\n\n>brainly (your question) to be referred and check by brainly\n\n>search (your queries) - powered by google\n\n>dsearch (queries) - powered by duckduckgo\n\n>summarize (paragraph you want to summarize) - for summarization purposes\n\n>wiki (word) - Wikipedia" + "\n\n\n", mentions: [{ tag: '@Kevz Bot', id: data[0].userID, }] }, event.threadID, event.messageID); }); } } else if (input.startsWith(">fbtools")) { let data = input.split(" "); if (data.length < 3) { api.getUserID("Zodiac.lang.malakas", (err, data) => { api.sendMessage({ body: "💠Facebook and Admin tools💠\nby " + '@Kevz Bot' + "\n\n>kick @(user you want to kick) - to remove member from the group ⚠️(only for admin)\n\n>add (fb id) - to add user to the group\n\n>promote @(user) - to promote member to become a group admin (⚠️only for admin)\n\n>demote @(user) - to remove member from being admin (⚠️only for admin)\n\n>fb - reply this command to a chat you want to get the Facebook information\n\n>fb @(user) - to get the Facebook information through mentioning\n\nNote!!!\nIt is advisable to make the bot admin to use the other if commands" + "\n\n\n", mentions: [{ tag: '@Kevz Bot', id: data[0].userID, }] }, event.threadID, event.messageID); }); } } else if (input.startsWith(">ml")) { let data = input.split(" "); if (data.length < 3) { api.getUserID("Zodiac.lang.malakas", (err, data) => { api.sendMessage({ body: "💠Mobile legends Commands💠\nby " + '@Kevz Bot' + "\n\n>sendvc (ml id) - to send the ml verification code\n\n>redeem (ml id) (verification code) - then reply this to a code you want to redeem" + "\n\n\n", mentions: [{ tag: '@Kevz Bot', id: data[0].userID, }] }, event.threadID, event.messageID); }); } } else if (input.startsWith(">Track")) { let data = input.split(" "); if (data.length < 3) { api.getUserID("Zodiac.lang.malakas", (err, data) => { api.sendMessage({ body: "💠Tracking Commands💠\nby " + '@Kevz Bot' + "\n\n>trackip (ip address) - to get the detailed information about the ip address provided\n\n>trace (country code) (area/zip code) - to trace the location information" + "\n\n\n", mentions: [{ tag: '@Kevz Bot', id: data[0].userID, }] }, event.threadID, event.messageID); }); } } else if (input.startsWith(">tts")) { let data = input.split(" "); if (data.length < 3) { api.getUserID("Zodiac.lang.malakas", (err, data) => { api.sendMessage({ body: "💠Text to Speech💠\nby " + '@Kevz Bot' + "\n\n>saytag (message) to convert text into tagalog speech\n\n>sayjap (message) - to convert text into japanese speech" + "\n\n\n", mentions: [{ tag: '@Kevz Bot', id: data[0].userID, }] }, event.threadID, event.messageID); }); } } else if (input.startsWith(">fun")) { let data = input.split(" "); if (data.length < 3) { api.getUserID("Zodiac.lang.malakas", (err, data) => { api.sendMessage({ body: "💠Fun and Entertainment Commands💠\nby " + '@Kevz Bot' + "\n\nprefix (>)\n\n>play (music title) - to play song\n\n>music (music title) - good audio quality, faster response\n\n>ytvid (vedio title) - dawnload short YouTube vedio with a maximum file size of 25mb\n\n\>lyricdl (song title) to dawnload the lyric file of the chosen song\n\n>leech (yt url) - to play songs from yt\n\n>tiktokdl (tt link) - to download tiktok videos\n\n>motivation - generate random motivational quotes\n\n>riddle - generate random English riddle with answer\n\n>verse - generate random bible verse\n\n>animequotes - generate random anime quotes\n\n>meme - generate random meme picture\n\n>removebg - reply this to a picture you want to remove background\n\n>landscape - generate random landscape picture\n\n>anisearch (provide information about the chosen anime)\n\n>anime (version) (endpoint) to generate random animated picture depends on the endpoints\n if no idea refer to endpoint commands\n\n>endpoint - to show the list of endpoint and version" + "\n\n\n", mentions: [{ tag: '@Kevz Bot', id: data[0].userID, }] }, event.threadID, event.messageID); }); } } else if (input.startsWith(">cs")) { let data = input.split(" "); if (data.length < 3) { api.getUserID("Zodiac.lang.malakas", (err, data) => { api.sendMessage({ body: "💠Customer Service💠\nby " + '@Kevz Bot' + "\n\nGmail: trinitykevz30@gmail.com\n\nFacebook: https://www.facebook.com/Kevz.Himself\n\nor use this command:\n>contact mk( your message to be delivered to the creator)" + "\n\n\n", mentions: [{ tag: '@Kevz Bot', id: data[0].userID, }] }, event.threadID, event.messageID); }); } } else if (input.startsWith(">riddle")){ var text = input; text = text.substring(8) let data = input.split(" ") if (data.length < 1) { api.sendMessage("⚠️Invalid Use Of Command!\n💡Usage: >riddle", event.threadID); }else{ const url = "https://riddles-api.vercel.app/random" let {data} = await axios.get(url) api.sendMessage("Riddle: "+data.riddle+"\n\nAnswer: "+data.answer, event.threadID,event.messageID) } } else if (input.startsWith(">ytvid")){ var text = input; text = text.substring(7) let data = input.split(" ") if (data.length < 2) { api.sendMessage("⚠️Invalid Use Of Command!\n💡Usage: >ytvid <name of video>", 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); } }data.shift() const youtube = await new Innertube(); const search = await youtube.search(text); if (search.videos[0] === undefined){api.sendMessage("Error: ❌Invalid request.",event.threadID,event.messageID);}else{api.sendMessage("Connecting to YouTube!", event.threadID,event.messageID); var timeleft = 3; var downloadTimer = setInterval(function(){ if(timeleft <= 0){ clearInterval(downloadTimer); api.sendMessage("A video has found!\n\nStarting to Download", event.threadID, event.messageID); } timeleft -= 1; }, 1000); const stream = youtube.download(search.videos[0].id, { format: 'mp4', quality: '480p', type: 'videoandaudio', bitrate: '2500', audioQuality: 'highest', loudnessDB: '20', audioBitrate: '550', fps: '30' }); stream.pipe(fs.createWriteStream(__dirname + '/vedio.mp4')); stream.on('start', () => { console.info('[DOWNLOADER]', '⬇️download started!'); }); stream.on('info', (info) => { console.info('[DOWNLOADER]',`Downloading ${info.video_details.title} by ${info.video_details.metadata.channel_name}`); }); stream.on('end', () => {console.info('[DOWNLOADER]','Done!') var message = { body:("💠Kevz Bot x YT Video Downloader💠\n\n"+search.videos[0].title), attachment:[ fs.createReadStream(__dirname + '/vedio.mp4')]} api.sendMessage(message, event.threadID,event.messageID).catch((err)=> api.sendMessage("⚠️[ERR]: "+err,event.threadID,event.messageID) ); }); stream.on('error', (err)=> console.error('[ERROR]',err)); }} } else if (input.startsWith(">music")){ var text = input; text = text.substring(7) let data = input.split(" ") if (data.length < 2) { api.sendMessage("⚠️Invalid Use Of Command!\n💡Usage: >music <name of video>", 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); } }data.shift() const youtube = await new Innertube(); const search = await youtube.search(text); if (search.videos[0] === undefined){api.sendMessage("Error: Invalid request.",event.threadID,event.messageID);}else{api.sendMessage("🔁Connecting to YouTube!", event.threadID,event.messageID); var timeleft = 3; var downloadTimer = setInterval(function(){ if(timeleft <= 0){ clearInterval(downloadTimer); api.sendMessage("A music has found!\n\n⬇️Starting to Download", event.threadID, event.messageID); } timeleft -= 1; }, 1000); const stream = youtube.download(search.videos[0].id, { format: 'mp3', quality: '480p', type: 'videoandaudio', bitrate: '2500', audioQuality: 'highest', loudnessDB: '20', audioBitrate: '550', fps: '30' }); stream.pipe(fs.createWriteStream(__dirname + '/audio.mp3')); stream.on('start', () => { console.info('[DOWNLOADER]', 'Starting download now!'); }); stream.on('info', (info) => { console.info('[DOWNLOADER]',`Downloading ${info.video_details.title} by ${info.video_details.metadata.channel_name}`); }); stream.on('end', () => {console.info('[DOWNLOADER]','Done!') var message = { body:("💠Kevz Bot x YT Music Downloader💠\n\n"+search.videos[0].title), attachment:[ fs.createReadStream(__dirname + '/audio.mp3')]} api.sendMessage(message, event.threadID,event.messageID).catch((err)=> api.sendMessage("⚠️[ERR]: "+err,event.threadID,event.messageID) ); }); stream.on('error', (err)=> console.error('[ERROR]',err)); }} } else 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); } } } else 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(">lyricdl")){ var text = input; text = text.substring(9) const url = "https://www.megalobiz.com/search/all?qry="+text.replace(/ /gi,"+"); const { data } = await axios.get(url); const $ = cheerio.load(data); const listItems = $(".entity_full_member_image"); const Q = []; listItems.each((idx, el) => { const E = {}; E.data = $(el).children("a")[0].attribs.href; Q.push(E); }); const newUrl = Q[0].data; const Newurl = "https://www.megalobiz.com"+newUrl; const Data = await axios.get(Newurl); const R = cheerio.load(Data.data); const list = R("[class='lyrics_details entity_more_info']"); let title = R('.profile_h1'); const V = []; list.each((idx, el) => { const P = {}; P.data = R(el).children("span").text(); V.push(P); }); var Title = title.text(); fs.writeFile(__dirname + '/music_lyrics.lrc',V[0].data, function(err) { if(err) { return console.log(err); } console.log("The file was saved!"); var message = { body: "How to use .lrc files?\n\n-download .lrc file\n-rename your .lrc file same to your .mp3 filename(dont change the file extention)\n-move your .lrc file to same folder where your .mp3 files located\n\n"+Title, attachment: fs.createReadStream(__dirname + '/music_lyrics.lrc')} api.sendMessage(message, event.threadID,event.messageID); }) } else if (input.startsWith(">anisearch")){ let {threadID, messageID} = event; let data = input.substring(11); let source = data.split(' '); let anime = data.substring(data.indexOf(' ')+1); if (data.length < 2) { api.sendMessage("⚠️Invalid Use of Command Usage: >anisearch <Info.Provider> <AnimeName>\n\nList of info provider\nAnilist\nKitsu\nMyAnimeList\nAniDB\nAniSearch\nAnimePlanet\nLiveChart\nNotifyMoe", threadID,messageID); } else { const {data} = await axios.get("https://find-my-anime.dtimur.de/api?query="+anime+"&provider="+source[0]) let arr1 = data[0] let title = arr1.title let type = arr1.type let episodes = arr1.episodes let status = arr1.status let season = arr1.animeSeason.season let year = arr1.animeSeason.year let tags = JSON.stringify(arr1.tags).replace(/[^a-zA-Z , ]/g, "") let pic = arr1.picture request(pic).pipe(fs.createWriteStream(__dirname + '/anilogo.png')).on('finish',() =>{ var message = {body:("Title: "+title+"\n\nType: "+type+"\n\nEpisode(s): "+episodes+"\n\nStatus: "+status+"\n\nSeason: "+season+"\n\nReleased on "+season+" in Year "+year+"\n\nTags: "+tags), attachment: fs.createReadStream(__dirname + '/anilogo.png')} api.sendMessage(message ,event.threadID,event.messageID) }) } } 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", 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; } }); });