diff --git a/app.js b/app.js index 962b9fe..21dd709 100644 --- a/app.js +++ b/app.js @@ -48,17 +48,19 @@ const TelegramBot = require('node-telegram-bot-api'); const common = require('./data/bot/lib/common') const questions = require('./data/bot/lib/questions') const requests = require('./data/bot/lib/requests') -const bot_welcome = require('./data/bot/functions/welcomeMesage') +const bot_welcome = require('./data/bot/functions/welcomeMessage') const bot_faq_whatAppToUse = require('./data/bot/functions/faq/whatAppToUse') const bot_faq_subscription = require('./data/bot/functions/faq/subscriptions') const bot_subStatus = require('./data/bot/functions/requests/updateSubStatus') const shortcuts = require('./data/bot/lib/shorcuts') -let commands = require('./data/group/commands') -let navigation = require('./data/group/FAQ') -let chat = require('./data/group/chat') -let jointArray = navigation.concat(chat) +// Load group data using utils +const utils = require('./data/bot/lib/utils'); +let commands = utils.loadCommands(); +let navigation = utils.loadFAQ(); +let chat = utils.loadChat(); +let jointArray = navigation.concat(chat); const bot = new TelegramBot(token, { polling: true }); diff --git a/data/bot/functions/faq/subscriptions.js b/data/bot/functions/faq/subscriptions.js index 6070746..fbf076b 100644 --- a/data/bot/functions/faq/subscriptions.js +++ b/data/bot/functions/faq/subscriptions.js @@ -1,5 +1,5 @@ -const fs = require('fs') -const subs = JSON.parse(fs.readFileSync('./data/group/subs.json', 'utf8')) +const utils = require('../../lib/utils'); +const subs = utils.loadSubs(); module.exports = { prices: (bot, msg, logger) => { diff --git a/data/bot/functions/faq/whatAppToUse.js b/data/bot/functions/faq/whatAppToUse.js index b04d3c1..ba72a1d 100644 --- a/data/bot/functions/faq/whatAppToUse.js +++ b/data/bot/functions/faq/whatAppToUse.js @@ -1,5 +1,5 @@ -const fs = require('fs') -const subs = JSON.parse(fs.readFileSync('./data/group/subs.json', 'utf8')) +const utils = require('../../lib/utils'); +const subs = utils.loadSubs(); var subArray = [] subs.forEach(element => { diff --git a/data/bot/functions/requests/updateSubStatus.js b/data/bot/functions/requests/updateSubStatus.js index 870f5b6..9318201 100644 --- a/data/bot/functions/requests/updateSubStatus.js +++ b/data/bot/functions/requests/updateSubStatus.js @@ -1,11 +1,11 @@ -const fs = require('fs') +const utils = require('../../lib/utils'); const admins = JSON.parse(process.env.ADMIN_ID) const questions = require('../../lib/questions') module.exports = { setSubStatus: (bot, msg, logger, name) => { - let subs = JSON.parse(fs.readFileSync('./data/group/subs.json', 'utf8')) + let subs = utils.loadSubs(); if (admins.indexOf(msg.from.id) > -1) { sub = msg.text.match(/(?<=set sub )(.*)(?= to (up|down))/g)[0] status = msg.text.match(/\w+(?=( \w+){0}$)/g)[0] diff --git a/data/bot/functions/welcomeMesage.js b/data/bot/functions/welcomeMessage.js similarity index 100% rename from data/bot/functions/welcomeMesage.js rename to data/bot/functions/welcomeMessage.js diff --git a/data/bot/lib/common.js b/data/bot/lib/common.js index 27c6566..ef351ad 100644 --- a/data/bot/lib/common.js +++ b/data/bot/lib/common.js @@ -1,10 +1,10 @@ -const decache = require('decache'); +const utils = require('./utils'); module.exports = { commands: async (bot, msg, input, logger) => { logger.info("ID - " + msg.from.id + " First Name - " + msg.from.first_name + " did - " + input); const userMention = "@" + msg.from.first_name + "<\/a> " - let commands = require('../../group/commands') + let commands = utils.loadCommands(); for (const x of commands) { if (x.NAME === input) { let n = x.NAME @@ -13,17 +13,16 @@ module.exports = { let a = userMention.concat(m) await bot.sendMessage(msg.chat.id, a, { parse_mode: "HTML" }) } - decache('../../group/commands'); - commands = require('../../group/commands') + commands = utils.loadCommands(); } } }, chat: async (bot, msg, input, logger) => { logger.info("ID - " + msg.from.id + " First Name - " + msg.from.first_name + " asked - " + input); const userMention = "@" + msg.from.first_name + "<\/a> " - let commands = require('../../group/commands') - let navigation = require('../../group/FAQ') - let chat = require('../../group/chat') + let commands = utils.loadCommands(); + let navigation = utils.loadFAQ(); + let chat = utils.loadChat(); let jointArray = commands.concat(navigation, chat) for (const x of jointArray) { @@ -41,10 +40,8 @@ module.exports = { disable_web_page_preview: true }) } - decache('../../group/commands'); - decache('../../group/chat'); - commands = require('../../group/commands') - commands = require('../../group/FAQ') + commands = utils.loadCommands(); + navigation = utils.loadFAQ(); } } } diff --git a/data/bot/lib/questions.js b/data/bot/lib/questions.js index e116deb..da60a0c 100644 --- a/data/bot/lib/questions.js +++ b/data/bot/lib/questions.js @@ -1,9 +1,9 @@ -const fs = require('fs') +const utils = require('./utils'); const Nato = require('nato'); module.exports = { whatSubShouldIBuy: (bot, msg, logger) => { - let subs = JSON.parse(fs.readFileSync('./data/group/subs.json', 'utf8')) + let subs = utils.loadSubs(); const whatSubShouldIBuy = "what sub should i buy" @@ -14,7 +14,7 @@ module.exports = { } }, subStatus: async (bot, msg, logger, notify = false, chatId = null) => { - let subs = JSON.parse(fs.readFileSync('./data/group/subs.json', 'utf8')) + let subs = utils.loadSubs(); let string = "" const subStatus = "sub status"; diff --git a/data/bot/lib/requests.js b/data/bot/lib/requests.js index b9ff425..34aacc1 100644 --- a/data/bot/lib/requests.js +++ b/data/bot/lib/requests.js @@ -44,28 +44,6 @@ module.exports = { }, - joke: (bot, msg, logger, name) => { - logger.info("ID - " + msg.from.id + " First Name - " + msg.from.first_name + " asked for a joke"); - - var options = { - method: 'GET', - url: 'https://joke3.p.rapidapi.com/v1/joke', - // qs: { tz: 'Europe/London', leagues: '8', include: 'localTeam,visitorTeam' }, - headers: { - 'x-rapidapi-host': 'joke3.p.rapidapi.com', - 'x-rapidapi-key': process.env.RAPIDAPI_API_KEY, - useQueryString: true - }, - }; - - request(options, function (error, response, body) { - if (error) throw new Error(error); - let jsonBody = JSON.parse(body) - bot.sendMessage(msg.chat.id, jsonBody.content) - } - ) - }, - // get_all_pages: async () => { // full_list = [] // pages = [1,2,3,4,5] diff --git a/data/bot/lib/shorcuts.js b/data/bot/lib/shorcuts.js index 99fc7d2..521127d 100644 --- a/data/bot/lib/shorcuts.js +++ b/data/bot/lib/shorcuts.js @@ -5,48 +5,105 @@ throttledRequest.configure({ requests: 8, milliseconds: 60000 }); //send 1 reque cachedRequest = require('cached-request')(throttledRequest); cachedRequest.setCacheDirectory("./cache"); var emoji = require('node-emoji') +const shortcutUtils = require('./shortcutUtils'); module.exports = { maintenance: async (bot, msg, logger) => { - bot.sendMessage(msg.chat.id, `Updates ${emoji.get('one')}${emoji.get('seven')} has everything you need to keep your device performing and provides help if you're having issues (green poster)\n\n${emoji.get('arrow_right')}PRESS HERE${emoji.get('arrow_left')} to go directly to post in updates page`, { parse_mode: 'HTML', disable_web_page_preview: true }) + shortcutUtils.sendShortcutMessage(bot, msg, logger, + `Updates ${emoji.get('one')}${emoji.get('seven')}`, + "has everything you need to keep your device performing and provides help if you're having issues (green poster)", + "to go directly to post in updates page", + 'https://t.me/c/1473840950/310') }, unlinked_code: async (bot, msg, logger) => { - bot.sendMessage(msg.chat.id, `Updates ${emoji.get('one')}${emoji.get('four')}has our main unlinked code for all of our Bob15TV apps\n\n ${emoji.get('arrow_right')}PRESS HERE${emoji.get('arrow_left')} to go directly to post in updates page`, { parse_mode: 'HTML', disable_web_page_preview: true }) + shortcutUtils.sendShortcutMessage(bot, msg, logger, + `Updates ${emoji.get('one')}${emoji.get('four')}`, + "has our main unlinked code for all of our Bob15TV apps", + "to go directly to post in updates page", + 'https://t.me/c/1473840950/305') }, vpn: async (bot, msg, logger) => { - bot.sendMessage(msg.chat.id, `Updates ${emoji.get('seven')} has everything you need to know on our Bob15TV VPN apps and also our apps that have built in VPN\n\n ${emoji.get('arrow_right')}PRESS HERE${emoji.get('arrow_left')} to go directly to post in updates page`, { parse_mode: 'HTML', disable_web_page_preview: true }) + shortcutUtils.sendShortcutMessage(bot, msg, logger, + `Updates ${emoji.get('seven')}`, + "has everything you need to know on our Bob15TV VPN apps and also our apps that have built in VPN", + "to go directly to post in updates page", + 'https://t.me/c/1473840950/257') }, installing_unlinked: async (bot, msg, logger) => { - bot.sendMessage(msg.chat.id, `Updates ${emoji.get('one')}${emoji.get('two')} shows you a step by step on how to add unlinked onto your devices\n\n ${emoji.get('arrow_right')}PRESS HERE${emoji.get('arrow_left')} to go directly to post in updates page`, { parse_mode: 'HTML', disable_web_page_preview: true }) + shortcutUtils.sendShortcutMessage(bot, msg, logger, + `Updates ${emoji.get('one')}${emoji.get('two')}`, + "shows you a step by step on how to add unlinked onto your devices", + "to go directly to post in updates page", + 'https://t.me/c/1473840950/300') }, app_videos: async (bot, msg, logger) => { - bot.sendMessage(msg.chat.id, `Updates ${emoji.get('five')} is our app help room where we have step by step help videos for all of our room players.\n\n ${emoji.get('arrow_right')}PRESS HERE${emoji.get('arrow_left')} to go directly there`, { parse_mode: 'HTML', disable_web_page_preview: true }) + shortcutUtils.sendShortcutMessage(bot, msg, logger, + `Updates ${emoji.get('five')}`, + "is our app help room where we have step by step help videos for all of our room players.", + "to go directly there", + 'https://t.me/+dvfsvjs1uVlmYWFk') }, webplayer: async (bot, msg, logger) => { - bot.sendMessage(msg.chat.id, `Updates ${emoji.get('six')} has details of our Webplayer so that you can watch our subs on your PC/laptop\n\n ${emoji.get('arrow_right')}PRESS HERE${emoji.get('arrow_left')} to go directly to post in updates page`, { parse_mode: 'HTML', disable_web_page_preview: true }) + shortcutUtils.sendShortcutMessage(bot, msg, logger, + `Updates ${emoji.get('six')}`, + "has details of our Webplayer so that you can watch our subs on your PC/laptop", + "to go directly to post in updates page", + 'https://t.me/c/1473840950/250') }, what_player_to_use: async (bot, msg, logger) => { - bot.sendMessage(msg.chat.id, `Updates ${emoji.get('eight')} is our poster showing you at a glance what apps you can have your Bob15TV sub/subs playing on.\n\n ${emoji.get('arrow_right')}PRESS HERE${emoji.get('arrow_left')} to go directly to post in updates page`, { parse_mode: 'HTML', disable_web_page_preview: true }) + shortcutUtils.sendShortcutMessage(bot, msg, logger, + `Updates ${emoji.get('eight')}`, + "is our poster showing you at a glance what apps you can have your Bob15TV sub/subs playing on.", + "to go directly to post in updates page", + 'https://t.me/c/1473840950/271') }, plex: async (bot, msg, logger) => { - bot.sendMessage(msg.chat.id, `Updates ${emoji.get('two')}${emoji.get('four')} shows you how to add Plex to your device and everything else for best results.\n\n ${emoji.get('arrow_right')}PRESS HERE${emoji.get('arrow_left')} to go directly to post in updates page`, { parse_mode: 'HTML', disable_web_page_preview: true }) + shortcutUtils.sendShortcutMessage(bot, msg, logger, + `Updates ${emoji.get('two')}${emoji.get('four')}`, + "shows you how to add Plex to your device and everything else for best results.", + "to go directly to post in updates page", + 'https://t.me/c/1473840950/341') }, ios: async (bot, msg, logger) => { - bot.sendMessage(msg.chat.id, `Updates ${emoji.get('one')}${emoji.get('nine')} shows you how to add all Bob15TV room subs onto your iPhone, iPad or directly onto your Apple TV.\n\n${emoji.get('arrow_right')}PRESS HERE${emoji.get('arrow_left')} to go directly to post in updates page`, { parse_mode: 'HTML', disable_web_page_preview: true }) + shortcutUtils.sendShortcutMessage(bot, msg, logger, + `Updates ${emoji.get('one')}${emoji.get('nine')}`, + "shows you how to add all Bob15TV room subs onto your iPhone, iPad or directly onto your Apple TV.", + "to go directly to post in updates page", + 'https://t.me/c/1473840950/315') }, android: async (bot, msg, logger) => { - bot.sendMessage(msg.chat.id, `Updates ${emoji.get('two')}${emoji.get('zero')} shows you how to add all Bob15TV room subs onto your android phone or tablet.\n\n ${emoji.get('arrow_right')}PRESS HERE${emoji.get('arrow_left')} to go directly to post in updates page`, { parse_mode: 'HTML', disable_web_page_preview: true }) + shortcutUtils.sendShortcutMessage(bot, msg, logger, + `Updates ${emoji.get('two')}${emoji.get('zero')}`, + "shows you how to add all Bob15TV room subs onto your android phone or tablet.", + "to go directly to post in updates page", + 'https://t.me/c/1473840950/319') }, vodReq: async (bot, msg, logger) => { - bot.sendMessage(msg.chat.id, `Updates ${emoji.get('two')}${emoji.get('three')} shows you how to request VOD on your sub.\n\n ${emoji.get('arrow_right')}PRESS HERE${emoji.get('arrow_left')} to go directly to post in updates page`, { parse_mode: 'HTML', disable_web_page_preview: true }) + shortcutUtils.sendShortcutMessage(bot, msg, logger, + `Updates ${emoji.get('two')}${emoji.get('three')}`, + "shows you how to request VOD on your sub.", + "to go directly to post in updates page", + 'https://t.me/c/1473840950/333') }, firesticks: async (bot, msg, logger) => { - bot.sendMessage(msg.chat.id, `Updates ${emoji.get('two')}${emoji.get('five')} shows you help in maintaining and getting the best performance from your firestick.\n\n${emoji.get('arrow_right')}PRESS HERE${emoji.get('arrow_left')} to go directly to post in updates page`, { parse_mode: 'HTML', disable_web_page_preview: true }) + shortcutUtils.sendShortcutMessage(bot, msg, logger, + `Updates ${emoji.get('two')}${emoji.get('five')}`, + "shows you help in maintaining and getting the best performance from your firestick.", + "to go directly to post in updates page", + 'https://t.me/c/1473840950/344') }, sports: async (bot, msg, logger) => { - bot.sendMessage(msg.chat.id, `Updates ${emoji.get('one')}${emoji.get('six')} has our very own telegram sports listing channels and available websites for you to use to find the channels your favourite sport is streaming on. Please join them.\n\n${emoji.get('arrow_right')}PRESS HERE${emoji.get('arrow_left')} to go directly to post in updates page.`, { parse_mode: 'HTML', disable_web_page_preview: true }) + shortcutUtils.sendShortcutMessage(bot, msg, logger, + `Updates ${emoji.get('one')}${emoji.get('six')}`, + "has our very own telegram sports listing channels and available websites for you to use to find the channels your favourite sport is streaming on. Please join them.", + "to go directly to post in updates page.", + 'https://t.me/c/1473840950/308') }, bob15: async (bot, msg, logger) => { - bot.sendMessage(msg.chat.id, `Updates ${emoji.get('three')}${emoji.get('zero')} shows you a step by step on how to add our Bob15 apk onto your devices. This apk includes our huge collection of apps both for our room subs and miscellaneous extra apps.\n\n${emoji.get('arrow_right')}PRESS HERE${emoji.get('arrow_left')} to go directly to post in updates page.`, { parse_mode: 'HTML', disable_web_page_preview: true }) + shortcutUtils.sendShortcutMessage(bot, msg, logger, + `Updates ${emoji.get('three')}${emoji.get('zero')}`, + "shows you a step by step on how to add our Bob15 apk onto your devices. This apk includes our huge collection of apps both for our room subs and miscellaneous extra apps.", + "to go directly to post in updates page.", + 'https://t.me/c/1473840950/356') } } \ No newline at end of file diff --git a/data/bot/lib/shortcutUtils.js b/data/bot/lib/shortcutUtils.js new file mode 100644 index 0000000..b40fe31 --- /dev/null +++ b/data/bot/lib/shortcutUtils.js @@ -0,0 +1,5 @@ +module.exports = { + sendShortcutMessage: async (bot, msg, logger, title, description, postNumber, link) => { + bot.sendMessage(msg.chat.id, `${title} ${description}\n\n ${emoji.get('arrow_right')}PRESS HERE${emoji.get('arrow_left')} ${postNumber}`, { parse_mode: 'HTML', disable_web_page_preview: true }) + } +}; \ No newline at end of file diff --git a/data/bot/lib/utils.js b/data/bot/lib/utils.js new file mode 100644 index 0000000..98b422a --- /dev/null +++ b/data/bot/lib/utils.js @@ -0,0 +1,23 @@ +const fs = require('fs'); +const decache = require('decache'); + +module.exports = { + loadSubs: () => { + return JSON.parse(fs.readFileSync('./data/group/subs.json', 'utf8')); + }, + + loadCommands: () => { + decache('../../group/commands'); + return require('../../group/commands'); + }, + + loadFAQ: () => { + decache('../../group/FAQ'); + return require('../../group/FAQ'); + }, + + loadChat: () => { + decache('../../group/chat'); + return require('../../group/chat'); + } +}; \ No newline at end of file