mirror of
https://github.com/Ratstail91/SANCTUM.git
synced 2025-11-29 02:24:27 +11:00
Uploaded bots for the first time
This commit is contained in:
717
Alexis/alexis.js
Normal file
717
Alexis/alexis.js
Normal file
@@ -0,0 +1,717 @@
|
||||
// .env Variables
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
// Node Modules
|
||||
const Discord = require('discord.js');
|
||||
const client = new Discord.Client();
|
||||
|
||||
// Bot Modules (stores http requests & random functions respectively)
|
||||
const dataRequest = require('../modules/dataRequest');
|
||||
const calcRandom = require('../modules/calcRandom');
|
||||
|
||||
// Drinks
|
||||
const drinks = [
|
||||
// https://brookstonbeerbulletin.com/beer-tasting-terms/
|
||||
['🍺', 'Beer', 'The clean, classic Traveler\'s Watch drink.', '2'],
|
||||
['🥛', 'Milk', 'An innocent, creamy drink. It is very nutritious.', '2'],
|
||||
// http://scotchtasting.info/glossary/
|
||||
['🥃', 'Whiskey', 'A very dignified, rich drink.', '5'],
|
||||
// https://en.wikipedia.org/wiki/Wine_tasting_descriptors
|
||||
['🍷', 'Wine', 'An aromatic wine, with a round taste.', '10'],
|
||||
// http://richardgpeterson.com/champagne-glossary/
|
||||
['🍾', 'Champagne', 'A brilliant, crisp drink. You can share your 🥂 drink with the tavern!', '20']
|
||||
]
|
||||
|
||||
const normalActivity = '!buydrink | Bartender, Confidant'
|
||||
|
||||
// The ready event is vital, it means that your bot will only start reacting to information
|
||||
// from Discord _after_ ready is emitted
|
||||
client.on('ready', async () => {
|
||||
// Generates invite link
|
||||
try {
|
||||
let link = await client.generateInvite(["ADMINISTRATOR"]);
|
||||
console.log("Invite Link: " + link);
|
||||
} catch(e) {
|
||||
console.log(e.stack);
|
||||
}
|
||||
|
||||
// You can set status to 'online', 'invisible', 'away', or 'dnd' (do not disturb)
|
||||
client.user.setStatus('online');
|
||||
// Sets your "Playing"
|
||||
client.user.setActivity(normalActivity);
|
||||
console.log(`Connected! \
|
||||
\nLogged in as: ${client.user.username} - (${client.user.id})`);
|
||||
});
|
||||
|
||||
// Create an event listener for messages
|
||||
client.on('message', async message => {
|
||||
// Message has to be in Tavern or Test
|
||||
if (!(message.channel.id === process.env.TAVERN_CHANNEL_ID
|
||||
|| message.channel.id === process.env.TEST_CHANNEL_ID)) return;
|
||||
|
||||
var sentMessageFlag = false;
|
||||
|
||||
// Ignores ALL bot messages with exceptions
|
||||
if (message.author.bot) {
|
||||
// If bot is Mori
|
||||
if (message.author.id === "461294299515191306") {
|
||||
if (calcRandom.gamble(33)) {
|
||||
var dialogOptions = [
|
||||
'Aww, do you have to rez \'em all?',
|
||||
'I feel like you should skip some of \'em.',
|
||||
'We don\'t say it enough, but we all appreciate what you do, honey.',
|
||||
'I\'m sure everyone is thankful, they\'re just occupied.',
|
||||
'Hey now, yer not gonna\' get no thanks with an attitude like that.',
|
||||
'Are ya\' really in this for the glory though?',
|
||||
'Thanks, hun.',
|
||||
'You are very much appreciated.',
|
||||
'I\'m sure it\'s not on purpose.',
|
||||
'Travelers got a lot on their minds. But you\'re very needed, Sugar.'
|
||||
];
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
|
||||
message.channel.startTyping();
|
||||
setTimeout(() => {
|
||||
sendMessage(message.channel.id, "<@" + message.author.id + "> " + dialogOptions[randomNumber]);
|
||||
message.channel.stopTyping(true);
|
||||
}, calcRandom.random(2500, 6000));
|
||||
sentMessageFlag = true;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
var wholeMessage = message.content.toLowerCase().replace(/[.,\/#!$%\^&\*;:{}=\-_`~()]/g,"");
|
||||
var words = wholeMessage.split(" ");
|
||||
console.log("wholeMessage: " + wholeMessage + "\nWords: " + words)
|
||||
// Hearts message with "alexis" and not "date"
|
||||
if (words.includes("alexis") && !words.includes("date") && sentMessageFlag === false) {
|
||||
if (calcRandom.gamble(33)) {
|
||||
setTimeout(function() {
|
||||
message.react("❤")
|
||||
}, calcRandom.random(1500,4000));
|
||||
sentMessageFlag = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Hey message
|
||||
if (words.includes("hey") && sentMessageFlag === false) {
|
||||
sayHey(message.channel, message.author.id);
|
||||
sentMessageFlag = true;
|
||||
return;
|
||||
}
|
||||
|
||||
// Saying Alexis is your friend basically
|
||||
if (words.includes("alexis") && words.includes("friend") && !words.includes("date") && sentMessageFlag === false) {
|
||||
if (calcRandom.gamble(45)) {
|
||||
var dialogOptions = [
|
||||
'<@276538857174990858> is my girl.',
|
||||
'<@462675530928357376>\'s been out a long while, but when she gets back I hope she stops by.',
|
||||
'Me \'n <@462675530928357376> are pretty close.',
|
||||
'Well I can tell ya\' who\'s not my friend. <@461294299515191306>. No offense hun.',
|
||||
'That <@163770616581718017> character is mighty strange. But <@276538857174990858> fancies him so he must be alright.',
|
||||
'You don\'t tip enough to call me a friend sweetie.',
|
||||
'Listen here. I\'d love to chat but <@276538857174990858> \'n <@462675530928357376> have plans in a bit.',
|
||||
'We\'re all friends when we drink together.',
|
||||
'Ol\' Jakey never came back. Nice guy. Probably made a nice meal for a Ravager.',
|
||||
'There\'s friends, and then there\'s family. Me \'n <@276538857174990858> are like that.'
|
||||
];
|
||||
typeRandomDialog(dialogOptions, message.channel);
|
||||
sentMessageFlag = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Asking Alexis on a date
|
||||
if (words.includes("alexis") && words.includes("date") && sentMessageFlag === false) {
|
||||
if (calcRandom.gamble(33)) {
|
||||
var dialogOptions = [
|
||||
'Honey yer a darling, but not gonna happen.',
|
||||
'Just because yer cute doesn\'t mean you get an auto-yes.',
|
||||
':thumbsdown:',
|
||||
'Hey now, what makes you think I\'m even available?',
|
||||
'Calm yer britches and go ask Rey. She\'s into ones like you.',
|
||||
'Nah, but thank you honey. It was sweet of ya\'',
|
||||
'Listen here. I\'d love to chat but I\'d be lyin\' if I said I was interested.',
|
||||
'Sweetie I try to be nice, but sometimes there\'s no nice way to say ***no***.',
|
||||
'Yer gonna have to try harder than that now.',
|
||||
'How about I give you a big fat maybe?'
|
||||
];
|
||||
typeRandomDialog(dialogOptions, message.channel, message.author.id);
|
||||
sentMessageFlag = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Ravager topic
|
||||
if (words.includes("ravager") || words.includes("ravagers") && sentMessageFlag === false) {
|
||||
if (calcRandom.gamble(33)) {
|
||||
var dialogOptions = [
|
||||
'never seen one in person.',
|
||||
'Are they really big and scary? Only seen pictures on the \'net.',
|
||||
'Fight any big ones lately?',
|
||||
'What do you think they are? Like...they\'re angry that\'s for sure, but...like...why?',
|
||||
'You ever got bit?',
|
||||
'I hear they\'re mean \'n nasty.',
|
||||
'Hope I never see one face ta face',
|
||||
'You big strong travelers you. Keepin\' me safe an\' all :heart:',
|
||||
'I dunno what I\'d do if one broke into the city here.',
|
||||
'Just make sure you keep \'em away from ***The Watch*** ya\' hear?'
|
||||
];
|
||||
typeRandomDialog(dialogOptions, message.channel, message.author.id);
|
||||
sentMessageFlag = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Bar fights
|
||||
if (words.includes("fight") || words.includes("attack") || words.includes("fighting") || words.includes("barfight") || words.includes("fite") && sentMessageFlag === false) {
|
||||
if (calcRandom.gamble(33)) {
|
||||
var dialogOptions = [
|
||||
'Don\'t be startin\' no brawlers in here, ya\' hear?',
|
||||
'Don\'t even think about it.',
|
||||
'Don\'t make me give _Ghost_ a ping on the com.',
|
||||
'In here is drinkin\' time. Out there in the deadlands is fightin\' time. Learn the difference.',
|
||||
'You forget the rules or somethin\'?',
|
||||
'Honey, just because I\'m sweet doesnt mean I can\'t kick your ass out the door.',
|
||||
'You fight in here, you drink somewhere else.',
|
||||
'Whatever pissing contest you\'re try\'na win, win it elsewhere.',
|
||||
'Don\'t be actin\' all tuff here. Everybody knows what happened with you and that _Ravager_.',
|
||||
'The first rule of drink club, no fightin\'.'
|
||||
];
|
||||
typeRandomDialog(dialogOptions, message.channel, message.author.id);
|
||||
sentMessageFlag = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Good nights
|
||||
if (words.includes("gn") || words.includes("night") || words.includes("goodnight") || words.includes("sleep") && sentMessageFlag === false) {
|
||||
if (calcRandom.gamble(33)) {
|
||||
var dialogOptions = [
|
||||
'Night hun.',
|
||||
'Goodnight sweety. You comin\' back tomorrow?',
|
||||
'Have yerself a goodnight now ya\' hear?',
|
||||
'Sweet dreams.',
|
||||
'Nighty night.',
|
||||
'Gn. See ya tomorrow?',
|
||||
'Yer leavin\' already?',
|
||||
'Have yerself a good rest now.',
|
||||
'Sleep tight. I\' see ya\' tomorrow.',
|
||||
'Don\' let the bed bugs bite. They\'re the size of ravagers here on New Eden.'
|
||||
];
|
||||
typeRandomDialog(dialogOptions, message.channel, message.author.id);
|
||||
sentMessageFlag = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Has to be (prefix)command
|
||||
if (message.content.indexOf(process.env.PREFIX) !== 0) return;
|
||||
|
||||
// "This is the best way to define args. Trust me."
|
||||
// - Some tutorial dude on the internet
|
||||
const args = message.content.slice(process.env.PREFIX.length).trim().split(/ +/g);
|
||||
const command = args.shift().toLowerCase();
|
||||
|
||||
switch (command) {
|
||||
case "ping":
|
||||
if (message.author.id === '200340393596944384' || message.author.id === '163770616581718017')
|
||||
message.reply("Pong!");
|
||||
break;
|
||||
case "buydrink":
|
||||
buyDrink(message, args);
|
||||
break;
|
||||
|
||||
case "tip":
|
||||
if (args == "") {
|
||||
//if (false) {
|
||||
newMessage = `:x: I appreciate the gesture, but how much did you wanna tip, <@${message.author.id}>?`;
|
||||
sendMessage(message.channel.id, newMessage);
|
||||
} else {
|
||||
var crystalCost = Math.floor(parseFloat(args));
|
||||
if (crystalCost > 0) {
|
||||
//if (crystalCost > -1) {
|
||||
// Valid number
|
||||
var attacker = String(dataRequest.loadServerData("userStats", message.author.id));
|
||||
var attackerWallet = parseFloat(attacker.split(",")[6]);
|
||||
if (attackerWallet > crystalCost) {
|
||||
var upgradeResponse = dataRequest.sendServerData("buyDrink", crystalCost, message.author.id);
|
||||
var dialogOptions = [
|
||||
'Well ain\'t you sweet. Much appreciated.',
|
||||
'Awww that\'s mighty nice of ya\' :heart:',
|
||||
'Thank you sweet heart. Very generous of ya\'',
|
||||
'I appreciate that very much! And look forward to seein\' yer face more often. :wink:',
|
||||
'Well now, you are just too kind.',
|
||||
'You\' a sweet heart aren\'t ya. Thank you.',
|
||||
'Sweety I just can\'t take how kind you are. :heart: Thank you very much.',
|
||||
'For me? Aww, ya\' shouldn\'t have.',
|
||||
'That is very much appreciated and you are welcome back to ***The Watch*** anytime.',
|
||||
'Well darn, that\'s nice of ya. Thank you sweety.'
|
||||
];
|
||||
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
newMessage = dialogOptions[randomNumber] + "\n<@" + message.author.id + "> <:crystals:460974340247257089> **-" + crystalCost + "**";
|
||||
sendMessage(message.channel.id, newMessage);
|
||||
|
||||
//Send PM (defunct)
|
||||
//if (crystalCost >= 0) {
|
||||
/*
|
||||
if (crystalCost >= 50) {
|
||||
var dialogOptions2 = [
|
||||
'Hey so...not 100% on this but heard it through the grape vine. ',
|
||||
'Ya\' know, the walls have ears around my place and occasionally I hear stuff. ',
|
||||
'I ain\'t supposed to be tellin\' ya this, and I ain\'t sure how true it it...but...',
|
||||
'So I probably shouldn\' get involved but I overheard some people talkin\'. Don\'t know if they spoke the truth, but...',
|
||||
'Yer a generous tipper. So am I. Not solid on the info, but I got a tip for ya\'. ',
|
||||
'So I hear things, and for generous people like yourself I might repeat \'em. Don\'t mean they\'re true. But...',
|
||||
'I heard somethin\' I probably shouldn\'t repeat. Obviously can\'t confirm this. ',
|
||||
'Things pass through my ears and I can\'t help but pass \'em on. ',
|
||||
'Hey there. A fello traveler told me something ya\' should hear. Don\'t know the accuracy, just know what I heard. ',
|
||||
'Ok so, don\'t know if this is up to date info, but I got somethin\' for ya. '
|
||||
];
|
||||
|
||||
var dialogOptions3 = [
|
||||
'Looks like The Order might actually be ahead in crystals this week.',
|
||||
'I think The Anarchy is winning this week. Although can\'t say by how much.',
|
||||
'Pretty sure The Religion has the most crystals in their bank right about now.',
|
||||
'I heard that The Order is behind on crystals in the bank.',
|
||||
'Someone mentioned that The Anarchy was a bit behind on crystals this week.',
|
||||
'Been hearin\' that the Religion is last place in crystals this week, but they always have tricks up their sleeves.'
|
||||
];
|
||||
|
||||
var randomNumber2 = Math.floor(Math.random() * dialogOptions2.length);
|
||||
var randomNumber3 = Math.floor(Math.random() * dialogOptions3.length);
|
||||
newMessage = dialogOptions2[randomNumber2] + dialogOptions3[randomNumber3];
|
||||
//sendDM(message.author.id, newMessage);
|
||||
message.author.send(newMessage);
|
||||
}
|
||||
*/
|
||||
} else {
|
||||
sendMessage(message.channel.id, ":x: <@" + message.author.id + "> Looks like ya\' ain\'t got the <:crystals:460974340247257089>. Don\'t make a girl a promise that ya\' can\'t keep.");
|
||||
}
|
||||
} else {
|
||||
//Not a number
|
||||
sendMessage(message.channel.id, `:x: Doesn't seem like a tip I could use, but I appreciate the thought, <@${message.author.id}>!`);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
client.on('error', console.error);
|
||||
|
||||
// https://stackoverflow.com/questions/3733227/javascript-seconds-to-minutes-and-seconds
|
||||
function fmtMSS(s){ // accepts seconds as Number or String. Returns m:ss
|
||||
return( s - // take value s and subtract (will try to convert String to Number)
|
||||
( s %= 60 ) // the new value of s, now holding the remainder of s divided by 60
|
||||
// (will also try to convert String to Number)
|
||||
) / 60 + ( // and divide the resulting Number by 60
|
||||
// (can never result in a fractional value = no need for rounding)
|
||||
// to which we concatenate a String (converts the Number to String)
|
||||
// who's reference is chosen by the conditional operator:
|
||||
9 < s // if seconds is larger than 9
|
||||
? ':' // then we don't need to prepend a zero
|
||||
: ':0' // else we do need to prepend a zero
|
||||
) + s ; // and we add Number s to the string (converting it to String as well)
|
||||
}
|
||||
|
||||
function sayHey(channel, userID) {
|
||||
var dialogOptions = [
|
||||
'Howdy',
|
||||
'Hey back',
|
||||
'Hey yourself',
|
||||
'Hi',
|
||||
'Hey it\'s you',
|
||||
'Hi there',
|
||||
'Hay is for horses silly',
|
||||
'Well hello',
|
||||
'Hey hey hey',
|
||||
'Hey stranger'
|
||||
];
|
||||
var dialogOptions2 = [
|
||||
'How ya\' been?',
|
||||
'Whatcha\' up to?',
|
||||
'What\'s the weather like out there?',
|
||||
'Find any decent sized Ravagers?',
|
||||
'Welcome back.',
|
||||
'Glad you\'re back. Could use some company.',
|
||||
'What are ya\' havin\'?',
|
||||
'Whatcha\' drinkin\'?',
|
||||
'Retiring for the night? Already?',
|
||||
'Welcome to _The Watch!_'
|
||||
];
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
var randomNumber2 = Math.floor(Math.random() * dialogOptions2.length);
|
||||
var newMessage = dialogOptions[randomNumber] + " <@" + userID + ">!\n" + dialogOptions2[randomNumber] + "\n";
|
||||
|
||||
channel.startTyping();
|
||||
setTimeout(function() {
|
||||
sendMessage(channel.id, newMessage);
|
||||
channel.stopTyping(true);
|
||||
}, calcRandom.random(2500,6000));
|
||||
}
|
||||
|
||||
function typeRandomDialog(dialogOptions, channel, playerID) {
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
|
||||
channel.startTyping();
|
||||
setTimeout(function() {
|
||||
if (playerID === undefined)
|
||||
sendMessage(channel.id, dialogOptions[randomNumber]);
|
||||
else
|
||||
sendMessage(channel.id, "<@" + playerID + "> " + dialogOptions[randomNumber]);
|
||||
|
||||
channel.stopTyping(true);
|
||||
}, calcRandom.random(2500, 6000));
|
||||
}
|
||||
|
||||
// Send message handler
|
||||
function sendMessage(userID, channelID, message) {
|
||||
// Handle optional first argument (so much for default arugments in node)
|
||||
if (message === undefined) {
|
||||
message = channelID;
|
||||
channelID = userID;
|
||||
userID = null;
|
||||
}
|
||||
|
||||
// Utility trick (@userID with an optional argument)
|
||||
if (userID != null) {
|
||||
message = "<@" + userID + "> " + message;
|
||||
}
|
||||
|
||||
// Sends message (needs client var, therefore I think external script won't work)
|
||||
client.channels.get(channelID).send(message);
|
||||
}
|
||||
|
||||
// Async Waiting
|
||||
function sleep(time) {
|
||||
return new Promise((resolve, reject) => {
|
||||
setTimeout(resolve, time);
|
||||
});
|
||||
}
|
||||
|
||||
// Buy drink
|
||||
async function buyDrink(message, args) {
|
||||
var randomGreet = [
|
||||
`Hey ${message.author}, wanna drink? Here's what I've got!`,
|
||||
`Welcome to the tavern, ${message.author}! Care for a drink?`,
|
||||
`People have been asking me on dates, ${message.author}. Must've be the alcohol.`,
|
||||
`How's the Ravager hunting going, ${message.author}?`
|
||||
];
|
||||
|
||||
var randomNumber = Math.floor(Math.random() * randomGreet.length);
|
||||
|
||||
message.channel.startTyping();
|
||||
await sleep(1500);
|
||||
message.channel.stopTyping(true);
|
||||
|
||||
const takingTooLongMessage = ":x: Sorry, hun. But the others need me and yer taking too long. Call me back once you've made yer mind up, alright " + message.author + "?";
|
||||
var footerName = message.member.displayName;
|
||||
var courtesy = "";
|
||||
var tmp = "";
|
||||
|
||||
// Generates drink text.
|
||||
for (let index = 0; index < drinks.length; index++) {
|
||||
const element = drinks[index];
|
||||
tmp += `${element[0]} **${element[1]} <:crystals:460974340247257089> ${element[3]}** - ${element[2]}\n`
|
||||
}
|
||||
|
||||
// If there is a mention
|
||||
if (message.mentions.members.size > 0) {
|
||||
footerName = message.mentions.members.first().displayName;
|
||||
courtesy = `(Given to ${message.mentions.members.first().displayName}, Courtesy of ${message.member.displayName})`;
|
||||
}
|
||||
|
||||
const embed = new Discord.RichEmbed()
|
||||
.setAuthor("Alexis", client.user.avatarURL)
|
||||
.setColor("#ffcc4d")
|
||||
.setTitle("Traveler's Watch Drinks " + courtesy)
|
||||
.setDescription(tmp)
|
||||
.setFooter("We hope you enjoy your stay, " + footerName + "!")
|
||||
|
||||
var newMessage = await message.channel.send(randomGreet[randomNumber], {embed});
|
||||
var emoteReaction;
|
||||
|
||||
// Collects emotes and reacts upon the reaction (15 seconds)
|
||||
const collector = newMessage.createReactionCollector(
|
||||
(reaction, user) => (drinks.some(drinkElement => drinkElement[0] === reaction.emoji.name) || reaction.emoji.name === "❌")
|
||||
&& user.id !== client.user.id && user.id === message.author.id, { time: 15 * 1000 });
|
||||
var endedOnReact = false;
|
||||
|
||||
// Reacts
|
||||
for (let i = 0; i < drinks.length; i++) {
|
||||
const element = drinks[i][0];
|
||||
console.log("[Reaction Options] Emote: " + element);
|
||||
await newMessage.react(element);
|
||||
}
|
||||
await newMessage.react("❌");
|
||||
|
||||
// Collect
|
||||
collector.once("collect", async reaction => {
|
||||
emoteReaction = reaction.emoji.name;
|
||||
endedOnReact = true;
|
||||
collector.stop();
|
||||
});
|
||||
|
||||
// Chose an emote
|
||||
collector.once("end", async collector => {
|
||||
newMessage.clearReactions();
|
||||
|
||||
// If no choose
|
||||
if (!endedOnReact) {
|
||||
newMessage.edit(newMessage.content);
|
||||
return newMessage.channel.send(takingTooLongMessage);
|
||||
}
|
||||
|
||||
// If cancelled
|
||||
if (emoteReaction === "❌") {
|
||||
newMessage.edit(newMessage.content);
|
||||
return;
|
||||
}
|
||||
|
||||
// Gets confirmation by emote
|
||||
var index = drinks.findIndex(drink => drink[0] === emoteReaction);
|
||||
//console.log(index + "\n" + drinks[index]);
|
||||
|
||||
var confirmationMessage = await message.channel.send(`${message.author} You sure you want to buy the ${drinks[index][0]} **${drinks[index][1]}** for <:crystals:460974340247257089> **${drinks[index][3]}**?`);
|
||||
await confirmationMessage.react('✅');
|
||||
await confirmationMessage.react('❌');
|
||||
|
||||
// Collects emotes and reacts upon the reaction (15 seconds)
|
||||
const newCollector = confirmationMessage.createReactionCollector(
|
||||
(reaction, user) => (reaction.emoji.name === '✅' || reaction.emoji.name === '❌')
|
||||
&& user.id !== client.user.id && user.id === message.author.id, { time: 15 * 1000 });
|
||||
var confirmReact = false;
|
||||
|
||||
// Collect
|
||||
newCollector.once("collect", async reaction => {
|
||||
emoteReaction = reaction.emoji.name;
|
||||
console.log("confirm: " + emoteReaction);
|
||||
confirmReact = true;
|
||||
newCollector.stop();
|
||||
});
|
||||
|
||||
newCollector.once("end", async collector => {
|
||||
confirmationMessage.delete();
|
||||
|
||||
// If no choose
|
||||
if (!confirmReact) {
|
||||
return message.channel.send(takingTooLongMessage);
|
||||
}
|
||||
|
||||
if (emoteReaction === "✅") {
|
||||
payDrinks(message, drinks[index]);
|
||||
} else {
|
||||
confirmationMessage.clearReactions();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// Buying drink
|
||||
function payDrinks(message, drink) {
|
||||
//var crystalCost = 0;
|
||||
|
||||
// A ton of variables
|
||||
var crystalCost = parseFloat(drink[3]);
|
||||
var emote = drink[0];
|
||||
var givenIsAlexis = false;
|
||||
var success = false;
|
||||
var attacker = String(dataRequest.loadServerData("userStats", message.author.id));
|
||||
var attackerWallet = parseFloat(attacker.split(",")[6]);
|
||||
|
||||
console.log("[Pay Drinks] Wallet: " + attackerWallet + " | Crystal Cost: " + crystalCost);
|
||||
if (attackerWallet >= crystalCost) {
|
||||
dataRequest.sendServerData("buyDrink", crystalCost, message.author.id);
|
||||
|
||||
dialogOptions = [
|
||||
'Here\'s a cold one,',
|
||||
'Here\'s your drink',
|
||||
'Here you go,',
|
||||
'Here ya are. Enjoy,',
|
||||
'Sliding it your way,',
|
||||
'Don\'t go alone, take this,',
|
||||
'Drink up,',
|
||||
'Don\'t chug it all down now,',
|
||||
'Headed in your direction,',
|
||||
'Comin\' up,'
|
||||
];
|
||||
|
||||
// Alexis options
|
||||
if (message.mentions.members.first() !== undefined) {
|
||||
if (message.mentions.members.first().id === client.user.id) {
|
||||
var dialogOptions = [
|
||||
`Aww, thanks! :heart:`,
|
||||
`Thanks for the drink! Cheers!`,
|
||||
`Are you trying to make me drunk? Don't even TRY asking me out on a date,`
|
||||
];
|
||||
givenIsAlexis = true;
|
||||
}
|
||||
}
|
||||
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
var newMessage = "";
|
||||
|
||||
// Single or multiple user messages
|
||||
if (message.mentions.members.size < 1) {
|
||||
success = true;
|
||||
newMessage = `${emote} ` + dialogOptions[randomNumber] + " <@" + message.author.id + ">! <:crystals:460974340247257089> **-" + crystalCost + "**";
|
||||
} else {
|
||||
// Huge scope creep, but have a list of players able to be given beer instead of just one later on
|
||||
// For now, just taking the first player
|
||||
let member = message.mentions.members.first();
|
||||
if (member) {
|
||||
// Displays ping if not Alexis
|
||||
var givePingUser = ` ${member.user}!`;
|
||||
if (givenIsAlexis) givePingUser = "";
|
||||
|
||||
success = true;
|
||||
newMessage = `${emote} ` + dialogOptions[randomNumber] + givePingUser + "\n\n" + "***Courtesy of *** <@" + message.author.id + ">. <:crystals:460974340247257089> **-" + crystalCost + "**";
|
||||
} else {
|
||||
newMessage = ":x: <@" + message.author.id + "> You wanna buy ***WHO*** a ***WHAT*** now?";
|
||||
}
|
||||
}
|
||||
sendMessage(message.channel.id, newMessage);
|
||||
|
||||
// Does champagne sharing
|
||||
if (success && drink[1] === "Champagne") {
|
||||
shareDrinks(message, drink);
|
||||
}
|
||||
|
||||
} else {
|
||||
sendMessage(message.channel.id, ":x: <@" + message.author.id + "> Looks like ya\' ain\'t got the <:crystals:460974340247257089><:crystals:460974340247257089><:crystals:460974340247257089>. I ain\'t runnin\' a charity here.");
|
||||
}
|
||||
}
|
||||
|
||||
// Mass buying of a drink
|
||||
async function shareDrinks(message, drink) {
|
||||
const drinkMessage = `${message.author} has bought some ${drink[0]} **${drink[1]}**! React to get your **free drink!** 🥂`;
|
||||
var timer = 30; // Seconds
|
||||
var decrementTime = 10;
|
||||
var footerText = `⏰ ${timer} seconds left to get your free drink!`;
|
||||
client.user.setActivity(`${footerText}`);
|
||||
|
||||
// Embed
|
||||
const embed = new Discord.RichEmbed()
|
||||
.setAuthor("Alexis", client.user.avatarURL)
|
||||
.setColor("#ffcc4d")
|
||||
.setTitle("Free Drinks!")
|
||||
.setDescription(drinkMessage)
|
||||
.setFooter(footerText)
|
||||
|
||||
var embedMessage = await message.channel.send(embed);
|
||||
|
||||
// Message
|
||||
message.channel.startTyping();
|
||||
await sleep(1500);
|
||||
message.channel.send("Hmm... I might just take some too, if y'all don't mind. :heart:");
|
||||
message.channel.stopTyping(true);
|
||||
await sleep(1500);
|
||||
|
||||
// Collects emotes and reacts upon the reaction (30 seconds)
|
||||
var users = "";
|
||||
var numberOfReacts = 0;
|
||||
const newCollector = embedMessage.createReactionCollector(
|
||||
(reaction, user) => reaction.emoji.name === drink[0]
|
||||
, { time: timer * 1000 });
|
||||
|
||||
// Alexis grabbing some
|
||||
await embedMessage.react(drink[0]);
|
||||
|
||||
// Collect
|
||||
newCollector.on("collect", async reaction => {
|
||||
var user = reaction.users.last();
|
||||
dialogOptions = [
|
||||
`${user} has taken a drink!`,
|
||||
`${user} eagerly grabs the ${drink[1]}!`,
|
||||
`${user} enjoys the beverage!`,
|
||||
`${user} gets a free drink!`,
|
||||
`${user} chugs down the ${drink[1]}!`,
|
||||
`${user} races to get down the drink the fastest!`
|
||||
];
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
users += dialogOptions[randomNumber] + "\n";
|
||||
|
||||
// Embed
|
||||
const embed = new Discord.RichEmbed()
|
||||
.setAuthor("Alexis", client.user.avatarURL)
|
||||
.setColor("#ffcc4d")
|
||||
.setTitle("Free Drinks!")
|
||||
.setDescription(`${drinkMessage}\n\n` + users)
|
||||
.setFooter(footerText)
|
||||
|
||||
embedMessage.edit(embed);
|
||||
|
||||
// Counts up if not Alexis
|
||||
if (reaction.users.last().id !== client.user.id) numberOfReacts++;
|
||||
});
|
||||
|
||||
// Ends collection
|
||||
newCollector.once("end", async collector => {
|
||||
var number = ""
|
||||
if (numberOfReacts === 1) {
|
||||
number = numberOfReacts + " traveler";
|
||||
} else {
|
||||
number = numberOfReacts + " travelers";
|
||||
}
|
||||
|
||||
// Embed
|
||||
embedMessage.clearReactions();
|
||||
const embed = new Discord.RichEmbed()
|
||||
.setAuthor("Alexis", client.user.avatarURL)
|
||||
.setColor("#ffcc4d")
|
||||
.setTitle("Free Drinks!")
|
||||
.setDescription(`${message.author}'s ${drink[0]} **${drink[1]}** has been finished. There were a total of ${number} that got the free drink! 🥂\n\n` + users)
|
||||
.setFooter("⏰ The drink has been finished!")
|
||||
|
||||
embedMessage.edit(embed);
|
||||
message.channel.send(`Everyone, thank ${message.author} for the drink! It was great.`);
|
||||
});
|
||||
|
||||
|
||||
function timerFunction() {
|
||||
setTimeout(async () => {
|
||||
console.log("timer: " + timer + " => " + (timer - decrementTime))
|
||||
timer -= decrementTime;
|
||||
|
||||
footerText = `⏰ ${timer} seconds left to get your free drink!`;
|
||||
|
||||
if (timer > 0) {
|
||||
client.user.setActivity(`${footerText}`);
|
||||
|
||||
// Embed
|
||||
const embed = new Discord.RichEmbed()
|
||||
.setAuthor("Alexis", client.user.avatarURL)
|
||||
.setColor("#ffcc4d")
|
||||
.setTitle("Free Drinks!")
|
||||
.setDescription(`${drinkMessage}\n\n` + users)
|
||||
.setFooter(footerText)
|
||||
|
||||
embedMessage.edit(embed);
|
||||
} else {
|
||||
client.user.setActivity(normalActivity)
|
||||
}
|
||||
|
||||
if (timer > 0) timerFunction();
|
||||
}, decrementTime * 1000);
|
||||
}
|
||||
|
||||
timerFunction();
|
||||
}
|
||||
|
||||
/*
|
||||
async function sendDM(userID, dialogOption, dialogOption2, dialogOption3) {
|
||||
// Wait for 20 - 40 seconds
|
||||
//await(sleep(calcRandom.random(120, 240) * 60 * 1000));
|
||||
var author = client.users.get(userID);
|
||||
|
||||
client.send(author, dialogOption);
|
||||
client.send(author, dialogOption2);
|
||||
client.send(author, dialogOption3);
|
||||
}
|
||||
*/
|
||||
|
||||
// Log our bot in
|
||||
client.login(process.env.ALEXIS_TOKEN);
|
||||
723
Alexis/package-lock.json
generated
Normal file
723
Alexis/package-lock.json
generated
Normal file
@@ -0,0 +1,723 @@
|
||||
{
|
||||
"name": "sanctum-deploypackage",
|
||||
"version": "1.0.1",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"accepts": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
|
||||
"integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
|
||||
"requires": {
|
||||
"mime-types": "~2.1.18",
|
||||
"negotiator": "0.6.1"
|
||||
}
|
||||
},
|
||||
"after": {
|
||||
"version": "0.8.2",
|
||||
"resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
|
||||
"integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8="
|
||||
},
|
||||
"array-flatten": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
|
||||
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
|
||||
},
|
||||
"arraybuffer.slice": {
|
||||
"version": "0.0.7",
|
||||
"resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
|
||||
"integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog=="
|
||||
},
|
||||
"async-limiter": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
|
||||
"integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg=="
|
||||
},
|
||||
"backo2": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
|
||||
"integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
|
||||
},
|
||||
"base64-arraybuffer": {
|
||||
"version": "0.1.5",
|
||||
"resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
|
||||
"integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg="
|
||||
},
|
||||
"base64id": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz",
|
||||
"integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY="
|
||||
},
|
||||
"better-assert": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
|
||||
"integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
|
||||
"requires": {
|
||||
"callsite": "1.0.0"
|
||||
}
|
||||
},
|
||||
"blob": {
|
||||
"version": "0.0.4",
|
||||
"resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz",
|
||||
"integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE="
|
||||
},
|
||||
"body-parser": {
|
||||
"version": "1.18.3",
|
||||
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
|
||||
"integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=",
|
||||
"requires": {
|
||||
"bytes": "3.0.0",
|
||||
"content-type": "~1.0.4",
|
||||
"debug": "2.6.9",
|
||||
"depd": "~1.1.2",
|
||||
"http-errors": "~1.6.3",
|
||||
"iconv-lite": "0.4.23",
|
||||
"on-finished": "~2.3.0",
|
||||
"qs": "6.5.2",
|
||||
"raw-body": "2.3.3",
|
||||
"type-is": "~1.6.16"
|
||||
}
|
||||
},
|
||||
"bytes": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
|
||||
"integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
|
||||
},
|
||||
"callsite": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
|
||||
"integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA="
|
||||
},
|
||||
"combine-middlewares": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/combine-middlewares/-/combine-middlewares-0.1.0.tgz",
|
||||
"integrity": "sha512-X7A6T6UAH1cULUIhDgvBol2XcvThuVrDMdD2ZPg9FEddEW3KsoKShd1yaRsMIl1v4Aj8dqSfehMXJxD/kwXJ2Q=="
|
||||
},
|
||||
"component-bind": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
|
||||
"integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E="
|
||||
},
|
||||
"component-emitter": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
|
||||
"integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY="
|
||||
},
|
||||
"component-inherit": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
|
||||
"integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM="
|
||||
},
|
||||
"content-disposition": {
|
||||
"version": "0.5.2",
|
||||
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
|
||||
"integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
|
||||
},
|
||||
"content-type": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
|
||||
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
|
||||
},
|
||||
"cookie": {
|
||||
"version": "0.3.1",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
|
||||
"integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
|
||||
},
|
||||
"cookie-signature": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
|
||||
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
|
||||
},
|
||||
"debug": {
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"depd": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
|
||||
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
|
||||
},
|
||||
"deserialize-error": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/deserialize-error/-/deserialize-error-0.0.3.tgz",
|
||||
"integrity": "sha1-9WhjNXLXwsxGpVpfwlS23857P8o="
|
||||
},
|
||||
"destroy": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
|
||||
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
|
||||
},
|
||||
"discord.js": {
|
||||
"version": "11.4.2",
|
||||
"resolved": "https://registry.npmjs.org/discord.js/-/discord.js-11.4.2.tgz",
|
||||
"integrity": "sha512-MDwpu0lMFTjqomijDl1Ed9miMQe6kB4ifKdP28QZllmLv/HVOJXhatRgjS8urp/wBlOfx+qAYSXcdI5cKGYsfg==",
|
||||
"requires": {
|
||||
"long": "^4.0.0",
|
||||
"prism-media": "^0.0.3",
|
||||
"snekfetch": "^3.6.4",
|
||||
"tweetnacl": "^1.0.0",
|
||||
"ws": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"dotenv": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.1.0.tgz",
|
||||
"integrity": "sha512-/veDn2ztgRlB7gKmE3i9f6CmDIyXAy6d5nBq+whO9SLX+Zs1sXEgFLPi+aSuWqUuusMfbi84fT8j34fs1HaYUw=="
|
||||
},
|
||||
"ee-first": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
|
||||
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
|
||||
},
|
||||
"encodeurl": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
|
||||
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
|
||||
},
|
||||
"engine.io": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.0.tgz",
|
||||
"integrity": "sha512-mRbgmAtQ4GAlKwuPnnAvXXwdPhEx+jkc0OBCLrXuD/CRvwNK3AxRSnqK4FSqmAMRRHryVJP8TopOvmEaA64fKw==",
|
||||
"requires": {
|
||||
"accepts": "~1.3.4",
|
||||
"base64id": "1.0.0",
|
||||
"cookie": "0.3.1",
|
||||
"debug": "~3.1.0",
|
||||
"engine.io-parser": "~2.1.0",
|
||||
"ws": "~3.3.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"ws": {
|
||||
"version": "3.3.3",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
|
||||
"integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
|
||||
"requires": {
|
||||
"async-limiter": "~1.0.0",
|
||||
"safe-buffer": "~5.1.0",
|
||||
"ultron": "~1.1.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"engine.io-client": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz",
|
||||
"integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==",
|
||||
"requires": {
|
||||
"component-emitter": "1.2.1",
|
||||
"component-inherit": "0.0.3",
|
||||
"debug": "~3.1.0",
|
||||
"engine.io-parser": "~2.1.1",
|
||||
"has-cors": "1.1.0",
|
||||
"indexof": "0.0.1",
|
||||
"parseqs": "0.0.5",
|
||||
"parseuri": "0.0.5",
|
||||
"ws": "~3.3.1",
|
||||
"xmlhttprequest-ssl": "~1.5.4",
|
||||
"yeast": "0.1.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"ws": {
|
||||
"version": "3.3.3",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
|
||||
"integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
|
||||
"requires": {
|
||||
"async-limiter": "~1.0.0",
|
||||
"safe-buffer": "~5.1.0",
|
||||
"ultron": "~1.1.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"engine.io-parser": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.2.tgz",
|
||||
"integrity": "sha512-dInLFzr80RijZ1rGpx1+56/uFoH7/7InhH3kZt+Ms6hT8tNx3NGW/WNSA/f8As1WkOfkuyb3tnRyuXGxusclMw==",
|
||||
"requires": {
|
||||
"after": "0.8.2",
|
||||
"arraybuffer.slice": "~0.0.7",
|
||||
"base64-arraybuffer": "0.1.5",
|
||||
"blob": "0.0.4",
|
||||
"has-binary2": "~1.0.2"
|
||||
}
|
||||
},
|
||||
"escape-html": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
|
||||
"integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
|
||||
},
|
||||
"etag": {
|
||||
"version": "1.8.1",
|
||||
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
|
||||
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
|
||||
},
|
||||
"express": {
|
||||
"version": "4.16.4",
|
||||
"resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz",
|
||||
"integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==",
|
||||
"requires": {
|
||||
"accepts": "~1.3.5",
|
||||
"array-flatten": "1.1.1",
|
||||
"body-parser": "1.18.3",
|
||||
"content-disposition": "0.5.2",
|
||||
"content-type": "~1.0.4",
|
||||
"cookie": "0.3.1",
|
||||
"cookie-signature": "1.0.6",
|
||||
"debug": "2.6.9",
|
||||
"depd": "~1.1.2",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"etag": "~1.8.1",
|
||||
"finalhandler": "1.1.1",
|
||||
"fresh": "0.5.2",
|
||||
"merge-descriptors": "1.0.1",
|
||||
"methods": "~1.1.2",
|
||||
"on-finished": "~2.3.0",
|
||||
"parseurl": "~1.3.2",
|
||||
"path-to-regexp": "0.1.7",
|
||||
"proxy-addr": "~2.0.4",
|
||||
"qs": "6.5.2",
|
||||
"range-parser": "~1.2.0",
|
||||
"safe-buffer": "5.1.2",
|
||||
"send": "0.16.2",
|
||||
"serve-static": "1.13.2",
|
||||
"setprototypeof": "1.1.0",
|
||||
"statuses": "~1.4.0",
|
||||
"type-is": "~1.6.16",
|
||||
"utils-merge": "1.0.1",
|
||||
"vary": "~1.1.2"
|
||||
}
|
||||
},
|
||||
"finalhandler": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
|
||||
"integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
|
||||
"requires": {
|
||||
"debug": "2.6.9",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"on-finished": "~2.3.0",
|
||||
"parseurl": "~1.3.2",
|
||||
"statuses": "~1.4.0",
|
||||
"unpipe": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"forwarded": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
|
||||
"integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
|
||||
},
|
||||
"fresh": {
|
||||
"version": "0.5.2",
|
||||
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
|
||||
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
|
||||
},
|
||||
"has-binary2": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz",
|
||||
"integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==",
|
||||
"requires": {
|
||||
"isarray": "2.0.1"
|
||||
}
|
||||
},
|
||||
"has-cors": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
|
||||
"integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk="
|
||||
},
|
||||
"http-errors": {
|
||||
"version": "1.6.3",
|
||||
"resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
|
||||
"integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
|
||||
"requires": {
|
||||
"depd": "~1.1.2",
|
||||
"inherits": "2.0.3",
|
||||
"setprototypeof": "1.1.0",
|
||||
"statuses": ">= 1.4.0 < 2"
|
||||
}
|
||||
},
|
||||
"iconv-lite": {
|
||||
"version": "0.4.23",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
|
||||
"integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
|
||||
"requires": {
|
||||
"safer-buffer": ">= 2.1.2 < 3"
|
||||
}
|
||||
},
|
||||
"indexof": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
|
||||
"integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10="
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
|
||||
},
|
||||
"ipaddr.js": {
|
||||
"version": "1.8.0",
|
||||
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
|
||||
"integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4="
|
||||
},
|
||||
"isarray": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
|
||||
"integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4="
|
||||
},
|
||||
"long": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
|
||||
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
|
||||
},
|
||||
"media-typer": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
|
||||
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
|
||||
},
|
||||
"merge-descriptors": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
|
||||
"integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
|
||||
},
|
||||
"methods": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
|
||||
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
|
||||
},
|
||||
"mime": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
|
||||
"integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
|
||||
},
|
||||
"mime-db": {
|
||||
"version": "1.36.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz",
|
||||
"integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw=="
|
||||
},
|
||||
"mime-types": {
|
||||
"version": "2.1.20",
|
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz",
|
||||
"integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==",
|
||||
"requires": {
|
||||
"mime-db": "~1.36.0"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
||||
},
|
||||
"negotiator": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
|
||||
"integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
|
||||
},
|
||||
"node-cron": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/node-cron/-/node-cron-1.2.1.tgz",
|
||||
"integrity": "sha1-jJC8XccjpWKJsHhmVatKHEy2A2g="
|
||||
},
|
||||
"object-component": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
|
||||
"integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE="
|
||||
},
|
||||
"on-finished": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
|
||||
"integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
|
||||
"requires": {
|
||||
"ee-first": "1.1.1"
|
||||
}
|
||||
},
|
||||
"parseqs": {
|
||||
"version": "0.0.5",
|
||||
"resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
|
||||
"integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
|
||||
"requires": {
|
||||
"better-assert": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"parseuri": {
|
||||
"version": "0.0.5",
|
||||
"resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz",
|
||||
"integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
|
||||
"requires": {
|
||||
"better-assert": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"parseurl": {
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
|
||||
"integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
|
||||
},
|
||||
"path-to-regexp": {
|
||||
"version": "0.1.7",
|
||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
|
||||
"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
|
||||
},
|
||||
"prism-media": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/prism-media/-/prism-media-0.0.3.tgz",
|
||||
"integrity": "sha512-c9KkNifSMU/iXT8FFTaBwBMr+rdVcN+H/uNv1o+CuFeTThNZNTOrQ+RgXA1yL/DeLk098duAeRPP3QNPNbhxYQ=="
|
||||
},
|
||||
"proxy-addr": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
|
||||
"integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
|
||||
"requires": {
|
||||
"forwarded": "~0.1.2",
|
||||
"ipaddr.js": "1.8.0"
|
||||
}
|
||||
},
|
||||
"qs": {
|
||||
"version": "6.5.2",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
|
||||
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
|
||||
},
|
||||
"range-parser": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
|
||||
"integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
|
||||
},
|
||||
"raw-body": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
|
||||
"integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
|
||||
"requires": {
|
||||
"bytes": "3.0.0",
|
||||
"http-errors": "1.6.3",
|
||||
"iconv-lite": "0.4.23",
|
||||
"unpipe": "1.0.0"
|
||||
}
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
|
||||
},
|
||||
"safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
||||
},
|
||||
"send": {
|
||||
"version": "0.16.2",
|
||||
"resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
|
||||
"integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
|
||||
"requires": {
|
||||
"debug": "2.6.9",
|
||||
"depd": "~1.1.2",
|
||||
"destroy": "~1.0.4",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"etag": "~1.8.1",
|
||||
"fresh": "0.5.2",
|
||||
"http-errors": "~1.6.2",
|
||||
"mime": "1.4.1",
|
||||
"ms": "2.0.0",
|
||||
"on-finished": "~2.3.0",
|
||||
"range-parser": "~1.2.0",
|
||||
"statuses": "~1.4.0"
|
||||
}
|
||||
},
|
||||
"serialize-error": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "http://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz",
|
||||
"integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go="
|
||||
},
|
||||
"serve-static": {
|
||||
"version": "1.13.2",
|
||||
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
|
||||
"integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
|
||||
"requires": {
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"parseurl": "~1.3.2",
|
||||
"send": "0.16.2"
|
||||
}
|
||||
},
|
||||
"setprototypeof": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
|
||||
"integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
|
||||
},
|
||||
"snekfetch": {
|
||||
"version": "3.6.4",
|
||||
"resolved": "https://registry.npmjs.org/snekfetch/-/snekfetch-3.6.4.tgz",
|
||||
"integrity": "sha512-NjxjITIj04Ffqid5lqr7XdgwM7X61c/Dns073Ly170bPQHLm6jkmelye/eglS++1nfTWktpP6Y2bFXjdPlQqdw=="
|
||||
},
|
||||
"socket.io": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz",
|
||||
"integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==",
|
||||
"requires": {
|
||||
"debug": "~3.1.0",
|
||||
"engine.io": "~3.2.0",
|
||||
"has-binary2": "~1.0.2",
|
||||
"socket.io-adapter": "~1.1.0",
|
||||
"socket.io-client": "2.1.1",
|
||||
"socket.io-parser": "~3.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"socket.io-adapter": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz",
|
||||
"integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs="
|
||||
},
|
||||
"socket.io-client": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz",
|
||||
"integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==",
|
||||
"requires": {
|
||||
"backo2": "1.0.2",
|
||||
"base64-arraybuffer": "0.1.5",
|
||||
"component-bind": "1.0.0",
|
||||
"component-emitter": "1.2.1",
|
||||
"debug": "~3.1.0",
|
||||
"engine.io-client": "~3.2.0",
|
||||
"has-binary2": "~1.0.2",
|
||||
"has-cors": "1.1.0",
|
||||
"indexof": "0.0.1",
|
||||
"object-component": "0.0.3",
|
||||
"parseqs": "0.0.5",
|
||||
"parseuri": "0.0.5",
|
||||
"socket.io-parser": "~3.2.0",
|
||||
"to-array": "0.1.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"socket.io-parser": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz",
|
||||
"integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==",
|
||||
"requires": {
|
||||
"component-emitter": "1.2.1",
|
||||
"debug": "~3.1.0",
|
||||
"isarray": "2.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"socket.io-request": {
|
||||
"version": "0.8.0",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-request/-/socket.io-request-0.8.0.tgz",
|
||||
"integrity": "sha512-uZXUELbSNMbujTLFr+hGurZM+fhMLJ7fd3ZmM4FjrXXch5Cy9agLx6pBdzGjEdBblmhzj3Buo1SJvTub2VIf5A==",
|
||||
"requires": {
|
||||
"combine-middlewares": "^0.1.0",
|
||||
"deserialize-error": "^0.0.3",
|
||||
"serialize-error": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"statuses": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
|
||||
"integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
|
||||
},
|
||||
"to-array": {
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
|
||||
"integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA="
|
||||
},
|
||||
"tweetnacl": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz",
|
||||
"integrity": "sha1-cT2LgY2kIGh0C/aDhtBHnmb8ins="
|
||||
},
|
||||
"type-is": {
|
||||
"version": "1.6.16",
|
||||
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
|
||||
"integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
|
||||
"requires": {
|
||||
"media-typer": "0.3.0",
|
||||
"mime-types": "~2.1.18"
|
||||
}
|
||||
},
|
||||
"ultron": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz",
|
||||
"integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og=="
|
||||
},
|
||||
"unpipe": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
|
||||
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
|
||||
},
|
||||
"utils-merge": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
|
||||
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
|
||||
},
|
||||
"vary": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
||||
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
|
||||
},
|
||||
"ws": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "http://registry.npmjs.org/ws/-/ws-4.1.0.tgz",
|
||||
"integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==",
|
||||
"requires": {
|
||||
"async-limiter": "~1.0.0",
|
||||
"safe-buffer": "~5.1.0"
|
||||
}
|
||||
},
|
||||
"xmlhttprequest-ssl": {
|
||||
"version": "1.5.5",
|
||||
"resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
|
||||
"integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4="
|
||||
},
|
||||
"yeast": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
|
||||
"integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk="
|
||||
}
|
||||
}
|
||||
}
|
||||
29
Alexis/package.json
Normal file
29
Alexis/package.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"name": "sanctum-deploypackage",
|
||||
"version": "1.0.1",
|
||||
"description": "Universal package for all SANCTUM bots, using pm2.",
|
||||
"main": "",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1",
|
||||
"start": "echo \"Error: you need to use the bot name as a command.\" && exit 1",
|
||||
"alexis": "pm2 start alexis.js -i max --watch",
|
||||
"graze": "pm2 start graze.js -i max --watch",
|
||||
"librarian": "pm2 start librarian.js -i max --watch",
|
||||
"mainframe": "pm2 start mainframe.js -i max --watch",
|
||||
"mori": "pm2 start mori.js -i max --watch",
|
||||
"mosiah": "pm2 start mosiah.js -i max --watch",
|
||||
"ravager": "pm2 start ravager.js -i max --watch",
|
||||
"rey": "pm2 start rey.js -i max --watch",
|
||||
"troll": "pm2 start troll.js -i max --watch"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"discord.js": "^11.4.2",
|
||||
"dotenv": "^6.0.0",
|
||||
"express": "^4.16.3",
|
||||
"node-cron": "^1.2.1",
|
||||
"socket.io": "^2.1.1",
|
||||
"socket.io-request": "^0.8.0"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user