Compare commits
10 Commits
a96ea18f7a
...
63054a2a1d
Author | SHA1 | Date | |
---|---|---|---|
63054a2a1d | |||
892193b7cc | |||
fa689f50d1 | |||
5e617bc13b | |||
900c355596 | |||
7657f01221 | |||
f228c0ebc2 | |||
574bf12a5f | |||
d4420d58bb | |||
![]() |
eb982c8b65 |
4
.vscode/launch.json
vendored
@ -7,11 +7,11 @@
|
||||
{
|
||||
"type": "node",
|
||||
"request": "launch",
|
||||
"name": "Launch Program",
|
||||
"name": "App",
|
||||
"skipFiles": [
|
||||
"<node_internals>/**"
|
||||
],
|
||||
"program": "${workspaceFolder}\\app.js"
|
||||
"program": "${workspaceFolder}/app.js",
|
||||
}
|
||||
]
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
docker stop bobbytviptv_suzie &&\
|
||||
docker rm --force bobbytviptv_suzie &&\
|
||||
docker build -t bobbytviptv_suzie . &&\
|
||||
docker run -v ${PWD}/logs:/usr/src/app/logs -d --name bobbytviptv_suzie bobbytviptv_suzie:latest
|
||||
docker run -v ${PWD}/logs:/usr/src/app/logs -p 5000:5000 -d --restart unless-stopped --name bobbytviptv_suzie bobbytviptv_suzie:latest
|
86
app.js
@ -1,6 +1,30 @@
|
||||
require('dotenv').config();
|
||||
|
||||
const logger = require('perfect-logger');
|
||||
// import express from 'express';
|
||||
const express = require('express')
|
||||
const basicAuth = require('express-basic-auth')
|
||||
|
||||
const app = express();
|
||||
|
||||
let usersList = {
|
||||
"Sarah": "TEST",
|
||||
"Karl": "TEST"
|
||||
}
|
||||
const users = {
|
||||
users: usersList,
|
||||
challenge: true
|
||||
}
|
||||
|
||||
app.use(express.json());
|
||||
app.use(express.urlencoded({ extended: false }));
|
||||
app.get('/', basicAuth(users), (req, res) => {
|
||||
return res.send('Received a GET HTTP method');
|
||||
});
|
||||
|
||||
app.listen(process.env.PORT, () =>
|
||||
console.log(`Example app listening on port ${process.env.PORT}!`),
|
||||
);
|
||||
|
||||
const token = process.env.BOT_TOKEN;
|
||||
const name = process.env.BOT_NAME;
|
||||
@ -22,6 +46,7 @@ const bot_welcome = require('./data/bot/functions/welcomeMesage')
|
||||
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')
|
||||
@ -49,13 +74,17 @@ bot.on('message', (msg) => {
|
||||
requests.joke(bot, msg, logger)
|
||||
}
|
||||
|
||||
if (msg.text && msg.text.toString() === "- What app should I use?") {
|
||||
if (msg.text && msg.text.toString().includes("/updates_page")) {
|
||||
questions.updates_page(bot, msg, logger)
|
||||
}
|
||||
|
||||
if (msg.text && msg.text.toString() === "- What player for my sub?") {
|
||||
bot_faq_whatAppToUse.main(bot, msg, logger)
|
||||
}
|
||||
bot_faq_whatAppToUse.appSwitch(bot, msg, logger)
|
||||
|
||||
if (msg.text && msg.text.toString() === "- Subscription Options") {
|
||||
bot_faq_subscription.pricesImageList(bot, msg, logger)
|
||||
bot_faq_subscription.newPrices(bot, msg, logger)
|
||||
}
|
||||
|
||||
for (const x of jointArray) {
|
||||
@ -70,8 +99,61 @@ bot.on('message', (msg) => {
|
||||
}
|
||||
}
|
||||
|
||||
if (msg.text && msg.text.toString().includes("/password")) {
|
||||
match = msg.text.substring(10);
|
||||
questions.password(bot, msg, match, logger)
|
||||
}
|
||||
|
||||
if (msg.text && msg.text.toString().toLowerCase().includes("set sub")) {
|
||||
bot_subStatus.setSubStatus(bot, msg, logger)
|
||||
}
|
||||
|
||||
if (msg.text && msg.text.toString().includes("/maintenance")) {
|
||||
shortcuts.maintenance(bot, msg, logger)
|
||||
}
|
||||
|
||||
if (msg.text && msg.text.toString().includes("/unlinked_code")) {
|
||||
shortcuts.unlinked_code(bot, msg, logger)
|
||||
}
|
||||
|
||||
if (msg.text && msg.text.toString().includes("/vpn")) {
|
||||
shortcuts.vpn(bot, msg, logger)
|
||||
}
|
||||
|
||||
if (msg.text && msg.text.toString().includes("/installing_unlinked")) {
|
||||
shortcuts.installing_unlinked(bot, msg, logger)
|
||||
}
|
||||
if (msg.text && msg.text.toString().includes("/app_videos")) {
|
||||
shortcuts.app_videos(bot, msg, logger)
|
||||
}
|
||||
if (msg.text && msg.text.toString().includes("/webplayer")) {
|
||||
shortcuts.webplayer(bot, msg, logger)
|
||||
}
|
||||
if (msg.text && msg.text.toString().includes("/what_player_to_use")) {
|
||||
shortcuts.what_player_to_use(bot, msg, logger)
|
||||
}
|
||||
if (msg.text && msg.text.toString().includes("/plex")) {
|
||||
shortcuts.plex(bot, msg, logger)
|
||||
}
|
||||
if (msg.text && msg.text.toString().includes("/ios")) {
|
||||
shortcuts.ios(bot, msg, logger)
|
||||
}
|
||||
if (msg.text && msg.text.toString().includes("/android")) {
|
||||
shortcuts.android(bot, msg, logger)
|
||||
}
|
||||
if (msg.text && msg.text.toString().includes("/request_vod")) {
|
||||
shortcuts.vodReq(bot, msg, logger)
|
||||
}
|
||||
// if (msg.text && msg.text.toString().includes("/firesticks")) {
|
||||
// shortcuts.firesticks(bot, msg, logger)
|
||||
// }
|
||||
if (msg.text && msg.text.toString().includes("/sports")) {
|
||||
shortcuts.sports(bot, msg, logger)
|
||||
}
|
||||
if (msg.text && msg.text.toString().includes("/tv_today")) {
|
||||
requests.tv_today(bot, msg, logger)
|
||||
}
|
||||
if (msg.text && msg.text.toString().includes("/install_bob15")) {
|
||||
shortcuts.bob15(bot, msg, logger)
|
||||
}
|
||||
})
|
@ -7,11 +7,11 @@ module.exports = {
|
||||
bot.sendMessage(msg.chat.id, "Hello " + userMention + " please PM me @" + process.env.BOT_USERNAME + " and i'll try to help.", { parse_mode: "HTML" });
|
||||
}
|
||||
},
|
||||
filelinked_help: (bot, msg, logger) => {
|
||||
const help_filelinked = "filelinked code";
|
||||
if (msg.text && msg.text.toString().toLowerCase().includes(help_filelinked)) {
|
||||
unlinked_help: (bot, msg, logger) => {
|
||||
const help_unlinked = "unlinked code";
|
||||
if (msg.text && msg.text.toString().toLowerCase().includes(help_unlinked)) {
|
||||
const userMention = "<a href=\"tg:\/\/user?id=" + msg.from.id + "\">@" + msg.from.first_name + "<\/a>"
|
||||
logger.info("ID - " + msg.from.id + " First Name - " + msg.from.first_name + " Asked for fileLinked code");
|
||||
logger.info("ID - " + msg.from.id + " First Name - " + msg.from.first_name + " Asked for unlinked code");
|
||||
bot.sendMessage(msg.chat.id, "Hello " + userMention + " please PM me @" + process.env.BOT_USERNAME + " and i'll give you the code", { parse_mode: "HTML" });
|
||||
}
|
||||
},
|
||||
|
@ -25,6 +25,21 @@ module.exports = {
|
||||
bot.sendPhoto(msg.chat.id, subs[i].IMAGE)
|
||||
}
|
||||
}
|
||||
bot.sendMessage(msg.chat.id, "All of these prices are for 12 Month subscription subs")
|
||||
}
|
||||
// bot.sendMessage(msg.chat.id, "All of these prices are for 12 Month subscription subs")
|
||||
},
|
||||
newPrices: (bot, msg, logger) => {
|
||||
let string = ""
|
||||
logger.info("ID - " + msg.from.id + " First Name - " + msg.from.first_name + " Got subscription Prices");
|
||||
// subs.forEach(element => {
|
||||
// if (element.COST != "X") {
|
||||
// let catString = element.SUB + " - £" + element.COST + "."
|
||||
// string += '\n' + catString;
|
||||
// }
|
||||
// });
|
||||
bot.sendMessage(msg.chat.id, "With Bob15TV we have many different subscriptions available. Some of these subscriptions have catch up and some do not. All subscriptions will have UK, US, Irish, 3PMs, PPV as standard content but will have lots of other countries too. There will also be different VOD and TV Series on each sub.").then(() => {
|
||||
return bot.sendMessage(msg.chat.id, "Please DM Sarah @Sarbob15 and she will forward on posters for all of the different subs showing their content.").then(() => {
|
||||
return bot.sendMessage(msg.chat.id, "Please note with all subs (except Top Vod) live tv is what you are purchasing. Catch up, Vod & Series etc are always a bonus and can go at anytime.\n\nIt is always the suppliers decision to keep or delete these extras.")
|
||||
})
|
||||
})
|
||||
},
|
||||
}
|
||||
|
@ -33,7 +33,7 @@ module.exports = {
|
||||
}
|
||||
}
|
||||
);
|
||||
bot.sendMessage(msg.chat.id, checkSub + " can use -" + string + "\n\nAll can be downloaded from our FileLinked")
|
||||
bot.sendMessage(msg.chat.id, checkSub + " can use -" + string + "\n\nAll can be downloaded from our unlinked")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
const fs = require('fs')
|
||||
const admins = JSON.parse(process.env.ADMIN_ID)
|
||||
const questions = require('../../lib/questions')
|
||||
|
||||
|
||||
module.exports = {
|
||||
setSubStatus: (bot, msg, logger, name) => {
|
||||
@ -14,13 +16,15 @@ module.exports = {
|
||||
status = 0
|
||||
}
|
||||
subs.forEach(function (element, index) {
|
||||
if (element.SUB.toLowerCase() === sub) {
|
||||
if (element.SUB.toLowerCase() === sub.toLowerCase()) {
|
||||
subs[index].STATUS = status; //set the value
|
||||
}
|
||||
})
|
||||
// console.log(subs);
|
||||
fs.writeFileSync('./data/group/subs.json', JSON.stringify(subs))
|
||||
bot.sendMessage(msg.chat.id, sub + " sub updated")
|
||||
msg.chat.id = process.env.CHANNEL_ID
|
||||
questions.subStatus(bot, msg, logger, true)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3,7 +3,7 @@ const channel = process.env.CHANNEL
|
||||
module.exports = {
|
||||
welcomeMessage: (bot, msg, logger) => {
|
||||
const newUserMention = "<a href=\"tg:\/\/user?id=" + msg.new_chat_member.id + "\">@" + msg.new_chat_member.first_name + "<\/a>"
|
||||
bot.sendMessage(msg.chat.id, "Hello " + newUserMention + ", Welcome to " + channel + ". \n\nPlease PM me @" + process.env.BOT_USERNAME + " to find out all needed information about our service before asking an admin or posting in here.\n\nIf you do ask questions, and its obvious you have not spoken to me, you will be booted from the room. This is IPTV, admins don't have time for hand holding.!!!", { parse_mode: "HTML" });
|
||||
bot.sendMessage(msg.chat.id, "Hello " + newUserMention + ", Welcome to " + channel + ". \n\nWe have many subscriptions on sale here. Please have a look at the content of all our room subs by <a href='https://t.me/c/1380372404/53456/53457'>PRESSING HERE</a>\n\n<a href='https://t.me/c/1380372404/53452/53454'>PRESS HERE</a> for the pricelist of those subs.\n\nIf you do have questions, please ask in here the general chat where you will be answered as quickly as possible. Please know that this is IPTV, which means you need to be willing to learn a little bit about how everything works and how to fix and maintain your device in order to get the best from it. Don't worry though because we have easy step by step posters and help videos for everything you will need.!!!", { parse_mode: "HTML" });
|
||||
logger.info("ID - " + msg.new_chat_member.id + " First Name - " + msg.new_chat_member.first_name + " joined the group");
|
||||
}
|
||||
};
|
@ -37,7 +37,8 @@ module.exports = {
|
||||
parse_mode: "HTML",
|
||||
"reply_markup": {
|
||||
"keyboard": m
|
||||
}
|
||||
},
|
||||
disable_web_page_preview: true
|
||||
})
|
||||
}
|
||||
decache('../../group/commands');
|
||||
|
@ -1,4 +1,5 @@
|
||||
const fs = require('fs')
|
||||
const Nato = require('nato');
|
||||
|
||||
module.exports = {
|
||||
whatSubShouldIBuy: (bot, msg, logger) => {
|
||||
@ -12,25 +13,44 @@ module.exports = {
|
||||
bot.sendMessage(msg.chat.id, randomSub.SUB + "!");
|
||||
}
|
||||
},
|
||||
subStatus: (bot, msg, logger, name) => {
|
||||
subStatus: async (bot, msg, logger, notify = false) => {
|
||||
let subs = JSON.parse(fs.readFileSync('./data/group/subs.json', 'utf8'))
|
||||
|
||||
let string = ""
|
||||
const subStatus = "sub status";
|
||||
logger.info("ID - " + msg.from.id + " First Name - " + msg.from.first_name + " Asked how to get a subscription");
|
||||
subs.forEach(element => {
|
||||
if (element.STATUS != "X") {
|
||||
if (element.STATUS === 1) {
|
||||
element.STATUS = "Up"
|
||||
} else {
|
||||
element.STATUS = "Down"
|
||||
}
|
||||
let catString = element.SUB + " Is " + element.STATUS
|
||||
// console.log(catString)
|
||||
string += '\n' + catString;
|
||||
logger.info("ID - " + msg.from.id + " First Name - " + msg.from.first_name + " Asked how to get a subscription");
|
||||
subs.forEach(element => {
|
||||
if (element.STATUS != "X") {
|
||||
if (element.STATUS === 1) {
|
||||
element.STATUS = "Up"
|
||||
} else {
|
||||
element.STATUS = "Down"
|
||||
}
|
||||
});
|
||||
// console.log(string)
|
||||
bot.sendMessage(msg.chat.id, string, { parse_mode: "HTML" })
|
||||
let catString = element.SUB + " Is " + element.STATUS
|
||||
// console.log(catString)
|
||||
string += '\n' + catString;
|
||||
}
|
||||
});
|
||||
// console.log(string)
|
||||
data = await bot.sendMessage(msg.chat.id, string, { parse_mode: "HTML", disable_notification: notify })
|
||||
if (notify == true) {
|
||||
bot.pinChatMessage(process.env.CHANNEL_ID, data.message_id)
|
||||
}
|
||||
}
|
||||
},
|
||||
updates_page: async (bot, msg, logger) => {
|
||||
|
||||
bot.sendMessage(msg.chat.id, `<a href='https://t.me/+Xr3cFsqJAVYwNTNk'>Bob15TV Updates page</a>`, { parse_mode: "HTML" })
|
||||
|
||||
},
|
||||
password: (bot, msg, match, logger) => {
|
||||
logger.info("ID - " + msg.from.id + " First Name - " + msg.from.first_name + " Asked for their password being spelt");
|
||||
// console.log(string)
|
||||
|
||||
let sendString = new Nato(match.toLowerCase())
|
||||
|
||||
bot.sendMessage(msg.chat.id, sendString.nato, {
|
||||
force_reply: true,
|
||||
parse_mode: "HTML"
|
||||
})
|
||||
}
|
||||
}
|
@ -4,6 +4,8 @@ var throttledRequest = require('throttled-request')(request);
|
||||
throttledRequest.configure({ requests: 8, milliseconds: 60000 }); //send 1 request per second
|
||||
cachedRequest = require('cached-request')(throttledRequest);
|
||||
cachedRequest.setCacheDirectory("./cache");
|
||||
var emoji = require('node-emoji')
|
||||
|
||||
|
||||
module.exports = {
|
||||
football_today: async (bot, msg, logger) => {
|
||||
@ -12,7 +14,10 @@ module.exports = {
|
||||
var options = {
|
||||
method: 'GET',
|
||||
url: 'https://football-pro.p.rapidapi.com/api/v2.0/livescores',
|
||||
qs: { tz: 'Europe/London', leagues: '8,2,5,23,24', include: 'localTeam,visitorTeam' },
|
||||
// qs: { tz: 'Europe/London', leagues: '2,5,8,23,24,27,45,81,1326', include: 'localTeam,visitorTeam' },
|
||||
// qs: { tz: 'Europe/London', leagues: '2,5,8,23,24,27,45,81,1326,501', include: 'localTeam,visitorTeam' },
|
||||
// qs: { tz: 'Europe/London', leagues: '2,5,8,23,24,27,501', include: 'localTeam,visitorTeam' }, // Champions Leage, Europa, Premier League, Community Shield, FA Cup, Carabo cup, Scottish
|
||||
qs: { tz: 'Europe/London', leagues: '2,5,8,23,501,732', include: 'localTeam,visitorTeam' }, // Champions Leage, Europa, Premier League, Community Shield, Scottish
|
||||
headers: {
|
||||
'x-rapidapi-host': 'football-pro.p.rapidapi.com',
|
||||
'x-rapidapi-key': process.env.RAPIDAPI_API_KEY,
|
||||
@ -20,7 +25,6 @@ module.exports = {
|
||||
},
|
||||
ttl: 18000000 //5 hours
|
||||
};
|
||||
|
||||
cachedRequest(options, async function (error, response, body) {
|
||||
if (error) throw new Error(error);
|
||||
let jsonBody = JSON.parse(body)
|
||||
@ -34,13 +38,15 @@ module.exports = {
|
||||
}
|
||||
|
||||
}).then(() => {
|
||||
return bot.sendMessage(msg.chat.id, 'To see what channels the football is streaming on please join @footballontv')
|
||||
return bot.sendMessage(msg.chat.id, `To see what channels the football is streaming on goto post ${emoji.get('one')}${emoji.get('six')} in our updates page and join our football listings rooms.\n\n${emoji.get('arrow_right')}<a href='https://t.me/c/1473840950/308'>PRESS HERE</a>${emoji.get('arrow_left')} to go directly to post in updates page.`, { parse_mode: 'HTML', disable_web_page_preview: true })
|
||||
})
|
||||
} else {
|
||||
bot.sendMessage(msg.chat.id, 'Sadly there is no football today :(')
|
||||
bot.sendMessage(msg.chat.id, `Sadly, there is no football I care about on today ${emoji.get('cry')} but, Updates ${emoji.get('one')}${emoji.get('six')} <a href='https://t.me/c/1473840950/308'>HERE</a> also has telegram rooms for all other sports.`, { parse_mode: 'HTML', disable_web_page_preview: true })
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
joke: (bot, msg, logger, name) => {
|
||||
logger.info("ID - " + msg.from.id + " First Name - " + msg.from.first_name + " asked for a joke");
|
||||
|
||||
@ -61,5 +67,85 @@ module.exports = {
|
||||
bot.sendMessage(msg.chat.id, jsonBody.content)
|
||||
}
|
||||
)
|
||||
},
|
||||
|
||||
// get_all_pages: async () => {
|
||||
// full_list = []
|
||||
// pages = [1,2,3,4,5]
|
||||
|
||||
// for (let i = 1; i < pages.length; i++) {
|
||||
// var options = {
|
||||
// method: 'GET',
|
||||
// url: 'https://api.themoviedb.org/3/tv/airing_today?api_key=01fe1ed0ba2275d4a9ce618fbabdac92&language=en-GB&page=' + i,
|
||||
// ttl: 18000000 //5 hours
|
||||
// };
|
||||
// return new Promise(function (resolve, reject) {
|
||||
|
||||
// request(options, function (error, response, body) {
|
||||
// if (!error) {
|
||||
// // resolve(body);
|
||||
// full_list.push(JSON.parse(body))
|
||||
// resolve(full_list[0])
|
||||
// } else {
|
||||
// reject(error);
|
||||
// }
|
||||
// })
|
||||
// })
|
||||
// }
|
||||
|
||||
// },
|
||||
|
||||
api_call: async (currentPage) => {
|
||||
var options = {
|
||||
method: 'GET',
|
||||
url: 'https://api.themoviedb.org/3/tv/airing_today?api_key=01fe1ed0ba2275d4a9ce618fbabdac92&language=en-GB&page=' + currentPage,
|
||||
ttl: 18000000 //5 hours
|
||||
};
|
||||
return new Promise(function (resolve, reject) {
|
||||
request(options, function (error, response, body) {
|
||||
if (!error) {
|
||||
resolve(JSON.parse(body))
|
||||
} else {
|
||||
reject(error);
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
get_all_pages: async () => {
|
||||
let currentPage = 1;
|
||||
full_list = []
|
||||
while (currentPage <= 5) {
|
||||
a = await module.exports.api_call(currentPage);
|
||||
// let { data } = await module.exports.api_call(currentPage);
|
||||
full_list.push(a.results)
|
||||
currentPage++;
|
||||
}
|
||||
a = Array.prototype.concat.apply([], full_list)
|
||||
return a
|
||||
},
|
||||
tv_today: async (bot, msg, logger) => {
|
||||
logger.info("ID - " + msg.from.id + " First Name - " + msg.from.first_name + " asked for tv today");
|
||||
l = await module.exports.get_all_pages()
|
||||
if (l.length > 0) {
|
||||
bot.sendMessage(msg.chat.id, 'Yes there is!').then(async () => {
|
||||
a = []
|
||||
b = l.filter(s => { return s.origin_country[0] == 'GB' || s.origin_country[0] == 'US' })
|
||||
for (const x of b) {
|
||||
var showName = x.name
|
||||
a.push(showName)
|
||||
|
||||
}
|
||||
new_ms = a.join('\n')
|
||||
|
||||
await bot.sendMessage(msg.chat.id, new_ms, { parse_mode: "HTML" })
|
||||
}).then(() => {
|
||||
return bot.sendMessage(msg.chat.id, `Enjoy your TV Shows today!.`, { parse_mode: 'HTML', disable_web_page_preview: true })
|
||||
})
|
||||
} else {
|
||||
bot.sendMessage(msg.chat.id, `Sadly, there is no tv shows on I care about on today ${emoji.get('cry')}.`, { parse_mode: 'HTML', disable_web_page_preview: true })
|
||||
}
|
||||
}
|
||||
// bot.sendMessage(msg.chat.id, jsonBody.content)
|
||||
}
|
||||
|
52
data/bot/lib/shorcuts.js
Normal file
@ -0,0 +1,52 @@
|
||||
|
||||
var request = require("request");
|
||||
var throttledRequest = require('throttled-request')(request);
|
||||
throttledRequest.configure({ requests: 8, milliseconds: 60000 }); //send 1 request per second
|
||||
cachedRequest = require('cached-request')(throttledRequest);
|
||||
cachedRequest.setCacheDirectory("./cache");
|
||||
var emoji = require('node-emoji')
|
||||
|
||||
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')}<a href='https://t.me/c/1473840950/310'>PRESS HERE</a>${emoji.get('arrow_left')} to go directly to post in updates page`, { parse_mode: 'HTML', disable_web_page_preview: true })
|
||||
},
|
||||
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')}<a href='https://t.me/c/1473840950/305'>PRESS HERE</a>${emoji.get('arrow_left')} to go directly to post in updates page`, { parse_mode: 'HTML', disable_web_page_preview: true })
|
||||
},
|
||||
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')}<a href='https://t.me/c/1473840950/257'>PRESS HERE</a>${emoji.get('arrow_left')} to go directly to post in updates page`, { parse_mode: 'HTML', disable_web_page_preview: true })
|
||||
},
|
||||
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')}<a href='https://t.me/c/1473840950/300'>PRESS HERE</a>${emoji.get('arrow_left')} to go directly to post in updates page`, { parse_mode: 'HTML', disable_web_page_preview: true })
|
||||
},
|
||||
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')}<a href='https://t.me/+dvfsvjs1uVlmYWFk'>PRESS HERE</a>${emoji.get('arrow_left')} to go directly there`, { parse_mode: 'HTML', disable_web_page_preview: true })
|
||||
},
|
||||
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')}<a href='https://t.me/c/1473840950/250'>PRESS HERE</a>${emoji.get('arrow_left')} to go directly to post in updates page`, { parse_mode: 'HTML', disable_web_page_preview: true })
|
||||
},
|
||||
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')}<a href='https://t.me/c/1473840950/271'>PRESS HERE</a>${emoji.get('arrow_left')} to go directly to post in updates page`, { parse_mode: 'HTML', disable_web_page_preview: true })
|
||||
},
|
||||
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')}<a href='https://t.me/c/1473840950/341'>PRESS HERE</a>${emoji.get('arrow_left')} to go directly to post in updates page`, { parse_mode: 'HTML', disable_web_page_preview: true })
|
||||
},
|
||||
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')}<a href='https://t.me/c/1473840950/315'>PRESS HERE</a>${emoji.get('arrow_left')} to go directly to post in updates page`, { parse_mode: 'HTML', disable_web_page_preview: true })
|
||||
},
|
||||
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')}<a href='https://t.me/c/1473840950/319'>PRESS HERE</a>${emoji.get('arrow_left')} to go directly to post in updates page`, { parse_mode: 'HTML', disable_web_page_preview: true })
|
||||
},
|
||||
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')}<a href='https://t.me/c/1473840950/333'>PRESS HERE</a>${emoji.get('arrow_left')} to go directly to post in updates page`, { parse_mode: 'HTML', disable_web_page_preview: true })
|
||||
},
|
||||
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')}<a href='https://t.me/c/1473840950/344'>PRESS HERE</a>${emoji.get('arrow_left')} to go directly to post in updates page`, { parse_mode: 'HTML', disable_web_page_preview: true })
|
||||
},
|
||||
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')}<a href='https://t.me/c/1473840950/308'>PRESS HERE</a>${emoji.get('arrow_left')} to go directly to post in updates page.`, { parse_mode: 'HTML', disable_web_page_preview: true })
|
||||
},
|
||||
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')}<a href='https://t.me/c/1473840950/356'>PRESS HERE</a>${emoji.get('arrow_left')} to go directly to post in updates page.`, { parse_mode: 'HTML', disable_web_page_preview: true })
|
||||
}
|
||||
}
|
BIN
data/group/Carbon.jpg
Normal file
After Width: | Height: | Size: 71 KiB |
BIN
data/group/Diamond.jpg
Normal file
After Width: | Height: | Size: 100 KiB |
@ -16,40 +16,37 @@ const chat = [
|
||||
"TEXT": [
|
||||
"Please use the buttons below to navigate"
|
||||
],
|
||||
"MENU": '[["- FAQ", "- Applications"]]'
|
||||
"MENU": '[["- FAQ", "- Hints & Tips"]]'
|
||||
},
|
||||
{
|
||||
"NAME": "- Home",
|
||||
"TEXT": [
|
||||
"Home",
|
||||
"Please only ask an Admin, if you can't find the answer here.."
|
||||
"Please ask your question in main Bob15TV chat, if you can't find the answer here.."
|
||||
],
|
||||
"MENU": '[["- FAQ", "- Applications"]]'
|
||||
"MENU": '[["- FAQ", "- Hints & Tips"]]'
|
||||
},
|
||||
{
|
||||
"NAME": "- FAQ",
|
||||
"TEXT": [
|
||||
"Frequently Asked Questions",
|
||||
"Please only ask an Admin, if you can't find the answer here.."
|
||||
"Please ask your question in main Bob15TV chat, if you can't find the answer here.."
|
||||
],
|
||||
"MENU": '[["- Subscriptions"],["- IPTV"],["- Apps"],["- Home"]]'
|
||||
"MENU": '[["- Subscriptions"],["- Apps"],["- Home"]]'
|
||||
},
|
||||
{
|
||||
"NAME": "- Applications",
|
||||
"NAME": "- Hints & Tips",
|
||||
"TEXT": [
|
||||
"We have a number of different applications that work with our subs, here is an overview of subs/apps colour coded by the icon in our FileLinked",
|
||||
"There are 2 new XCIPTV apps, Blue and Red.\nEach have 3 different sub DNS (URLs) already embedded in the players.",
|
||||
"Sky Q app (yellow player) this holds 4 of the room subs.",
|
||||
"All of the room subs play on the green smarters player"
|
||||
"Hints & Tips"
|
||||
],
|
||||
"MENU": '[["- What app should I use?"],["- VPN (SurfShark)"],["- FileLinked"],["- Home"]]'
|
||||
"MENU": '[["- IPTV"],["- How do I clear cache?"],["- What IS my password?"],["- Home"]]'
|
||||
},
|
||||
{
|
||||
"NAME": "- Subscriptions",
|
||||
"TEXT": [
|
||||
"Subscription FAQ"
|
||||
],
|
||||
"MENU": '[["- Subscription Options"],["- How to get a subscription?"],["- Subscription URLs", "- Can I stream on multiple devices?"],["- Updates Group"],["- Install FileLinked on FireStick", "- Install FileLinked on Android"],["- Home"]]'
|
||||
"MENU": '[["- Subscription Options"],["- How to get a subscription?"],["- Subscription URLs", "- Can I stream on multiple devices?"],["- Updates Group"],["- Home"]]'
|
||||
},
|
||||
{
|
||||
"NAME": "- IPTV",
|
||||
@ -63,7 +60,7 @@ const chat = [
|
||||
"TEXT": [
|
||||
"Apps FAQ"
|
||||
],
|
||||
"MENU": '[["- How do I clear cache?"],["- Home"]]'
|
||||
"MENU": '[["- unlinked"],["- VPN"],["- Home"]]'
|
||||
},
|
||||
{
|
||||
"NAME": "- How do I clear cache?",
|
||||
@ -87,7 +84,7 @@ const chat = [
|
||||
{
|
||||
"NAME": "- Do I need a VPN?",
|
||||
"TEXT": [
|
||||
"You only need a VPN if your subscription isn't working at the time of use, normally only when the Football is on do the subs get blocked, if they do, connect using SurfShark using the details provided in the updates channel, DO NOT SHARE THESE DETAILS!",
|
||||
"No, however sometimes you might need a VPN if your subscription isn't working at the time of use. This rarely happens and usually only when the Football is on because sometimes a sub may get blocked. If a sub ever needs a VPN you can connect to our room VPN which I supply to all Bob15TV customers for free. You will connect using any of our 7 xciptv based apps. Our Updates page, post 7 will explain more. We also have step by step help videos for all of our room apps. The link for this group is available in our Updates page, post 5. Please join the group. DO NOT SHARE OUR APPS WITH ANYONE. EVERYTHING IS FOR BOB15TV CUSTOMERS ONLY.",
|
||||
],
|
||||
"MENU": '[[]]'
|
||||
},
|
||||
@ -106,33 +103,34 @@ const chat = [
|
||||
"NAME": "- IPTV Guidance",
|
||||
"TEXT": [
|
||||
"🚨Basic IPTV Guidance🚨\n\nPlease see below some very basic IPTV guidance for those who are new to IPTV",
|
||||
"1. What is a sub? A sub is what provides you with your live tv and movies/VOD... They are called different names e.g. GOLD, PREMIUM, ETC... All offer very similar channels with the difference of VOD, Series and time and money spent on servers.",
|
||||
"1. What is a sub? A sub is what provides you with your live tv and movies/VOD... They are called different names e.g. GOLD, PREMIUM PLUS, ETC... All offer very similar channels with the difference of VOD, Series and time and money spent on servers.",
|
||||
"2. What is an APP? An app is something that you load your sub onto, and enables you to view the channels your sub provides.",
|
||||
"3. What is the difference m3u and Stbemu? – you simply add a username...password and url (M3U) to apps such as SMARTERS,XCIPTV that you get when you purchase your sub (the username and password is in effect your sub) These subs can normally be used on multiple devices but only one at a time. Stbemu is a (mac) based app, you give the admin your mac address and they give you a portal (URL) to add to the stbemu app. The latest version on Stbemu is available in my filelinked. Stbemu subs are generally MAC, Serial and Device locked, and are not advised to anyone new to IPTV!!!!",
|
||||
"4. For flexibility and ease of use username and password subs are far better for anyone new to IPTV – certain subs have their own dedicated apps and are available to download from my filelinked. I have at least one app available for every sub I sell in this room.",
|
||||
"5. Things you must know when using IPTV – How to refresh DNS – How to change your app player settings – How to change your app player to an external player – How to carry out basic but essential IPTV Maintenance."
|
||||
"3. For flexibility and ease of use username and password subs are the only way to view your IPTV sub/subs with Bob15tv – All subs have their own dedicated apps and are available to download from our unlinked or linktree rooms. There are about 10 different apps available for every sub sold in this room. Updates *8 for more info.",
|
||||
"4. Things you must know when using IPTV – How to refresh DNS (if using some players) – How to change your app player settings – How to change your app player to an external player – How to carry out basic but essential IPTV Maintenance. Updates *17 for more info."
|
||||
],
|
||||
"MENU": '[[]]'
|
||||
},
|
||||
{
|
||||
"NAME": "- Install FileLinked on Android",
|
||||
"NAME": "- Install unlinked on Android",
|
||||
"TEXT": [
|
||||
"First thing you need to do is go to browser on your Android TV box and enter http://get.filelinked.com",
|
||||
"Once the apk has downloaded you can close the browser and go to your apps.",
|
||||
"Then open file manager or file browser. In here go to downloads, filemanager, press install.",
|
||||
"Then go back to your apps section on the box and find filelinked app.",
|
||||
"Open the app and enter the code."
|
||||
"Step 1: First thing you need to do is go to browser on your Android TV box and enter http://dl.unlinked.link",
|
||||
"Step 2: Allow file to download (you will see it downloading at bottom of your screen)",
|
||||
"Step 3: Once the apk has downloaded you can close the browser and go to your apps.",
|
||||
"Step 4: Then open file manager or file browser. In here go to downloads, filemanager, press install.",
|
||||
"Step 5: Then go back to your apps section on the box and find unlinked app.",
|
||||
"Step 6: Open the app and enter the code.",
|
||||
"NOTE: If having difficulty with step 2 above and you can't see where to open your downloaded file please open your apps folder on your android device. Look for a folder called file manager or file browser. Open it. In here go to downloads. Scroll down, select 1ruta.apk & press install."
|
||||
],
|
||||
"MENU": '[[]]'
|
||||
},
|
||||
{
|
||||
"NAME": "- Install FileLinked on FireStick",
|
||||
"NAME": "- Install unlinked on FireStick",
|
||||
"TEXT": [
|
||||
"Step 1:\n\nGo to Settings > device/my fire tv > developer options > apps from unknown sources on",
|
||||
"Step 2: download an app called downloader. (Orange icon)",
|
||||
"Step 3:\nOpen downloader and type in this address\nhttp://get.filelinked.com\nThen when it asks, install that app.",
|
||||
"Step 4:\nPress and hold home and then click on “Apps” and scroll to the bottom and click on the very last app and open it (filelinked).",
|
||||
"Step 5: Enter the filelinked code from the Updates page to get the list of apps for your sub"
|
||||
"Step 2: Download an app called downloader. (Orange icon)",
|
||||
"Step 3:\nOpen downloader and type in this address\nb.aftvnews.com and install\nNow go back to address bar and enter code 40869\nThen when it asks, install that app.",
|
||||
"Step 4:\nPress and hold home and then click on “Apps” and scroll to the bottom and click on the very last app and open it (unlinked).",
|
||||
"Step 5: Enter the unlinked code from the <a href='https://t.me/+Xr3cFsqJAVYwNTNk'>Updates page</a> to get the list of apps for your sub"
|
||||
],
|
||||
"MENU": '[[]]'
|
||||
},
|
||||
@ -140,8 +138,8 @@ const chat = [
|
||||
"NAME": "- Updates Group",
|
||||
"TEXT": [
|
||||
"The updates groups can be found here",
|
||||
"https://t.me/joinchat/AAAAAFfZBzZqyG3a7kU_ZA",
|
||||
"Please join for Bobby TV IPTV updates"
|
||||
"https://t.me/+Xr3cFsqJAVYwNTNk",
|
||||
"Please join for Bo15TV IPTV updates"
|
||||
],
|
||||
"MENU": '[[]]'
|
||||
},
|
||||
@ -156,33 +154,45 @@ const chat = [
|
||||
{
|
||||
"NAME": "- Subscription URLs",
|
||||
"TEXT": [
|
||||
"In this IPTV room we don't give out sub URLs or m3us. We have dedicated apps to play all subs on your Android box or IPTV player in our FileLinked."
|
||||
"In this IPTV room we don't give out sub URLs or m3us. We have dedicated apps to play all subs on your Android box or IPTV player in our unlinked."
|
||||
],
|
||||
"MENU": '[[]]'
|
||||
},
|
||||
{
|
||||
"NAME": "- How to get a subscription?",
|
||||
"TEXT": [
|
||||
"To purchase a subscription you need to send a DM Sarah (@bob_15).",
|
||||
"PLEASE BE PATIENT AND WAIT FOR HER TO GET BACK TO YOU.",
|
||||
"When you DM Sarah to purchase the subscription please let her know:\n\n1. What device the sub is going onto\n2. If there's a specific username you would like and\n3. If you don't want adult channels included. If you don't want adult channels and don't mention it when purchasing Your sub WILL be issued WITH adult channels. These can't be removed."
|
||||
"To purchase a subscription you need to send a DM to the Admin in the group @Sarbob15",
|
||||
"PLEASE ONLY DM ONE ADMIN AND WAIT FOR THEM TO GET BACK TO YOU.",
|
||||
"When you DM an sdmin to purchase the subscription please let them know:\n\n1. What device the sub is going onto\n2. If there's a specific username you would like and\n3. If you don't want adult channels included. If you don't want adult channels and don't mention it when purchasing Your sub WILL be issued WITH adult channels. These can't be removed."
|
||||
],
|
||||
"MENU": '[[]]'
|
||||
},
|
||||
{
|
||||
"NAME": "- FileLinked",
|
||||
"NAME": "- unlinked",
|
||||
"TEXT": [
|
||||
"The current FileLinked code is - " + process.env.FILELINKED_PIN + "\n\nYou can download all our players from there"
|
||||
"We have a number of different applications that work with our subs. Please go to our <a href='https://t.me/+Xr3cFsqJAVYwNTNk'>Updates page</a> and read post *8 for all apps available for each Bob15TV sub.",
|
||||
"Players change for some subs so do check in (* 8) on the players we have available for your subs on a regular basis.",
|
||||
"We also have a room web player that you can watch your subs on https://tinyurl.com/BOB15WEB please visit our updates page, post 6 for more info."
|
||||
],
|
||||
"MENU": '[["- Install FileLinked on FireStick", "- Install FileLinked on Android"],["- Home"]]'
|
||||
"MENU": '[["- Install unlinked on FireStick", "- Install unlinked on Android"],["- Home"]]'
|
||||
},
|
||||
{
|
||||
"NAME": "- VPN (SurfShark)",
|
||||
"NAME": "- VPN",
|
||||
"TEXT": [
|
||||
"SurfShark is the VPN that we advise you use on your device to bypass the blocks,\n\nYou can install this on your device from our FileLinked\n\nWe provide a username and password for you to use in the updates groups. DO NOT SHARE THE DETAILS"
|
||||
"Here at Bob15TV we have provide our own VPN to all customers for free.\n\nTo connect to our VPN simply use the built in VPN on some of our room apps.\n\nVPNis rarely ever needed on any of our room subs. If it is needed it will be during the EPL and will only be needed for people in the UK.\n\nIf you have your own VPN please feel free to use it instead.\n\nNB: our VPN is only for Bob15TV customers. Please don't share our apps with others otherwise you may lose it altogether."
|
||||
],
|
||||
"MENU": '[[]]'
|
||||
}
|
||||
},
|
||||
{
|
||||
"NAME": "- What IS my password?",
|
||||
"TEXT": [
|
||||
"If you want to know what your password is (sometimes its hard working out 0 and O) you can ask me in this chat by copying and pasting the password you received from Sarah",
|
||||
"/password PasteYourPasswordHere",
|
||||
"I will send you back a phonetic spelling of your password, don't worry, I dont' save it.",
|
||||
"Or you can also copy the password given to you by Sarah, go to the <a href='https://t.me/+Xr3cFsqJAVYwNTNk'>Updates page</a> (*3). Click on the link and then paste it to reveal the correct details you will need to enter in order for your sub to work."
|
||||
],
|
||||
"MENU": '[[]]'
|
||||
},
|
||||
]
|
||||
|
||||
module.exports = chat;
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 65 KiB |
BIN
data/group/Gunslinger.jpg
Normal file
After Width: | Height: | Size: 96 KiB |
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 151 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 77 KiB |
BIN
data/group/Sports.jpg
Normal file
After Width: | Height: | Size: 78 KiB |
BIN
data/group/Ultimate.jpg
Normal file
After Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 126 KiB |
BIN
data/group/allPlayers.jpg
Normal file
After Width: | Height: | Size: 92 KiB |
@ -1,88 +1,182 @@
|
||||
[
|
||||
{
|
||||
"SUB": "Insanity",
|
||||
"COST": 0,
|
||||
"STATUS": 1,
|
||||
"IMAGE": "./data/group/Insanity.jpg",
|
||||
"APPS": [
|
||||
"Red XCIPTV",
|
||||
"White&Black IM",
|
||||
"Green SMARTERS"
|
||||
]
|
||||
},
|
||||
{
|
||||
"SUB": "VIP",
|
||||
"COST": 0,
|
||||
"STATUS": 1,
|
||||
"IMAGE": "./data/group/VIP.jpg",
|
||||
"APPS": [
|
||||
"Blue XCIPTV",
|
||||
"Yellow Sky Q",
|
||||
"Purple IM",
|
||||
"Green SMARTERS"
|
||||
]
|
||||
},
|
||||
{
|
||||
"SUB": "Premium Plus",
|
||||
"COST": 0,
|
||||
"STATUS": 1,
|
||||
"IMAGE": "./data/group/Premium_Plus.jpg",
|
||||
"APPS": [
|
||||
"Blue XCIPTV",
|
||||
"Yellow Sky Q",
|
||||
"Purple IM",
|
||||
"Green SMARTERS"
|
||||
]
|
||||
},
|
||||
{
|
||||
"SUB": "Premium",
|
||||
"COST": 0,
|
||||
"STATUS": 1,
|
||||
"IMAGE": "./data/group/Premium.jpg",
|
||||
"APPS": [
|
||||
"Blue XCIPTV",
|
||||
"Yellow Sky Q",
|
||||
"Purple IM",
|
||||
"Green SMARTERS"
|
||||
]
|
||||
},
|
||||
{
|
||||
"SUB": "Gold",
|
||||
"COST": 0,
|
||||
"STATUS": 1,
|
||||
"IMAGE": "./data/group/Gold.jpg",
|
||||
"APPS": [
|
||||
"Red XCIPTV",
|
||||
"Yellow Sky Q",
|
||||
"Purple IM",
|
||||
"Green SMARTERS"
|
||||
]
|
||||
},
|
||||
{
|
||||
"SUB": "Bronze",
|
||||
"COST": 0,
|
||||
"STATUS": 1,
|
||||
"IMAGE": "./data/group/Bronze.jpg",
|
||||
"APPS": [
|
||||
"Red XCIPTV",
|
||||
"White&Black IM",
|
||||
"Green SMARTERS"
|
||||
]
|
||||
},
|
||||
{
|
||||
"SUB": "Competition Winner",
|
||||
"COST": 0,
|
||||
"STATUS": 1,
|
||||
"IMAGE": "X",
|
||||
"APPS": [
|
||||
"White&Black IM",
|
||||
"Green SMARTERS"
|
||||
]
|
||||
},
|
||||
{
|
||||
"SUB": "All of em",
|
||||
"COST": "X",
|
||||
"STATUS": "X",
|
||||
"IMAGE": "X"
|
||||
}
|
||||
]
|
||||
{
|
||||
"SUB": "Graphite",
|
||||
"COST": 0,
|
||||
"STATUS": 1,
|
||||
"IMAGE": "./data/group/Carbon.jpg",
|
||||
"APPS": [
|
||||
"White&Black IM",
|
||||
"Green SMARTERS"
|
||||
]
|
||||
},
|
||||
{
|
||||
"SUB": "Titanium",
|
||||
"COST": 0,
|
||||
"STATUS": 1,
|
||||
"IMAGE": "./data/group/Premium_Plus.jpg",
|
||||
"APPS": [
|
||||
"Blue XCIPTV",
|
||||
"Yellow Sky Q",
|
||||
"Purple IM",
|
||||
"Green SMARTERS",
|
||||
"Tivimate Orange"
|
||||
]
|
||||
},
|
||||
{
|
||||
"SUB": "Diamond",
|
||||
"COST": 0,
|
||||
"STATUS": 1,
|
||||
"IMAGE": "./data/group/Diamond.jpg",
|
||||
"APPS": [
|
||||
"Blue XCIPTV",
|
||||
"Yellow Sky Q",
|
||||
"Purple IM",
|
||||
"Green SMARTERS",
|
||||
"Tivimate Orange"
|
||||
]
|
||||
},
|
||||
{
|
||||
"SUB": "Iolite",
|
||||
"COST": 0,
|
||||
"STATUS": 1,
|
||||
"IMAGE": "./data/group/Gold.jpg",
|
||||
"APPS": [
|
||||
"Red XCIPTV",
|
||||
"Yellow Sky Q",
|
||||
"Purple IM",
|
||||
"Green SMARTERS",
|
||||
"Tivimate Orange"
|
||||
]
|
||||
},
|
||||
{
|
||||
"SUB": "Ultimate",
|
||||
"COST": 0,
|
||||
"STATUS": 1,
|
||||
"IMAGE": "./data/group/Ultimate.jpg",
|
||||
"APPS": [
|
||||
"Red XCIPTV",
|
||||
"White&Black IM",
|
||||
"Green SMARTERS",
|
||||
"Tivimate Orange"
|
||||
]
|
||||
},
|
||||
{
|
||||
"SUB": "Sapphire",
|
||||
"COST": 0,
|
||||
"STATUS": 1,
|
||||
"IMAGE": "./data/group/Sapphire.jpg",
|
||||
"APPS": [
|
||||
"Red XCIPTV",
|
||||
"Yellow Sky Q",
|
||||
"Purple IM",
|
||||
"Green SMARTERS",
|
||||
"Tivimate Orange"
|
||||
]
|
||||
},
|
||||
{
|
||||
"SUB": "Ammolite",
|
||||
"COST": 10,
|
||||
"STATUS": 1,
|
||||
"APPS": [
|
||||
"VOD App"
|
||||
]
|
||||
},
|
||||
{
|
||||
"SUB": "Emerald",
|
||||
"COST": 10,
|
||||
"STATUS": 1,
|
||||
"APPS": [
|
||||
"VOD App"
|
||||
]
|
||||
},
|
||||
{
|
||||
"SUB": "Nitrogen",
|
||||
"COST": 0,
|
||||
"STATUS": 1,
|
||||
"IMAGE": "./data/group/Topaz.jpg",
|
||||
"APPS": [
|
||||
"Red XCIPTV",
|
||||
"Yellow Sky Q",
|
||||
"Purple IM",
|
||||
"Green SMARTERS",
|
||||
"Tivimate Orange"
|
||||
]
|
||||
},
|
||||
{
|
||||
"SUB": "Carbon",
|
||||
"COST": "X",
|
||||
"STATUS": "X",
|
||||
"IMAGE": "./data/group/Carbon.jpg",
|
||||
"APPS": [
|
||||
"White&Black IM",
|
||||
"Green SMARTERS"
|
||||
]
|
||||
},
|
||||
{
|
||||
"SUB": "Premium",
|
||||
"COST": "X",
|
||||
"STATUS": "X",
|
||||
"IMAGE": "./data/group/Premium.jpg",
|
||||
"APPS": [
|
||||
"Blue XCIPTV",
|
||||
"Yellow Sky Q",
|
||||
"Purple IM",
|
||||
"Green SMARTERS",
|
||||
"Tivimate Orange"
|
||||
]
|
||||
},
|
||||
{
|
||||
"SUB": "Bronze",
|
||||
"COST": "X",
|
||||
"STATUS": "X",
|
||||
"IMAGE": "X",
|
||||
"APPS": [
|
||||
"Red XCIPTV",
|
||||
"White&Black IM",
|
||||
"Green SMARTERS",
|
||||
"Tivimate Orange"
|
||||
]
|
||||
},
|
||||
{
|
||||
"SUB": "Silver VOD",
|
||||
"COST": "X",
|
||||
"STATUS": "X",
|
||||
"APPS": [
|
||||
"VOD App"
|
||||
]
|
||||
},
|
||||
{
|
||||
"SUB": "Opal",
|
||||
"COST": 0,
|
||||
"STATUS": 1,
|
||||
"APPS": [
|
||||
"VOD App"
|
||||
]
|
||||
},
|
||||
{
|
||||
"SUB": "Apex VOD",
|
||||
"COST": 0,
|
||||
"STATUS": 1,
|
||||
"IMAGE": "./data/group/Gunslinger.jpg",
|
||||
"APPS": [
|
||||
"Red XCIPTV",
|
||||
"White&Black IM",
|
||||
"Green SMARTERS",
|
||||
"Tivimate Orange"
|
||||
]
|
||||
},
|
||||
{
|
||||
"SUB": "Top VOD",
|
||||
"COST": 10,
|
||||
"STATUS": 1,
|
||||
"APPS": [
|
||||
"VOD App"
|
||||
]
|
||||
},
|
||||
{
|
||||
"SUB": "All of em",
|
||||
"COST": "X",
|
||||
"STATUS": "X",
|
||||
"IMAGE": "X"
|
||||
}
|
||||
]
|
1943
package-lock.json
generated
@ -14,11 +14,17 @@
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"body-parser": "^1.19.0",
|
||||
"cached-request": "^2.0.1",
|
||||
"dotenv": "^8.2.0",
|
||||
"express": "^4.17.1",
|
||||
"express-basic-auth": "^1.2.0",
|
||||
"fs": "0.0.1-security",
|
||||
"nato": "^0.1.1",
|
||||
"node-emoji": "^1.11.0",
|
||||
"node-telegram-bot-api": "^0.50.0",
|
||||
"perfect-logger": "^2.0.1",
|
||||
"phonetic-alphabet-converter": "^1.1.0",
|
||||
"request": "^2.88.2",
|
||||
"require-dir": "^1.2.0",
|
||||
"throttled-request": "^0.1.1"
|
||||
|