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:
91
.envdev
Normal file
91
.envdev
Normal file
@@ -0,0 +1,91 @@
|
||||
#################################################
|
||||
# _____ _ #
|
||||
# / ____| | | #
|
||||
# | (___ __ _ _ __ ___| |_ _ _ _ __ ___ #
|
||||
# \___ \ / _` | '_ \ / __| __| | | | '_ ` _ \ #
|
||||
# ____) | (_| | | | | (__| |_| |_| | | | | | | #
|
||||
# |_____/ \__,_|_| |_|\___|\__|\__,_|_| |_| |_| #
|
||||
# #
|
||||
#################################################
|
||||
|
||||
# <info>
|
||||
#
|
||||
# Welcome to the SANCTUM Discord bot code, and specifically the .envdev file.
|
||||
#
|
||||
# To setup, !!! RENAME .envdev TO .env !!!, so it hooks into the bots
|
||||
# and will get .gitignored. Don't want your tokens flying into cyberspace.
|
||||
#
|
||||
# There are a bunch of fields that need replacing, so once you do that,
|
||||
# your new .env file should work perfectly. Until it doesn't.
|
||||
#
|
||||
# I wish you luck!
|
||||
# - TheSomeoneXD
|
||||
#
|
||||
#</info>
|
||||
|
||||
# Prefix
|
||||
PREFIX="!"
|
||||
|
||||
# Discord Server ID
|
||||
# Replace them with your own on a sandbox server!
|
||||
SANCTUM_ID="454425466821017611"
|
||||
|
||||
# Role IDs (A = Obsidian, B = Genesis, C = Hand)
|
||||
# Replace them with your own on a sandbox server!
|
||||
GROUP_A_ROLE="470656524042371072"
|
||||
GROUP_B_ROLE="470668082441093121"
|
||||
GROUP_C_ROLE="470656609295794199"
|
||||
|
||||
# Channel IDs
|
||||
# Replace them with your own on a sandbox server!
|
||||
CODEX_CHANNEL_ID="457580831284789249"
|
||||
OUTSKIRTS_CHANNEL_ID="462382076927148054"
|
||||
TAVERN_CHANNEL_ID="462684096024543242"
|
||||
GATE_CHANNEL_ID="459196623923445779"
|
||||
STASIS_CHANNEL_ID="468984551113228318"
|
||||
CRYSTAL_SHORES_CHANNEL_ID="482629581690372099"
|
||||
SEA_OF_FOG_CHANNEL_ID="464150321699225634"
|
||||
DEADLANDS_CHANNEL_ID="459196395119837195"
|
||||
HELLS_GATE_CHANNEL_ID="464238060243124245"
|
||||
TEST_CHANNEL_ID="464838060262293514"
|
||||
|
||||
# Bot Channels in SANCTUM (A = Obsidian, B = Genesis, C = Hand)
|
||||
# Replace them with your own on a sandbox server!
|
||||
GROUP_A_BOT_ID="493972208616603658"
|
||||
GROUP_B_BOT_ID="493972336190685185"
|
||||
GROUP_C_BOT_ID="493972354137849856"
|
||||
|
||||
# Bot IDs
|
||||
# Replace them with your own on a sandbox server!
|
||||
MORI_ID="461294299515191306"
|
||||
RAVAGER_ID="458036985353732097"
|
||||
MOSIAH_ID="457713779078332416"
|
||||
GRAZE_ID="460640089198821377"
|
||||
SONYA_ID="458078969653100554"
|
||||
REY_ID="462675530928357376"
|
||||
ALEXIS_ID="462708244171718656"
|
||||
MONTGOMERY_GENESIS_ID="482642611023249409"
|
||||
KAMALA_OBSIDIAN_ID="482644250354384906"
|
||||
DAIRO_HAND_ID="482644985318211594"
|
||||
LIBRARIAN_ID="458033243481047082"
|
||||
|
||||
# Bot Tokens
|
||||
ADAM_TOKEN=""
|
||||
RAVAGER_TOKEN=""
|
||||
WOLF_TOKEN=""
|
||||
CROW_TOKEN=""
|
||||
MOSIAH_TOKEN=""
|
||||
REY_TOKEN=""
|
||||
ALEXIS_TOKEN=""
|
||||
GRAZE_TOKEN=""
|
||||
MORI_TOKEN=""
|
||||
LIBRARIAN_TOKEN=""
|
||||
DRAVEN_MAW_TOKEN=""
|
||||
SONYA_TOKEN=""
|
||||
MONTGOMERY_GENESIS_TOKEN=""
|
||||
KAMALA_OBSIDIAN_TOKEN=""
|
||||
DAIRO_HAND_TOKEN=""
|
||||
GHOST_TOKEN=""
|
||||
|
||||
# Server Pass Key
|
||||
SERVER_PASS_KEY=""
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -59,3 +59,6 @@ typings/
|
||||
|
||||
# next.js build output
|
||||
.next
|
||||
|
||||
# Private build tool
|
||||
buildanddeploy.py
|
||||
|
||||
1145
ADAM/adam.js
Normal file
1145
ADAM/adam.js
Normal file
File diff suppressed because it is too large
Load Diff
298
ADAM/dialog.js
Normal file
298
ADAM/dialog.js
Normal file
@@ -0,0 +1,298 @@
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
module.exports = {
|
||||
getDialog: function(dialogTag, data = "", data2 = "", data3 = "") {
|
||||
switch(dialogTag) {
|
||||
case "checkin":
|
||||
return "<@" + data + ">" + " your presence has been noted. I've added " + data2 + " crystals to your account.";
|
||||
|
||||
case "checkinLocked":
|
||||
return ":x: <@" + data + ">" + " you already checked in with me " + data2 + ". You can check in again tomorrow.";
|
||||
|
||||
case "alreadyConvertedToday":
|
||||
return ":x: <@" + data + ">" + " as anxious as you may be, please don't attempt to change factions so quickly. You can only change once every 30 days.";
|
||||
|
||||
case "depositSuccessful":
|
||||
//codexLogEvent(data + " deposited " + data2 + " crystals.");
|
||||
return "<@" + data + ">" + " your deposit of " + data2 + " crystals has been successful. Good luck.";
|
||||
|
||||
case "depositFailed":
|
||||
return ":x: <@" + data + ">" + " I can't make the deposit at the moment. I apologize for the inconvenience.";
|
||||
|
||||
case "giveSuccessful":
|
||||
//codexLogEvent(data + " gave " + data2 + " " + data3 + " crystals.");
|
||||
return "<@" + data + ">" + " I've transferred " + data3 + " crystals to <@" + data2 + "> as per your request.";
|
||||
|
||||
case "giveFailed":
|
||||
return ":x: <@" + data + ">" + " I can't make that transfer at the moment. I apologize for the inconvenience.";
|
||||
|
||||
case "giveNotEnoughInAccount":
|
||||
return ":x: <@" + data + ">" + " You don't have that many crystals in your account. As such, I can't complete the transfer.";
|
||||
|
||||
case "giveNotAboveZero":
|
||||
return ":x: <@" + data + ">" + " In order for me to complete the transfer I need an amount above zero.";
|
||||
|
||||
case "giveInvalidUser":
|
||||
return ":x: <@" + data + ">" + " I can't find that traveler. Sorry.";
|
||||
|
||||
case "giveInvalidUserSelf":
|
||||
return ":x: <@" + data + ">" + " You can\'t send crystals to yourself. Sorry.";
|
||||
|
||||
case "levelUp":
|
||||
var dialogOptions = [
|
||||
'I appreciate all of your help.',
|
||||
'Thank you for doing so much for the city.',
|
||||
'The other travelers are very grateful for your help.',
|
||||
'Your assistance is very much appreciated.',
|
||||
'Together we\'ve taken out most of the threats to city.',
|
||||
'The citizens of The Sanctum are most grateful.',
|
||||
'I cannot thank you enough for your help defending the city.'
|
||||
];
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
var wordToUse = "it";
|
||||
if (data3 > 1) { var wordToUse = "them";}
|
||||
return "You just hit **level " + data2 + "**! " + dialogOptions[randomNumber] + " I\'ve added a <:cannister:462046687058198530> **Nanotech Cannister** to your inventory so that you can upgrade your skills. You now have **" + data3 + "** total (you can check this any time with !stats). Use " + wordToUse + " wisely.";
|
||||
|
||||
case "levelUpLevelCap":
|
||||
var dialogOptions = [
|
||||
'I appreciate all of your help.',
|
||||
'Thank you for doing so much for the city.',
|
||||
'The other travelers are very grateful for your help.',
|
||||
'Your assistance is very much appreciated.',
|
||||
'Together, we\'ve taken out most of the threats to city.',
|
||||
'The citizens of The Sanctum are most grateful.',
|
||||
'I cannot thank you enough for your help defending the city.'
|
||||
];
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
return "You\'re currently at **level " + data2 + "** which is the current level cap! " + dialogOptions[randomNumber] + " I\'ve added a <:cyphercrate:464135029036154950> **Cypher Crate** to your inventory. Hopefully it contains something useful for you on your journey. You now have **" + data3 + "** total (you can check this any time with !stats). Good luck. ";
|
||||
|
||||
case "help":
|
||||
var temp = "*This world is strange and mysterious. And while I cannot help you on your journey or join your faction, I am here to help travelers to the best of my ability.* \n\nHere is what I can do for you:";
|
||||
temp += "\n\n";
|
||||
temp += "!checkin\n```Once per day, you may come see me for a daily sum in exchange for your help around the city.```";
|
||||
temp += "\n";
|
||||
temp += "!stats\n```I can share all of your stats and your crystal count information.```";
|
||||
temp += "\n";
|
||||
temp += "!give [AMOUNT] [@USER]\n```I can transfer some of your crystals to another traveler's account. Just make sure you have enough.```";
|
||||
temp += "\n";
|
||||
temp += "!help [@NAME]\n```I can tell you a little bit about some of the other people with us here on New Eden.```";
|
||||
temp += "\n";
|
||||
temp += "I hope this helps you on your journey, traveler.";
|
||||
return temp;
|
||||
|
||||
case "helpMori":
|
||||
var temp = "*Mori is our resident head of the medbay. He can tend to your wounds and get you back on your feet. Here's what he can do:*";
|
||||
temp += "\n\n";
|
||||
temp += "!heal\n```Shows you Mori\'s available procedures for healing.```";
|
||||
temp += "\n";
|
||||
temp += "!heal [ITEM]\n```Purchases a procedure directly from him, and with his nanotech, takes effect immediately.```";
|
||||
return temp;
|
||||
|
||||
case "helpGraze":
|
||||
var temp = "*Graze is our loveable augmentation expert. He can help you upgrade your skills and boost your abilities. Here's what he can do:*";
|
||||
temp += "\n\n";
|
||||
temp += "!upgrade\n```Shows you the available upgrades that Graze can provide with your Nanotech Cannisters.```";
|
||||
temp += "\n";
|
||||
temp += "!upgrade [STAT]\n```Upgrades this specific stat permanently.```";
|
||||
return temp;
|
||||
|
||||
case "helpMosiah":
|
||||
var temp = `*Mosiah was exiled from our great city for many counts of misconduct, but it\'s been said he\'s been seen at <#${process.env.TAVERN_CHANNEL_ID}>. I recommend you not deal with him at all, but should you need to, here\'s what he can do:*`;
|
||||
temp += "\n\n";
|
||||
temp += "!wager [AMOUNT]\n```Wagers your crystals in a primative coin flip bet. Winner takes all.```";
|
||||
return temp;
|
||||
|
||||
case "helpRavager":
|
||||
var temp = `*The Ravagers have been hunting us since crashing here on New Eden. They roam this planet and will attack travelers on sight. But you can defend yourself:*`;
|
||||
temp += "\n\n";
|
||||
temp += "!attack\n```Sends your weapon towards an active Ravager. If you win the fight, you can loot their corpse for crystals. But be careful: they bite back.```";
|
||||
temp += "\n";
|
||||
temp += "!details\n```Shows you the details of the last Ravager fight to take place as well as the crystal distribution.```";
|
||||
return temp;
|
||||
|
||||
case "helpSonya":
|
||||
var temp = "*Professor Sonya is our resident archeologist, and she is fascinated by this world. Scavenge for some artifacts in the outskirts of the city, and she will apy you handsomely.*";
|
||||
temp += "\n\n";
|
||||
temp += "!scavenge\n```In #🌘the-outskirts, this allows you to look for rare artifacts for the professor.```";
|
||||
temp += "\n";
|
||||
temp += "!artifacts\n```Shows you the current artifacts that you have in your inventory.```";
|
||||
temp += "\n";
|
||||
temp += "!artifacts sell\n```Shows you the current prices that the professor is willing to pay for any artifacts that you may find.```";
|
||||
temp += "\n";
|
||||
temp += "!artifacts sell [TYPE]\n```Sells all of the artifacts that you have of that type to the professor, at current prices.```";
|
||||
return temp;
|
||||
|
||||
case "helpRey":
|
||||
var temp = "*Rey is a master of finding things that we need around the city. Resources are scarce, so anything you can help her find in <#462382076927148054> would be most helpful.*";
|
||||
temp += "\n\n";
|
||||
temp += "!scavenge\n```In #🌘the-outskirts, this allows you to look for materials and resources with Rey.```";
|
||||
temp += "\n";
|
||||
temp += "!materials\n```Shows you the current materials that you have in your inventory.```";
|
||||
return temp;
|
||||
|
||||
case "helpAlexis":
|
||||
var temp = "*Alexis is our top-of-the-line chemist who uses her talents to reward travelers with a nice and relaxing space. She\'d be happy to have or provide you with some company.*";
|
||||
temp += "\n\n";
|
||||
temp += "!buydrink\n```In #🍺travelers-watch, this allows you to buy a drink and relax.```";
|
||||
temp += "\n";
|
||||
temp += "!buydrink [@NAME]\n```In #🍺travelers-watch, you can buy a drink for a friend.```";
|
||||
temp += "\n";
|
||||
temp += "!tip [AMOUNT]\n```In #🍺travelers-watch, you can tip her for her great service. She might just give you a tip back.```";
|
||||
return temp;
|
||||
|
||||
//Status commands
|
||||
case "accountCheck":
|
||||
return "<@" + data + ">" + " you currently have " + data2 + " crystals in your account.";
|
||||
|
||||
case "bankCheck":
|
||||
return "Currently, " + data + " has " + data2 + " crystals total in their bank.";
|
||||
|
||||
case "victors":
|
||||
return "Currently, " + data + " controls the fate of the codex.";
|
||||
|
||||
case "noVictors":
|
||||
return "The fate of the codex is still undetermined.";
|
||||
|
||||
// Obsidian Technologies (Former Order)
|
||||
case "orderAlreadyJoined":
|
||||
return ":x: <@" + data + ">" + " The Obsidian Technologies already has your allegiance. There's no need to request a change.";
|
||||
case "orderJoin":
|
||||
//codexLogEvent(data + " joined Genesis Command.");
|
||||
return "<@" + data + ">" + " you have joined the Obsidian Technologies. May peace reign upon your cause.";
|
||||
|
||||
// Genesis Command (Former Anarchy)
|
||||
case "anarchyAlreadyJoined":
|
||||
return ":x: <@" + data + ">" + " The Genesis Command has already begun their chaos with you by their side. There's no need to request a change.";
|
||||
case "anarchyJoin":
|
||||
//codexLogEvent(data + " joined Obsidian Technologies.");
|
||||
return "<@" + data + ">" + " you have joined the Genesis Command. May chaos come to those who oppose you.";
|
||||
|
||||
// The Hand (Former Religion)
|
||||
case "religionAlreadyJoined":
|
||||
return ":x: <@" + data + ">" + " The Hand is happy to have you in their congregation already. There's no need to request a change.";
|
||||
case "religionJoin":
|
||||
//codexLogEvent(data + " joined The Hand.");
|
||||
return "<@" + data + ">" + " you have joined The Hand. May the gods look favorably upon you.";
|
||||
|
||||
//Onboarding
|
||||
case "newUserWelcome":
|
||||
messageToSend = "<@" + data + ">" + " welcome to " + data2 + ". If you need me for anything, you can contact me via this secure channel. Just use **!help** for a list of things I can do for you.";
|
||||
messageToSend += "\n\nAnd don\'t forget to say hello to fellow travelers in ";
|
||||
if (data2 == "Genesis Command") {
|
||||
messageToSend += `${process.env.GROUP_B_BOT_ID}.`;
|
||||
}
|
||||
if (data2 == "Obsidian Technologies") {
|
||||
messageToSend += `${process.env.GROUP_A_BOT_ID}.`;
|
||||
}
|
||||
if (data2 == "The Hand") {
|
||||
messageToSend += `${process.env.GROUP_C_BOT_ID}.`;
|
||||
}
|
||||
return messageToSend;
|
||||
case "newUserPM":
|
||||
var messageToSend = '';
|
||||
messageToSend = "_Traveler, welcome to The Sanctum.";
|
||||
messageToSend += "\n\n";
|
||||
|
||||
if (data2 == "Genesis Command") {
|
||||
messageToSend += "I see that you've joined **Genesis Command**. The least reckless of the 3 factions, I can see why you'd pick them. You clearly understand that The Codex is a very powerful book, and should you be victorious, no one will have access to it\'s secrets. ";
|
||||
}
|
||||
if (data2 == "Obsidian Technologies") {
|
||||
messageToSend += "I see that you've joined **Obsidian Technologies**. While they are the most chaotic of the 3 factions, I can see why you'd pick them. The Codex is a very powerful book, and should you be victorious, everyone will have equal access to it\'s secrets. ";
|
||||
}
|
||||
if (data2 == "The Hand") {
|
||||
messageToSend += "I see that you've joined **The Hand**. While they are certainly the most suspicious of the 3 factions, I can see why you'd pick them. The Codex is a very powerful book, and should you be victorious, it is your job to guide the rest of the city using it\'s secrets.";
|
||||
}
|
||||
messageToSend += "\n\n";
|
||||
messageToSend += "I'll get you patched up and give you access to our team to upgrade skills and meet the others. There's just a few things I need you to take care of around the city:_";
|
||||
messageToSend += "\n\n";
|
||||
messageToSend += "**!checkin** with me daily.\n```Once a day I'll give you your daily allotment of crystals in exchange for some help around the city.```";
|
||||
messageToSend += "\n";
|
||||
messageToSend += "**!attack** any Ravagers in #the-deadlands.\n```With the constant bombardment from the enemies of the city, It\'s hard to keep us safe. I need your help```";
|
||||
messageToSend += "\n";
|
||||
messageToSend += "_Good luck. I'll be around if you need me._";
|
||||
return messageToSend;
|
||||
//Lore
|
||||
case "intro":
|
||||
var tempLore = '';
|
||||
tempLore = "_Hello weary traveler.";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "My name is A.D.A.M. and I would like to offer you the amenities of The Sanctum. However, I cannot come to your aid until you choose a faction. I am dearly sorry to be so blunt and put trivial human rules in place over your sustenance and safety, but this is the only way to protect The Codex. But the Codex no longer exists since the Librarian destroyed it, so make something up, player.";
|
||||
tempLore += " Your choices are as follows:_";
|
||||
return tempLore;
|
||||
case "introHand":
|
||||
var tempLore = "<:religionhand:461582719051104276> **<@&" + process.env.GROUP_C_ROLE + ">** - !hand\n```Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum eu aliquet mauris, id congue nisi. Integer et lobortis tellus. Sed bibendum a metus quis volutpat. Mauris faucibus quam at euismod scelerisque. Vestibulum a elit auctor, venenatis augue in, rhoncus nisi. Mauris sagittis sit amet ante eget luctus. Maecenas id malesuada elit. Vestibulum nec ante nec justo venenatis tincidunt.```";
|
||||
return tempLore;
|
||||
case "introGenesis":
|
||||
var tempLore = "<:order:460991638152413194> **<@&" + process.env.GROUP_B_ROLE + ">** - !genesis\n```Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum eu aliquet mauris, id congue nisi. Integer et lobortis tellus. Sed bibendum a metus quis volutpat. Mauris faucibus quam at euismod scelerisque. Vestibulum a elit auctor, venenatis augue in, rhoncus nisi. Mauris sagittis sit amet ante eget luctus. Maecenas id malesuada elit. Vestibulum nec ante nec justo venenatis tincidunt. ```";
|
||||
return tempLore;
|
||||
case "introObsidian":
|
||||
var tempLore = "<:anarchy:460990297099337750> **<@&" + process.env.GROUP_A_ROLE + ">** - !obsidian\n```Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum eu aliquet mauris, id congue nisi. Integer et lobortis tellus. Sed bibendum a metus quis volutpat. Mauris faucibus quam at euismod scelerisque. Vestibulum a elit auctor, venenatis augue in, rhoncus nisi. Mauris sagittis sit amet ante eget luctus. Maecenas id malesuada elit. Vestibulum nec ante nec justo venenatis tincidunt.```";
|
||||
return tempLore;
|
||||
case "introEnd":
|
||||
var tempLore = "_Choose wisely._";
|
||||
return tempLore;
|
||||
case "level1":
|
||||
var tempLore = '';
|
||||
tempLore += `Congratulations ${data}, you have reached **${data2}**! Travelers defend the city from Ravagers here, and you can earn some crystals.`
|
||||
return tempLore;
|
||||
case "level15":
|
||||
var tempLore = '';
|
||||
tempLore += `Congratulations ${data}, you have reached **${data2}**, where there are more dangerous enemies, lurking in the fog.`
|
||||
return tempLore;
|
||||
case "level30":
|
||||
var tempLore = '';
|
||||
tempLore += `Congratulations ${data}, you have reached **${data2}**, the area most teeming with the strongest Ravagers. Watch your back, and good luck!`
|
||||
return tempLore;
|
||||
case "lore":
|
||||
var tempLore = '';
|
||||
switch(data) {
|
||||
case "backstory":
|
||||
tempLore = "‘_Mother Earth had failed us. ";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "In her dying breath, she bore a starship, **The Genesis**, to save the last of humankind. But the **travelers** aboard were not prepared for the unwelcoming winds of barren space.";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "On the brink of extinction our forefathers landed here, but this was no earth. The desolate landscape of **The Deadlands** traded our starvation for thirst, our isolation for open and empty space. But despite our struggles, we could breathe again.";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "We walked for many days and many nights in **The Deadlands**, consuming only the native **crystals** climbing from the ground for sustenance. Leaving the shelter of our vessel behind for the hope of a new home. Many withered away under the scorching heat of the twin suns and the constant attacks from **Ravagers**, but Mother Earth kept her promise.";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "In our darkest hour, we laid eyes on **The Sanctum**, a city of the gods. Complete with a vault full of our edible crystals, and more than enough room for the entire population; A city with human amenities in the middle of an inhuman world, bestowed upon a dying nation in need. This place was truly a divine gift.";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "At the highest point of the city in the tower that touched the clouds, we found **The Librarian**. A meticulous mechanical record keeper hovering over his book, the great **Codex Arcana**. This was a book written in detail to record the actions of every man, woman, and child that lived among us. But it was far too powerful, and the secrets it contained proved lethal in the wrong hands.";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "And so began the **factions**, vying for control over the Codex._'";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "- Excerpt from the **Teachings of Tiberius**. March 22, 2630.";
|
||||
break;
|
||||
case "genesis":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "travelers":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "deadlands":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "ravager":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "Sanctum":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "librarian":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "codex":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "factions":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
default:
|
||||
tempLore = "Here is the lore that is available in my database. ```!lore backstory```"
|
||||
break
|
||||
}
|
||||
console.log("TEMPLORE: " + tempLore);
|
||||
return tempLore;
|
||||
}
|
||||
}
|
||||
}
|
||||
8
ADAM/npcSettings.js
Normal file
8
ADAM/npcSettings.js
Normal file
@@ -0,0 +1,8 @@
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
module.exports = {
|
||||
activity: "Automated Data Analysis Machine.",
|
||||
type: "PLAYING",
|
||||
token: process.env.ADAM_TOKEN,
|
||||
botChannel: "default"
|
||||
}
|
||||
301
ADAM/package-lock.json
generated
Normal file
301
ADAM/package-lock.json
generated
Normal file
@@ -0,0 +1,301 @@
|
||||
{
|
||||
"name": "nodejs-elasticbeanstalk",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"@types/concat-stream": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.0.tgz",
|
||||
"integrity": "sha1-OU2+C7X+5Gs42JZzXoto7yOQ0A0=",
|
||||
"requires": {
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/form-data": {
|
||||
"version": "0.0.33",
|
||||
"resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz",
|
||||
"integrity": "sha1-yayFsqX9GENbjIXZ7LUObWyJP/g=",
|
||||
"requires": {
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "9.6.28",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.28.tgz",
|
||||
"integrity": "sha512-LMSOxMKNJ8tGqUVs8lSIT8RGo1XGWYada/ZU2QZcbcD6AW9futXDE99tfQA0K6DK60GXcwplsGGK5KABRmI5GA=="
|
||||
},
|
||||
"@types/qs": {
|
||||
"version": "6.5.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.5.1.tgz",
|
||||
"integrity": "sha512-mNhVdZHdtKHMMxbqzNK3RzkBcN1cux3AvuCYGTvjEIQT2uheH3eCAyYsbMbh2Bq8nXkeOWs1kyDiF7geWRFQ4Q=="
|
||||
},
|
||||
"asap": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
|
||||
"integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"asynckit": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
||||
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
|
||||
},
|
||||
"buffer-from": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
|
||||
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
|
||||
},
|
||||
"caseless": {
|
||||
"version": "0.12.0",
|
||||
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
|
||||
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
|
||||
},
|
||||
"combined-stream": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
|
||||
"integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
|
||||
"requires": {
|
||||
"delayed-stream": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"concat-stream": {
|
||||
"version": "1.6.2",
|
||||
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
|
||||
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
|
||||
"requires": {
|
||||
"buffer-from": "^1.0.0",
|
||||
"inherits": "^2.0.3",
|
||||
"readable-stream": "^2.2.2",
|
||||
"typedarray": "^0.0.6"
|
||||
}
|
||||
},
|
||||
"core-util-is": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
||||
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
|
||||
},
|
||||
"delayed-stream": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
|
||||
},
|
||||
"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.0.0",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.0.0.tgz",
|
||||
"integrity": "sha512-FlWbnhgjtwD+uNLUGHbMykMOYQaTivdHEmYwAKFjn6GKe/CqY0fNae93ZHTd20snh9ZLr8mTzIL9m0APQ1pjQg=="
|
||||
},
|
||||
"form-data": {
|
||||
"version": "2.3.2",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
|
||||
"integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
|
||||
"requires": {
|
||||
"asynckit": "^0.4.0",
|
||||
"combined-stream": "1.0.6",
|
||||
"mime-types": "^2.1.12"
|
||||
}
|
||||
},
|
||||
"get-port": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz",
|
||||
"integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw="
|
||||
},
|
||||
"http-basic": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/http-basic/-/http-basic-7.0.0.tgz",
|
||||
"integrity": "sha1-gvClBr6UJzLsje6+6A50bvVzbbo=",
|
||||
"requires": {
|
||||
"@types/concat-stream": "^1.6.0",
|
||||
"@types/node": "^9.4.1",
|
||||
"caseless": "~0.12.0",
|
||||
"concat-stream": "^1.4.6",
|
||||
"http-response-object": "^3.0.1",
|
||||
"parse-cache-control": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"http-response-object": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.1.tgz",
|
||||
"integrity": "sha512-6L0Fkd6TozA8kFSfh9Widst0wfza3U1Ex2RjJ6zNDK0vR1U1auUR6jY4Nn2Xl7CCy0ikFmxW1XcspVpb9RvwTg==",
|
||||
"requires": {
|
||||
"@types/node": "^9.3.0"
|
||||
}
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
|
||||
},
|
||||
"isarray": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
|
||||
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
|
||||
},
|
||||
"long": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
|
||||
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
|
||||
},
|
||||
"mime-db": {
|
||||
"version": "1.35.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz",
|
||||
"integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg=="
|
||||
},
|
||||
"mime-types": {
|
||||
"version": "2.1.19",
|
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz",
|
||||
"integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==",
|
||||
"requires": {
|
||||
"mime-db": "~1.35.0"
|
||||
}
|
||||
},
|
||||
"node-cron": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/node-cron/-/node-cron-1.2.1.tgz",
|
||||
"integrity": "sha1-jJC8XccjpWKJsHhmVatKHEy2A2g="
|
||||
},
|
||||
"parse-cache-control": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz",
|
||||
"integrity": "sha1-juqz5U+laSD+Fro493+iGqzC104="
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"process-nextick-args": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
|
||||
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
|
||||
},
|
||||
"promise": {
|
||||
"version": "8.0.1",
|
||||
"resolved": "https://registry.npmjs.org/promise/-/promise-8.0.1.tgz",
|
||||
"integrity": "sha1-5F1osAoXZHttpxG/he1u1HII9FA=",
|
||||
"requires": {
|
||||
"asap": "~2.0.3"
|
||||
}
|
||||
},
|
||||
"qs": {
|
||||
"version": "6.5.1",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
|
||||
"integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "2.3.6",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
|
||||
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
|
||||
"requires": {
|
||||
"core-util-is": "~1.0.0",
|
||||
"inherits": "~2.0.3",
|
||||
"isarray": "~1.0.0",
|
||||
"process-nextick-args": "~2.0.0",
|
||||
"safe-buffer": "~5.1.1",
|
||||
"string_decoder": "~1.1.1",
|
||||
"util-deprecate": "~1.0.1"
|
||||
}
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"snekfetch": {
|
||||
"version": "3.6.4",
|
||||
"resolved": "https://registry.npmjs.org/snekfetch/-/snekfetch-3.6.4.tgz",
|
||||
"integrity": "sha512-NjxjITIj04Ffqid5lqr7XdgwM7X61c/Dns073Ly170bPQHLm6jkmelye/eglS++1nfTWktpP6Y2bFXjdPlQqdw=="
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
||||
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
|
||||
"requires": {
|
||||
"safe-buffer": "~5.1.0"
|
||||
}
|
||||
},
|
||||
"sync-request": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.0.0.tgz",
|
||||
"integrity": "sha512-jGNIAlCi9iU4X3Dm4oQnNQshDD3h0/1A7r79LyqjbjUnj69sX6mShAXlhRXgImsfVKtTcnra1jfzabdZvp+Lmw==",
|
||||
"requires": {
|
||||
"http-response-object": "^3.0.1",
|
||||
"sync-rpc": "^1.2.1",
|
||||
"then-request": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"sync-rpc": {
|
||||
"version": "1.3.4",
|
||||
"resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.4.tgz",
|
||||
"integrity": "sha512-Iug+t1ICVFenUcTnDu8WXFnT+k8IVoLKGh8VA3eXUtl2Rt9SjKX3YEv33OenABqpTPL9QEaHv1+CNn2LK8vMow==",
|
||||
"requires": {
|
||||
"get-port": "^3.1.0"
|
||||
}
|
||||
},
|
||||
"then-request": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.0.tgz",
|
||||
"integrity": "sha512-xA+7uEMc+jsQIoyySJ93Ad08Kuqnik7u6jLS5hR91Z3smAoCfL3M8/MqMlobAa9gzBfO9pA88A/AntfepkkMJQ==",
|
||||
"requires": {
|
||||
"@types/concat-stream": "^1.6.0",
|
||||
"@types/form-data": "0.0.33",
|
||||
"@types/node": "^8.0.0",
|
||||
"@types/qs": "^6.2.31",
|
||||
"caseless": "~0.12.0",
|
||||
"concat-stream": "^1.6.0",
|
||||
"form-data": "^2.2.0",
|
||||
"http-basic": "^7.0.0",
|
||||
"http-response-object": "^3.0.1",
|
||||
"promise": "^8.0.0",
|
||||
"qs": "^6.4.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/node": {
|
||||
"version": "8.10.26",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.26.tgz",
|
||||
"integrity": "sha512-opk6bLLErLSwyVVJeSH5Ek7ZWOBSsN0JrvXTNVGLXLAXKB9xlTYajrplR44xVyMrmbut94H6uJ9jqzM/12jxkA=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"tweetnacl": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz",
|
||||
"integrity": "sha1-cT2LgY2kIGh0C/aDhtBHnmb8ins="
|
||||
},
|
||||
"typedarray": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
|
||||
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
|
||||
},
|
||||
"util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
|
||||
},
|
||||
"ws": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
17
ADAM/package.json
Normal file
17
ADAM/package.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "nodejs-elasticbeanstalk",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "server.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1",
|
||||
"start": "node server.js"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"discord.js": "^11.4.2",
|
||||
"dotenv": "^6.0.0",
|
||||
"node-cron": "^1.2.1"
|
||||
}
|
||||
}
|
||||
1145
ADAM_Dairo/adam-dairo.js
Normal file
1145
ADAM_Dairo/adam-dairo.js
Normal file
File diff suppressed because it is too large
Load Diff
298
ADAM_Dairo/dialog.js
Normal file
298
ADAM_Dairo/dialog.js
Normal file
@@ -0,0 +1,298 @@
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
module.exports = {
|
||||
getDialog: function(dialogTag, data = "", data2 = "", data3 = "") {
|
||||
switch(dialogTag) {
|
||||
case "checkin":
|
||||
return "<@" + data + ">" + " your presence has been noted. I've added " + data2 + " crystals to your account.";
|
||||
|
||||
case "checkinLocked":
|
||||
return ":x: <@" + data + ">" + " you already checked in with me " + data2 + ". You can check in again tomorrow.";
|
||||
|
||||
case "alreadyConvertedToday":
|
||||
return ":x: <@" + data + ">" + " as anxious as you may be, please don't attempt to change factions so quickly. You can only change once every 30 days.";
|
||||
|
||||
case "depositSuccessful":
|
||||
//codexLogEvent(data + " deposited " + data2 + " crystals.");
|
||||
return "<@" + data + ">" + " your deposit of " + data2 + " crystals has been successful. Good luck.";
|
||||
|
||||
case "depositFailed":
|
||||
return ":x: <@" + data + ">" + " I can't make the deposit at the moment. I apologize for the inconvenience.";
|
||||
|
||||
case "giveSuccessful":
|
||||
//codexLogEvent(data + " gave " + data2 + " " + data3 + " crystals.");
|
||||
return "<@" + data + ">" + " I've transferred " + data3 + " crystals to <@" + data2 + "> as per your request.";
|
||||
|
||||
case "giveFailed":
|
||||
return ":x: <@" + data + ">" + " I can't make that transfer at the moment. I apologize for the inconvenience.";
|
||||
|
||||
case "giveNotEnoughInAccount":
|
||||
return ":x: <@" + data + ">" + " You don't have that many crystals in your account. As such, I can't complete the transfer.";
|
||||
|
||||
case "giveNotAboveZero":
|
||||
return ":x: <@" + data + ">" + " In order for me to complete the transfer I need an amount above zero.";
|
||||
|
||||
case "giveInvalidUser":
|
||||
return ":x: <@" + data + ">" + " I can't find that traveler. Sorry.";
|
||||
|
||||
case "giveInvalidUserSelf":
|
||||
return ":x: <@" + data + ">" + " You can\'t send crystals to yourself. Sorry.";
|
||||
|
||||
case "levelUp":
|
||||
var dialogOptions = [
|
||||
'I appreciate all of your help.',
|
||||
'Thank you for doing so much for the city.',
|
||||
'The other travelers are very grateful for your help.',
|
||||
'Your assistance is very much appreciated.',
|
||||
'Together we\'ve taken out most of the threats to city.',
|
||||
'The citizens of The Sanctum are most grateful.',
|
||||
'I cannot thank you enough for your help defending the city.'
|
||||
];
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
var wordToUse = "it";
|
||||
if (data3 > 1) { var wordToUse = "them";}
|
||||
return "You just hit **level " + data2 + "**! " + dialogOptions[randomNumber] + " I\'ve added a <:cannister:462046687058198530> **Nanotech Cannister** to your inventory so that you can upgrade your skills. You now have **" + data3 + "** total (you can check this any time with !stats). Use " + wordToUse + " wisely.";
|
||||
|
||||
case "levelUpLevelCap":
|
||||
var dialogOptions = [
|
||||
'I appreciate all of your help.',
|
||||
'Thank you for doing so much for the city.',
|
||||
'The other travelers are very grateful for your help.',
|
||||
'Your assistance is very much appreciated.',
|
||||
'Together, we\'ve taken out most of the threats to city.',
|
||||
'The citizens of The Sanctum are most grateful.',
|
||||
'I cannot thank you enough for your help defending the city.'
|
||||
];
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
return "You\'re currently at **level " + data2 + "** which is the current level cap! " + dialogOptions[randomNumber] + " I\'ve added a <:cyphercrate:464135029036154950> **Cypher Crate** to your inventory. Hopefully it contains something useful for you on your journey. You now have **" + data3 + "** total (you can check this any time with !stats). Good luck. ";
|
||||
|
||||
case "help":
|
||||
var temp = "*This world is strange and mysterious. And while I cannot help you on your journey or join your faction, I am here to help travelers to the best of my ability.* \n\nHere is what I can do for you:";
|
||||
temp += "\n\n";
|
||||
temp += "!checkin\n```Once per day, you may come see me for a daily sum in exchange for your help around the city.```";
|
||||
temp += "\n";
|
||||
temp += "!stats\n```I can share all of your stats and your crystal count information.```";
|
||||
temp += "\n";
|
||||
temp += "!give [AMOUNT] [@USER]\n```I can transfer some of your crystals to another traveler's account. Just make sure you have enough.```";
|
||||
temp += "\n";
|
||||
temp += "!help [@NAME]\n```I can tell you a little bit about some of the other people with us here on New Eden.```";
|
||||
temp += "\n";
|
||||
temp += "I hope this helps you on your journey, traveler.";
|
||||
return temp;
|
||||
|
||||
case "helpMori":
|
||||
var temp = "*Mori is our resident head of the medbay. He can tend to your wounds and get you back on your feet. Here's what he can do:*";
|
||||
temp += "\n\n";
|
||||
temp += "!heal\n```Shows you Mori\'s available procedures for healing.```";
|
||||
temp += "\n";
|
||||
temp += "!heal [ITEM]\n```Purchases a procedure directly from him, and with his nanotech, takes effect immediately.```";
|
||||
return temp;
|
||||
|
||||
case "helpGraze":
|
||||
var temp = "*Graze is our loveable augmentation expert. He can help you upgrade your skills and boost your abilities. Here's what he can do:*";
|
||||
temp += "\n\n";
|
||||
temp += "!upgrade\n```Shows you the available upgrades that Graze can provide with your Nanotech Cannisters.```";
|
||||
temp += "\n";
|
||||
temp += "!upgrade [STAT]\n```Upgrades this specific stat permanently.```";
|
||||
return temp;
|
||||
|
||||
case "helpMosiah":
|
||||
var temp = `*Mosiah was exiled from our great city for many counts of misconduct, but it\'s been said he\'s been seen at <#${process.env.TAVERN_CHANNEL_ID}>. I recommend you not deal with him at all, but should you need to, here\'s what he can do:*`;
|
||||
temp += "\n\n";
|
||||
temp += "!wager [AMOUNT]\n```Wagers your crystals in a primative coin flip bet. Winner takes all.```";
|
||||
return temp;
|
||||
|
||||
case "helpRavager":
|
||||
var temp = `*The Ravagers have been hunting us since crashing here on New Eden. They roam this planet and will attack travelers on sight. But you can defend yourself:*`;
|
||||
temp += "\n\n";
|
||||
temp += "!attack\n```Sends your weapon towards an active Ravager. If you win the fight, you can loot their corpse for crystals. But be careful: they bite back.```";
|
||||
temp += "\n";
|
||||
temp += "!details\n```Shows you the details of the last Ravager fight to take place as well as the crystal distribution.```";
|
||||
return temp;
|
||||
|
||||
case "helpSonya":
|
||||
var temp = "*Professor Sonya is our resident archeologist, and she is fascinated by this world. Scavenge for some artifacts in the outskirts of the city, and she will apy you handsomely.*";
|
||||
temp += "\n\n";
|
||||
temp += "!scavenge\n```In #🌘the-outskirts, this allows you to look for rare artifacts for the professor.```";
|
||||
temp += "\n";
|
||||
temp += "!artifacts\n```Shows you the current artifacts that you have in your inventory.```";
|
||||
temp += "\n";
|
||||
temp += "!artifacts sell\n```Shows you the current prices that the professor is willing to pay for any artifacts that you may find.```";
|
||||
temp += "\n";
|
||||
temp += "!artifacts sell [TYPE]\n```Sells all of the artifacts that you have of that type to the professor, at current prices.```";
|
||||
return temp;
|
||||
|
||||
case "helpRey":
|
||||
var temp = "*Rey is a master of finding things that we need around the city. Resources are scarce, so anything you can help her find in <#462382076927148054> would be most helpful.*";
|
||||
temp += "\n\n";
|
||||
temp += "!scavenge\n```In #🌘the-outskirts, this allows you to look for materials and resources with Rey.```";
|
||||
temp += "\n";
|
||||
temp += "!materials\n```Shows you the current materials that you have in your inventory.```";
|
||||
return temp;
|
||||
|
||||
case "helpAlexis":
|
||||
var temp = "*Alexis is our top-of-the-line chemist who uses her talents to reward travelers with a nice and relaxing space. She\'d be happy to have or provide you with some company.*";
|
||||
temp += "\n\n";
|
||||
temp += "!buydrink\n```In #🍺travelers-watch, this allows you to buy a drink and relax.```";
|
||||
temp += "\n";
|
||||
temp += "!buydrink [@NAME]\n```In #🍺travelers-watch, you can buy a drink for a friend.```";
|
||||
temp += "\n";
|
||||
temp += "!tip [AMOUNT]\n```In #🍺travelers-watch, you can tip her for her great service. She might just give you a tip back.```";
|
||||
return temp;
|
||||
|
||||
//Status commands
|
||||
case "accountCheck":
|
||||
return "<@" + data + ">" + " you currently have " + data2 + " crystals in your account.";
|
||||
|
||||
case "bankCheck":
|
||||
return "Currently, " + data + " has " + data2 + " crystals total in their bank.";
|
||||
|
||||
case "victors":
|
||||
return "Currently, " + data + " controls the fate of the codex.";
|
||||
|
||||
case "noVictors":
|
||||
return "The fate of the codex is still undetermined.";
|
||||
|
||||
// Obsidian Technologies (Former Order)
|
||||
case "orderAlreadyJoined":
|
||||
return ":x: <@" + data + ">" + " The Obsidian Technologies already has your allegiance. There's no need to request a change.";
|
||||
case "orderJoin":
|
||||
//codexLogEvent(data + " joined Genesis Command.");
|
||||
return "<@" + data + ">" + " you have joined the Obsidian Technologies. May peace reign upon your cause.";
|
||||
|
||||
// Genesis Command (Former Anarchy)
|
||||
case "anarchyAlreadyJoined":
|
||||
return ":x: <@" + data + ">" + " The Genesis Command has already begun their chaos with you by their side. There's no need to request a change.";
|
||||
case "anarchyJoin":
|
||||
//codexLogEvent(data + " joined Obsidian Technologies.");
|
||||
return "<@" + data + ">" + " you have joined the Genesis Command. May chaos come to those who oppose you.";
|
||||
|
||||
// The Hand (Former Religion)
|
||||
case "religionAlreadyJoined":
|
||||
return ":x: <@" + data + ">" + " The Hand is happy to have you in their congregation already. There's no need to request a change.";
|
||||
case "religionJoin":
|
||||
//codexLogEvent(data + " joined The Hand.");
|
||||
return "<@" + data + ">" + " you have joined The Hand. May the gods look favorably upon you.";
|
||||
|
||||
//Onboarding
|
||||
case "newUserWelcome":
|
||||
messageToSend = "<@" + data + ">" + " welcome to " + data2 + ". If you need me for anything, you can contact me via this secure channel. Just use **!help** for a list of things I can do for you.";
|
||||
messageToSend += "\n\nAnd don\'t forget to say hello to fellow travelers in ";
|
||||
if (data2 == "Genesis Command") {
|
||||
messageToSend += `${process.env.GROUP_B_BOT_ID}.`;
|
||||
}
|
||||
if (data2 == "Obsidian Technologies") {
|
||||
messageToSend += `${process.env.GROUP_A_BOT_ID}.`;
|
||||
}
|
||||
if (data2 == "The Hand") {
|
||||
messageToSend += `${process.env.GROUP_C_BOT_ID}.`;
|
||||
}
|
||||
return messageToSend;
|
||||
case "newUserPM":
|
||||
var messageToSend = '';
|
||||
messageToSend = "_Traveler, welcome to The Sanctum.";
|
||||
messageToSend += "\n\n";
|
||||
|
||||
if (data2 == "Genesis Command") {
|
||||
messageToSend += "I see that you've joined **Genesis Command**. The least reckless of the 3 factions, I can see why you'd pick them. You clearly understand that The Codex is a very powerful book, and should you be victorious, no one will have access to it\'s secrets. ";
|
||||
}
|
||||
if (data2 == "Obsidian Technologies") {
|
||||
messageToSend += "I see that you've joined **Obsidian Technologies**. While they are the most chaotic of the 3 factions, I can see why you'd pick them. The Codex is a very powerful book, and should you be victorious, everyone will have equal access to it\'s secrets. ";
|
||||
}
|
||||
if (data2 == "The Hand") {
|
||||
messageToSend += "I see that you've joined **The Hand**. While they are certainly the most suspicious of the 3 factions, I can see why you'd pick them. The Codex is a very powerful book, and should you be victorious, it is your job to guide the rest of the city using it\'s secrets.";
|
||||
}
|
||||
messageToSend += "\n\n";
|
||||
messageToSend += "I'll get you patched up and give you access to our team to upgrade skills and meet the others. There's just a few things I need you to take care of around the city:_";
|
||||
messageToSend += "\n\n";
|
||||
messageToSend += "**!checkin** with me daily.\n```Once a day I'll give you your daily allotment of crystals in exchange for some help around the city.```";
|
||||
messageToSend += "\n";
|
||||
messageToSend += "**!attack** any Ravagers in #the-deadlands.\n```With the constant bombardment from the enemies of the city, It\'s hard to keep us safe. I need your help```";
|
||||
messageToSend += "\n";
|
||||
messageToSend += "_Good luck. I'll be around if you need me._";
|
||||
return messageToSend;
|
||||
//Lore
|
||||
case "intro":
|
||||
var tempLore = '';
|
||||
tempLore = "_Hello weary traveler.";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "My name is A.D.A.M. and I would like to offer you the amenities of The Sanctum. However, I cannot come to your aid until you choose a faction. I am dearly sorry to be so blunt and put trivial human rules in place over your sustenance and safety, but this is the only way to protect The Codex. But the Codex no longer exists since the Librarian destroyed it, so make something up, player.";
|
||||
tempLore += " Your choices are as follows:_";
|
||||
return tempLore;
|
||||
case "introHand":
|
||||
var tempLore = "<:religionhand:461582719051104276> **<@&" + process.env.GROUP_C_ROLE + ">** - !hand\n```Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum eu aliquet mauris, id congue nisi. Integer et lobortis tellus. Sed bibendum a metus quis volutpat. Mauris faucibus quam at euismod scelerisque. Vestibulum a elit auctor, venenatis augue in, rhoncus nisi. Mauris sagittis sit amet ante eget luctus. Maecenas id malesuada elit. Vestibulum nec ante nec justo venenatis tincidunt.```";
|
||||
return tempLore;
|
||||
case "introGenesis":
|
||||
var tempLore = "<:order:460991638152413194> **<@&" + process.env.GROUP_B_ROLE + ">** - !genesis\n```Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum eu aliquet mauris, id congue nisi. Integer et lobortis tellus. Sed bibendum a metus quis volutpat. Mauris faucibus quam at euismod scelerisque. Vestibulum a elit auctor, venenatis augue in, rhoncus nisi. Mauris sagittis sit amet ante eget luctus. Maecenas id malesuada elit. Vestibulum nec ante nec justo venenatis tincidunt. ```";
|
||||
return tempLore;
|
||||
case "introObsidian":
|
||||
var tempLore = "<:anarchy:460990297099337750> **<@&" + process.env.GROUP_A_ROLE + ">** - !obsidian\n```Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum eu aliquet mauris, id congue nisi. Integer et lobortis tellus. Sed bibendum a metus quis volutpat. Mauris faucibus quam at euismod scelerisque. Vestibulum a elit auctor, venenatis augue in, rhoncus nisi. Mauris sagittis sit amet ante eget luctus. Maecenas id malesuada elit. Vestibulum nec ante nec justo venenatis tincidunt.```";
|
||||
return tempLore;
|
||||
case "introEnd":
|
||||
var tempLore = "_Choose wisely._";
|
||||
return tempLore;
|
||||
case "level1":
|
||||
var tempLore = '';
|
||||
tempLore += `Congratulations ${data}, you have reached **${data2}**! Travelers defend the city from Ravagers here, and you can earn some crystals.`
|
||||
return tempLore;
|
||||
case "level15":
|
||||
var tempLore = '';
|
||||
tempLore += `Congratulations ${data}, you have reached **${data2}**, where there are more dangerous enemies, lurking in the fog.`
|
||||
return tempLore;
|
||||
case "level30":
|
||||
var tempLore = '';
|
||||
tempLore += `Congratulations ${data}, you have reached **${data2}**, the area most teeming with the strongest Ravagers. Watch your back, and good luck!`
|
||||
return tempLore;
|
||||
case "lore":
|
||||
var tempLore = '';
|
||||
switch(data) {
|
||||
case "backstory":
|
||||
tempLore = "‘_Mother Earth had failed us. ";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "In her dying breath, she bore a starship, **The Genesis**, to save the last of humankind. But the **travelers** aboard were not prepared for the unwelcoming winds of barren space.";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "On the brink of extinction our forefathers landed here, but this was no earth. The desolate landscape of **The Deadlands** traded our starvation for thirst, our isolation for open and empty space. But despite our struggles, we could breathe again.";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "We walked for many days and many nights in **The Deadlands**, consuming only the native **crystals** climbing from the ground for sustenance. Leaving the shelter of our vessel behind for the hope of a new home. Many withered away under the scorching heat of the twin suns and the constant attacks from **Ravagers**, but Mother Earth kept her promise.";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "In our darkest hour, we laid eyes on **The Sanctum**, a city of the gods. Complete with a vault full of our edible crystals, and more than enough room for the entire population; A city with human amenities in the middle of an inhuman world, bestowed upon a dying nation in need. This place was truly a divine gift.";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "At the highest point of the city in the tower that touched the clouds, we found **The Librarian**. A meticulous mechanical record keeper hovering over his book, the great **Codex Arcana**. This was a book written in detail to record the actions of every man, woman, and child that lived among us. But it was far too powerful, and the secrets it contained proved lethal in the wrong hands.";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "And so began the **factions**, vying for control over the Codex._'";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "- Excerpt from the **Teachings of Tiberius**. March 22, 2630.";
|
||||
break;
|
||||
case "genesis":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "travelers":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "deadlands":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "ravager":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "Sanctum":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "librarian":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "codex":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "factions":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
default:
|
||||
tempLore = "Here is the lore that is available in my database. ```!lore backstory```"
|
||||
break
|
||||
}
|
||||
console.log("TEMPLORE: " + tempLore);
|
||||
return tempLore;
|
||||
}
|
||||
}
|
||||
}
|
||||
8
ADAM_Dairo/npcSettings.js
Normal file
8
ADAM_Dairo/npcSettings.js
Normal file
@@ -0,0 +1,8 @@
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
module.exports = {
|
||||
activity: "for !hand recruits.",
|
||||
type: "WATCHING",
|
||||
token: process.env.DAIRO_HAND_TOKEN,
|
||||
botChannel: process.env.GROUP_C_BOT_ID
|
||||
}
|
||||
69
ADAM_Dairo/package-lock.json
generated
Normal file
69
ADAM_Dairo/package-lock.json
generated
Normal file
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"name": "nodejs-elasticbeanstalk",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"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=="
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"long": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
|
||||
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
|
||||
},
|
||||
"node-cron": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/node-cron/-/node-cron-1.2.1.tgz",
|
||||
"integrity": "sha1-jJC8XccjpWKJsHhmVatKHEy2A2g="
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"snekfetch": {
|
||||
"version": "3.6.4",
|
||||
"resolved": "https://registry.npmjs.org/snekfetch/-/snekfetch-3.6.4.tgz",
|
||||
"integrity": "sha512-NjxjITIj04Ffqid5lqr7XdgwM7X61c/Dns073Ly170bPQHLm6jkmelye/eglS++1nfTWktpP6Y2bFXjdPlQqdw=="
|
||||
},
|
||||
"tweetnacl": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz",
|
||||
"integrity": "sha1-cT2LgY2kIGh0C/aDhtBHnmb8ins="
|
||||
},
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
17
ADAM_Dairo/package.json
Normal file
17
ADAM_Dairo/package.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "nodejs-elasticbeanstalk",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "server.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1",
|
||||
"start": "node server.js"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"discord.js": "^11.4.2",
|
||||
"dotenv": "^6.0.0",
|
||||
"node-cron": "^1.2.1"
|
||||
}
|
||||
}
|
||||
1145
ADAM_Ghost/adam-ghost.js
Normal file
1145
ADAM_Ghost/adam-ghost.js
Normal file
File diff suppressed because it is too large
Load Diff
298
ADAM_Ghost/dialog.js
Normal file
298
ADAM_Ghost/dialog.js
Normal file
@@ -0,0 +1,298 @@
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
module.exports = {
|
||||
getDialog: function(dialogTag, data = "", data2 = "", data3 = "") {
|
||||
switch(dialogTag) {
|
||||
case "checkin":
|
||||
return "<@" + data + ">" + " your presence has been noted. I've added " + data2 + " crystals to your account.";
|
||||
|
||||
case "checkinLocked":
|
||||
return ":x: <@" + data + ">" + " you already checked in with me " + data2 + ". You can check in again tomorrow.";
|
||||
|
||||
case "alreadyConvertedToday":
|
||||
return ":x: <@" + data + ">" + " as anxious as you may be, please don't attempt to change factions so quickly. You can only change once every 30 days.";
|
||||
|
||||
case "depositSuccessful":
|
||||
//codexLogEvent(data + " deposited " + data2 + " crystals.");
|
||||
return "<@" + data + ">" + " your deposit of " + data2 + " crystals has been successful. Good luck.";
|
||||
|
||||
case "depositFailed":
|
||||
return ":x: <@" + data + ">" + " I can't make the deposit at the moment. I apologize for the inconvenience.";
|
||||
|
||||
case "giveSuccessful":
|
||||
//codexLogEvent(data + " gave " + data2 + " " + data3 + " crystals.");
|
||||
return "<@" + data + ">" + " I've transferred " + data3 + " crystals to <@" + data2 + "> as per your request.";
|
||||
|
||||
case "giveFailed":
|
||||
return ":x: <@" + data + ">" + " I can't make that transfer at the moment. I apologize for the inconvenience.";
|
||||
|
||||
case "giveNotEnoughInAccount":
|
||||
return ":x: <@" + data + ">" + " You don't have that many crystals in your account. As such, I can't complete the transfer.";
|
||||
|
||||
case "giveNotAboveZero":
|
||||
return ":x: <@" + data + ">" + " In order for me to complete the transfer I need an amount above zero.";
|
||||
|
||||
case "giveInvalidUser":
|
||||
return ":x: <@" + data + ">" + " I can't find that traveler. Sorry.";
|
||||
|
||||
case "giveInvalidUserSelf":
|
||||
return ":x: <@" + data + ">" + " You can\'t send crystals to yourself. Sorry.";
|
||||
|
||||
case "levelUp":
|
||||
var dialogOptions = [
|
||||
'I appreciate all of your help.',
|
||||
'Thank you for doing so much for the city.',
|
||||
'The other travelers are very grateful for your help.',
|
||||
'Your assistance is very much appreciated.',
|
||||
'Together we\'ve taken out most of the threats to city.',
|
||||
'The citizens of The Sanctum are most grateful.',
|
||||
'I cannot thank you enough for your help defending the city.'
|
||||
];
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
var wordToUse = "it";
|
||||
if (data3 > 1) { var wordToUse = "them";}
|
||||
return "You just hit **level " + data2 + "**! " + dialogOptions[randomNumber] + " I\'ve added a <:cannister:462046687058198530> **Nanotech Cannister** to your inventory so that you can upgrade your skills. You now have **" + data3 + "** total (you can check this any time with !stats). Use " + wordToUse + " wisely.";
|
||||
|
||||
case "levelUpLevelCap":
|
||||
var dialogOptions = [
|
||||
'I appreciate all of your help.',
|
||||
'Thank you for doing so much for the city.',
|
||||
'The other travelers are very grateful for your help.',
|
||||
'Your assistance is very much appreciated.',
|
||||
'Together, we\'ve taken out most of the threats to city.',
|
||||
'The citizens of The Sanctum are most grateful.',
|
||||
'I cannot thank you enough for your help defending the city.'
|
||||
];
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
return "You\'re currently at **level " + data2 + "** which is the current level cap! " + dialogOptions[randomNumber] + " I\'ve added a <:cyphercrate:464135029036154950> **Cypher Crate** to your inventory. Hopefully it contains something useful for you on your journey. You now have **" + data3 + "** total (you can check this any time with !stats). Good luck. ";
|
||||
|
||||
case "help":
|
||||
var temp = "*This world is strange and mysterious. And while I cannot help you on your journey or join your faction, I am here to help travelers to the best of my ability.* \n\nHere is what I can do for you:";
|
||||
temp += "\n\n";
|
||||
temp += "!checkin\n```Once per day, you may come see me for a daily sum in exchange for your help around the city.```";
|
||||
temp += "\n";
|
||||
temp += "!stats\n```I can share all of your stats and your crystal count information.```";
|
||||
temp += "\n";
|
||||
temp += "!give [AMOUNT] [@USER]\n```I can transfer some of your crystals to another traveler's account. Just make sure you have enough.```";
|
||||
temp += "\n";
|
||||
temp += "!help [@NAME]\n```I can tell you a little bit about some of the other people with us here on New Eden.```";
|
||||
temp += "\n";
|
||||
temp += "I hope this helps you on your journey, traveler.";
|
||||
return temp;
|
||||
|
||||
case "helpMori":
|
||||
var temp = "*Mori is our resident head of the medbay. He can tend to your wounds and get you back on your feet. Here's what he can do:*";
|
||||
temp += "\n\n";
|
||||
temp += "!heal\n```Shows you Mori\'s available procedures for healing.```";
|
||||
temp += "\n";
|
||||
temp += "!heal [ITEM]\n```Purchases a procedure directly from him, and with his nanotech, takes effect immediately.```";
|
||||
return temp;
|
||||
|
||||
case "helpGraze":
|
||||
var temp = "*Graze is our loveable augmentation expert. He can help you upgrade your skills and boost your abilities. Here's what he can do:*";
|
||||
temp += "\n\n";
|
||||
temp += "!upgrade\n```Shows you the available upgrades that Graze can provide with your Nanotech Cannisters.```";
|
||||
temp += "\n";
|
||||
temp += "!upgrade [STAT]\n```Upgrades this specific stat permanently.```";
|
||||
return temp;
|
||||
|
||||
case "helpMosiah":
|
||||
var temp = `*Mosiah was exiled from our great city for many counts of misconduct, but it\'s been said he\'s been seen at <#${process.env.TAVERN_CHANNEL_ID}>. I recommend you not deal with him at all, but should you need to, here\'s what he can do:*`;
|
||||
temp += "\n\n";
|
||||
temp += "!wager [AMOUNT]\n```Wagers your crystals in a primative coin flip bet. Winner takes all.```";
|
||||
return temp;
|
||||
|
||||
case "helpRavager":
|
||||
var temp = `*The Ravagers have been hunting us since crashing here on New Eden. They roam this planet and will attack travelers on sight. But you can defend yourself:*`;
|
||||
temp += "\n\n";
|
||||
temp += "!attack\n```Sends your weapon towards an active Ravager. If you win the fight, you can loot their corpse for crystals. But be careful: they bite back.```";
|
||||
temp += "\n";
|
||||
temp += "!details\n```Shows you the details of the last Ravager fight to take place as well as the crystal distribution.```";
|
||||
return temp;
|
||||
|
||||
case "helpSonya":
|
||||
var temp = "*Professor Sonya is our resident archeologist, and she is fascinated by this world. Scavenge for some artifacts in the outskirts of the city, and she will apy you handsomely.*";
|
||||
temp += "\n\n";
|
||||
temp += "!scavenge\n```In #🌘the-outskirts, this allows you to look for rare artifacts for the professor.```";
|
||||
temp += "\n";
|
||||
temp += "!artifacts\n```Shows you the current artifacts that you have in your inventory.```";
|
||||
temp += "\n";
|
||||
temp += "!artifacts sell\n```Shows you the current prices that the professor is willing to pay for any artifacts that you may find.```";
|
||||
temp += "\n";
|
||||
temp += "!artifacts sell [TYPE]\n```Sells all of the artifacts that you have of that type to the professor, at current prices.```";
|
||||
return temp;
|
||||
|
||||
case "helpRey":
|
||||
var temp = "*Rey is a master of finding things that we need around the city. Resources are scarce, so anything you can help her find in <#462382076927148054> would be most helpful.*";
|
||||
temp += "\n\n";
|
||||
temp += "!scavenge\n```In #🌘the-outskirts, this allows you to look for materials and resources with Rey.```";
|
||||
temp += "\n";
|
||||
temp += "!materials\n```Shows you the current materials that you have in your inventory.```";
|
||||
return temp;
|
||||
|
||||
case "helpAlexis":
|
||||
var temp = "*Alexis is our top-of-the-line chemist who uses her talents to reward travelers with a nice and relaxing space. She\'d be happy to have or provide you with some company.*";
|
||||
temp += "\n\n";
|
||||
temp += "!buydrink\n```In #🍺travelers-watch, this allows you to buy a drink and relax.```";
|
||||
temp += "\n";
|
||||
temp += "!buydrink [@NAME]\n```In #🍺travelers-watch, you can buy a drink for a friend.```";
|
||||
temp += "\n";
|
||||
temp += "!tip [AMOUNT]\n```In #🍺travelers-watch, you can tip her for her great service. She might just give you a tip back.```";
|
||||
return temp;
|
||||
|
||||
//Status commands
|
||||
case "accountCheck":
|
||||
return "<@" + data + ">" + " you currently have " + data2 + " crystals in your account.";
|
||||
|
||||
case "bankCheck":
|
||||
return "Currently, " + data + " has " + data2 + " crystals total in their bank.";
|
||||
|
||||
case "victors":
|
||||
return "Currently, " + data + " controls the fate of the codex.";
|
||||
|
||||
case "noVictors":
|
||||
return "The fate of the codex is still undetermined.";
|
||||
|
||||
// Obsidian Technologies (Former Order)
|
||||
case "orderAlreadyJoined":
|
||||
return ":x: <@" + data + ">" + " The Obsidian Technologies already has your allegiance. There's no need to request a change.";
|
||||
case "orderJoin":
|
||||
//codexLogEvent(data + " joined Genesis Command.");
|
||||
return "<@" + data + ">" + " you have joined the Obsidian Technologies. May peace reign upon your cause.";
|
||||
|
||||
// Genesis Command (Former Anarchy)
|
||||
case "anarchyAlreadyJoined":
|
||||
return ":x: <@" + data + ">" + " The Genesis Command has already begun their chaos with you by their side. There's no need to request a change.";
|
||||
case "anarchyJoin":
|
||||
//codexLogEvent(data + " joined Obsidian Technologies.");
|
||||
return "<@" + data + ">" + " you have joined the Genesis Command. May chaos come to those who oppose you.";
|
||||
|
||||
// The Hand (Former Religion)
|
||||
case "religionAlreadyJoined":
|
||||
return ":x: <@" + data + ">" + " The Hand is happy to have you in their congregation already. There's no need to request a change.";
|
||||
case "religionJoin":
|
||||
//codexLogEvent(data + " joined The Hand.");
|
||||
return "<@" + data + ">" + " you have joined The Hand. May the gods look favorably upon you.";
|
||||
|
||||
//Onboarding
|
||||
case "newUserWelcome":
|
||||
messageToSend = "<@" + data + ">" + " welcome to " + data2 + ". If you need me for anything, you can contact me via this secure channel. Just use **!help** for a list of things I can do for you.";
|
||||
messageToSend += "\n\nAnd don\'t forget to say hello to fellow travelers in ";
|
||||
if (data2 == "Genesis Command") {
|
||||
messageToSend += `${process.env.GROUP_B_BOT_ID}.`;
|
||||
}
|
||||
if (data2 == "Obsidian Technologies") {
|
||||
messageToSend += `${process.env.GROUP_A_BOT_ID}.`;
|
||||
}
|
||||
if (data2 == "The Hand") {
|
||||
messageToSend += `${process.env.GROUP_C_BOT_ID}.`;
|
||||
}
|
||||
return messageToSend;
|
||||
case "newUserPM":
|
||||
var messageToSend = '';
|
||||
messageToSend = "_Traveler, welcome to The Sanctum.";
|
||||
messageToSend += "\n\n";
|
||||
|
||||
if (data2 == "Genesis Command") {
|
||||
messageToSend += "I see that you've joined **Genesis Command**. The least reckless of the 3 factions, I can see why you'd pick them. You clearly understand that The Codex is a very powerful book, and should you be victorious, no one will have access to it\'s secrets. ";
|
||||
}
|
||||
if (data2 == "Obsidian Technologies") {
|
||||
messageToSend += "I see that you've joined **Obsidian Technologies**. While they are the most chaotic of the 3 factions, I can see why you'd pick them. The Codex is a very powerful book, and should you be victorious, everyone will have equal access to it\'s secrets. ";
|
||||
}
|
||||
if (data2 == "The Hand") {
|
||||
messageToSend += "I see that you've joined **The Hand**. While they are certainly the most suspicious of the 3 factions, I can see why you'd pick them. The Codex is a very powerful book, and should you be victorious, it is your job to guide the rest of the city using it\'s secrets.";
|
||||
}
|
||||
messageToSend += "\n\n";
|
||||
messageToSend += "I'll get you patched up and give you access to our team to upgrade skills and meet the others. There's just a few things I need you to take care of around the city:_";
|
||||
messageToSend += "\n\n";
|
||||
messageToSend += "**!checkin** with me daily.\n```Once a day I'll give you your daily allotment of crystals in exchange for some help around the city.```";
|
||||
messageToSend += "\n";
|
||||
messageToSend += "**!attack** any Ravagers in #the-deadlands.\n```With the constant bombardment from the enemies of the city, It\'s hard to keep us safe. I need your help```";
|
||||
messageToSend += "\n";
|
||||
messageToSend += "_Good luck. I'll be around if you need me._";
|
||||
return messageToSend;
|
||||
//Lore
|
||||
case "intro":
|
||||
var tempLore = '';
|
||||
tempLore = "_Hello weary traveler.";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "My name is A.D.A.M. and I would like to offer you the amenities of The Sanctum. However, I cannot come to your aid until you choose a faction. I am dearly sorry to be so blunt and put trivial human rules in place over your sustenance and safety, but this is the only way to protect The Codex. But the Codex no longer exists since the Librarian destroyed it, so make something up, player.";
|
||||
tempLore += " Your choices are as follows:_";
|
||||
return tempLore;
|
||||
case "introHand":
|
||||
var tempLore = "<:religionhand:461582719051104276> **<@&" + process.env.GROUP_C_ROLE + ">** - !hand\n```Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum eu aliquet mauris, id congue nisi. Integer et lobortis tellus. Sed bibendum a metus quis volutpat. Mauris faucibus quam at euismod scelerisque. Vestibulum a elit auctor, venenatis augue in, rhoncus nisi. Mauris sagittis sit amet ante eget luctus. Maecenas id malesuada elit. Vestibulum nec ante nec justo venenatis tincidunt.```";
|
||||
return tempLore;
|
||||
case "introGenesis":
|
||||
var tempLore = "<:order:460991638152413194> **<@&" + process.env.GROUP_B_ROLE + ">** - !genesis\n```Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum eu aliquet mauris, id congue nisi. Integer et lobortis tellus. Sed bibendum a metus quis volutpat. Mauris faucibus quam at euismod scelerisque. Vestibulum a elit auctor, venenatis augue in, rhoncus nisi. Mauris sagittis sit amet ante eget luctus. Maecenas id malesuada elit. Vestibulum nec ante nec justo venenatis tincidunt. ```";
|
||||
return tempLore;
|
||||
case "introObsidian":
|
||||
var tempLore = "<:anarchy:460990297099337750> **<@&" + process.env.GROUP_A_ROLE + ">** - !obsidian\n```Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum eu aliquet mauris, id congue nisi. Integer et lobortis tellus. Sed bibendum a metus quis volutpat. Mauris faucibus quam at euismod scelerisque. Vestibulum a elit auctor, venenatis augue in, rhoncus nisi. Mauris sagittis sit amet ante eget luctus. Maecenas id malesuada elit. Vestibulum nec ante nec justo venenatis tincidunt.```";
|
||||
return tempLore;
|
||||
case "introEnd":
|
||||
var tempLore = "_Choose wisely._";
|
||||
return tempLore;
|
||||
case "level1":
|
||||
var tempLore = '';
|
||||
tempLore += `Congratulations ${data}, you have reached **${data2}**! Travelers defend the city from Ravagers here, and you can earn some crystals.`
|
||||
return tempLore;
|
||||
case "level15":
|
||||
var tempLore = '';
|
||||
tempLore += `Congratulations ${data}, you have reached **${data2}**, where there are more dangerous enemies, lurking in the fog.`
|
||||
return tempLore;
|
||||
case "level30":
|
||||
var tempLore = '';
|
||||
tempLore += `Congratulations ${data}, you have reached **${data2}**, the area most teeming with the strongest Ravagers. Watch your back, and good luck!`
|
||||
return tempLore;
|
||||
case "lore":
|
||||
var tempLore = '';
|
||||
switch(data) {
|
||||
case "backstory":
|
||||
tempLore = "‘_Mother Earth had failed us. ";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "In her dying breath, she bore a starship, **The Genesis**, to save the last of humankind. But the **travelers** aboard were not prepared for the unwelcoming winds of barren space.";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "On the brink of extinction our forefathers landed here, but this was no earth. The desolate landscape of **The Deadlands** traded our starvation for thirst, our isolation for open and empty space. But despite our struggles, we could breathe again.";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "We walked for many days and many nights in **The Deadlands**, consuming only the native **crystals** climbing from the ground for sustenance. Leaving the shelter of our vessel behind for the hope of a new home. Many withered away under the scorching heat of the twin suns and the constant attacks from **Ravagers**, but Mother Earth kept her promise.";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "In our darkest hour, we laid eyes on **The Sanctum**, a city of the gods. Complete with a vault full of our edible crystals, and more than enough room for the entire population; A city with human amenities in the middle of an inhuman world, bestowed upon a dying nation in need. This place was truly a divine gift.";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "At the highest point of the city in the tower that touched the clouds, we found **The Librarian**. A meticulous mechanical record keeper hovering over his book, the great **Codex Arcana**. This was a book written in detail to record the actions of every man, woman, and child that lived among us. But it was far too powerful, and the secrets it contained proved lethal in the wrong hands.";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "And so began the **factions**, vying for control over the Codex._'";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "- Excerpt from the **Teachings of Tiberius**. March 22, 2630.";
|
||||
break;
|
||||
case "genesis":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "travelers":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "deadlands":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "ravager":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "Sanctum":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "librarian":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "codex":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "factions":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
default:
|
||||
tempLore = "Here is the lore that is available in my database. ```!lore backstory```"
|
||||
break
|
||||
}
|
||||
console.log("TEMPLORE: " + tempLore);
|
||||
return tempLore;
|
||||
}
|
||||
}
|
||||
}
|
||||
6
ADAM_Ghost/npcSettings.js
Normal file
6
ADAM_Ghost/npcSettings.js
Normal file
@@ -0,0 +1,6 @@
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
module.exports = {
|
||||
token: process.env.GHOST_TOKEN,
|
||||
botChannel: ""
|
||||
}
|
||||
69
ADAM_Ghost/package-lock.json
generated
Normal file
69
ADAM_Ghost/package-lock.json
generated
Normal file
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"name": "nodejs-elasticbeanstalk",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"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=="
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"long": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
|
||||
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
|
||||
},
|
||||
"node-cron": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/node-cron/-/node-cron-1.2.1.tgz",
|
||||
"integrity": "sha1-jJC8XccjpWKJsHhmVatKHEy2A2g="
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"snekfetch": {
|
||||
"version": "3.6.4",
|
||||
"resolved": "https://registry.npmjs.org/snekfetch/-/snekfetch-3.6.4.tgz",
|
||||
"integrity": "sha512-NjxjITIj04Ffqid5lqr7XdgwM7X61c/Dns073Ly170bPQHLm6jkmelye/eglS++1nfTWktpP6Y2bFXjdPlQqdw=="
|
||||
},
|
||||
"tweetnacl": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz",
|
||||
"integrity": "sha1-cT2LgY2kIGh0C/aDhtBHnmb8ins="
|
||||
},
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
17
ADAM_Ghost/package.json
Normal file
17
ADAM_Ghost/package.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "nodejs-elasticbeanstalk",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "server.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1",
|
||||
"start": "node server.js"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"discord.js": "^11.4.2",
|
||||
"dotenv": "^6.0.0",
|
||||
"node-cron": "^1.2.1"
|
||||
}
|
||||
}
|
||||
1145
ADAM_Kamala/adam-kamala.js
Normal file
1145
ADAM_Kamala/adam-kamala.js
Normal file
File diff suppressed because it is too large
Load Diff
298
ADAM_Kamala/dialog.js
Normal file
298
ADAM_Kamala/dialog.js
Normal file
@@ -0,0 +1,298 @@
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
module.exports = {
|
||||
getDialog: function(dialogTag, data = "", data2 = "", data3 = "") {
|
||||
switch(dialogTag) {
|
||||
case "checkin":
|
||||
return "<@" + data + ">" + " your presence has been noted. I've added " + data2 + " crystals to your account.";
|
||||
|
||||
case "checkinLocked":
|
||||
return ":x: <@" + data + ">" + " you already checked in with me " + data2 + ". You can check in again tomorrow.";
|
||||
|
||||
case "alreadyConvertedToday":
|
||||
return ":x: <@" + data + ">" + " as anxious as you may be, please don't attempt to change factions so quickly. You can only change once every 30 days.";
|
||||
|
||||
case "depositSuccessful":
|
||||
//codexLogEvent(data + " deposited " + data2 + " crystals.");
|
||||
return "<@" + data + ">" + " your deposit of " + data2 + " crystals has been successful. Good luck.";
|
||||
|
||||
case "depositFailed":
|
||||
return ":x: <@" + data + ">" + " I can't make the deposit at the moment. I apologize for the inconvenience.";
|
||||
|
||||
case "giveSuccessful":
|
||||
//codexLogEvent(data + " gave " + data2 + " " + data3 + " crystals.");
|
||||
return "<@" + data + ">" + " I've transferred " + data3 + " crystals to <@" + data2 + "> as per your request.";
|
||||
|
||||
case "giveFailed":
|
||||
return ":x: <@" + data + ">" + " I can't make that transfer at the moment. I apologize for the inconvenience.";
|
||||
|
||||
case "giveNotEnoughInAccount":
|
||||
return ":x: <@" + data + ">" + " You don't have that many crystals in your account. As such, I can't complete the transfer.";
|
||||
|
||||
case "giveNotAboveZero":
|
||||
return ":x: <@" + data + ">" + " In order for me to complete the transfer I need an amount above zero.";
|
||||
|
||||
case "giveInvalidUser":
|
||||
return ":x: <@" + data + ">" + " I can't find that traveler. Sorry.";
|
||||
|
||||
case "giveInvalidUserSelf":
|
||||
return ":x: <@" + data + ">" + " You can\'t send crystals to yourself. Sorry.";
|
||||
|
||||
case "levelUp":
|
||||
var dialogOptions = [
|
||||
'I appreciate all of your help.',
|
||||
'Thank you for doing so much for the city.',
|
||||
'The other travelers are very grateful for your help.',
|
||||
'Your assistance is very much appreciated.',
|
||||
'Together we\'ve taken out most of the threats to city.',
|
||||
'The citizens of The Sanctum are most grateful.',
|
||||
'I cannot thank you enough for your help defending the city.'
|
||||
];
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
var wordToUse = "it";
|
||||
if (data3 > 1) { var wordToUse = "them";}
|
||||
return "You just hit **level " + data2 + "**! " + dialogOptions[randomNumber] + " I\'ve added a <:cannister:462046687058198530> **Nanotech Cannister** to your inventory so that you can upgrade your skills. You now have **" + data3 + "** total (you can check this any time with !stats). Use " + wordToUse + " wisely.";
|
||||
|
||||
case "levelUpLevelCap":
|
||||
var dialogOptions = [
|
||||
'I appreciate all of your help.',
|
||||
'Thank you for doing so much for the city.',
|
||||
'The other travelers are very grateful for your help.',
|
||||
'Your assistance is very much appreciated.',
|
||||
'Together, we\'ve taken out most of the threats to city.',
|
||||
'The citizens of The Sanctum are most grateful.',
|
||||
'I cannot thank you enough for your help defending the city.'
|
||||
];
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
return "You\'re currently at **level " + data2 + "** which is the current level cap! " + dialogOptions[randomNumber] + " I\'ve added a <:cyphercrate:464135029036154950> **Cypher Crate** to your inventory. Hopefully it contains something useful for you on your journey. You now have **" + data3 + "** total (you can check this any time with !stats). Good luck. ";
|
||||
|
||||
case "help":
|
||||
var temp = "*This world is strange and mysterious. And while I cannot help you on your journey or join your faction, I am here to help travelers to the best of my ability.* \n\nHere is what I can do for you:";
|
||||
temp += "\n\n";
|
||||
temp += "!checkin\n```Once per day, you may come see me for a daily sum in exchange for your help around the city.```";
|
||||
temp += "\n";
|
||||
temp += "!stats\n```I can share all of your stats and your crystal count information.```";
|
||||
temp += "\n";
|
||||
temp += "!give [AMOUNT] [@USER]\n```I can transfer some of your crystals to another traveler's account. Just make sure you have enough.```";
|
||||
temp += "\n";
|
||||
temp += "!help [@NAME]\n```I can tell you a little bit about some of the other people with us here on New Eden.```";
|
||||
temp += "\n";
|
||||
temp += "I hope this helps you on your journey, traveler.";
|
||||
return temp;
|
||||
|
||||
case "helpMori":
|
||||
var temp = "*Mori is our resident head of the medbay. He can tend to your wounds and get you back on your feet. Here's what he can do:*";
|
||||
temp += "\n\n";
|
||||
temp += "!heal\n```Shows you Mori\'s available procedures for healing.```";
|
||||
temp += "\n";
|
||||
temp += "!heal [ITEM]\n```Purchases a procedure directly from him, and with his nanotech, takes effect immediately.```";
|
||||
return temp;
|
||||
|
||||
case "helpGraze":
|
||||
var temp = "*Graze is our loveable augmentation expert. He can help you upgrade your skills and boost your abilities. Here's what he can do:*";
|
||||
temp += "\n\n";
|
||||
temp += "!upgrade\n```Shows you the available upgrades that Graze can provide with your Nanotech Cannisters.```";
|
||||
temp += "\n";
|
||||
temp += "!upgrade [STAT]\n```Upgrades this specific stat permanently.```";
|
||||
return temp;
|
||||
|
||||
case "helpMosiah":
|
||||
var temp = `*Mosiah was exiled from our great city for many counts of misconduct, but it\'s been said he\'s been seen at <#${process.env.TAVERN_CHANNEL_ID}>. I recommend you not deal with him at all, but should you need to, here\'s what he can do:*`;
|
||||
temp += "\n\n";
|
||||
temp += "!wager [AMOUNT]\n```Wagers your crystals in a primative coin flip bet. Winner takes all.```";
|
||||
return temp;
|
||||
|
||||
case "helpRavager":
|
||||
var temp = `*The Ravagers have been hunting us since crashing here on New Eden. They roam this planet and will attack travelers on sight. But you can defend yourself:*`;
|
||||
temp += "\n\n";
|
||||
temp += "!attack\n```Sends your weapon towards an active Ravager. If you win the fight, you can loot their corpse for crystals. But be careful: they bite back.```";
|
||||
temp += "\n";
|
||||
temp += "!details\n```Shows you the details of the last Ravager fight to take place as well as the crystal distribution.```";
|
||||
return temp;
|
||||
|
||||
case "helpSonya":
|
||||
var temp = "*Professor Sonya is our resident archeologist, and she is fascinated by this world. Scavenge for some artifacts in the outskirts of the city, and she will apy you handsomely.*";
|
||||
temp += "\n\n";
|
||||
temp += "!scavenge\n```In #🌘the-outskirts, this allows you to look for rare artifacts for the professor.```";
|
||||
temp += "\n";
|
||||
temp += "!artifacts\n```Shows you the current artifacts that you have in your inventory.```";
|
||||
temp += "\n";
|
||||
temp += "!artifacts sell\n```Shows you the current prices that the professor is willing to pay for any artifacts that you may find.```";
|
||||
temp += "\n";
|
||||
temp += "!artifacts sell [TYPE]\n```Sells all of the artifacts that you have of that type to the professor, at current prices.```";
|
||||
return temp;
|
||||
|
||||
case "helpRey":
|
||||
var temp = "*Rey is a master of finding things that we need around the city. Resources are scarce, so anything you can help her find in <#462382076927148054> would be most helpful.*";
|
||||
temp += "\n\n";
|
||||
temp += "!scavenge\n```In #🌘the-outskirts, this allows you to look for materials and resources with Rey.```";
|
||||
temp += "\n";
|
||||
temp += "!materials\n```Shows you the current materials that you have in your inventory.```";
|
||||
return temp;
|
||||
|
||||
case "helpAlexis":
|
||||
var temp = "*Alexis is our top-of-the-line chemist who uses her talents to reward travelers with a nice and relaxing space. She\'d be happy to have or provide you with some company.*";
|
||||
temp += "\n\n";
|
||||
temp += "!buydrink\n```In #🍺travelers-watch, this allows you to buy a drink and relax.```";
|
||||
temp += "\n";
|
||||
temp += "!buydrink [@NAME]\n```In #🍺travelers-watch, you can buy a drink for a friend.```";
|
||||
temp += "\n";
|
||||
temp += "!tip [AMOUNT]\n```In #🍺travelers-watch, you can tip her for her great service. She might just give you a tip back.```";
|
||||
return temp;
|
||||
|
||||
//Status commands
|
||||
case "accountCheck":
|
||||
return "<@" + data + ">" + " you currently have " + data2 + " crystals in your account.";
|
||||
|
||||
case "bankCheck":
|
||||
return "Currently, " + data + " has " + data2 + " crystals total in their bank.";
|
||||
|
||||
case "victors":
|
||||
return "Currently, " + data + " controls the fate of the codex.";
|
||||
|
||||
case "noVictors":
|
||||
return "The fate of the codex is still undetermined.";
|
||||
|
||||
// Obsidian Technologies (Former Order)
|
||||
case "orderAlreadyJoined":
|
||||
return ":x: <@" + data + ">" + " The Obsidian Technologies already has your allegiance. There's no need to request a change.";
|
||||
case "orderJoin":
|
||||
//codexLogEvent(data + " joined Genesis Command.");
|
||||
return "<@" + data + ">" + " you have joined the Obsidian Technologies. May peace reign upon your cause.";
|
||||
|
||||
// Genesis Command (Former Anarchy)
|
||||
case "anarchyAlreadyJoined":
|
||||
return ":x: <@" + data + ">" + " The Genesis Command has already begun their chaos with you by their side. There's no need to request a change.";
|
||||
case "anarchyJoin":
|
||||
//codexLogEvent(data + " joined Obsidian Technologies.");
|
||||
return "<@" + data + ">" + " you have joined the Genesis Command. May chaos come to those who oppose you.";
|
||||
|
||||
// The Hand (Former Religion)
|
||||
case "religionAlreadyJoined":
|
||||
return ":x: <@" + data + ">" + " The Hand is happy to have you in their congregation already. There's no need to request a change.";
|
||||
case "religionJoin":
|
||||
//codexLogEvent(data + " joined The Hand.");
|
||||
return "<@" + data + ">" + " you have joined The Hand. May the gods look favorably upon you.";
|
||||
|
||||
//Onboarding
|
||||
case "newUserWelcome":
|
||||
messageToSend = "<@" + data + ">" + " welcome to " + data2 + ". If you need me for anything, you can contact me via this secure channel. Just use **!help** for a list of things I can do for you.";
|
||||
messageToSend += "\n\nAnd don\'t forget to say hello to fellow travelers in ";
|
||||
if (data2 == "Genesis Command") {
|
||||
messageToSend += `${process.env.GROUP_B_BOT_ID}.`;
|
||||
}
|
||||
if (data2 == "Obsidian Technologies") {
|
||||
messageToSend += `${process.env.GROUP_A_BOT_ID}.`;
|
||||
}
|
||||
if (data2 == "The Hand") {
|
||||
messageToSend += `${process.env.GROUP_C_BOT_ID}.`;
|
||||
}
|
||||
return messageToSend;
|
||||
case "newUserPM":
|
||||
var messageToSend = '';
|
||||
messageToSend = "_Traveler, welcome to The Sanctum.";
|
||||
messageToSend += "\n\n";
|
||||
|
||||
if (data2 == "Genesis Command") {
|
||||
messageToSend += "I see that you've joined **Genesis Command**. The least reckless of the 3 factions, I can see why you'd pick them. You clearly understand that The Codex is a very powerful book, and should you be victorious, no one will have access to it\'s secrets. ";
|
||||
}
|
||||
if (data2 == "Obsidian Technologies") {
|
||||
messageToSend += "I see that you've joined **Obsidian Technologies**. While they are the most chaotic of the 3 factions, I can see why you'd pick them. The Codex is a very powerful book, and should you be victorious, everyone will have equal access to it\'s secrets. ";
|
||||
}
|
||||
if (data2 == "The Hand") {
|
||||
messageToSend += "I see that you've joined **The Hand**. While they are certainly the most suspicious of the 3 factions, I can see why you'd pick them. The Codex is a very powerful book, and should you be victorious, it is your job to guide the rest of the city using it\'s secrets.";
|
||||
}
|
||||
messageToSend += "\n\n";
|
||||
messageToSend += "I'll get you patched up and give you access to our team to upgrade skills and meet the others. There's just a few things I need you to take care of around the city:_";
|
||||
messageToSend += "\n\n";
|
||||
messageToSend += "**!checkin** with me daily.\n```Once a day I'll give you your daily allotment of crystals in exchange for some help around the city.```";
|
||||
messageToSend += "\n";
|
||||
messageToSend += "**!attack** any Ravagers in #the-deadlands.\n```With the constant bombardment from the enemies of the city, It\'s hard to keep us safe. I need your help```";
|
||||
messageToSend += "\n";
|
||||
messageToSend += "_Good luck. I'll be around if you need me._";
|
||||
return messageToSend;
|
||||
//Lore
|
||||
case "intro":
|
||||
var tempLore = '';
|
||||
tempLore = "_Hello weary traveler.";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "My name is A.D.A.M. and I would like to offer you the amenities of The Sanctum. However, I cannot come to your aid until you choose a faction. I am dearly sorry to be so blunt and put trivial human rules in place over your sustenance and safety, but this is the only way to protect The Codex. But the Codex no longer exists since the Librarian destroyed it, so make something up, player.";
|
||||
tempLore += " Your choices are as follows:_";
|
||||
return tempLore;
|
||||
case "introHand":
|
||||
var tempLore = "<:religionhand:461582719051104276> **<@&" + process.env.GROUP_C_ROLE + ">** - !hand\n```Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum eu aliquet mauris, id congue nisi. Integer et lobortis tellus. Sed bibendum a metus quis volutpat. Mauris faucibus quam at euismod scelerisque. Vestibulum a elit auctor, venenatis augue in, rhoncus nisi. Mauris sagittis sit amet ante eget luctus. Maecenas id malesuada elit. Vestibulum nec ante nec justo venenatis tincidunt.```";
|
||||
return tempLore;
|
||||
case "introGenesis":
|
||||
var tempLore = "<:order:460991638152413194> **<@&" + process.env.GROUP_B_ROLE + ">** - !genesis\n```Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum eu aliquet mauris, id congue nisi. Integer et lobortis tellus. Sed bibendum a metus quis volutpat. Mauris faucibus quam at euismod scelerisque. Vestibulum a elit auctor, venenatis augue in, rhoncus nisi. Mauris sagittis sit amet ante eget luctus. Maecenas id malesuada elit. Vestibulum nec ante nec justo venenatis tincidunt. ```";
|
||||
return tempLore;
|
||||
case "introObsidian":
|
||||
var tempLore = "<:anarchy:460990297099337750> **<@&" + process.env.GROUP_A_ROLE + ">** - !obsidian\n```Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum eu aliquet mauris, id congue nisi. Integer et lobortis tellus. Sed bibendum a metus quis volutpat. Mauris faucibus quam at euismod scelerisque. Vestibulum a elit auctor, venenatis augue in, rhoncus nisi. Mauris sagittis sit amet ante eget luctus. Maecenas id malesuada elit. Vestibulum nec ante nec justo venenatis tincidunt.```";
|
||||
return tempLore;
|
||||
case "introEnd":
|
||||
var tempLore = "_Choose wisely._";
|
||||
return tempLore;
|
||||
case "level1":
|
||||
var tempLore = '';
|
||||
tempLore += `Congratulations ${data}, you have reached **${data2}**! Travelers defend the city from Ravagers here, and you can earn some crystals.`
|
||||
return tempLore;
|
||||
case "level15":
|
||||
var tempLore = '';
|
||||
tempLore += `Congratulations ${data}, you have reached **${data2}**, where there are more dangerous enemies, lurking in the fog.`
|
||||
return tempLore;
|
||||
case "level30":
|
||||
var tempLore = '';
|
||||
tempLore += `Congratulations ${data}, you have reached **${data2}**, the area most teeming with the strongest Ravagers. Watch your back, and good luck!`
|
||||
return tempLore;
|
||||
case "lore":
|
||||
var tempLore = '';
|
||||
switch(data) {
|
||||
case "backstory":
|
||||
tempLore = "‘_Mother Earth had failed us. ";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "In her dying breath, she bore a starship, **The Genesis**, to save the last of humankind. But the **travelers** aboard were not prepared for the unwelcoming winds of barren space.";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "On the brink of extinction our forefathers landed here, but this was no earth. The desolate landscape of **The Deadlands** traded our starvation for thirst, our isolation for open and empty space. But despite our struggles, we could breathe again.";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "We walked for many days and many nights in **The Deadlands**, consuming only the native **crystals** climbing from the ground for sustenance. Leaving the shelter of our vessel behind for the hope of a new home. Many withered away under the scorching heat of the twin suns and the constant attacks from **Ravagers**, but Mother Earth kept her promise.";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "In our darkest hour, we laid eyes on **The Sanctum**, a city of the gods. Complete with a vault full of our edible crystals, and more than enough room for the entire population; A city with human amenities in the middle of an inhuman world, bestowed upon a dying nation in need. This place was truly a divine gift.";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "At the highest point of the city in the tower that touched the clouds, we found **The Librarian**. A meticulous mechanical record keeper hovering over his book, the great **Codex Arcana**. This was a book written in detail to record the actions of every man, woman, and child that lived among us. But it was far too powerful, and the secrets it contained proved lethal in the wrong hands.";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "And so began the **factions**, vying for control over the Codex._'";
|
||||
tempLore += "\n\n";
|
||||
tempLore += "- Excerpt from the **Teachings of Tiberius**. March 22, 2630.";
|
||||
break;
|
||||
case "genesis":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "travelers":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "deadlands":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "ravager":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "Sanctum":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "librarian":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "codex":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
case "factions":
|
||||
tempLore = "Sorry. I recognize the term but am unable to process the request. There is a corruption in my cognitive core. Try again soon.";
|
||||
break;
|
||||
default:
|
||||
tempLore = "Here is the lore that is available in my database. ```!lore backstory```"
|
||||
break
|
||||
}
|
||||
console.log("TEMPLORE: " + tempLore);
|
||||
return tempLore;
|
||||
}
|
||||
}
|
||||
}
|
||||
8
ADAM_Kamala/npcSettings.js
Normal file
8
ADAM_Kamala/npcSettings.js
Normal file
@@ -0,0 +1,8 @@
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
module.exports = {
|
||||
activity: "for !obsidian recruits.",
|
||||
type: "WATCHING",
|
||||
token: process.env.KAMALA_OBSIDIAN_TOKEN,
|
||||
botChannel: process.env.GROUP_A_BOT_ID
|
||||
}
|
||||
69
ADAM_Kamala/package-lock.json
generated
Normal file
69
ADAM_Kamala/package-lock.json
generated
Normal file
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"name": "nodejs-elasticbeanstalk",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"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=="
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"long": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
|
||||
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
|
||||
},
|
||||
"node-cron": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/node-cron/-/node-cron-1.2.1.tgz",
|
||||
"integrity": "sha1-jJC8XccjpWKJsHhmVatKHEy2A2g="
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"snekfetch": {
|
||||
"version": "3.6.4",
|
||||
"resolved": "https://registry.npmjs.org/snekfetch/-/snekfetch-3.6.4.tgz",
|
||||
"integrity": "sha512-NjxjITIj04Ffqid5lqr7XdgwM7X61c/Dns073Ly170bPQHLm6jkmelye/eglS++1nfTWktpP6Y2bFXjdPlQqdw=="
|
||||
},
|
||||
"tweetnacl": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz",
|
||||
"integrity": "sha1-cT2LgY2kIGh0C/aDhtBHnmb8ins="
|
||||
},
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
17
ADAM_Kamala/package.json
Normal file
17
ADAM_Kamala/package.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "nodejs-elasticbeanstalk",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "server.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1",
|
||||
"start": "node server.js"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"discord.js": "^11.4.2",
|
||||
"dotenv": "^6.0.0",
|
||||
"node-cron": "^1.2.1"
|
||||
}
|
||||
}
|
||||
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"
|
||||
}
|
||||
}
|
||||
487
Enemy/enemy.js
Normal file
487
Enemy/enemy.js
Normal file
@@ -0,0 +1,487 @@
|
||||
// .env Variables
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
// Node Modules
|
||||
const Discord = require('discord.js');
|
||||
const client = new Discord.Client();
|
||||
const cron = require('node-cron');
|
||||
const io = require('socket.io-client');
|
||||
|
||||
// Make connection
|
||||
var socket = io.connect('http://localhost:80');
|
||||
|
||||
// Bot Modules
|
||||
const npcSettings = require('./npcSettings')
|
||||
const dataRequest = require('../modules/dataRequest');
|
||||
const calcRandom = require('../modules/calcRandom');
|
||||
|
||||
// State Machine
|
||||
var EnemyState = {
|
||||
INACTIVE: 0,
|
||||
PROWLING: 1,
|
||||
ACTIVE: 2,
|
||||
UNCONSCIOUS: 3
|
||||
}
|
||||
|
||||
// Enemy lists
|
||||
class EnemyBatchInstance {
|
||||
constructor(channel) {
|
||||
this.state = EnemyState.INACTIVE;
|
||||
this.enemies = []; // Array of `new Enemy()`s
|
||||
this.channel = channel; // Channel of spawning
|
||||
this.spawnPrecentage = 100;
|
||||
this.hostileLevel = 1;
|
||||
this.fastSummon = true; // Show prowling
|
||||
}
|
||||
}
|
||||
|
||||
// Enemy instance
|
||||
class Enemy {
|
||||
constructor(type) {
|
||||
this.state = EnemyState.INACTIVE;
|
||||
this.type = type;
|
||||
this.level = 1;
|
||||
this.health = 420;
|
||||
this.speed = 21;
|
||||
this.strength = 33;
|
||||
this.stash = 0;
|
||||
this.fleeTime = undefined;
|
||||
this.guid = undefined;
|
||||
this.deletePrevMessage = false;
|
||||
}
|
||||
|
||||
// Creates flee time by randomization
|
||||
get randomFleeTime() {
|
||||
var randomFleeTime;
|
||||
randomFleeTime = calcRandom.random(3 * 60 * 1000, 6 * 60 * 1000);
|
||||
randomFleeTime -= (randomFleeTime % 1000);
|
||||
return randomFleeTime;
|
||||
}
|
||||
}
|
||||
|
||||
var enemyBatchCollection = [];
|
||||
|
||||
// Spawning patterns
|
||||
var spawnPatterns = {
|
||||
"types": ['default', 'randomBatch2'],
|
||||
"default": {
|
||||
"ravager": {
|
||||
"amount": 1
|
||||
},
|
||||
"type": "incrememt"
|
||||
},
|
||||
"randomBatch2": {
|
||||
"amount": 2,
|
||||
"type": "incrememt"
|
||||
}
|
||||
}
|
||||
|
||||
var socketReady = false;
|
||||
socket.on('spawn', (data) => {
|
||||
if (!socketReady) return;
|
||||
|
||||
console.log(JSON.stringify(data, null, 4));
|
||||
console.log(`Summoning enemies...`);
|
||||
|
||||
// Spawns
|
||||
summonEnemy(data);
|
||||
|
||||
});
|
||||
|
||||
// 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 () => {
|
||||
socketReady = true;
|
||||
|
||||
// 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('invisible');
|
||||
// Sets your "Playing"
|
||||
if (npcSettings.activity) {
|
||||
client.user.setActivity(npcSettings.activity, { type: npcSettings.type })
|
||||
.then(presence => console.log(`Activity set to ${presence.game ? presence.game.name : 'none'}`))
|
||||
.catch(console.error);
|
||||
}
|
||||
|
||||
console.log(`Connected! \
|
||||
\nLogged in as: ${client.user.username} - (${client.user.id})`);
|
||||
|
||||
// Corrects Ravager username
|
||||
if (client.user.username == "Raveger") {
|
||||
const newName = "Ravager";
|
||||
console.log("Username is Raveger! Typos are NOT(?) cannon, so better change stuff.\nAttempting rename to " + newName + "...");
|
||||
|
||||
// Set username
|
||||
client.user.setUsername(newName)
|
||||
.then(user => console.log(`Success! New username is now ${user.username}.`))
|
||||
.catch(console.error);
|
||||
|
||||
// Changes nickname
|
||||
client.guilds.get(process.env.SANCTUM_ID).members.get(client.user.id).setNickname("");
|
||||
}
|
||||
});
|
||||
|
||||
// Create an event listener for messages
|
||||
client.on('message', async message => {
|
||||
// Ignores ALL bot messages
|
||||
if (message.author.bot) return;
|
||||
// Message has to be in Outskirts (should be edited later)
|
||||
if (!(message.channel.id === process.env.DEADLANDS_CHANNEL_ID
|
||||
|| message.channel.id === process.env.TEST_CHANNEL_ID)) 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 (isAdmin(message.author.id))
|
||||
message.reply("***...MRGRGRGR!***");
|
||||
break;
|
||||
case "ravager":
|
||||
if (args[0].toLowerCase() === "summon" && isAdmin(message.author.id)) {
|
||||
generateEnemy(process.env.DEADLANDS_CHANNEL_ID);
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
client.on('error', console.error);
|
||||
|
||||
cron.schedule('*/10 * * * *', function() {
|
||||
|
||||
});
|
||||
|
||||
async function generateEnemy(channelID) {
|
||||
console.log("Generating enemy...")
|
||||
|
||||
// Gets an enemy batch instance, or creates if non-existant
|
||||
var index = enemyBatchCollection.findIndex(data => data.channel === channelID);
|
||||
var enemyBatch;
|
||||
console.log(index <= -1)
|
||||
if (index <= -1) {
|
||||
enemyBatch = new EnemyBatchInstance(channelID);
|
||||
} else {
|
||||
enemyBatch = enemyBatchCollection[index];
|
||||
}
|
||||
|
||||
// Generate a spawn pattern
|
||||
var randomSpawnPattern = spawnPatterns.types[calcRandom.randomExc(0, spawnPatterns.types.length)];
|
||||
var newSpawnPattern = spawnPatterns[randomSpawnPattern];
|
||||
newSpawnPattern = spawnPatterns["default"]; // Overruled!
|
||||
|
||||
// Creates a bunch of new enemies
|
||||
var amount = newSpawnPattern[npcSettings.id].amount;
|
||||
var newEnemies = [];
|
||||
for (let i = 0; i < amount; i++) {
|
||||
var enemy = new Enemy(npcSettings.id);
|
||||
var elevel = enemyBatch.hostileLevel;
|
||||
|
||||
// Replication of newHostile in sendData.php
|
||||
const healthBase = 50; const strengthBase = 3; const speedBase = 3; const stashBase = 3;
|
||||
|
||||
const healthMin = (healthBase * elevel) / 2;
|
||||
const healthMax = healthBase * elevel;
|
||||
|
||||
const strengthMin = (strengthBase * elevel) / 2;
|
||||
const strengthMax = strengthBase * elevel;
|
||||
|
||||
const speedMin = (speedBase * elevel) / 2;
|
||||
const speedMax = speedBase * elevel;
|
||||
|
||||
const stashMin = (stashBase * elevel) / 2;
|
||||
const stashMax = stashBase * elevel;
|
||||
|
||||
const health = Math.floor(calcRandom.randomExc(healthMin, healthMax));
|
||||
const strength = Math.floor(calcRandom.randomExc(strengthMin, strengthMax));
|
||||
const speed = Math.floor(calcRandom.randomExc(speedMin, speedMax));
|
||||
const stash = Math.floor(calcRandom.randomExc(stashMin, stashMax));
|
||||
|
||||
enemy.level = elevel;
|
||||
enemy.health = health;
|
||||
enemy.strength = strength;
|
||||
enemy.speed = speed;
|
||||
enemy.stash = stash;
|
||||
enemy.state = EnemyState.PROWLING;
|
||||
enemy.fleeTime = enemy.randomFleeTime;
|
||||
enemy.guid = guidGenerator();
|
||||
|
||||
// Logs stats
|
||||
console.log(`\n[===== | Enemy Stats | =====]`);
|
||||
console.log(`HEALTH: ${health} > ${healthMin} - ${healthMax}`);
|
||||
console.log(`STRENGTH: ${strength} > ${strengthMin} - ${strengthMax}`);
|
||||
console.log(`SPEED: ${speed} > ${speedMin} - ${speedMax}`);
|
||||
console.log(`STASH: ${stash} > ${stashMin} - ${stashMax}`);
|
||||
console.log(`[===========================]\n`);
|
||||
newEnemies.push(enemy);
|
||||
}
|
||||
enemyBatch.enemies = newEnemies;
|
||||
enemyBatch.hostileLevel++;
|
||||
|
||||
console.log(JSON.stringify(newEnemies, null, 2));
|
||||
|
||||
if (calcRandom.gamble(enemyBatch.spawnPrecentage)) {
|
||||
enemyBatch.spawnPrecentage = 50;
|
||||
|
||||
// Creation of Ravager timer
|
||||
var creationTime = calcRandom.random(35000, 540000);
|
||||
creationTime = 3 * 1000; // shortcuts
|
||||
|
||||
console.log(`[Enemy Spawn] ${amount} "${npcSettings.id}" will be created in ${fmtMSS(creationTime / 1000)} min.`);
|
||||
await sleep(creationTime);
|
||||
console.log(`[Enemy Spawn] ${amount} "${npcSettings.id}" has spawned!`);
|
||||
summonEnemy(enemyBatch);
|
||||
|
||||
enemyBatch.hostileLevel++;
|
||||
} else {
|
||||
console.log("[Enemy Spawn] Fail to spawn. Adding 10% more to chances.");
|
||||
enemyBatch.spawnPrecentage += 10;
|
||||
}
|
||||
}
|
||||
|
||||
// Turn online and turn offline
|
||||
async function summonEnemy(data) {
|
||||
// If timer exists, do outpost
|
||||
const summonTime = 4; // 4 is debug, normal is 35
|
||||
if (!data.fastSummon) {
|
||||
console.log(`Summoning Ravager... waiting for ${summonTime} seconds.`);
|
||||
client.user.setStatus('online');
|
||||
client.user.setActivity(`Prowling...`);
|
||||
|
||||
// Sets prowling states on the Ravagers
|
||||
for (let i = 0; i < data.enemies.length; i++) {
|
||||
const element = data.enemies[i];
|
||||
element.state = EnemyState.PROWLING;
|
||||
}
|
||||
|
||||
// Notification code
|
||||
// TODO
|
||||
|
||||
await sleep(summonTime * 1000);
|
||||
}
|
||||
console.log("Enemy has spawned!");
|
||||
|
||||
// Goes thru all enemies in array
|
||||
for (let i = 0; i < data.enemies.length; i++) {
|
||||
const element = data.enemies[i];
|
||||
const hostileStats = `LVL: ${element.level} | HP: ${element.health} | STR: ${element.strength} | SPD: ${element.speed}`;
|
||||
|
||||
const ravagerMember = client.guilds.get(process.env.SANCTUM_ID).members.get(client.user.id);
|
||||
const appearanceEmbed = new Discord.RichEmbed()
|
||||
.setAuthor(ravagerMember.displayName, client.user.avatarURL)
|
||||
.setColor(ravagerMember.displayColor)
|
||||
.setDescription(`${healthbar(element.health, element.health)}\n` + "```" + hostileStats + "```")
|
||||
|
||||
var newMessage = await client.channels.get(data.channel).send(getDialog("onTheProwl"), {embed: appearanceEmbed});
|
||||
await client.user.setStatus('online');
|
||||
await client.user.setActivity(hostileStats);
|
||||
|
||||
for (let i = 0; i < data.enemies.length; i++) {
|
||||
const element = data.enemies[i];
|
||||
element.state = EnemyState.ACTIVE;
|
||||
}
|
||||
enemyTimer(element, data, data.channel, element.fleeTime, newMessage);
|
||||
}
|
||||
}
|
||||
|
||||
// Counts down
|
||||
async function enemyTimer(newEnemy, data, channel, fleeTime, newMessage) {
|
||||
function addUserToArray(userID) {
|
||||
attackingUsers.push(userID);
|
||||
}
|
||||
|
||||
async function sendReactions(options) {
|
||||
// Sends reactions
|
||||
for (let i = 0; i < options.length; i++) {
|
||||
const element = options[i];
|
||||
//console.log("[Reaction Options] Emote: " + element + " | newMessage: " + newMessage);
|
||||
await newMessage.react(element);
|
||||
}
|
||||
}
|
||||
|
||||
console.log(`Waiting for the next ${fmtMSS(fleeTime / 1000)} min. to check if Ravager has been killed. ${fleeTime}`);
|
||||
|
||||
const ravagerMember = client.guilds.get(process.env.SANCTUM_ID).members.get(client.user.id);
|
||||
const interactionEmbed = new Discord.RichEmbed()
|
||||
.setColor(ravagerMember.displayColor)
|
||||
.setTitle("Status")
|
||||
.setDescription("...")
|
||||
|
||||
var isReadyToFlee = false;
|
||||
var attackingUsers = [];
|
||||
var tempAttackUsers = "";
|
||||
var newChannel = client.channels.get(channel);
|
||||
var interactionMessage = await newChannel.send({embed: interactionEmbed});
|
||||
|
||||
// Collects emotes and reacts upon the reaction
|
||||
const collector = newMessage.createReactionCollector(
|
||||
(reaction, user) => options.includes(reaction.emoji.name) && user.id !== client.user.id);
|
||||
|
||||
// Possible reaction attacks can go here
|
||||
var options = ['🇦', '🇧', '🇨']
|
||||
sendReactions(options);
|
||||
|
||||
// Collect
|
||||
collector.once("collect", async reaction => {
|
||||
var user = reaction.users.last();
|
||||
tempAttackUsers += `${user} :crossed_swords: 11 DAM | <:hitback:460969716580745236> MISS (150/150)\n`;
|
||||
addUserToArray(user.id);
|
||||
|
||||
// Send damage to server
|
||||
// TODO
|
||||
});
|
||||
|
||||
// Ends
|
||||
collector.once("end", async collector => {
|
||||
|
||||
});
|
||||
|
||||
// Goes every 4 seconds
|
||||
var emoteRefresh = setInterval(async () => {
|
||||
await newMessage.clearReactions();
|
||||
interactionEmbed.setDescription("...");
|
||||
|
||||
if (isReadyToFlee && newEnemy.state !== EnemyState.UNCONSCIOUS) {
|
||||
console.log("Has fled!");
|
||||
interactionEmbed.setDescription("👣 The Ravager has fled...")
|
||||
if (interactionMessage) await interactionMessage.edit({embed: interactionEmbed});
|
||||
clearInterval(emoteRefresh);
|
||||
collector.stop();
|
||||
} else {
|
||||
if (interactionMessage) await interactionMessage.edit({embed: interactionEmbed});
|
||||
sendReactions(options);
|
||||
}
|
||||
|
||||
tempAttackUsers = "";
|
||||
}, 5 * 1000);
|
||||
|
||||
|
||||
// Waits to see if killed, and if not send a fleeing message
|
||||
await sleep(fleeTime);
|
||||
if (newEnemy.state === EnemyState.ACTIVE) {
|
||||
newChannel.send("**YOU ARE WEAK. THERE IS NO CHALLENGE FOR ME HERE.**\n:bangbang:***ATTEMPTING TO FLEE...***");
|
||||
await sleep(20 * 1000);
|
||||
|
||||
// If still there despawn
|
||||
if (newEnemy.state !== EnemyState.UNCONSCIOUS) {
|
||||
console.log('Hostile is now able to flee, now awaiting for collector to finish.');
|
||||
isReadyToFlee = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function flee(newEnemy, data, newChannel) {
|
||||
newChannel.send("**THE POOR, ILL-EQUIPPED TRAVELERS PUT UP NO FIGHT...**\n:footprints:***RETURNS TO THE WILD. ***");
|
||||
socket.emit('fled', {
|
||||
data: data,
|
||||
ravager: newEnemy
|
||||
});
|
||||
|
||||
if (data.length < 1) {
|
||||
await client.user.setPresence('invisible');
|
||||
client.user.setActivity('Prowling...');
|
||||
}
|
||||
}
|
||||
|
||||
// Health bar
|
||||
function healthbar(health, maxHealth) {
|
||||
var heartHealthAmount = 30;
|
||||
var printString = "";
|
||||
var amountMultiple = 0;
|
||||
var timesToLoop = Math.floor(maxHealth / heartHealthAmount);
|
||||
for (var i = 0; i < timesToLoop; i++) {
|
||||
amountMultiple = i * heartHealthAmount;
|
||||
if (amountMultiple < health) {
|
||||
printString += ":heart: ";
|
||||
} else {
|
||||
printString += ":black_heart:";
|
||||
}
|
||||
}
|
||||
printString += " (" + health + "/" + maxHealth + ")";
|
||||
return printString;
|
||||
}
|
||||
|
||||
// Async Waiting
|
||||
function sleep(time) {
|
||||
return new Promise((resolve, reject) => {
|
||||
setTimeout(resolve, time);
|
||||
});
|
||||
}
|
||||
|
||||
// Gets if user has an Overseers rank
|
||||
function isAdmin(userID) {
|
||||
var guild = client.guilds.get(process.env.SANCTUM_ID);
|
||||
return guild.members.get(userID).roles.find(role => role.name === "Overseers");
|
||||
}
|
||||
|
||||
// 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)
|
||||
}
|
||||
|
||||
// https://stackoverflow.com/questions/6860853/generate-random-string-for-div-id/6860916#6860916
|
||||
function guidGenerator() {
|
||||
var S4 = function() {
|
||||
return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
|
||||
};
|
||||
return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
|
||||
}
|
||||
|
||||
function getDialog(dialogTag, data = "", data2 = "") {
|
||||
switch(dialogTag) {
|
||||
case "onTheProwl":
|
||||
var dialogOptions = [
|
||||
'THE AIR SMELLS OF BLOOD.',
|
||||
'LOOKS LIKE MEAT\'S BACK ON THE MENU BOYS.',
|
||||
'FRESH MEAAAATTTT.',
|
||||
'TONIGHT WE DINE ON TRAVELER FLESSHHHH.',
|
||||
'SKULL CRUSHING IS MY FAVORITE SPORT.',
|
||||
'HUNGRY...',
|
||||
'TRAVELERS MAKE GOOD MEEEAAAAT!',
|
||||
'PUNY TRAVELER THINKS THEY CAN FIGHT?!',
|
||||
'HUNT THEM ALL DOWN.',
|
||||
'I HUNGER FOR THE TASTE OF FLESH.'
|
||||
];
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
return "***" + dialogOptions[randomNumber] + "***";
|
||||
|
||||
case "ravagerHit":
|
||||
var dialogOptions = [
|
||||
'STAGGERS BACK',
|
||||
'FALLS BACKWARDS',
|
||||
'CHARGES FORWARD CONFUSED',
|
||||
'LOOKS FOR THE SOURCE OF THE HIT',
|
||||
'FALLS FORWARDS',
|
||||
'BLOCKS ITS FACE',
|
||||
'STUMBLES BACKWARDS IN CONFUSION',
|
||||
'LUNGES FORWARD DISTRACTED',
|
||||
'BITES AT IT\'S ATTACKER',
|
||||
'CHECKS IT\'S WOUND'
|
||||
];
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
return `***${dialogOptions[randomNumber]}***`;
|
||||
}
|
||||
}
|
||||
|
||||
// Log our bot in (change the token by looking into the .env file)
|
||||
client.login(process.env.RAVAGER_TOKEN);
|
||||
9
Enemy/npcSettings.js
Normal file
9
Enemy/npcSettings.js
Normal file
@@ -0,0 +1,9 @@
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
module.exports = {
|
||||
id: "ravager",
|
||||
activity: "Prowling...",
|
||||
type: "PLAYING",
|
||||
token: process.env.RAVAGER_TOKEN,
|
||||
botChannel: process.env.DEADLANDS_CHANNEL_ID
|
||||
}
|
||||
745
Enemy/package-lock.json
generated
Normal file
745
Enemy/package-lock.json
generated
Normal file
@@ -0,0 +1,745 @@
|
||||
{
|
||||
"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.2",
|
||||
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
|
||||
"integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
|
||||
"requires": {
|
||||
"bytes": "3.0.0",
|
||||
"content-type": "~1.0.4",
|
||||
"debug": "2.6.9",
|
||||
"depd": "~1.1.1",
|
||||
"http-errors": "~1.6.2",
|
||||
"iconv-lite": "0.4.19",
|
||||
"on-finished": "~2.3.0",
|
||||
"qs": "6.5.1",
|
||||
"raw-body": "2.3.2",
|
||||
"type-is": "~1.6.15"
|
||||
}
|
||||
},
|
||||
"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.3",
|
||||
"resolved": "http://registry.npmjs.org/express/-/express-4.16.3.tgz",
|
||||
"integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=",
|
||||
"requires": {
|
||||
"accepts": "~1.3.5",
|
||||
"array-flatten": "1.1.1",
|
||||
"body-parser": "1.18.2",
|
||||
"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.3",
|
||||
"qs": "6.5.1",
|
||||
"range-parser": "~1.2.0",
|
||||
"safe-buffer": "5.1.1",
|
||||
"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"
|
||||
},
|
||||
"dependencies": {
|
||||
"safe-buffer": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
|
||||
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"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.19",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
|
||||
"integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
|
||||
},
|
||||
"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.1",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
|
||||
"integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
|
||||
},
|
||||
"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.2",
|
||||
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
|
||||
"integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
|
||||
"requires": {
|
||||
"bytes": "3.0.0",
|
||||
"http-errors": "1.6.2",
|
||||
"iconv-lite": "0.4.19",
|
||||
"unpipe": "1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"depd": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
|
||||
"integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k="
|
||||
},
|
||||
"http-errors": {
|
||||
"version": "1.6.2",
|
||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
|
||||
"integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
|
||||
"requires": {
|
||||
"depd": "1.1.1",
|
||||
"inherits": "2.0.3",
|
||||
"setprototypeof": "1.0.3",
|
||||
"statuses": ">= 1.3.1 < 2"
|
||||
}
|
||||
},
|
||||
"setprototypeof": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
|
||||
"integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
|
||||
}
|
||||
}
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"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="
|
||||
}
|
||||
}
|
||||
}
|
||||
31
Enemy/package.json
Normal file
31
Enemy/package.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"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 enemy-ravager.js -i max --watch",
|
||||
"wolf": "pm2 start enemy-wolf.js -i max --watch",
|
||||
"crow": "pm2 start enemy-crow.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"
|
||||
}
|
||||
}
|
||||
346
Enemy_Crow/enemy-crow.js
Normal file
346
Enemy_Crow/enemy-crow.js
Normal file
@@ -0,0 +1,346 @@
|
||||
// .env Variables
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
// Node Modules
|
||||
const Discord = require('discord.js');
|
||||
const client = new Discord.Client();
|
||||
const cron = require('node-cron');
|
||||
const io = require('socket.io-client');
|
||||
|
||||
// Make connection
|
||||
var socket = io.connect('http://localhost:80');
|
||||
|
||||
// Bot Modules
|
||||
const dataRequest = require('../modules/dataRequest');
|
||||
const calcRandom = require('../modules/calcRandom');
|
||||
|
||||
// State Machine
|
||||
var RavagerState = {
|
||||
INACTIVE: 0,
|
||||
PROWLING: 1,
|
||||
ACTIVE: 2,
|
||||
UNCONSCIOUS: 3
|
||||
}
|
||||
|
||||
const prowling = 'Prowling...';
|
||||
|
||||
var socketReady = false;
|
||||
socket.on('spawn', (data) => {
|
||||
if (!socketReady) return;
|
||||
|
||||
console.log(JSON.stringify(data, null, 4));
|
||||
console.log(`Summoning enemies...`);
|
||||
|
||||
// Spawns
|
||||
summonEnemy(data);
|
||||
|
||||
});
|
||||
|
||||
// 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 () => {
|
||||
socketReady = true;
|
||||
|
||||
// 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('invisible');
|
||||
// Sets your "Playing"
|
||||
client.user.setActivity(prowling);
|
||||
console.log(`Connected! \
|
||||
\nLogged in as: ${client.user.username} - (${client.user.id})`);
|
||||
|
||||
// Corrects Ravager username
|
||||
if (client.user.username == "Raveger") {
|
||||
const newName = "Ravager";
|
||||
console.log("Username is Raveger! Typos are NOT(?) cannon, so better change stuff.\nAttempting rename to " + newName + "...");
|
||||
|
||||
// Set username
|
||||
client.user.setUsername(newName)
|
||||
.then(user => console.log(`Success! New username is now ${user.username}.`))
|
||||
.catch(console.error);
|
||||
|
||||
// Changes nickname
|
||||
client.guilds.get(process.env.SANCTUM_ID).members.get(client.user.id).setNickname("");
|
||||
}
|
||||
});
|
||||
|
||||
// Create an event listener for messages
|
||||
client.on('message', async message => {
|
||||
// Ignores ALL bot messages
|
||||
if (message.author.bot) return;
|
||||
// Message has to be in Outskirts (should be edited later)
|
||||
if (!(message.channel.id === process.env.DEADLANDS_CHANNEL_ID
|
||||
|| message.channel.id === process.env.TEST_CHANNEL_ID)) 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 (isAdmin(message.author.id))
|
||||
message.reply("***...MRGRGRGR!***");
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
client.on('error', console.error);
|
||||
|
||||
cron.schedule('*/10 * * * *', function() {
|
||||
|
||||
});
|
||||
|
||||
// Turn online and turn offline
|
||||
async function summonEnemy(data) {
|
||||
// Scans for Ravager already in channel
|
||||
/*
|
||||
var isRavagerInChannel = false;
|
||||
ravagerCollection.forEach(element => {
|
||||
if (element.channel === data.channel) {
|
||||
console.log("There is already a Ravager in channel " + element.channel);
|
||||
isRavagerInChannel = true;
|
||||
}
|
||||
});
|
||||
if (isRavagerInChannel) return;
|
||||
*/
|
||||
|
||||
// If timer exists, do outpost
|
||||
const summonTime = 4; // 4 is debug, normal is 35
|
||||
if (!data.fastSummon) {
|
||||
console.log(`Summoning Ravager... waiting for ${summonTime} seconds.`);
|
||||
client.user.setStatus('online');
|
||||
client.user.setActivity(`Prowling...`);
|
||||
|
||||
// Sets prowling states on the Ravagers
|
||||
for (let i = 0; i < data.enemies.length; i++) {
|
||||
const element = data.enemies[i];
|
||||
element.state = RavagerState.PROWLING;
|
||||
}
|
||||
|
||||
// Notification code
|
||||
// TODO
|
||||
|
||||
await sleep(summonTime * 1000);
|
||||
}
|
||||
console.log("Enemy has spawned!");
|
||||
|
||||
// Goes thru all enemies in array
|
||||
for (let i = 0; i < data.enemies.length; i++) {
|
||||
const element = data.enemies[i];
|
||||
const hostileStats = `LVL: ${element.level} | HP: ${element.health} | STR: ${element.strength} | SPD: ${element.speed}`;
|
||||
|
||||
const ravagerMember = client.guilds.get(process.env.SANCTUM_ID).members.get(client.user.id);
|
||||
const appearanceEmbed = new Discord.RichEmbed()
|
||||
.setAuthor(ravagerMember.displayName, client.user.avatarURL)
|
||||
.setColor(ravagerMember.displayColor)
|
||||
.setDescription(`${healthbar(element.health, element.health)}\n` + "```" + hostileStats + "```")
|
||||
|
||||
var newMessage = await client.channels.get(data.channel).send(getDialog("onTheProwl"), {embed: appearanceEmbed});
|
||||
await client.user.setStatus('online');
|
||||
await client.user.setActivity(hostileStats);
|
||||
|
||||
for (let i = 0; i < data.enemies.length; i++) {
|
||||
const element = data.enemies[i];
|
||||
element.state = RavagerState.ACTIVE;
|
||||
}
|
||||
enemyTimer(element, data, data.channel, element.fleeTime, newMessage);
|
||||
}
|
||||
}
|
||||
|
||||
// Counts down
|
||||
async function enemyTimer(newRavager, data, channel, fleeTime, newMessage) {
|
||||
function addUserToArray(userID) {
|
||||
attackingUsers.push(userID);
|
||||
}
|
||||
|
||||
async function sendReactions(options) {
|
||||
// Sends reactions
|
||||
for (let i = 0; i < options.length; i++) {
|
||||
const element = options[i];
|
||||
//console.log("[Reaction Options] Emote: " + element + " | newMessage: " + newMessage);
|
||||
await newMessage.react(element);
|
||||
}
|
||||
}
|
||||
|
||||
console.log(`Waiting for the next ${fmtMSS(fleeTime / 1000)} min. to check if Ravager has been killed. ${fleeTime}`);
|
||||
|
||||
const ravagerMember = client.guilds.get(process.env.SANCTUM_ID).members.get(client.user.id);
|
||||
const interactionEmbed = new Discord.RichEmbed()
|
||||
.setColor(ravagerMember.displayColor)
|
||||
.setTitle("Status")
|
||||
.setDescription("...")
|
||||
|
||||
var isReadyToFlee = false;
|
||||
var attackingUsers = [];
|
||||
var tempAttackUsers = "";
|
||||
var newChannel = client.channels.get(channel);
|
||||
var interactionMessage = await newChannel.send({embed: interactionEmbed});
|
||||
|
||||
// Collects emotes and reacts upon the reaction
|
||||
const collector = newMessage.createReactionCollector(
|
||||
(reaction, user) => options.includes(reaction.emoji.name) && user.id !== client.user.id);
|
||||
|
||||
// Possible reaction attacks can go here
|
||||
var options = ['🇦', '🇧', '🇨']
|
||||
sendReactions(options);
|
||||
|
||||
// Collect
|
||||
collector.once("collect", async reaction => {
|
||||
var user = reaction.users.last();
|
||||
tempAttackUsers += `${user} :crossed_swords: 11 DAM | <:hitback:460969716580745236> MISS (150/150)\n`;
|
||||
addUserToArray(user.id);
|
||||
console.log(tempAttackUsers);
|
||||
if (!interactionMessage.deleted) {
|
||||
interactionEmbed.setDescription(`${tempAttackUsers}`);
|
||||
interactionMessage = await newChannel.edit({embed: interactionEmbed});
|
||||
}
|
||||
|
||||
// Send damage.
|
||||
|
||||
});
|
||||
|
||||
// Ends
|
||||
collector.once("end", async collector => {
|
||||
|
||||
});
|
||||
|
||||
// Goes every 4 seconds
|
||||
var emoteRefresh = setInterval(async () => {
|
||||
await newMessage.clearReactions();
|
||||
interactionEmbed.setDescription("...");
|
||||
|
||||
if (isReadyToFlee && newRavager.state !== RavagerState.UNCONSCIOUS) {
|
||||
interactionEmbed.setDescription("👣 The Ravager has fled...")
|
||||
if (interactionMessage) await interactionMessage.edit({embed: interactionEmbed});
|
||||
clearInterval(emoteRefresh);
|
||||
collector.stop();
|
||||
} else {
|
||||
if (interactionMessage) await interactionMessage.edit({embed: interactionEmbed});
|
||||
sendReactions(options);
|
||||
}
|
||||
|
||||
tempAttackUsers = "";
|
||||
}, 5 * 1000);
|
||||
|
||||
|
||||
// Waits to see if killed, and if not send a fleeing message
|
||||
await sleep(fleeTime);
|
||||
if (newRavager.state === RavagerState.ACTIVE) {
|
||||
newChannel.send("**YOU ARE WEAK. THERE IS NO CHALLENGE FOR ME HERE.**\n:bangbang:***ATTEMPTING TO FLEE...***");
|
||||
await sleep(20 * 1000);
|
||||
|
||||
// If still there despawn
|
||||
if (newRavager.state !== RavagerState.UNCONSCIOUS) {
|
||||
console.log('Hostile is now able to flee, now awaiting for collector to finish.');
|
||||
isReadyToFlee = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function flee(newRavager, data, newChannel) {
|
||||
newChannel.send("**THE POOR, ILL-EQUIPPED TRAVELERS PUT UP NO FIGHT...**\n:footprints:***RETURNS TO THE WILD. ***");
|
||||
socket.emit('fled', {
|
||||
data: data,
|
||||
ravager: newRavager
|
||||
});
|
||||
|
||||
if (data.length < 1) {
|
||||
await client.user.setPresence('invisible');
|
||||
client.user.setActivity('Prowling...');
|
||||
}
|
||||
}
|
||||
|
||||
// Health bar
|
||||
function healthbar(health, maxHealth) {
|
||||
var heartHealthAmount = 30;
|
||||
var printString = "";
|
||||
var amountMultiple = 0;
|
||||
var timesToLoop = Math.floor(maxHealth / heartHealthAmount);
|
||||
for (var i = 0; i < timesToLoop; i++) {
|
||||
amountMultiple = i * heartHealthAmount;
|
||||
if (amountMultiple < health) {
|
||||
printString += ":heart: ";
|
||||
} else {
|
||||
printString += ":black_heart:";
|
||||
}
|
||||
}
|
||||
printString += " (" + health + "/" + maxHealth + ")";
|
||||
return printString;
|
||||
}
|
||||
|
||||
// Async Waiting
|
||||
function sleep(time) {
|
||||
return new Promise((resolve, reject) => {
|
||||
setTimeout(resolve, time);
|
||||
});
|
||||
}
|
||||
|
||||
// Gets if user has an Overseers rank
|
||||
function isAdmin(userID) {
|
||||
var guild = client.guilds.get(process.env.SANCTUM_ID);
|
||||
return guild.members.get(userID).roles.find(role => role.name === "Overseers");
|
||||
}
|
||||
|
||||
// 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 getDialog(dialogTag, data = "", data2 = "") {
|
||||
switch(dialogTag) {
|
||||
case "onTheProwl":
|
||||
var dialogOptions = [
|
||||
'THE AIR SMELLS OF BLOOD.',
|
||||
'LOOKS LIKE MEAT\'S BACK ON THE MENU BOYS.',
|
||||
'FRESH MEAAAATTTT.',
|
||||
'TONIGHT WE DINE ON TRAVELER FLESSHHHH.',
|
||||
'SKULL CRUSHING IS MY FAVORITE SPORT.',
|
||||
'HUNGRY...',
|
||||
'TRAVELERS MAKE GOOD MEEEAAAAT!',
|
||||
'PUNY TRAVELER THINKS THEY CAN FIGHT?!',
|
||||
'HUNT THEM ALL DOWN.',
|
||||
'I HUNGER FOR THE TASTE OF FLESH.'
|
||||
];
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
return "***" + dialogOptions[randomNumber] + "***";
|
||||
|
||||
case "ravagerHit":
|
||||
var dialogOptions = [
|
||||
'STAGGERS BACK',
|
||||
'FALLS BACKWARDS',
|
||||
'CHARGES FORWARD CONFUSED',
|
||||
'LOOKS FOR THE SOURCE OF THE HIT',
|
||||
'FALLS FORWARDS',
|
||||
'BLOCKS ITS FACE',
|
||||
'STUMBLES BACKWARDS IN CONFUSION',
|
||||
'LUNGES FORWARD DISTRACTED',
|
||||
'BITES AT IT\'S ATTACKER',
|
||||
'CHECKS IT\'S WOUND'
|
||||
];
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
return `***${dialogOptions[randomNumber]}***`;
|
||||
}
|
||||
}
|
||||
|
||||
// Log our bot in (change the token by looking into the .env file)
|
||||
client.login(process.env.RAVAGER_TOKEN);
|
||||
9
Enemy_Crow/npcSettings.js
Normal file
9
Enemy_Crow/npcSettings.js
Normal file
@@ -0,0 +1,9 @@
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
module.exports = {
|
||||
id: "crow",
|
||||
activity: "Cawing in the distance...",
|
||||
type: "PLAYING",
|
||||
token: process.env.CROW_TOKEN,
|
||||
botChannel: process.env.CRYSTAL_SHORES
|
||||
}
|
||||
745
Enemy_Crow/package-lock.json
generated
Normal file
745
Enemy_Crow/package-lock.json
generated
Normal file
@@ -0,0 +1,745 @@
|
||||
{
|
||||
"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.2",
|
||||
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
|
||||
"integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
|
||||
"requires": {
|
||||
"bytes": "3.0.0",
|
||||
"content-type": "~1.0.4",
|
||||
"debug": "2.6.9",
|
||||
"depd": "~1.1.1",
|
||||
"http-errors": "~1.6.2",
|
||||
"iconv-lite": "0.4.19",
|
||||
"on-finished": "~2.3.0",
|
||||
"qs": "6.5.1",
|
||||
"raw-body": "2.3.2",
|
||||
"type-is": "~1.6.15"
|
||||
}
|
||||
},
|
||||
"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.3",
|
||||
"resolved": "http://registry.npmjs.org/express/-/express-4.16.3.tgz",
|
||||
"integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=",
|
||||
"requires": {
|
||||
"accepts": "~1.3.5",
|
||||
"array-flatten": "1.1.1",
|
||||
"body-parser": "1.18.2",
|
||||
"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.3",
|
||||
"qs": "6.5.1",
|
||||
"range-parser": "~1.2.0",
|
||||
"safe-buffer": "5.1.1",
|
||||
"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"
|
||||
},
|
||||
"dependencies": {
|
||||
"safe-buffer": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
|
||||
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"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.19",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
|
||||
"integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
|
||||
},
|
||||
"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.1",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
|
||||
"integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
|
||||
},
|
||||
"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.2",
|
||||
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
|
||||
"integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
|
||||
"requires": {
|
||||
"bytes": "3.0.0",
|
||||
"http-errors": "1.6.2",
|
||||
"iconv-lite": "0.4.19",
|
||||
"unpipe": "1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"depd": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
|
||||
"integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k="
|
||||
},
|
||||
"http-errors": {
|
||||
"version": "1.6.2",
|
||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
|
||||
"integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
|
||||
"requires": {
|
||||
"depd": "1.1.1",
|
||||
"inherits": "2.0.3",
|
||||
"setprototypeof": "1.0.3",
|
||||
"statuses": ">= 1.3.1 < 2"
|
||||
}
|
||||
},
|
||||
"setprototypeof": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
|
||||
"integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
|
||||
}
|
||||
}
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"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
Enemy_Crow/package.json
Normal file
29
Enemy_Crow/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"
|
||||
}
|
||||
}
|
||||
346
Enemy_Ravager/enemy-ravager.js
Normal file
346
Enemy_Ravager/enemy-ravager.js
Normal file
@@ -0,0 +1,346 @@
|
||||
// .env Variables
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
// Node Modules
|
||||
const Discord = require('discord.js');
|
||||
const client = new Discord.Client();
|
||||
const cron = require('node-cron');
|
||||
const io = require('socket.io-client');
|
||||
|
||||
// Make connection
|
||||
var socket = io.connect('http://localhost:80');
|
||||
|
||||
// Bot Modules
|
||||
const dataRequest = require('../modules/dataRequest');
|
||||
const calcRandom = require('../modules/calcRandom');
|
||||
|
||||
// State Machine
|
||||
var RavagerState = {
|
||||
INACTIVE: 0,
|
||||
PROWLING: 1,
|
||||
ACTIVE: 2,
|
||||
UNCONSCIOUS: 3
|
||||
}
|
||||
|
||||
const prowling = 'Prowling...';
|
||||
|
||||
var socketReady = false;
|
||||
socket.on('spawn', (data) => {
|
||||
if (!socketReady) return;
|
||||
|
||||
console.log(JSON.stringify(data, null, 4));
|
||||
console.log(`Summoning enemies...`);
|
||||
|
||||
// Spawns
|
||||
summonEnemy(data);
|
||||
|
||||
});
|
||||
|
||||
// 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 () => {
|
||||
socketReady = true;
|
||||
|
||||
// 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('invisible');
|
||||
// Sets your "Playing"
|
||||
client.user.setActivity(prowling);
|
||||
console.log(`Connected! \
|
||||
\nLogged in as: ${client.user.username} - (${client.user.id})`);
|
||||
|
||||
// Corrects Ravager username
|
||||
if (client.user.username == "Raveger") {
|
||||
const newName = "Ravager";
|
||||
console.log("Username is Raveger! Typos are NOT(?) cannon, so better change stuff.\nAttempting rename to " + newName + "...");
|
||||
|
||||
// Set username
|
||||
client.user.setUsername(newName)
|
||||
.then(user => console.log(`Success! New username is now ${user.username}.`))
|
||||
.catch(console.error);
|
||||
|
||||
// Changes nickname
|
||||
client.guilds.get(process.env.SANCTUM_ID).members.get(client.user.id).setNickname("");
|
||||
}
|
||||
});
|
||||
|
||||
// Create an event listener for messages
|
||||
client.on('message', async message => {
|
||||
// Ignores ALL bot messages
|
||||
if (message.author.bot) return;
|
||||
// Message has to be in Outskirts (should be edited later)
|
||||
if (!(message.channel.id === process.env.DEADLANDS_CHANNEL_ID
|
||||
|| message.channel.id === process.env.TEST_CHANNEL_ID)) 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 (isAdmin(message.author.id))
|
||||
message.reply("***...MRGRGRGR!***");
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
client.on('error', console.error);
|
||||
|
||||
cron.schedule('*/10 * * * *', function() {
|
||||
|
||||
});
|
||||
|
||||
// Turn online and turn offline
|
||||
async function summonEnemy(data) {
|
||||
// Scans for Ravager already in channel
|
||||
/*
|
||||
var isRavagerInChannel = false;
|
||||
ravagerCollection.forEach(element => {
|
||||
if (element.channel === data.channel) {
|
||||
console.log("There is already a Ravager in channel " + element.channel);
|
||||
isRavagerInChannel = true;
|
||||
}
|
||||
});
|
||||
if (isRavagerInChannel) return;
|
||||
*/
|
||||
|
||||
// If timer exists, do outpost
|
||||
const summonTime = 4; // 4 is debug, normal is 35
|
||||
if (!data.fastSummon) {
|
||||
console.log(`Summoning Ravager... waiting for ${summonTime} seconds.`);
|
||||
client.user.setStatus('online');
|
||||
client.user.setActivity(`Prowling...`);
|
||||
|
||||
// Sets prowling states on the Ravagers
|
||||
for (let i = 0; i < data.enemies.length; i++) {
|
||||
const element = data.enemies[i];
|
||||
element.state = RavagerState.PROWLING;
|
||||
}
|
||||
|
||||
// Notification code
|
||||
// TODO
|
||||
|
||||
await sleep(summonTime * 1000);
|
||||
}
|
||||
console.log("Enemy has spawned!");
|
||||
|
||||
// Goes thru all enemies in array
|
||||
for (let i = 0; i < data.enemies.length; i++) {
|
||||
const element = data.enemies[i];
|
||||
const hostileStats = `LVL: ${element.level} | HP: ${element.health} | STR: ${element.strength} | SPD: ${element.speed}`;
|
||||
|
||||
const ravagerMember = client.guilds.get(process.env.SANCTUM_ID).members.get(client.user.id);
|
||||
const appearanceEmbed = new Discord.RichEmbed()
|
||||
.setAuthor(ravagerMember.displayName, client.user.avatarURL)
|
||||
.setColor(ravagerMember.displayColor)
|
||||
.setDescription(`${healthbar(element.health, element.health)}\n` + "```" + hostileStats + "```")
|
||||
|
||||
var newMessage = await client.channels.get(data.channel).send(getDialog("onTheProwl"), {embed: appearanceEmbed});
|
||||
await client.user.setStatus('online');
|
||||
await client.user.setActivity(hostileStats);
|
||||
|
||||
for (let i = 0; i < data.enemies.length; i++) {
|
||||
const element = data.enemies[i];
|
||||
element.state = RavagerState.ACTIVE;
|
||||
}
|
||||
enemyTimer(element, data, data.channel, element.fleeTime, newMessage);
|
||||
}
|
||||
}
|
||||
|
||||
// Counts down
|
||||
async function enemyTimer(newRavager, data, channel, fleeTime, newMessage) {
|
||||
function addUserToArray(userID) {
|
||||
attackingUsers.push(userID);
|
||||
}
|
||||
|
||||
async function sendReactions(options) {
|
||||
// Sends reactions
|
||||
for (let i = 0; i < options.length; i++) {
|
||||
const element = options[i];
|
||||
//console.log("[Reaction Options] Emote: " + element + " | newMessage: " + newMessage);
|
||||
await newMessage.react(element);
|
||||
}
|
||||
}
|
||||
|
||||
console.log(`Waiting for the next ${fmtMSS(fleeTime / 1000)} min. to check if Ravager has been killed. ${fleeTime}`);
|
||||
|
||||
const ravagerMember = client.guilds.get(process.env.SANCTUM_ID).members.get(client.user.id);
|
||||
const interactionEmbed = new Discord.RichEmbed()
|
||||
.setColor(ravagerMember.displayColor)
|
||||
.setTitle("Status")
|
||||
.setDescription("...")
|
||||
|
||||
var isReadyToFlee = false;
|
||||
var attackingUsers = [];
|
||||
var tempAttackUsers = "";
|
||||
var newChannel = client.channels.get(channel);
|
||||
var interactionMessage = await newChannel.send({embed: interactionEmbed});
|
||||
|
||||
// Collects emotes and reacts upon the reaction
|
||||
const collector = newMessage.createReactionCollector(
|
||||
(reaction, user) => options.includes(reaction.emoji.name) && user.id !== client.user.id);
|
||||
|
||||
// Possible reaction attacks can go here
|
||||
var options = ['🇦', '🇧', '🇨']
|
||||
sendReactions(options);
|
||||
|
||||
// Collect
|
||||
collector.once("collect", async reaction => {
|
||||
var user = reaction.users.last();
|
||||
tempAttackUsers += `${user} :crossed_swords: 11 DAM | <:hitback:460969716580745236> MISS (150/150)\n`;
|
||||
addUserToArray(user.id);
|
||||
console.log(tempAttackUsers);
|
||||
if (!interactionMessage.deleted) {
|
||||
interactionEmbed.setDescription(`${tempAttackUsers}`);
|
||||
interactionMessage = await newChannel.edit({embed: interactionEmbed});
|
||||
}
|
||||
|
||||
// Send damage.
|
||||
|
||||
});
|
||||
|
||||
// Ends
|
||||
collector.once("end", async collector => {
|
||||
|
||||
});
|
||||
|
||||
// Goes every 4 seconds
|
||||
var emoteRefresh = setInterval(async () => {
|
||||
await newMessage.clearReactions();
|
||||
interactionEmbed.setDescription("...");
|
||||
|
||||
if (isReadyToFlee && newRavager.state !== RavagerState.UNCONSCIOUS) {
|
||||
interactionEmbed.setDescription("👣 The Ravager has fled...")
|
||||
if (interactionMessage) await interactionMessage.edit({embed: interactionEmbed});
|
||||
clearInterval(emoteRefresh);
|
||||
collector.stop();
|
||||
} else {
|
||||
if (interactionMessage) await interactionMessage.edit({embed: interactionEmbed});
|
||||
sendReactions(options);
|
||||
}
|
||||
|
||||
tempAttackUsers = "";
|
||||
}, 5 * 1000);
|
||||
|
||||
|
||||
// Waits to see if killed, and if not send a fleeing message
|
||||
await sleep(fleeTime);
|
||||
if (newRavager.state === RavagerState.ACTIVE) {
|
||||
newChannel.send("**YOU ARE WEAK. THERE IS NO CHALLENGE FOR ME HERE.**\n:bangbang:***ATTEMPTING TO FLEE...***");
|
||||
await sleep(20 * 1000);
|
||||
|
||||
// If still there despawn
|
||||
if (newRavager.state !== RavagerState.UNCONSCIOUS) {
|
||||
console.log('Hostile is now able to flee, now awaiting for collector to finish.');
|
||||
isReadyToFlee = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function flee(newRavager, data, newChannel) {
|
||||
newChannel.send("**THE POOR, ILL-EQUIPPED TRAVELERS PUT UP NO FIGHT...**\n:footprints:***RETURNS TO THE WILD. ***");
|
||||
socket.emit('fled', {
|
||||
data: data,
|
||||
ravager: newRavager
|
||||
});
|
||||
|
||||
if (data.length < 1) {
|
||||
await client.user.setPresence('invisible');
|
||||
client.user.setActivity('Prowling...');
|
||||
}
|
||||
}
|
||||
|
||||
// Health bar
|
||||
function healthbar(health, maxHealth) {
|
||||
var heartHealthAmount = 30;
|
||||
var printString = "";
|
||||
var amountMultiple = 0;
|
||||
var timesToLoop = Math.floor(maxHealth / heartHealthAmount);
|
||||
for (var i = 0; i < timesToLoop; i++) {
|
||||
amountMultiple = i * heartHealthAmount;
|
||||
if (amountMultiple < health) {
|
||||
printString += ":heart: ";
|
||||
} else {
|
||||
printString += ":black_heart:";
|
||||
}
|
||||
}
|
||||
printString += " (" + health + "/" + maxHealth + ")";
|
||||
return printString;
|
||||
}
|
||||
|
||||
// Async Waiting
|
||||
function sleep(time) {
|
||||
return new Promise((resolve, reject) => {
|
||||
setTimeout(resolve, time);
|
||||
});
|
||||
}
|
||||
|
||||
// Gets if user has an Overseers rank
|
||||
function isAdmin(userID) {
|
||||
var guild = client.guilds.get(process.env.SANCTUM_ID);
|
||||
return guild.members.get(userID).roles.find(role => role.name === "Overseers");
|
||||
}
|
||||
|
||||
// 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 getDialog(dialogTag, data = "", data2 = "") {
|
||||
switch(dialogTag) {
|
||||
case "onTheProwl":
|
||||
var dialogOptions = [
|
||||
'THE AIR SMELLS OF BLOOD.',
|
||||
'LOOKS LIKE MEAT\'S BACK ON THE MENU BOYS.',
|
||||
'FRESH MEAAAATTTT.',
|
||||
'TONIGHT WE DINE ON TRAVELER FLESSHHHH.',
|
||||
'SKULL CRUSHING IS MY FAVORITE SPORT.',
|
||||
'HUNGRY...',
|
||||
'TRAVELERS MAKE GOOD MEEEAAAAT!',
|
||||
'PUNY TRAVELER THINKS THEY CAN FIGHT?!',
|
||||
'HUNT THEM ALL DOWN.',
|
||||
'I HUNGER FOR THE TASTE OF FLESH.'
|
||||
];
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
return "***" + dialogOptions[randomNumber] + "***";
|
||||
|
||||
case "ravagerHit":
|
||||
var dialogOptions = [
|
||||
'STAGGERS BACK',
|
||||
'FALLS BACKWARDS',
|
||||
'CHARGES FORWARD CONFUSED',
|
||||
'LOOKS FOR THE SOURCE OF THE HIT',
|
||||
'FALLS FORWARDS',
|
||||
'BLOCKS ITS FACE',
|
||||
'STUMBLES BACKWARDS IN CONFUSION',
|
||||
'LUNGES FORWARD DISTRACTED',
|
||||
'BITES AT IT\'S ATTACKER',
|
||||
'CHECKS IT\'S WOUND'
|
||||
];
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
return `***${dialogOptions[randomNumber]}***`;
|
||||
}
|
||||
}
|
||||
|
||||
// Log our bot in (change the token by looking into the .env file)
|
||||
client.login(process.env.RAVAGER_TOKEN);
|
||||
9
Enemy_Ravager/npcSettings.js
Normal file
9
Enemy_Ravager/npcSettings.js
Normal file
@@ -0,0 +1,9 @@
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
module.exports = {
|
||||
name: "ravager",
|
||||
activity: "Prowling...",
|
||||
type: "PLAYING",
|
||||
token: process.env.RAVAGER_TOKEN,
|
||||
botChannel: process.env.DEADLANDS_CHANNEL_ID
|
||||
}
|
||||
745
Enemy_Ravager/package-lock.json
generated
Normal file
745
Enemy_Ravager/package-lock.json
generated
Normal file
@@ -0,0 +1,745 @@
|
||||
{
|
||||
"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.2",
|
||||
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
|
||||
"integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
|
||||
"requires": {
|
||||
"bytes": "3.0.0",
|
||||
"content-type": "~1.0.4",
|
||||
"debug": "2.6.9",
|
||||
"depd": "~1.1.1",
|
||||
"http-errors": "~1.6.2",
|
||||
"iconv-lite": "0.4.19",
|
||||
"on-finished": "~2.3.0",
|
||||
"qs": "6.5.1",
|
||||
"raw-body": "2.3.2",
|
||||
"type-is": "~1.6.15"
|
||||
}
|
||||
},
|
||||
"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.3",
|
||||
"resolved": "http://registry.npmjs.org/express/-/express-4.16.3.tgz",
|
||||
"integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=",
|
||||
"requires": {
|
||||
"accepts": "~1.3.5",
|
||||
"array-flatten": "1.1.1",
|
||||
"body-parser": "1.18.2",
|
||||
"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.3",
|
||||
"qs": "6.5.1",
|
||||
"range-parser": "~1.2.0",
|
||||
"safe-buffer": "5.1.1",
|
||||
"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"
|
||||
},
|
||||
"dependencies": {
|
||||
"safe-buffer": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
|
||||
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"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.19",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
|
||||
"integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
|
||||
},
|
||||
"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.1",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
|
||||
"integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
|
||||
},
|
||||
"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.2",
|
||||
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
|
||||
"integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
|
||||
"requires": {
|
||||
"bytes": "3.0.0",
|
||||
"http-errors": "1.6.2",
|
||||
"iconv-lite": "0.4.19",
|
||||
"unpipe": "1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"depd": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
|
||||
"integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k="
|
||||
},
|
||||
"http-errors": {
|
||||
"version": "1.6.2",
|
||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
|
||||
"integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
|
||||
"requires": {
|
||||
"depd": "1.1.1",
|
||||
"inherits": "2.0.3",
|
||||
"setprototypeof": "1.0.3",
|
||||
"statuses": ">= 1.3.1 < 2"
|
||||
}
|
||||
},
|
||||
"setprototypeof": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
|
||||
"integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
|
||||
}
|
||||
}
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"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
Enemy_Ravager/package.json
Normal file
29
Enemy_Ravager/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"
|
||||
}
|
||||
}
|
||||
346
Enemy_Wolf/enemy-wolf.js
Normal file
346
Enemy_Wolf/enemy-wolf.js
Normal file
@@ -0,0 +1,346 @@
|
||||
// .env Variables
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
// Node Modules
|
||||
const Discord = require('discord.js');
|
||||
const client = new Discord.Client();
|
||||
const cron = require('node-cron');
|
||||
const io = require('socket.io-client');
|
||||
|
||||
// Make connection
|
||||
var socket = io.connect('http://localhost:80');
|
||||
|
||||
// Bot Modules
|
||||
const dataRequest = require('../modules/dataRequest');
|
||||
const calcRandom = require('../modules/calcRandom');
|
||||
|
||||
// State Machine
|
||||
var RavagerState = {
|
||||
INACTIVE: 0,
|
||||
PROWLING: 1,
|
||||
ACTIVE: 2,
|
||||
UNCONSCIOUS: 3
|
||||
}
|
||||
|
||||
const prowling = 'Prowling...';
|
||||
|
||||
var socketReady = false;
|
||||
socket.on('spawn', (data) => {
|
||||
if (!socketReady) return;
|
||||
|
||||
console.log(JSON.stringify(data, null, 4));
|
||||
console.log(`Summoning enemies...`);
|
||||
|
||||
// Spawns
|
||||
summonEnemy(data);
|
||||
|
||||
});
|
||||
|
||||
// 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 () => {
|
||||
socketReady = true;
|
||||
|
||||
// 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('invisible');
|
||||
// Sets your "Playing"
|
||||
client.user.setActivity(prowling);
|
||||
console.log(`Connected! \
|
||||
\nLogged in as: ${client.user.username} - (${client.user.id})`);
|
||||
|
||||
// Corrects Ravager username
|
||||
if (client.user.username == "Raveger") {
|
||||
const newName = "Ravager";
|
||||
console.log("Username is Raveger! Typos are NOT(?) cannon, so better change stuff.\nAttempting rename to " + newName + "...");
|
||||
|
||||
// Set username
|
||||
client.user.setUsername(newName)
|
||||
.then(user => console.log(`Success! New username is now ${user.username}.`))
|
||||
.catch(console.error);
|
||||
|
||||
// Changes nickname
|
||||
client.guilds.get(process.env.SANCTUM_ID).members.get(client.user.id).setNickname("");
|
||||
}
|
||||
});
|
||||
|
||||
// Create an event listener for messages
|
||||
client.on('message', async message => {
|
||||
// Ignores ALL bot messages
|
||||
if (message.author.bot) return;
|
||||
// Message has to be in Outskirts (should be edited later)
|
||||
if (!(message.channel.id === process.env.DEADLANDS_CHANNEL_ID
|
||||
|| message.channel.id === process.env.TEST_CHANNEL_ID)) 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 (isAdmin(message.author.id))
|
||||
message.reply("***...MRGRGRGR!***");
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
client.on('error', console.error);
|
||||
|
||||
cron.schedule('*/10 * * * *', function() {
|
||||
|
||||
});
|
||||
|
||||
// Turn online and turn offline
|
||||
async function summonEnemy(data) {
|
||||
// Scans for Ravager already in channel
|
||||
/*
|
||||
var isRavagerInChannel = false;
|
||||
ravagerCollection.forEach(element => {
|
||||
if (element.channel === data.channel) {
|
||||
console.log("There is already a Ravager in channel " + element.channel);
|
||||
isRavagerInChannel = true;
|
||||
}
|
||||
});
|
||||
if (isRavagerInChannel) return;
|
||||
*/
|
||||
|
||||
// If timer exists, do outpost
|
||||
const summonTime = 4; // 4 is debug, normal is 35
|
||||
if (!data.fastSummon) {
|
||||
console.log(`Summoning Ravager... waiting for ${summonTime} seconds.`);
|
||||
client.user.setStatus('online');
|
||||
client.user.setActivity(`Prowling...`);
|
||||
|
||||
// Sets prowling states on the Ravagers
|
||||
for (let i = 0; i < data.enemies.length; i++) {
|
||||
const element = data.enemies[i];
|
||||
element.state = RavagerState.PROWLING;
|
||||
}
|
||||
|
||||
// Notification code
|
||||
// TODO
|
||||
|
||||
await sleep(summonTime * 1000);
|
||||
}
|
||||
console.log("Enemy has spawned!");
|
||||
|
||||
// Goes thru all enemies in array
|
||||
for (let i = 0; i < data.enemies.length; i++) {
|
||||
const element = data.enemies[i];
|
||||
const hostileStats = `LVL: ${element.level} | HP: ${element.health} | STR: ${element.strength} | SPD: ${element.speed}`;
|
||||
|
||||
const ravagerMember = client.guilds.get(process.env.SANCTUM_ID).members.get(client.user.id);
|
||||
const appearanceEmbed = new Discord.RichEmbed()
|
||||
.setAuthor(ravagerMember.displayName, client.user.avatarURL)
|
||||
.setColor(ravagerMember.displayColor)
|
||||
.setDescription(`${healthbar(element.health, element.health)}\n` + "```" + hostileStats + "```")
|
||||
|
||||
var newMessage = await client.channels.get(data.channel).send(getDialog("onTheProwl"), {embed: appearanceEmbed});
|
||||
await client.user.setStatus('online');
|
||||
await client.user.setActivity(hostileStats);
|
||||
|
||||
for (let i = 0; i < data.enemies.length; i++) {
|
||||
const element = data.enemies[i];
|
||||
element.state = RavagerState.ACTIVE;
|
||||
}
|
||||
enemyTimer(element, data, data.channel, element.fleeTime, newMessage);
|
||||
}
|
||||
}
|
||||
|
||||
// Counts down
|
||||
async function enemyTimer(newRavager, data, channel, fleeTime, newMessage) {
|
||||
function addUserToArray(userID) {
|
||||
attackingUsers.push(userID);
|
||||
}
|
||||
|
||||
async function sendReactions(options) {
|
||||
// Sends reactions
|
||||
for (let i = 0; i < options.length; i++) {
|
||||
const element = options[i];
|
||||
//console.log("[Reaction Options] Emote: " + element + " | newMessage: " + newMessage);
|
||||
await newMessage.react(element);
|
||||
}
|
||||
}
|
||||
|
||||
console.log(`Waiting for the next ${fmtMSS(fleeTime / 1000)} min. to check if Ravager has been killed. ${fleeTime}`);
|
||||
|
||||
const ravagerMember = client.guilds.get(process.env.SANCTUM_ID).members.get(client.user.id);
|
||||
const interactionEmbed = new Discord.RichEmbed()
|
||||
.setColor(ravagerMember.displayColor)
|
||||
.setTitle("Status")
|
||||
.setDescription("...")
|
||||
|
||||
var isReadyToFlee = false;
|
||||
var attackingUsers = [];
|
||||
var tempAttackUsers = "";
|
||||
var newChannel = client.channels.get(channel);
|
||||
var interactionMessage = await newChannel.send({embed: interactionEmbed});
|
||||
|
||||
// Collects emotes and reacts upon the reaction
|
||||
const collector = newMessage.createReactionCollector(
|
||||
(reaction, user) => options.includes(reaction.emoji.name) && user.id !== client.user.id);
|
||||
|
||||
// Possible reaction attacks can go here
|
||||
var options = ['🇦', '🇧', '🇨']
|
||||
sendReactions(options);
|
||||
|
||||
// Collect
|
||||
collector.once("collect", async reaction => {
|
||||
var user = reaction.users.last();
|
||||
tempAttackUsers += `${user} :crossed_swords: 11 DAM | <:hitback:460969716580745236> MISS (150/150)\n`;
|
||||
addUserToArray(user.id);
|
||||
console.log(tempAttackUsers);
|
||||
if (!interactionMessage.deleted) {
|
||||
interactionEmbed.setDescription(`${tempAttackUsers}`);
|
||||
interactionMessage = await newChannel.edit({embed: interactionEmbed});
|
||||
}
|
||||
|
||||
// Send damage.
|
||||
|
||||
});
|
||||
|
||||
// Ends
|
||||
collector.once("end", async collector => {
|
||||
|
||||
});
|
||||
|
||||
// Goes every 4 seconds
|
||||
var emoteRefresh = setInterval(async () => {
|
||||
await newMessage.clearReactions();
|
||||
interactionEmbed.setDescription("...");
|
||||
|
||||
if (isReadyToFlee && newRavager.state !== RavagerState.UNCONSCIOUS) {
|
||||
interactionEmbed.setDescription("👣 The Ravager has fled...")
|
||||
if (interactionMessage) await interactionMessage.edit({embed: interactionEmbed});
|
||||
clearInterval(emoteRefresh);
|
||||
collector.stop();
|
||||
} else {
|
||||
if (interactionMessage) await interactionMessage.edit({embed: interactionEmbed});
|
||||
sendReactions(options);
|
||||
}
|
||||
|
||||
tempAttackUsers = "";
|
||||
}, 5 * 1000);
|
||||
|
||||
|
||||
// Waits to see if killed, and if not send a fleeing message
|
||||
await sleep(fleeTime);
|
||||
if (newRavager.state === RavagerState.ACTIVE) {
|
||||
newChannel.send("**YOU ARE WEAK. THERE IS NO CHALLENGE FOR ME HERE.**\n:bangbang:***ATTEMPTING TO FLEE...***");
|
||||
await sleep(20 * 1000);
|
||||
|
||||
// If still there despawn
|
||||
if (newRavager.state !== RavagerState.UNCONSCIOUS) {
|
||||
console.log('Hostile is now able to flee, now awaiting for collector to finish.');
|
||||
isReadyToFlee = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function flee(newRavager, data, newChannel) {
|
||||
newChannel.send("**THE POOR, ILL-EQUIPPED TRAVELERS PUT UP NO FIGHT...**\n:footprints:***RETURNS TO THE WILD. ***");
|
||||
socket.emit('fled', {
|
||||
data: data,
|
||||
ravager: newRavager
|
||||
});
|
||||
|
||||
if (data.length < 1) {
|
||||
await client.user.setPresence('invisible');
|
||||
client.user.setActivity('Prowling...');
|
||||
}
|
||||
}
|
||||
|
||||
// Health bar
|
||||
function healthbar(health, maxHealth) {
|
||||
var heartHealthAmount = 30;
|
||||
var printString = "";
|
||||
var amountMultiple = 0;
|
||||
var timesToLoop = Math.floor(maxHealth / heartHealthAmount);
|
||||
for (var i = 0; i < timesToLoop; i++) {
|
||||
amountMultiple = i * heartHealthAmount;
|
||||
if (amountMultiple < health) {
|
||||
printString += ":heart: ";
|
||||
} else {
|
||||
printString += ":black_heart:";
|
||||
}
|
||||
}
|
||||
printString += " (" + health + "/" + maxHealth + ")";
|
||||
return printString;
|
||||
}
|
||||
|
||||
// Async Waiting
|
||||
function sleep(time) {
|
||||
return new Promise((resolve, reject) => {
|
||||
setTimeout(resolve, time);
|
||||
});
|
||||
}
|
||||
|
||||
// Gets if user has an Overseers rank
|
||||
function isAdmin(userID) {
|
||||
var guild = client.guilds.get(process.env.SANCTUM_ID);
|
||||
return guild.members.get(userID).roles.find(role => role.name === "Overseers");
|
||||
}
|
||||
|
||||
// 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 getDialog(dialogTag, data = "", data2 = "") {
|
||||
switch(dialogTag) {
|
||||
case "onTheProwl":
|
||||
var dialogOptions = [
|
||||
'THE AIR SMELLS OF BLOOD.',
|
||||
'LOOKS LIKE MEAT\'S BACK ON THE MENU BOYS.',
|
||||
'FRESH MEAAAATTTT.',
|
||||
'TONIGHT WE DINE ON TRAVELER FLESSHHHH.',
|
||||
'SKULL CRUSHING IS MY FAVORITE SPORT.',
|
||||
'HUNGRY...',
|
||||
'TRAVELERS MAKE GOOD MEEEAAAAT!',
|
||||
'PUNY TRAVELER THINKS THEY CAN FIGHT?!',
|
||||
'HUNT THEM ALL DOWN.',
|
||||
'I HUNGER FOR THE TASTE OF FLESH.'
|
||||
];
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
return "***" + dialogOptions[randomNumber] + "***";
|
||||
|
||||
case "ravagerHit":
|
||||
var dialogOptions = [
|
||||
'STAGGERS BACK',
|
||||
'FALLS BACKWARDS',
|
||||
'CHARGES FORWARD CONFUSED',
|
||||
'LOOKS FOR THE SOURCE OF THE HIT',
|
||||
'FALLS FORWARDS',
|
||||
'BLOCKS ITS FACE',
|
||||
'STUMBLES BACKWARDS IN CONFUSION',
|
||||
'LUNGES FORWARD DISTRACTED',
|
||||
'BITES AT IT\'S ATTACKER',
|
||||
'CHECKS IT\'S WOUND'
|
||||
];
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
return `***${dialogOptions[randomNumber]}***`;
|
||||
}
|
||||
}
|
||||
|
||||
// Log our bot in (change the token by looking into the .env file)
|
||||
client.login(process.env.RAVAGER_TOKEN);
|
||||
9
Enemy_Wolf/npcSettings.js
Normal file
9
Enemy_Wolf/npcSettings.js
Normal file
@@ -0,0 +1,9 @@
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
module.exports = {
|
||||
id: "wolf",
|
||||
activity: "OwOing... Totally not placeholder.",
|
||||
type: "PLAYING",
|
||||
token: process.env.WOLF_TOKEN,
|
||||
botChannel: process.env.SEA_OF_FOG_CHANNEL_ID
|
||||
}
|
||||
745
Enemy_Wolf/package-lock.json
generated
Normal file
745
Enemy_Wolf/package-lock.json
generated
Normal file
@@ -0,0 +1,745 @@
|
||||
{
|
||||
"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.2",
|
||||
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
|
||||
"integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
|
||||
"requires": {
|
||||
"bytes": "3.0.0",
|
||||
"content-type": "~1.0.4",
|
||||
"debug": "2.6.9",
|
||||
"depd": "~1.1.1",
|
||||
"http-errors": "~1.6.2",
|
||||
"iconv-lite": "0.4.19",
|
||||
"on-finished": "~2.3.0",
|
||||
"qs": "6.5.1",
|
||||
"raw-body": "2.3.2",
|
||||
"type-is": "~1.6.15"
|
||||
}
|
||||
},
|
||||
"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.3",
|
||||
"resolved": "http://registry.npmjs.org/express/-/express-4.16.3.tgz",
|
||||
"integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=",
|
||||
"requires": {
|
||||
"accepts": "~1.3.5",
|
||||
"array-flatten": "1.1.1",
|
||||
"body-parser": "1.18.2",
|
||||
"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.3",
|
||||
"qs": "6.5.1",
|
||||
"range-parser": "~1.2.0",
|
||||
"safe-buffer": "5.1.1",
|
||||
"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"
|
||||
},
|
||||
"dependencies": {
|
||||
"safe-buffer": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
|
||||
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"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.19",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
|
||||
"integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
|
||||
},
|
||||
"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.1",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
|
||||
"integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
|
||||
},
|
||||
"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.2",
|
||||
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
|
||||
"integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
|
||||
"requires": {
|
||||
"bytes": "3.0.0",
|
||||
"http-errors": "1.6.2",
|
||||
"iconv-lite": "0.4.19",
|
||||
"unpipe": "1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"depd": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
|
||||
"integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k="
|
||||
},
|
||||
"http-errors": {
|
||||
"version": "1.6.2",
|
||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
|
||||
"integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
|
||||
"requires": {
|
||||
"depd": "1.1.1",
|
||||
"inherits": "2.0.3",
|
||||
"setprototypeof": "1.0.3",
|
||||
"statuses": ">= 1.3.1 < 2"
|
||||
}
|
||||
},
|
||||
"setprototypeof": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
|
||||
"integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
|
||||
}
|
||||
}
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"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
Enemy_Wolf/package.json
Normal file
29
Enemy_Wolf/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"
|
||||
}
|
||||
}
|
||||
185
Graze/graze.js
Normal file
185
Graze/graze.js
Normal file
@@ -0,0 +1,185 @@
|
||||
// .env Variables
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
// Node Modules
|
||||
const Discord = require('discord.js');
|
||||
const client = new Discord.Client();
|
||||
const cron = require('node-cron');
|
||||
|
||||
// Bot Modules (stores http requests & random functions respectively)
|
||||
const dataRequest = require('../modules/dataRequest');
|
||||
const calcRandom = require('../modules/calcRandom');
|
||||
const channelProcessor = require('../modules/channelProcessor');
|
||||
|
||||
// State Machine (Uncomment if needed)
|
||||
/*
|
||||
var BotEnumState = {
|
||||
WAITING: 0,
|
||||
ACTIVE: 1
|
||||
}
|
||||
var botState = BotEnumState.ACTIVE;
|
||||
*/
|
||||
|
||||
// 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('!upgrade | Nanotech Upgrades.');
|
||||
console.log(`Connected! \
|
||||
\nLogged in as: ${client.user.username} - (${client.user.id})`);
|
||||
});
|
||||
|
||||
// Error handler
|
||||
client.on('error', console.error);
|
||||
|
||||
// Create an event listener for messages
|
||||
client.on('message', async message => {
|
||||
// Ignores ALL bot messages
|
||||
if (message.author.bot) return;
|
||||
// Message has to be a bot channel (should be edited later)
|
||||
if (!channelProcessor.isBotChannel(message.channel.id)) 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();
|
||||
|
||||
//handle the command
|
||||
switch(command) {
|
||||
case "upgrade":
|
||||
if (!args[0]) {
|
||||
//shows upgrade menu
|
||||
var intro = `${message.author} Hey buddy! Here's what we can upgrade ASAP!`;
|
||||
var newMessage = "STR - <:cannister:462046687058198530> **1**\n```Permanently upgrades your Strength by 1, so you can hit them Ravagers harder.```\n"
|
||||
newMessage += "SPD - <:cannister:462046687058198530> **1**\n```Permanently upgrades your Speed by 1, so you can get hit less in battle.```\n"
|
||||
newMessage += "STAM - <:cannister:462046687058198530> **1**\n```Permanently upgrades your Max Stamina by 1, so you can hit more Ravagers.```\n"
|
||||
newMessage += "HP - <:cannister:462046687058198530> **1**\n```Permanently upgrades your Max HP by 10, so you can can take those beatings like a champ.```"
|
||||
//sendMessage(message.channel.id, newMessage);
|
||||
|
||||
// Grabs all parameters from server
|
||||
var attacker = String(dataRequest.loadServerData("userStats",message.author.id));
|
||||
var attackerStatPoints = parseFloat(attacker.split(",")[10]); // Cannisters
|
||||
const keepersOfTheCityColor = client.guilds.get(process.env.SANCTUM_ID).roles.find(role => role.name === "Keepers of the City").color;
|
||||
const embed = new Discord.RichEmbed()
|
||||
.setAuthor("Graze", client.user.avatarURL)
|
||||
.setColor(keepersOfTheCityColor)
|
||||
.setTitle("Nanotech Upgrades")
|
||||
.setDescription(newMessage)
|
||||
.setFooter(`${message.member.displayName}, you have ${attackerStatPoints} cannisters! Use !upgrade [OPTION] to upgrade that stat!`)
|
||||
|
||||
message.channel.send(intro, embed);
|
||||
} else {
|
||||
console.log(args[0]);
|
||||
//Upgrades stats
|
||||
var statToUpgrade = String(args[0]);
|
||||
var numberOfPointsToUpgrade = 1;
|
||||
var canUpgrade = 0;
|
||||
var suffix = "point.";
|
||||
//var statToUpgrade = String(args.split(" ")[0]);
|
||||
//var numberOfPointsToUpgrade = parseFloat(args.split(" ")[1]);
|
||||
switch (statToUpgrade.toUpperCase()) {
|
||||
case "STRENGTH":
|
||||
statToUpgrade = "STR";
|
||||
break;
|
||||
case "HEALTH":
|
||||
statToUpgrade = "HP";
|
||||
break;
|
||||
case "STAMINA":
|
||||
statToUpgrade = "STAM";
|
||||
break;
|
||||
case "SPEED":
|
||||
statToUpgrade = "SPD";
|
||||
break;
|
||||
}
|
||||
|
||||
switch (statToUpgrade.toUpperCase()) {
|
||||
case "STR":
|
||||
numberOfPointsToUpgrade = 1;
|
||||
canUpgrade = 1;
|
||||
suffix = "point.";
|
||||
break;
|
||||
case "HP":
|
||||
numberOfPointsToUpgrade = 10;
|
||||
canUpgrade = 1;
|
||||
suffix = "points.";
|
||||
break;
|
||||
case "SPD":
|
||||
numberOfPointsToUpgrade = 1;
|
||||
canUpgrade = 1;
|
||||
suffix = "point.";
|
||||
break;
|
||||
case "STAM":
|
||||
numberOfPointsToUpgrade = 1;
|
||||
canUpgrade = 1;
|
||||
suffix = "point.";
|
||||
break;
|
||||
}
|
||||
if (canUpgrade == 0) {
|
||||
sendMessage(message.channel.id, ":x: <@" + message.author.id + "> Believe me, I wish I could upgrade things like that.");
|
||||
return;
|
||||
}
|
||||
|
||||
var upgradeResponse = dataRequest.sendServerData("upgradeStats", statToUpgrade, message.author.id);
|
||||
if (String(upgradeResponse) == "notEnoughPoints") {
|
||||
sendMessage(message.channel.id, ":x: <@" + message.author.id + "> Hey now, you don't have that many cannisters.");
|
||||
return;
|
||||
}
|
||||
if (String(upgradeResponse) == "failure") {
|
||||
sendMessage(message.channel.id, ":x: <@" + message.author.id + "> Sorry, no can do right now. Come back later though, ok?");
|
||||
return;
|
||||
}
|
||||
if (String(upgradeResponse) == "success") {
|
||||
var skillName = "";
|
||||
switch (statToUpgrade.toUpperCase()) {
|
||||
case "STR":
|
||||
skillName = "strength";
|
||||
break;
|
||||
case "HP":
|
||||
skillName = "health";
|
||||
break;
|
||||
case "SPD":
|
||||
skillName = "speed";
|
||||
break;
|
||||
case "STAM":
|
||||
skillName = "stamina";
|
||||
break;
|
||||
}
|
||||
sendMessage(message.channel.id, "<@" + message.author.id + "> Sweet! I used your Nanotech Cannister to upgrade your **" + skillName + "** by " + numberOfPointsToUpgrade + " " + suffix);
|
||||
}
|
||||
}
|
||||
break;
|
||||
};
|
||||
});
|
||||
|
||||
// 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);
|
||||
}
|
||||
|
||||
// Log our bot in (change the token by looking into the .env file)
|
||||
client.login(process.env.GRAZE_TOKEN);
|
||||
723
Graze/package-lock.json
generated
Normal file
723
Graze/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
Graze/package.json
Normal file
29
Graze/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"
|
||||
}
|
||||
}
|
||||
132
Librarian/librarian.js
Normal file
132
Librarian/librarian.js
Normal file
@@ -0,0 +1,132 @@
|
||||
// .env Variables
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
// Node Modules
|
||||
const Discord = require('discord.js');
|
||||
const client = new Discord.Client();
|
||||
const cron = require('node-cron');
|
||||
|
||||
// Bot Modules
|
||||
const dataRequest = require('../modules/dataRequest');
|
||||
const calcRandom = require('../modules/calcRandom');
|
||||
|
||||
// State Machine (Uncomment if needed)
|
||||
var BotEnumState = {
|
||||
WAITING: 0,
|
||||
ACTIVE: 1
|
||||
}
|
||||
var botState = BotEnumState.ACTIVE;
|
||||
|
||||
const playingMessage = 'Scribe of the Codex';
|
||||
const breakMessage = "Taking a break..."
|
||||
|
||||
// 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(playingMessage);
|
||||
console.log(`Connected! \
|
||||
\nLogged in as: ${client.user.username} - (${client.user.id})`);
|
||||
});
|
||||
|
||||
// Create an event listener for messages
|
||||
client.on('message', async message => {
|
||||
// Ignores ALL bot messages
|
||||
if (message.author.bot) return;
|
||||
// Message has to be in Outskirts (should be edited later)
|
||||
if (!(message.channel.id === process.env.TAVERN_CHANNEL_ID
|
||||
|| message.channel.id === process.env.TEST_CHANNEL_ID)) 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 (isAdmin(message.author.id))
|
||||
message.reply("Pong!");
|
||||
break;
|
||||
case "summon":
|
||||
if (isAdmin(message.author.id)) {
|
||||
console.log("Summon the bot!");
|
||||
BotTurnOnline(process.env.TAVERN_CHANNEL_ID);
|
||||
}
|
||||
break;
|
||||
case "vanish":
|
||||
if (isAdmin(message.author.id)) {
|
||||
BotTurnOffline(process.env.TAVERN_CHANNEL_ID);
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
client.on('error', console.error);
|
||||
|
||||
// Turn online and turn offline
|
||||
function BotTurnOnline(channel) {
|
||||
sendMessage(channel, `Insert Online Message here. \
|
||||
\n\n***SOME BOLD AND ITALIC TEXT***`);
|
||||
client.user.setStatus('online');
|
||||
client.user.setActivity(playingMessage);
|
||||
botState = BotEnumState.ACTIVE;
|
||||
}
|
||||
|
||||
function BotTurnOffline(channel) {
|
||||
sendMessage(channel, `Insert Offline Message here. \
|
||||
\n\n***SOME BOLD AND ITALIC TEXT***`);
|
||||
client.user.setStatus('invisible');
|
||||
client.user.setActivity('');
|
||||
botState = BotEnumState.WAITING;
|
||||
}
|
||||
|
||||
// You may use cron normally
|
||||
cron.schedule('* * * * Saturday', function() {
|
||||
console.log('Saturday join.');
|
||||
});
|
||||
|
||||
// Async Waiting
|
||||
function sleep(time) {
|
||||
return new Promise((resolve, reject) => {
|
||||
setTimeout(resolve, time);
|
||||
});
|
||||
}
|
||||
|
||||
// Gets if user has an Overseers rank
|
||||
function isAdmin(userID) {
|
||||
var guild = client.guilds.get(process.env.SANCTUM_ID);
|
||||
return guild.members.get(userID).roles.find(role => role.name === "Overseers");
|
||||
}
|
||||
|
||||
// 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);
|
||||
}
|
||||
|
||||
// Log our bot in (change the token by looking into the .env file)
|
||||
client.login(process.env.LIBRARIAN_TOKEN);
|
||||
723
Librarian/package-lock.json
generated
Normal file
723
Librarian/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
Librarian/package.json
Normal file
29
Librarian/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"
|
||||
}
|
||||
}
|
||||
272
Mori/mori.js
Normal file
272
Mori/mori.js
Normal file
@@ -0,0 +1,272 @@
|
||||
// .env Variables
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
// Node Modules
|
||||
const Discord = require('discord.js');
|
||||
const client = new Discord.Client();
|
||||
const cron = require('node-cron');
|
||||
|
||||
// Bot Modules (stores http requests & random functions respectively)
|
||||
const dataRequest = require('../modules/dataRequest');
|
||||
const calcRandom = require('../modules/calcRandom');
|
||||
const channelProcessor = require('../modules/channelProcessor');
|
||||
|
||||
var medItems = [0, 1, 2];
|
||||
var availableTreatments = [];
|
||||
var itemCount = 3;
|
||||
const treatments = [
|
||||
// Name | Crystals | HP | Description
|
||||
/*
|
||||
['TREAT','5','15','Heals 15HP immediately. Must have more than 0HP.'],
|
||||
['TREATV2','7','%15','Heals to 15% HP immediately. Must have more than 0HP.'],
|
||||
*/
|
||||
['PATCH','10','50','Heals 50HP immediately. Must have more than 0HP.'],
|
||||
['PATCHV2','15','%50','Heals to 50% HP immediately. Must have more than 0HP.'],
|
||||
['REGEN','20','100','Heals 100HP immediately. Must have more than 0HP.'],
|
||||
['REGENV2','25','%100','Heals all HP to maximum immediately. Must have more than 0HP.'],
|
||||
['REVIVE','20','25','Brings a traveler back from a KO (0HP) to 25HP immediately.'],
|
||||
['REVIVEV2','25','%50','Brings a traveler back from a KO (0HP) to 50% HP immediately.'],
|
||||
['REVIVEV3','30','%100','Brings a traveler back from a KO (0HP) to 100% HP immediately.']
|
||||
];
|
||||
|
||||
// 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('!heal | BioMed Specialist.');
|
||||
console.log(`Connected! \
|
||||
\nLogged in as: ${client.user.username} - (${client.user.id})`);
|
||||
|
||||
resetInventory(itemCount);
|
||||
});
|
||||
|
||||
//Revives everyone every morning at 7am PST (server time dependant).
|
||||
cron.schedule('0 7 * * *', function() {
|
||||
console.log('Reviving');
|
||||
dataRequest.sendServerData("reviveAll",0);
|
||||
|
||||
var dialogOptions = [
|
||||
'Ahhh. Just finished reviving all of our fellow travelers.',
|
||||
'Rezing travelers is hard work. <@462708244171718656> How was your night?',
|
||||
'Finished up bringing everybody back from the dead. I swear I\'m a magician sometimes.',
|
||||
'Another day. More lives saved. No thanks from anybody. Good times.',
|
||||
'Hello everybody. I see you\'re alive and well. Because of me, but no biggie.',
|
||||
'Bringing everybody back every day is grueling, thankless work.',
|
||||
'I need a vacation. Just brought everybody back and they immediatly go fight ravagers.',
|
||||
'Everybody should be up. Please don\'t run straight to the deadlands.',
|
||||
'Everybody is alive. Thanks to me. But hey, no need to thank me or anything. I\' just drink in silence.',
|
||||
'Good day. All the travelers are back up. Time for some sleep. Goodnight everybody.'
|
||||
];
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
|
||||
client.channels.get(process.env.TAVERN_CHANNEL_ID).startTyping();
|
||||
setTimeout(function() {
|
||||
sendMessage(process.env.TAVERN_CHANNEL_ID, dialogOptions[randomNumber]);
|
||||
client.channels.get(process.env.TAVERN_CHANNEL_ID).stopTyping(true);
|
||||
}, calcRandom.random(2500,6000));
|
||||
resetInventory(itemCount);
|
||||
});
|
||||
|
||||
// Create an event listener for messages
|
||||
client.on('message', async message => {
|
||||
// Ignores ALL bot messages
|
||||
if (message.author.bot) return;
|
||||
// Message has to be in Outskirts (should be edited later)
|
||||
if (!channelProcessor.isBotChannel(message.channel.id)) 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 "reset":
|
||||
if (isAdmin(message.author.id))
|
||||
resetInventory(3);
|
||||
break;
|
||||
case "heal":
|
||||
if (!args[0]) {
|
||||
// Grabs all parameters from server
|
||||
var attacker = String(dataRequest.loadServerData("userStats",message.author.id));
|
||||
var attackerWallet = parseFloat(attacker.split(",")[6]); // Crystals
|
||||
|
||||
var intro = `${message.author} Here's what I've got at the moment. My prices are based on availability, `
|
||||
+ `it's hard to find stuff these days.`;
|
||||
var newMessage = "";
|
||||
for (var i = 0; i < availableTreatments.length; i++) {
|
||||
//newMessage += availableTreatments[i][0] + " - **" + availableTreatments[i][1] + "**<:crystals:460974340247257089>\n```" + availableTreatments[i][3] + "```\n";
|
||||
newMessage += `${availableTreatments[i][0]} - <:crystals:460974340247257089> **${availableTreatments[i][1]}**\n` + "```" + availableTreatments[i][3] + "```\n";
|
||||
}
|
||||
const keepersOfTheCityColor = client.guilds.get(process.env.SANCTUM_ID).roles.find(role => role.name === "Keepers of the City").color;
|
||||
const embed = new Discord.RichEmbed()
|
||||
.setAuthor("Mori", client.user.avatarURL)
|
||||
.setColor(keepersOfTheCityColor)
|
||||
.setTitle("BioTech Healing")
|
||||
.setDescription(newMessage)
|
||||
.setFooter(`${message.member.displayName}, you have ${attackerWallet} crystals. Use !heal [OPTION] to buy.`)
|
||||
//sendMessage(message.channel.id, newMessage);
|
||||
message.channel.send(intro, embed);
|
||||
} else {
|
||||
//4815
|
||||
var purchase = args[0].toUpperCase();
|
||||
var treatmentCost = 0;
|
||||
var treatmentName = '';
|
||||
var treatmentAvailable = false;
|
||||
for (var i = 0, len = availableTreatments.length; i < len; i++) {
|
||||
if (availableTreatments[i][0] === purchase) {
|
||||
treatmentAvailable = true;
|
||||
treatmentName = availableTreatments[i][0];
|
||||
//treatmentCost = availableTreatments[i][1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (treatmentAvailable) {
|
||||
var healResponse = String(dataRequest.sendServerData("heal", treatmentCost, message.author.id, treatmentName));
|
||||
var response = String(healResponse.split(",")[0]);
|
||||
var health = String(healResponse.split(",")[1]);
|
||||
switch (response) {
|
||||
case "success":
|
||||
sendMessage(message.channel.id, "<@" + message.author.id + "> I\'ve applied a " + purchase + " via nanotech .\n**-" + treatmentCost + "**<:crystals:460974340247257089> | **" + health + "**HP." );
|
||||
break;
|
||||
case "notEnoughCrystals":
|
||||
sendMessage(message.channel.id, ":x: <@" + message.author.id + "> Sorry, looks like you don\'t have the funds for that." );
|
||||
break;
|
||||
case "cantDoThat":
|
||||
sendMessage(message.channel.id, ":x: <@" + message.author.id + "> Sorry, you don\'t meet the requirements for this procedure." );
|
||||
break;
|
||||
case "youreKnockedOut":
|
||||
sendMessage(message.channel.id, ":x: <@" + message.author.id + "> You\'re currently knoecked out (0HP). You require a revive procdure to heal immediately, or you can wait until 7 AM UTC when I revive everyone." );
|
||||
break;
|
||||
case "lessThanYourHealth":
|
||||
sendMessage(message.channel.id, ":x: <@" + message.author.id + "> Doing that procedure would put you at less than your current HP." );
|
||||
break;
|
||||
case "fullHealth":
|
||||
sendMessage(message.channel.id, ":x: <@" + message.author.id + "> Looks like you\'re already full health. Why would you want to heal?" );
|
||||
break;
|
||||
case "failure":
|
||||
sendMessage(message.channel.id, ":x: <@" + message.author.id + "> Sorry, not sure I understand what procedure you\'d like to purchase." );
|
||||
break;
|
||||
}
|
||||
} else{
|
||||
sendMessage(message.channel.id, ":x: <@" + message.author.id + "> I don\'t have that type of procedure available." );
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
client.on('error', console.error);
|
||||
|
||||
// Gets if user has an Overseers rank
|
||||
function isAdmin(userID) {
|
||||
var guild = client.guilds.get(process.env.SANCTUM_ID);
|
||||
return guild.members.get(userID).roles.find(role => role.name === "Overseers");
|
||||
}
|
||||
|
||||
function resetInventory(itemCount) {
|
||||
console.log("\nResetting inventory...");
|
||||
medItems = [];
|
||||
availableTreatments = [];
|
||||
var treatmentsClone = arrayClone(treatments);
|
||||
var tempnum = 0;
|
||||
var i = 0;
|
||||
// DEBUG
|
||||
//itemCount = treatments.length;
|
||||
|
||||
// Chooses random numbers, in order to pick random heal packs
|
||||
do {
|
||||
tempnum = Math.floor(Math.random() * treatments.length);
|
||||
if (!medItems.includes(tempnum)) {
|
||||
medItems.push(tempnum);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
while (medItems.length < itemCount);
|
||||
|
||||
medItems.sort(sortNumber);
|
||||
message = "";
|
||||
var list2 = new Array();
|
||||
for (var i = 0; i < medItems.length; i++) {
|
||||
//console.log('MED ITEM: [' + medItems[i] + '] ADDED');
|
||||
availableTreatments.push(treatmentsClone[medItems[i]]);
|
||||
tempnum = parseFloat(availableTreatments[i][1]);
|
||||
//console.log(">>> Tempnum: " + tempnum + " | availableTreatments: " + availableTreatments[i][1]);
|
||||
//console.log(">>> MedItems: " + treatments[medItems[i]] + "");
|
||||
// Older Calculations
|
||||
var multiple = parseFloat(Math.floor(tempnum / 6));
|
||||
if (calcRandom.gamble(50)) {
|
||||
availableTreatments[i][1] = tempnum + multiple;
|
||||
} else {
|
||||
availableTreatments[i][1] = tempnum - multiple;
|
||||
}
|
||||
|
||||
// Specifically for Treat
|
||||
availableTreatments[i][1] += calcRandom.random(-3, 3);
|
||||
|
||||
console.log(availableTreatments[i][0] + " | Base Cost: " + tempnum + " | HP: " + availableTreatments[i][2] + " | Modifier: " + multiple + " | Final: " + availableTreatments[i][1]);
|
||||
|
||||
message = availableTreatments[i][0] + " - **" + availableTreatments[i][1] + "**<:crystals:460974340247257089>\n```" + availableTreatments[i][3] + "```\n";
|
||||
//console.log(message);
|
||||
}
|
||||
}
|
||||
|
||||
function sortNumber(a,b) {
|
||||
return a - b;
|
||||
}
|
||||
|
||||
// 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);
|
||||
}
|
||||
|
||||
/*
|
||||
This function is for fixing a bug where an array gets edited, and possibly
|
||||
causing negative numbers due to my calcRandom +2 -2 change. This will not
|
||||
work with arrays containing objects (eg. JSON data).
|
||||
*/
|
||||
// https://blog.andrewray.me/how-to-clone-a-nested-array-in-javascript/
|
||||
function arrayClone(arr) {
|
||||
var i, copy;
|
||||
|
||||
if( Array.isArray( arr ) ) {
|
||||
copy = arr.slice( 0 );
|
||||
for( i = 0; i < copy.length; i++ ) {
|
||||
copy[ i ] = arrayClone( copy[ i ] );
|
||||
}
|
||||
return copy;
|
||||
} else if( typeof arr === 'object' ) {
|
||||
throw 'Cannot clone array containing an object!';
|
||||
} else {
|
||||
return arr;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Log our bot in (change the token by looking into the .env file)
|
||||
client.login(process.env.MORI_TOKEN);
|
||||
723
Mori/package-lock.json
generated
Normal file
723
Mori/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
Mori/package.json
Normal file
29
Mori/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"
|
||||
}
|
||||
}
|
||||
144
Mosiah/mosiah.js
Normal file
144
Mosiah/mosiah.js
Normal file
@@ -0,0 +1,144 @@
|
||||
// .env Variables
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
// Node Modules
|
||||
const Discord = require('discord.js');
|
||||
const client = new Discord.Client();
|
||||
const cron = require('node-cron');
|
||||
|
||||
// Bot Modules
|
||||
const dataRequest = require('../modules/dataRequest');
|
||||
const calcRandom = require('../modules/calcRandom');
|
||||
|
||||
const normalActivity = '!wager | Games of Fortune';
|
||||
|
||||
// State Machine
|
||||
var MosiahEnumState = {
|
||||
WAITING: 0,
|
||||
GAMBLING: 1
|
||||
}
|
||||
var mosiahState = MosiahEnumState.WAITING;
|
||||
|
||||
// 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);
|
||||
}
|
||||
|
||||
client.user.setStatus('invisible');
|
||||
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 => {
|
||||
// Ignores ALL bot messages
|
||||
if (message.author.bot) return;
|
||||
// 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;
|
||||
// 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 "wager":
|
||||
if (mosiahState == MosiahEnumState.GAMBLING)
|
||||
wagerMessage(message, args);
|
||||
else
|
||||
message.reply("I'm out and about right now. Don't wanna get found by the wrong peoples.");
|
||||
break;
|
||||
case "summon":
|
||||
if (isAdmin(message.author.id)) MosiahTurnOnline();
|
||||
break;
|
||||
case "vanish":
|
||||
if (isAdmin(message.author.id)) MosiahTurnOffline();
|
||||
break;
|
||||
case "rigged":
|
||||
message.channel.send("What are you talkin' about? I may look like it, being an outcaster from the city, but I'd never rip peoples off.");
|
||||
|
||||
// Testing out textadv payment
|
||||
if (isAdmin(message.author.id)) dataRequest.sendServerData("gambleWon", 50, message.author.id);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
client.on('error', console.error);
|
||||
|
||||
// Gets if user has an Overseers rank
|
||||
function isAdmin(userID) {
|
||||
var guild = client.guilds.get(process.env.SANCTUM_ID);
|
||||
return guild.members.get(userID).roles.find(role => role.name === "Overseers");
|
||||
}
|
||||
|
||||
function wagerMessage(message, args) {
|
||||
var amount = Math.floor(args[0]);
|
||||
var account = dataRequest.loadServerData("account", message.author.id);
|
||||
if (amount > 0) {
|
||||
if (amount <= account) {
|
||||
if (calcRandom.gamble(49)) {
|
||||
sendMessage(message.channel.id, "<@" + message.author.id + "> Ya got me. Here's your " + amount + " crystals. ");
|
||||
dataRequest.sendServerData("gambleWon", amount, message.author.id);
|
||||
} else {
|
||||
sendMessage(message.channel.id, "<@" + message.author.id + "> Looks like ya lost. Guess I'll keep your " + amount + " crystals. ");
|
||||
dataRequest.sendServerData("gambleLost", amount, message.author.id);
|
||||
}
|
||||
} else {
|
||||
sendMessage(message.channel.id, ":x: <@" + message.author.id + "> Yer a funny one ain't ya. Show me the crystals first.");
|
||||
}
|
||||
} else {
|
||||
sendMessage(message.channel.id, ":x: <@" + message.author.id + "> Aww c'mon. You wanna wager me nothin'?");
|
||||
}
|
||||
}
|
||||
|
||||
cron.schedule('0 7 * * Saturday', function(){
|
||||
console.log('Saturday join.' + new Date().toLocaleString());
|
||||
MosiahTurnOnline();
|
||||
});
|
||||
|
||||
cron.schedule('0 7 * * Sunday', function(){
|
||||
console.log('Sunday leave.' + new Date().toLocaleString());
|
||||
MosiahTurnOffline();
|
||||
});
|
||||
|
||||
function MosiahTurnOnline() {
|
||||
client.user.setStatus('online');
|
||||
client.channels.get(process.env.TAVERN_CHANNEL_ID).send("*Psst.* Anyone wanna wager a few **<:crystals:460974340247257089> Crystals** with me?");
|
||||
mosiahState = MosiahEnumState.GAMBLING;
|
||||
}
|
||||
|
||||
function MosiahTurnOffline() {
|
||||
client.user.setStatus('invisible');
|
||||
mosiahState = MosiahEnumState.WAITING;
|
||||
}
|
||||
|
||||
// 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);
|
||||
}
|
||||
|
||||
// Log our bot in
|
||||
client.login(process.env.MOSIAH_TOKEN);
|
||||
723
Mosiah/package-lock.json
generated
Normal file
723
Mosiah/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
Mosiah/package.json
Normal file
29
Mosiah/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"
|
||||
}
|
||||
}
|
||||
54
README.md
54
README.md
@@ -1,2 +1,52 @@
|
||||
# SANCTUM
|
||||
The SANCTUM Discord MMO repository! https://discord.gg/D7dyrVn
|
||||
#  SANCTUM
|
||||
[](https://discord.gg/D7dyrVn)
|
||||
[](https://discord.gg/mP98ZYv)
|
||||
# What is SANCTUM?
|
||||
SANCTUM is an open-source Discord MMO, with 200+ players.
|
||||
|
||||
- [Discord Game Invite Link](https://discord.gg/D7dyrVn)
|
||||
- [Developer's Discord](https://discord.gg/mP98ZYv)
|
||||
|
||||
# Run the bots
|
||||
## Requirements:
|
||||
You will need:
|
||||
- [Node.js](https://nodejs.org/en/) (recommended v8.12.0 LTS)
|
||||
|
||||
## Steps
|
||||
1. Clone the repo.
|
||||
|
||||
You can use programs like [Git](https://git-scm.com/), [SourceTree](https://www.sourcetreeapp.com/) or simply download the project, although you won't be able to submit changes as easily.
|
||||
|
||||
2. Rename the `.envdev` file to `.env`, and fill out tokens and channels.
|
||||
|
||||
Make sure you save it, and also don't push any of your tokens here! If you do though, consider them comprimised and then reset them.
|
||||
|
||||
3. Navigate via command-line to a bot's folder, install dependancies, and run it!
|
||||
|
||||
Make sure you're in the project folder!
|
||||
On Windows, you can hold Shift and Right Click the folder to get the option of a command prompt, inside that folder.
|
||||
```bash
|
||||
# You have to be in the project folder first to navigate through it
|
||||
cd "A.D.A.M."
|
||||
npm i
|
||||
node adam.js
|
||||
```
|
||||
|
||||
4. ???
|
||||
|
||||
5. Profit! You did it, unless something has happened along the way. ~~Probably likely, sadly.~~
|
||||
|
||||
## Quality of Life
|
||||
|
||||
We recommend [nodemon](https://nodemon.io/) for reloading bots automatically, instead of `Ctrl+C`ing in and out of bots when you need a restart.
|
||||
|
||||
# Join the SANCTUM Development Team
|
||||
We're looking for:
|
||||
- Discord.js and/or PHP programmers
|
||||
- Artists
|
||||
- Writers
|
||||
- Designers
|
||||
- Producers
|
||||
- and Testers!
|
||||
|
||||
Join the [SANCTUM Developers](https://discord.gg/mP98ZYv) Discord for more info!
|
||||
|
||||
723
Rey/package-lock.json
generated
Normal file
723
Rey/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
Rey/package.json
Normal file
29
Rey/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"
|
||||
}
|
||||
}
|
||||
241
Rey/rey.js
Normal file
241
Rey/rey.js
Normal file
@@ -0,0 +1,241 @@
|
||||
// .env Variables
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
// Node Modules
|
||||
const Discord = require('discord.js');
|
||||
const client = new Discord.Client();
|
||||
const cron = require('node-cron');
|
||||
const request = require('sync-request');
|
||||
|
||||
// Bot Modules
|
||||
const dataRequest = require('../modules/dataRequest');
|
||||
const calcRandom = require('../modules/calcRandom');
|
||||
|
||||
// State Machine
|
||||
var ReyEnumState = {
|
||||
WAITING: 0,
|
||||
SCAVENGING: 1
|
||||
}
|
||||
var reyState = ReyEnumState.WAITING;
|
||||
|
||||
// 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);
|
||||
}
|
||||
|
||||
client.user.setStatus('invisible');
|
||||
client.user.setActivity('');
|
||||
console.log(`Connected! \
|
||||
\nLogged in as: ${client.user.username} - (${client.user.id})`);
|
||||
});
|
||||
|
||||
// Create an event listener for messages
|
||||
client.on('message', async message => {
|
||||
// Ignores ALL bot messages
|
||||
if (message.author.bot) return;
|
||||
// Message has to be in Outskirts or Test
|
||||
if (!(message.channel.id === process.env.OUTSKIRTS_CHANNEL_ID
|
||||
|| message.channel.id === process.env.TEST_CHANNEL_ID)) 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 "scavenge":
|
||||
scavengeMessage(message);
|
||||
break;
|
||||
case "s":
|
||||
scavengeMessage(message);
|
||||
break;
|
||||
case "materials":
|
||||
materialsMessage(message, args);
|
||||
break;
|
||||
case "m":
|
||||
materialsMessage(message, args);
|
||||
break;
|
||||
case "summon":
|
||||
if (message.author.id === '200340393596944384' || message.author.id === '163770616581718017')
|
||||
ReySpawnTimer(process.env.OUTSKIRTS_CHANNEL_ID);
|
||||
break;
|
||||
case "vanish":
|
||||
if (message.author.id === '200340393596944384' || message.author.id === '163770616581718017')
|
||||
ReyTurnOffline(process.env.OUTSKIRTS_CHANNEL_ID);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
client.on('error', console.error);
|
||||
|
||||
function scavengeMessage(message) {
|
||||
if (reyState == ReyEnumState.SCAVENGING) {
|
||||
scavenge(message.author.id, message.channel.id);
|
||||
} else {
|
||||
// Tell that Rey is out of the city
|
||||
message.reply("I'm out of the city for a while. I'll be back later!");
|
||||
}
|
||||
}
|
||||
|
||||
function materialsMessage(message, args) {
|
||||
if (args[0] === undefined) {
|
||||
var scavengeResponse = String(dataRequest.loadServerData("artifactsGet", message.author.id));
|
||||
var items = scavengeResponse.split(",");
|
||||
var response = items[0];
|
||||
var ultrarare = parseFloat(items[1]);
|
||||
var rare = parseFloat(items[2]);
|
||||
var uncommon = parseFloat(items[3]);
|
||||
var common = parseFloat(items [4]);
|
||||
var scrap = parseFloat(items[5]);
|
||||
var totalQuantity = ultrarare + rare + uncommon + common + scrap;
|
||||
|
||||
if (response == "success"){
|
||||
if (totalQuantity > 0) {
|
||||
var messageContent = "<@" + message.author.id + "> ***Here\'s what you found so far:***\n\n";
|
||||
if (scrap > 0) { messageContent += "<:scrap:463436564379336715> **" + scrap + "**\t\t"; }
|
||||
if (common > 0) { messageContent += "<:mcloth:462682568483930123> **" + common + "**\t\t"; }
|
||||
if (uncommon > 0) { messageContent += "<:mmetal:462682568920137728> **" + uncommon + "**\t\t"; }
|
||||
if (rare > 0) { messageContent += "<:melectronics:462682568911749120> **" + rare + "**\t\t"; }
|
||||
if (ultrarare > 0) { messageContent += "<:mgem:462450060718768148> **" + ultrarare + "**\n\n"; }
|
||||
sendMessage(message.channel.id, messageContent);
|
||||
} else {
|
||||
sendMessage(message.channel.id, ":x: <@" + message.author.id + "> Looks like you don\'t have any materials yet. Help me out on a ***!scavenge***.");
|
||||
}
|
||||
} else {
|
||||
sendMessage(message.channel.id, ":x: <@" + message.author.id + "> Sorry, something went wrong. Give me a minute.");
|
||||
}
|
||||
} else {
|
||||
sendMessage(message.channel.id, ":x: <@" + message.author.id + "> Sorry, not sure what you want me to do.");
|
||||
}
|
||||
}
|
||||
|
||||
//cron.schedule('*/10 * * * *', function() {
|
||||
cron.schedule('0 */2 * * *', function() {
|
||||
console.log('Running 2 hourly process...');
|
||||
if (reyState == ReyEnumState.WAITING) {
|
||||
ReySpawnTimer(process.env.OUTSKIRTS_CHANNEL_ID);
|
||||
}
|
||||
});
|
||||
|
||||
// Async Waiting
|
||||
function sleep(time) {
|
||||
return new Promise((resolve, reject) => {
|
||||
setTimeout(resolve, time);
|
||||
});
|
||||
}
|
||||
|
||||
// Rey spawn timer
|
||||
async function ReySpawnTimer(channel) {
|
||||
// Random from 6 sec up to 15 min
|
||||
var startTime = calcRandom.random(6000, 20 * 60 * 1000);
|
||||
//var startTime = 0;
|
||||
await sleep(startTime);
|
||||
|
||||
client.user.setStatus('online');
|
||||
client.user.setActivity('Scavenging...');
|
||||
sendMessage(channel, `***Hey y\'all! Let's scavenge us some materials!***\
|
||||
\nUse !scavenge to get some materials for **3** <:crystals:460974340247257089> and **1 STAM**.`);
|
||||
reyState = ReyEnumState.SCAVENGING;
|
||||
|
||||
// Start time plus another 6 - 10 min
|
||||
//var leaveTime = startTime + (2 * 60 * 1000); // Debug 2 Minute Mode
|
||||
var leaveTime = calcRandom.random(6 * 60 * 1000, 10 * 60 * 1000);
|
||||
await sleep(leaveTime);
|
||||
|
||||
sendMessage(channel, "Getting ready to pack up here, I think we found enough.\n\n:warning: ***LAST CALL!***");
|
||||
await sleep(30000);
|
||||
ReyTurnOffline(channel);
|
||||
}
|
||||
|
||||
function ReyTurnOffline(channel) {
|
||||
sendMessage(channel, `Alright ladies and gents... I'm out of here. Nice finding stuff with y'all! \
|
||||
\n\n:v: ***HEADS BACK TO THE CITY***`);
|
||||
client.user.setStatus('invisible');
|
||||
client.user.setActivity('');
|
||||
reyState = ReyEnumState.WAITING;
|
||||
}
|
||||
|
||||
// Scavenge logic
|
||||
function scavenge(userID, channelID) {
|
||||
var attacker = String(dataRequest.loadServerData("userStats", userID));
|
||||
var attackerStamina = parseFloat(attacker.split(",")[2]);
|
||||
var attackerHealth = parseFloat(attacker.split(",")[3]);
|
||||
var attackerWallet = parseFloat(attacker.split(",")[6]);
|
||||
|
||||
var staminaCost = 1;
|
||||
var crystalCost = 3;
|
||||
if (attackerHealth > 0) {
|
||||
if (attackerStamina >= staminaCost) {
|
||||
if (attackerWallet >= crystalCost) {
|
||||
var scavengeResponse = String(dataRequest.sendServerData("scavenge", staminaCost, userID, crystalCost));
|
||||
var items = scavengeResponse.split(",");
|
||||
var response = parseFloat(items[0]);
|
||||
var ultrarare = parseFloat(items[1]);
|
||||
var rare = parseFloat(items[2]);
|
||||
var uncommon = parseFloat(items[3]);
|
||||
var common = parseFloat(items [4]);
|
||||
var scrap = parseFloat(items[5]);
|
||||
|
||||
var dialogOptions = [
|
||||
'Hey that works!',
|
||||
'That\'s interesting... Should be able to use that.',
|
||||
'That\'s really useful.',
|
||||
'Great find!',
|
||||
'Wish I found as much stuff as you.',
|
||||
'You\'re on a roll here.',
|
||||
'You\'re better than me at this!',
|
||||
'Nice! Should fetch you a pretty penny.',
|
||||
'That\'s awesome.',
|
||||
'You\'re good at this.'
|
||||
];
|
||||
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
var message = "<@" + userID + "> \t\t";
|
||||
message += "<:crystals:460974340247257089> **-" + crystalCost + "**\t\t"
|
||||
if (scrap > 0) { message += "<:scrap:463436564379336715> **+" + scrap + "**\t\t"; }
|
||||
if (common > 0) { message += "<:mcloth:462682568483930123> **+" + common + "**\t\t"; }
|
||||
if (uncommon > 0) { message += "<:mmetal:462682568920137728> **+" + uncommon + "**\t\t"; }
|
||||
if (rare > 0) { message += "<:melectronics:462682568911749120> **+" + rare + "**\t\t"; }
|
||||
if (ultrarare > 0) { message += "<:mgem:462450060718768148> **+" + ultrarare + "**\n\n"; }
|
||||
message += "\n***" + dialogOptions[randomNumber] + "*** \n"
|
||||
sendMessage(channelID, message);
|
||||
} else {
|
||||
sendMessage(channelID, ":x: <@" + userID + "> You don\'t have enough crystals to sustain you while you\'re out. Bad idea.");
|
||||
}
|
||||
} else {
|
||||
sendMessage(channelID, ":x: <@" + userID + "> You don\'t have enough stamina for that right now. You should probably get some rest.");
|
||||
}
|
||||
} else {
|
||||
sendMessage(channelID, ":x: <@" + userID + "> You\'re in really bad shape... You should go see <@461294299515191306> before you go on a scavenge.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 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);
|
||||
}
|
||||
|
||||
// Log our bot in
|
||||
client.login(process.env.REY_TOKEN);
|
||||
11
TextAdv/dungeonClass.js
Normal file
11
TextAdv/dungeonClass.js
Normal file
@@ -0,0 +1,11 @@
|
||||
// Dungeons
|
||||
module.exports = class DungeonRaidInstance {
|
||||
constructor(room, players) {
|
||||
this.room = room;
|
||||
this.players = players;
|
||||
this.location;
|
||||
this.state = DungeonState.WAITING_FOR_USERS;
|
||||
this.dialogObj;
|
||||
this.isTyping;
|
||||
}
|
||||
}
|
||||
69
TextAdv/package-lock.json
generated
Normal file
69
TextAdv/package-lock.json
generated
Normal file
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"name": "nodejs-elasticbeanstalk",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"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=="
|
||||
},
|
||||
"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.0.0",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.0.0.tgz",
|
||||
"integrity": "sha512-FlWbnhgjtwD+uNLUGHbMykMOYQaTivdHEmYwAKFjn6GKe/CqY0fNae93ZHTd20snh9ZLr8mTzIL9m0APQ1pjQg=="
|
||||
},
|
||||
"long": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
|
||||
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
|
||||
},
|
||||
"node-cron": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/node-cron/-/node-cron-1.2.1.tgz",
|
||||
"integrity": "sha1-jJC8XccjpWKJsHhmVatKHEy2A2g="
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"snekfetch": {
|
||||
"version": "3.6.4",
|
||||
"resolved": "https://registry.npmjs.org/snekfetch/-/snekfetch-3.6.4.tgz",
|
||||
"integrity": "sha512-NjxjITIj04Ffqid5lqr7XdgwM7X61c/Dns073Ly170bPQHLm6jkmelye/eglS++1nfTWktpP6Y2bFXjdPlQqdw=="
|
||||
},
|
||||
"tweetnacl": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz",
|
||||
"integrity": "sha1-cT2LgY2kIGh0C/aDhtBHnmb8ins="
|
||||
},
|
||||
"ws": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
18
TextAdv/package.json
Normal file
18
TextAdv/package.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"name": "nodejs-elasticbeanstalk",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "server.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1",
|
||||
"start": "node server.js"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"discord.js": "^11.4.2",
|
||||
"dotenv": "^6.0.0",
|
||||
"node-cron": "^1.2.1"
|
||||
},
|
||||
"devDependencies": {}
|
||||
}
|
||||
57
TextAdv/playerClass.js
Normal file
57
TextAdv/playerClass.js
Normal file
@@ -0,0 +1,57 @@
|
||||
module.exports = class PlayerClass {
|
||||
constructor (userID, factionID, combatClass, badge, leader) {
|
||||
this.userID = userID;
|
||||
this.factionID = factionID;
|
||||
this.combatClass = combatClass;
|
||||
this.badge = badge;
|
||||
this.leader = leader;
|
||||
this.commander;
|
||||
}
|
||||
|
||||
get factionEmote() {
|
||||
//server.members.get(factionID).roles.has(process.env.GROUP_A_ROLE)
|
||||
// Obsidian Tech
|
||||
if (this.factionID === process.env.GROUP_A_ROLE) {
|
||||
return "<:anarchy:460990297099337750>"
|
||||
// Genesis Command
|
||||
} else if (this.factionID === process.env.GROUP_B_ROLE) {
|
||||
return "<:order:460991638152413194>";
|
||||
// The Hand
|
||||
} else if (this.factionID === process.env.GROUP_C_ROLE) {
|
||||
return "<:religionhand:461582719051104276>"
|
||||
// No faction
|
||||
} else if (this.factionID === "none") {
|
||||
return ":beginner:";
|
||||
// Unknown
|
||||
} else {
|
||||
return ":grey_question:";
|
||||
}
|
||||
}
|
||||
|
||||
// Combat Class emote
|
||||
get combatClassEmote() {
|
||||
if (this.combatClass.toLowerCase() === "tank") {
|
||||
return ":shield:";
|
||||
} else if (this.combatClass.toLowerCase() === "rogue") {
|
||||
return ":dagger:";
|
||||
} else if (this.combatClass.toLowerCase() === "dps melee") {
|
||||
return ":crossed_swords:";
|
||||
} else if (this.combatClass.toLowerCase() === "support") {
|
||||
return ":heart:";
|
||||
} else if (this.combatClass.toLowerCase() === "dps range") {
|
||||
return ":bow_and_arrow:";
|
||||
} else {
|
||||
return ":grey_question:";
|
||||
}
|
||||
}
|
||||
|
||||
get isLeaderText() {
|
||||
if (this.leader) {
|
||||
return "(Leader)";
|
||||
} else if (this.commander) {
|
||||
return "(Commander)";
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
746
TextAdv/rooms.json
Normal file
746
TextAdv/rooms.json
Normal file
@@ -0,0 +1,746 @@
|
||||
{
|
||||
"rooms": ["hellsgate"],
|
||||
"items": {
|
||||
"key": {
|
||||
"name": "Key",
|
||||
"emote": ":key:",
|
||||
"info": "The key unlocks chests and certain doors.",
|
||||
"amount": 1,
|
||||
"dungeonOnly": true
|
||||
},
|
||||
"dungeon_key": {
|
||||
"name": "Dungeon Key",
|
||||
"emote": ":key2:",
|
||||
"info": "It's the dungeon key for moving down the floors.",
|
||||
"amount": 1,
|
||||
"dungeonOnly": true
|
||||
},
|
||||
"crystals": {
|
||||
"name": "Crystals",
|
||||
"emote": "<:crystals:460974340247257089>",
|
||||
"internal": true
|
||||
}
|
||||
},
|
||||
"hellsgate": {
|
||||
"name": "Hell's Gate",
|
||||
"id": "hellsgate",
|
||||
"channel": "464238060243124245",
|
||||
"color": "#e67e22",
|
||||
"entrance": {
|
||||
"name": "Dungeon Entrance",
|
||||
"descriptions": [
|
||||
{ "text": "The entrance is a bunch of code cobbled together to make a half-working mass of \"Dungeon\". Hopefully it doesn't kill you, or the party." },
|
||||
{ "text": "\nThere is a tired **!traveler** that seemed to have learned that idea all too well, try talking to him." }
|
||||
],
|
||||
"image_url": "https://dummyimage.com/800x400/241f1a/e82525.png&text=Room",
|
||||
"northtext": "Move **!north** to enter the dungeon.",
|
||||
"easttext": "",
|
||||
"southtext": "",
|
||||
"westtext": "",
|
||||
"floor": 1,
|
||||
"connections": {
|
||||
"north": "room_1"
|
||||
},
|
||||
"traveler": {
|
||||
"npc": true,
|
||||
"command": true,
|
||||
"name": "Traveler",
|
||||
"descriptions": [
|
||||
{ "waitBegin": 2000, "waitEnd": 1000, "text": "Hello ${leader}, be careful in there." },
|
||||
{ "waitBegin": 2000, "waitEnd": 1000, "text": "There's a few deadly Ravagers that hurt me real bad." },
|
||||
{ "waitBegin": 2000, "waitEnd": 1000, "text": "Hopefully you're all in top shape, right?" }
|
||||
],
|
||||
"optionsDescription": { "waitBegin": 800, "waitEnd": 0, "text": "**!yes** or **!no**?" },
|
||||
"options": [
|
||||
{"command": "yes", "emote": "✅"},
|
||||
{"command": "no", "emote": "❌"}
|
||||
],
|
||||
"yes": {
|
||||
"command": true,
|
||||
"name": "Traveler",
|
||||
"descriptions": [
|
||||
{ "waitBegin": 3000, "waitEnd": 2000, "text": "Good to know, hopefully you can walk out alive. Wish you luck!" }
|
||||
],
|
||||
"lastCommand": true
|
||||
},
|
||||
"no": {
|
||||
"command": true,
|
||||
"name": "Traveler",
|
||||
"descriptions": [
|
||||
{ "waitBegin": 3000, "waitEnd": 2000, "text": "Oh... well good luck anyhow. If you just want to bail out, just **!leave**. You won't get your **<:crystals:460974340247257089> Crystals** back, though." }
|
||||
],
|
||||
"lastCommand": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"room_1": {
|
||||
"name": "Dungeon Room",
|
||||
"descriptions": [
|
||||
{"text": "You can feel the hot air hitting your face entering. Hot lava is seeping out of the rocks. You should watch your step." }
|
||||
],
|
||||
"image_url": "https://dummyimage.com/800x400/241f1a/e82525.png&text=Dungeon+Room",
|
||||
"northtext": "You can hear loud groans **!north** that don't sound human, ",
|
||||
"easttext": "",
|
||||
"southtext": "Go back with **!south**, ",
|
||||
"westtext": "or investigate the chest down **!west**.",
|
||||
"floor": 1,
|
||||
"connections": {
|
||||
"north": "ravager_room_1",
|
||||
"south": "entrance",
|
||||
"west": "locked_chest_room_1"
|
||||
}
|
||||
},
|
||||
"locked_chest_room_1": {
|
||||
"name": "A Locked Chest",
|
||||
"descriptions": [
|
||||
{"text": "You found a locked **!chest**! Wonder what lies inside it. Hopefully there is something valuable."}
|
||||
],
|
||||
"image_url": "https://dummyimage.com/800x400/593521/f5c91b.png&text=Chest",
|
||||
"northtext": "",
|
||||
"easttext": "Leave the chest by typing **!east**.",
|
||||
"southtext": "",
|
||||
"westtext": "",
|
||||
"floor": 1,
|
||||
"connections": {
|
||||
"east": "room_1"
|
||||
},
|
||||
"chest": {
|
||||
"command": true,
|
||||
"type": "chest",
|
||||
"removeItem": ["key"],
|
||||
"embed": {
|
||||
"formatting": "author_title_image_desc",
|
||||
"setAuthor": {"title": "${dungeon.room.name}", "image": "${profile_pic}"},
|
||||
"setTitle": "A Locked Chest",
|
||||
"setDescription": "This chest requires a **:key: Key** to open.\n**:closed_lock_with_key: Unlock** chest with the key.\n:lock_with_ink_pen: **Lockpick** chest, and risk breaking the lock.\n:x: **Exit** options for the chest.",
|
||||
"waitBegin": 0,
|
||||
"waitEnd": 0
|
||||
},
|
||||
"options": [
|
||||
{"command": "unlock", "emote": "🔐"},
|
||||
{"command": "lockpick", "emote": "🔏"},
|
||||
{"command": "exit", "emote": "❌"}
|
||||
],
|
||||
"unlock": {
|
||||
"command": true,
|
||||
"internal": true,
|
||||
"type": "chest",
|
||||
"moveFrom": "locked_chest_room_1",
|
||||
"moveTo": "empty_chest_room_1",
|
||||
"required": ["key"],
|
||||
"objects": [
|
||||
[
|
||||
{
|
||||
"name": "crystals",
|
||||
"amount": [5, 10]
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"name": "crystals",
|
||||
"amount": [18, 22]
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"lockpick": {
|
||||
"command": true,
|
||||
"internal": true,
|
||||
"type": "chest",
|
||||
"moveFrom": "locked_chest_room_1",
|
||||
"moveToFail": "broken_chest_room_1",
|
||||
"moveTo": "empty_chest_room_1"
|
||||
},
|
||||
"exit": {
|
||||
"command": true,
|
||||
"internal": true,
|
||||
"type": "chest",
|
||||
"moveTo": "locked_chest_room_1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"empty_chest_room_1": {
|
||||
"name": "An Empty Chest",
|
||||
"descriptions": [
|
||||
{"text": "You have already opened this chest."}
|
||||
],
|
||||
"image_url": "https://dummyimage.com/800x400/593521/f5c91b.png&text=Chest+(Opened)",
|
||||
"northtext": "",
|
||||
"easttext": "Leave the chest by typing **!east**.",
|
||||
"southtext": "",
|
||||
"westtext": "",
|
||||
"floor": 1,
|
||||
"connections": {
|
||||
"east": "room_1"
|
||||
}
|
||||
},
|
||||
"broken_chest_room_1": {
|
||||
"name": "A Broken Chest",
|
||||
"descriptions": [
|
||||
{"text": "This chest has failed to be lockpicked, and cannot be opened."}
|
||||
],
|
||||
"image_url": "https://dummyimage.com/800x400/593521/f5c91b.png&text=Chest+(Broken)",
|
||||
"northtext": "",
|
||||
"easttext": "Leave the chest by typing **!east**.",
|
||||
"southtext": "",
|
||||
"westtext": "",
|
||||
"floor": 1,
|
||||
"connections": {
|
||||
"east": "room_1"
|
||||
}
|
||||
},
|
||||
"ravager_room_1": {
|
||||
"name": "Ravager Room",
|
||||
"descriptions": [
|
||||
{"text": "You found a starving <@458036985353732097>, that hasn't feasted on a traveler for days."}
|
||||
],
|
||||
"image_url": "https://dummyimage.com/800x400/e62b4a/422626.png&text=Ravager",
|
||||
"northtext": "",
|
||||
"easttext": "To the party's **!east**, you can see something shiny. ",
|
||||
"southtext": "Move **!south** to go back. ",
|
||||
"westtext": "Move **!west** to enter another room.",
|
||||
"floor": 1,
|
||||
"ravager": {
|
||||
"level": [4, 5]
|
||||
},
|
||||
"connections": {
|
||||
"east": "key_room_1",
|
||||
"south": "room_1",
|
||||
"west": "room_2"
|
||||
}
|
||||
},
|
||||
"key_room_1": {
|
||||
"name": "A Key",
|
||||
"descriptions": [
|
||||
{"text": "You found a **!key**! You should pick it up."}
|
||||
],
|
||||
"objects": ["key"],
|
||||
"image_url": "https://dummyimage.com/800x400/73778a/faf5f5.png&text=Key",
|
||||
"northtext": "",
|
||||
"easttext": "",
|
||||
"southtext": "",
|
||||
"westtext": "Go back with **!west**",
|
||||
"floor": 1,
|
||||
"connections": {
|
||||
"west": "ravager_room_1"
|
||||
},
|
||||
"key": {
|
||||
"command": "true",
|
||||
"internal": "true",
|
||||
"moveTo": "empty_key_room_1",
|
||||
"moveFrom": "key_room_1",
|
||||
"pickup": [
|
||||
{"item": "key"}
|
||||
]
|
||||
}
|
||||
},
|
||||
"empty_key_room_1": {
|
||||
"name": "A Key",
|
||||
"descriptions": [
|
||||
{"text": "The key here has been picked up."}
|
||||
],
|
||||
"image_url": "https://dummyimage.com/800x400/73778a/faf5f5.png&text=Key",
|
||||
"northtext": "",
|
||||
"easttext": "",
|
||||
"southtext": "",
|
||||
"westtext": "Go back with **!west**",
|
||||
"floor": 1,
|
||||
"connections": {
|
||||
"west": "ravager_room_1"
|
||||
}
|
||||
},
|
||||
"room_2": {
|
||||
"name": "Dungeon Room",
|
||||
"descriptions": [
|
||||
{"text": "Two rooms can be seen ahead, both with chests."}
|
||||
],
|
||||
"image_url": "https://dummyimage.com/800x400/241f1a/e82525.png&text=Dungeon+Room",
|
||||
"northtext": "Move **!north** to go to another room with another groan. ",
|
||||
"easttext": "Back **!east** is a room filled with unconscious ones. ",
|
||||
"southtext": "",
|
||||
"westtext": "Move **!west** to check out another chest.",
|
||||
"floor": 1,
|
||||
|
||||
"connections": {
|
||||
"north": "ravager_room_2",
|
||||
"east": "ravager_room_1",
|
||||
"west": "locked_chest_room_2"
|
||||
}
|
||||
},
|
||||
"locked_chest_room_2": {
|
||||
"name": "A Locked Chest",
|
||||
"descriptions": [
|
||||
{"text": "You found a locked **!chest**! Wonder what lies inside it. Hopefully there is something valuable."}
|
||||
],
|
||||
"image_url": "https://dummyimage.com/800x400/593521/f5c91b.png&text=Chest",
|
||||
"northtext": "",
|
||||
"easttext": "Leave the chest by typing **!east**.",
|
||||
"southtext": "",
|
||||
"westtext": "",
|
||||
"floor": 1,
|
||||
"connections": {
|
||||
"east": "room_2"
|
||||
},
|
||||
"chest": {
|
||||
"command": true,
|
||||
"type": "chest",
|
||||
"removeItem": ["key"],
|
||||
"embed": {
|
||||
"formatting": "author_title_image_desc",
|
||||
"setAuthor": {"title": "${dungeon.room.name}", "image": "${profile_pic}"},
|
||||
"setTitle": "A Locked Chest",
|
||||
"setDescription": "This chest requires a **:key: Key** to open.\n**:closed_lock_with_key: Unlock** chest with the key.\n:lock_with_ink_pen: **Lockpick** chest, and risk breaking the lock.\n:x: **Exit** options for the chest.",
|
||||
"waitBegin": 0,
|
||||
"waitEnd": 0
|
||||
},
|
||||
"options": [
|
||||
{"command": "unlock", "emote": "🔐"},
|
||||
{"command": "lockpick", "emote": "🔏"},
|
||||
{"command": "exit", "emote": "❌"}
|
||||
],
|
||||
"unlock": {
|
||||
"command": true,
|
||||
"internal": true,
|
||||
"type": "chest",
|
||||
"moveFrom": "locked_chest_room_2",
|
||||
"moveTo": "empty_chest_room_2",
|
||||
"required": ["key"],
|
||||
"objects": [
|
||||
[
|
||||
{
|
||||
"name": "crystals",
|
||||
"amount": [5, 10]
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"name": "crystals",
|
||||
"amount": [18, 22]
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"lockpick": {
|
||||
"command": true,
|
||||
"internal": true,
|
||||
"type": "chest",
|
||||
"moveFrom": "locked_chest_room_2",
|
||||
"moveToFail": "broken_chest_room_2",
|
||||
"moveTo": "empty_chest_room_2"
|
||||
},
|
||||
"exit": {
|
||||
"command": true,
|
||||
"internal": true,
|
||||
"type": "chest",
|
||||
"moveTo": "locked_chest_room_2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"empty_chest_room_2": {
|
||||
"name": "An Empty Chest",
|
||||
"descriptions": [
|
||||
{"text": "You have already opened this chest."}
|
||||
],
|
||||
"image_url": "https://dummyimage.com/800x400/593521/f5c91b.png&text=Chest+(Opened)",
|
||||
"northtext": "",
|
||||
"easttext": "Leave the chest by typing **!east**.",
|
||||
"southtext": "",
|
||||
"westtext": "",
|
||||
"floor": 1,
|
||||
"connections": {
|
||||
"east": "room_2"
|
||||
}
|
||||
},
|
||||
"broken_chest_room_2": {
|
||||
"name": "A Broken Chest",
|
||||
"descriptions": [
|
||||
{"text": "This chest has failed to be lockpicked, and cannot be opened."}
|
||||
],
|
||||
"image_url": "https://dummyimage.com/800x400/593521/f5c91b.png&text=Chest+(Broken)",
|
||||
"northtext": "",
|
||||
"easttext": "Leave the chest by typing **!east**.",
|
||||
"southtext": "",
|
||||
"westtext": "",
|
||||
"floor": 1,
|
||||
"connections": {
|
||||
"east": "room_2"
|
||||
}
|
||||
},
|
||||
"ravager_room_2": {
|
||||
"name": "Ravager Room",
|
||||
"descriptions": [
|
||||
{"text": "You found another <@458036985353732097>!"}
|
||||
],
|
||||
"image_url": "https://dummyimage.com/800x400/e62b4a/422626.png&text=Ravager",
|
||||
"northtext": "Move **!north** to find a key. ",
|
||||
"easttext": "",
|
||||
"southtext": "Move **!south** to go back. ",
|
||||
"westtext": "",
|
||||
"floor": 1,
|
||||
"ravager": {
|
||||
"level": [6, 7]
|
||||
},
|
||||
"connections": {
|
||||
"north": "key_room_2",
|
||||
"south": "room_2"
|
||||
}
|
||||
},
|
||||
"key_room_2": {
|
||||
"name": "A Key",
|
||||
"descriptions": [
|
||||
{"text": "You found a **!key**! You should pick it up."}
|
||||
],
|
||||
"objects": ["key"],
|
||||
"image_url": "https://dummyimage.com/800x400/73778a/faf5f5.png&text=Key",
|
||||
"northtext": "",
|
||||
"easttext": "Snarls are coming from the **!east**. ",
|
||||
"southtext": "Go back with **!south**. ",
|
||||
"westtext": "There's another key down **!west**, but at a distance it looks oddly different.",
|
||||
"floor": 1,
|
||||
"connections": {
|
||||
"east": "ravager_room_3",
|
||||
"west": "dungeon_key_room_1",
|
||||
"south": "ravager_room_2"
|
||||
},
|
||||
"key": {
|
||||
"command": "true",
|
||||
"internal": "true",
|
||||
"moveTo": "empty_key_room_2",
|
||||
"moveFrom": "key_room_2",
|
||||
"pickup": [
|
||||
{"item": "key"}
|
||||
]
|
||||
}
|
||||
},
|
||||
"empty_key_room_2": {
|
||||
"name": "A Key",
|
||||
"descriptions": [
|
||||
{"text": "The key here has been picked up."}
|
||||
],
|
||||
"image_url": "https://dummyimage.com/800x400/73778a/faf5f5.png&text=Key",
|
||||
"northtext": "",
|
||||
"easttext": "Snarls are coming from the **!east**. ",
|
||||
"southtext": "Go back with **!south**. ",
|
||||
"westtext": "There's another key down **!west**, but at a distance it looks oddly different.",
|
||||
"floor": 1,
|
||||
"connections": {
|
||||
"east": "ravager_room_3",
|
||||
"west": "dungeon_key_room_1",
|
||||
"south": "ravager_room_2"
|
||||
}
|
||||
},
|
||||
"dungeon_key_room_1": {
|
||||
"name": "The Dungeon Key",
|
||||
"descriptions": [
|
||||
{"text": "You found the dungeon **!key**! This item will be important later, likely."}
|
||||
],
|
||||
"objects": ["key"],
|
||||
"image_url": "https://dummyimage.com/800x400/555b66/a9b4c9.png&text=+Dungeon+Key",
|
||||
"northtext": "",
|
||||
"easttext": "Go back with **!east**.",
|
||||
"southtext": "",
|
||||
"westtext": "",
|
||||
"floor": 1,
|
||||
"connections": {
|
||||
"east": "key_room_2"
|
||||
},
|
||||
"key": {
|
||||
"command": "true",
|
||||
"internal": "true",
|
||||
"moveTo": "empty_dungeon_key_room_1",
|
||||
"moveFrom": "dungeon_key_room_1",
|
||||
"pickup": [
|
||||
{"item": "dungeon_key"},
|
||||
{"item": "crystals", "amount": [3, 5]}
|
||||
]
|
||||
}
|
||||
},
|
||||
"empty_dungeon_key_room_1": {
|
||||
"name": "The Dungeon Key",
|
||||
"descriptions": [
|
||||
{"text": "The dungeon key here has been picked up."}
|
||||
],
|
||||
"objects": ["key"],
|
||||
"image_url": "https://dummyimage.com/800x400/555b66/a9b4c9.png&text=+Dungeon+Key",
|
||||
"northtext": "",
|
||||
"easttext": "Go back with **!east**.",
|
||||
"southtext": "",
|
||||
"westtext": "",
|
||||
"floor": 1,
|
||||
"connections": {
|
||||
"east": "key_room_2"
|
||||
}
|
||||
},
|
||||
"ravager_room_3": {
|
||||
"name": "Ravager Room",
|
||||
"descriptions": [
|
||||
{"text": "You found a high level <@458036985353732097>!"}
|
||||
],
|
||||
"image_url": "https://dummyimage.com/800x400/e62b4a/422626.png&text=Ravager",
|
||||
"northtext": "",
|
||||
"easttext": "Move **!east** towards the next room, containing two locked doors. ",
|
||||
"southtext": "",
|
||||
"westtext": "Move back **!west** to find the room with a key again.",
|
||||
"floor": 1,
|
||||
"ravager": {
|
||||
"level": [7, 8]
|
||||
},
|
||||
"connections": {
|
||||
"east": "room_3",
|
||||
"west": "key_room_2"
|
||||
}
|
||||
},
|
||||
"room_3": {
|
||||
"name": "Dungeon Room",
|
||||
"descriptions": [
|
||||
{"text": "Two locked doors lie before you. They may hold some significance."}
|
||||
],
|
||||
"image_url": "https://dummyimage.com/800x400/241f1a/e82525.png&text=Dungeon+Room",
|
||||
"northtext": "Move **!north** to enter the first door. ",
|
||||
"easttext": "Move **!east** to enter the second door. ",
|
||||
"southtext": "",
|
||||
"westtext": "To move back, go **!west**.",
|
||||
"floor": 1,
|
||||
"connections": {
|
||||
"north": "locked_door_room_1",
|
||||
"east": "locked_door_room_2",
|
||||
"west": "ravager_room_3"
|
||||
}
|
||||
},
|
||||
"locked_door_room_1": {
|
||||
"name": "A Locked Door",
|
||||
"descriptions": [
|
||||
{"text": "The first locked door locks growling and scratching here. You can check out the door with **!door**."}
|
||||
],
|
||||
"image_url": "https://dummyimage.com/800x400/bfa897/7a4e4e.png&text=Locked+Door",
|
||||
"northtext": "",
|
||||
"easttext": "",
|
||||
"southtext": "To move back, go **!south**.",
|
||||
"westtext": "",
|
||||
"floor": 1,
|
||||
"connections": {
|
||||
"south": "room_3"
|
||||
},
|
||||
"door": {
|
||||
"command": true,
|
||||
"type": "door",
|
||||
"removeItem": [{"item": "key", "amount": 1}],
|
||||
"embed": {
|
||||
"formatting": "author_title_image_desc",
|
||||
"setAuthor": {"title": "${dungeon.room.name}", "image": "${profile_pic}"},
|
||||
"setTitle": "A Locked Door",
|
||||
"setDescription": "This door requires a **:key: Key** to open.\n**:closed_lock_with_key: Unlock** door with the key.\n:lock_with_ink_pen: **Lockpick** door, and risk breaking the lock.\n:x: **Exit** options for the door.",
|
||||
"waitBegin": 0,
|
||||
"waitEnd": 0
|
||||
},
|
||||
"options": [
|
||||
{"command": "unlock", "emote": "🔐"},
|
||||
{"command": "lockpick", "emote": "🔏"},
|
||||
{"command": "exit", "emote": "❌"}
|
||||
],
|
||||
"unlock": {
|
||||
"command": true,
|
||||
"internal": true,
|
||||
"type": "door",
|
||||
"moveFrom": "locked_door_room_1",
|
||||
"moveTo": "unlocked_door_room_1",
|
||||
"required": [{"item": "key", "amount": 1}]
|
||||
},
|
||||
"lockpick": {
|
||||
"command": true,
|
||||
"internal": true,
|
||||
"type": "door",
|
||||
"moveFrom": "locked_door_room_1",
|
||||
"moveToFail": "broken_door_room_1",
|
||||
"moveTo": "unlocked_door_room_1"
|
||||
},
|
||||
"exit": {
|
||||
"command": true,
|
||||
"internal": true,
|
||||
"type": "door",
|
||||
"moveTo": "locked_door_room_1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"unlocked_door_room_1": {
|
||||
"name": "An Unlocked Door",
|
||||
"descriptions": [
|
||||
{"text": "The first locked door has been opened! Beware the <@458036985353732097>."}
|
||||
],
|
||||
"image_url": "https://dummyimage.com/800x400/bfa897/7a4e4e.png&text=Unlocked+Door",
|
||||
"northtext": "Move **!north** to meet face-to-face with the Ravager. ",
|
||||
"easttext": "",
|
||||
"southtext": "To move back, go **!south**.",
|
||||
"westtext": "",
|
||||
"floor": 1,
|
||||
"connections": {
|
||||
"north": "ravager_room_4",
|
||||
"south": "room_3"
|
||||
}
|
||||
},
|
||||
"ravager_room_4": {
|
||||
"name": "Ravager Room",
|
||||
"descriptions": [
|
||||
{"text": "You found a locked-in <@458036985353732097>!"}
|
||||
],
|
||||
"image_url": "https://dummyimage.com/800x400/e62b4a/422626.png&text=Ravager",
|
||||
"northtext": "Move **!north** to the chest, it doesn't have a lock on it! ",
|
||||
"easttext": "",
|
||||
"southtext": "Move back **!south** to go to the door.",
|
||||
"westtext": "",
|
||||
"floor": 1,
|
||||
"ravager": {
|
||||
"level": [8, 9]
|
||||
},
|
||||
"connections": {
|
||||
"north": "free_chest_room_1",
|
||||
"south": "locked_door_room_1"
|
||||
}
|
||||
},
|
||||
"free_chest_room_1": {
|
||||
"name": "A Chest",
|
||||
"descriptions": [
|
||||
{"text": "You found a **!chest**! Wonder what lies inside it. Hopefully there is something valuable."}
|
||||
],
|
||||
"image_url": "https://dummyimage.com/800x400/593521/f5c91b.png&text=Chest",
|
||||
"northtext": "",
|
||||
"easttext": "",
|
||||
"southtext": "Leave the chest by typing **!south**.",
|
||||
"westtext": "",
|
||||
"floor": 1,
|
||||
"connections": {
|
||||
"south": "ravager_room_4"
|
||||
},
|
||||
"chest": {
|
||||
"command": true,
|
||||
"type": "chest",
|
||||
"embed": {
|
||||
"formatting": "author_title_image_desc",
|
||||
"setAuthor": {"title": "${dungeon.room.name}", "image": "${profile_pic}"},
|
||||
"setTitle": "A Chest",
|
||||
"setDescription": "Do you want to open the chest?\n**:unlock: Unlock** chest.\n:x: **Exit** options for the chest.",
|
||||
"waitBegin": 0,
|
||||
"waitEnd": 0
|
||||
},
|
||||
"options": [
|
||||
{"command": "unlock", "emote": "🔓"},
|
||||
{"command": "exit", "emote": "❌"}
|
||||
],
|
||||
"unlock": {
|
||||
"command": true,
|
||||
"internal": true,
|
||||
"type": "chest",
|
||||
"moveFrom": "free_chest_room_1",
|
||||
"moveTo": "empty_free_chest_room_1",
|
||||
"objects": [
|
||||
[
|
||||
{
|
||||
"name": "crystals",
|
||||
"amount": [18, 22]
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"exit": {
|
||||
"command": true,
|
||||
"internal": true,
|
||||
"type": "chest",
|
||||
"moveTo": "free_chest_room_1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"empty_free_chest_room_1": {
|
||||
"name": "An Empty Chest",
|
||||
"descriptions": [
|
||||
{"text": "You have already opened this chest."}
|
||||
],
|
||||
"image_url": "https://dummyimage.com/800x400/593521/f5c91b.png&text=Chest+(Opened)",
|
||||
"northtext": "",
|
||||
"easttext": "",
|
||||
"southtext": "Leave the chest by typing **!south**.",
|
||||
"westtext": "",
|
||||
"floor": 1,
|
||||
"connections": {
|
||||
"south": "ravager_room_4"
|
||||
}
|
||||
},
|
||||
"locked_door_room_2": {
|
||||
"name": "A Locked Door",
|
||||
"descriptions": [
|
||||
{"text": "The second locked door leads to the end of the dungeon. You can check out the door with **!door**."}
|
||||
],
|
||||
"image_url": "https://dummyimage.com/800x400/bfa897/7a4e4e.png&text=Locked+Door",
|
||||
"northtext": "",
|
||||
"easttext": "",
|
||||
"southtext": "",
|
||||
"westtext": "To move back, go **!west**.",
|
||||
"floor": 1,
|
||||
"connections": {
|
||||
"west": "room_3"
|
||||
},
|
||||
"door": {
|
||||
"command": true,
|
||||
"type": "door",
|
||||
"removeItem": [{"item": "dungeon_key", "amount": 1}],
|
||||
"embed": {
|
||||
"formatting": "author_title_image_desc",
|
||||
"setAuthor": {"title": "${dungeon.room.name}", "image": "${profile_pic}"},
|
||||
"setTitle": "A Locked Door",
|
||||
"setDescription": "This door requires a **:key2: Dungeon Key** to open.\n**:closed_lock_with_key: Unlock** door with the dungeon key.\n:x: **Exit** options for the door.",
|
||||
"waitBegin": 0,
|
||||
"waitEnd": 0
|
||||
},
|
||||
"options": [
|
||||
{"command": "unlock", "emote": "🔐"},
|
||||
{"command": "exit", "emote": "❌"}
|
||||
],
|
||||
"unlock": {
|
||||
"command": true,
|
||||
"internal": true,
|
||||
"type": "door",
|
||||
"moveFrom": "locked_door_room_2",
|
||||
"moveTo": "unlocked_door_room_2",
|
||||
"required": [{"item": "dungeon_key", "amount": 1}]
|
||||
},
|
||||
"exit": {
|
||||
"command": true,
|
||||
"internal": true,
|
||||
"type": "door",
|
||||
"moveTo": "locked_door_room_2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"unlocked_door_room_2": {
|
||||
"name": "An Unlocked Door",
|
||||
"descriptions": [
|
||||
{"text": "The second locked door has been opened! You may now exit the dungeon in the final room."}
|
||||
],
|
||||
"image_url": "https://dummyimage.com/800x400/bfa897/7a4e4e.png&text=Unlocked+Door",
|
||||
"northtext": "",
|
||||
"easttext": "The final room lies down **!east**.",
|
||||
"southtext": "",
|
||||
"westtext": "To move back, go **!west**.",
|
||||
"floor": 1,
|
||||
"connections": {
|
||||
"east": "final_room",
|
||||
"west": "room_3"
|
||||
}
|
||||
},
|
||||
"final_room": {
|
||||
"name": "Dungeon Room",
|
||||
"descriptions": [
|
||||
{"text": "You can see the exit from here. There is a gate that opens to the outside."}
|
||||
],
|
||||
"image_url": "https://dummyimage.com/800x400/69584b/ffffff.png&text=Dungeon+Exit",
|
||||
"northtext": "Move **!north** to leave the dungeon. ",
|
||||
"easttext": "",
|
||||
"southtext": "",
|
||||
"westtext": "Move **!west** to go back inside to get anything that has been missed.",
|
||||
"floor": 1,
|
||||
"connections": {
|
||||
"north": "__END",
|
||||
"west": "locked_door_room_2"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
2105
TextAdv/textadv.js
Normal file
2105
TextAdv/textadv.js
Normal file
File diff suppressed because it is too large
Load Diff
723
Troll/package-lock.json
generated
Normal file
723
Troll/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
Troll/package.json
Normal file
29
Troll/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"
|
||||
}
|
||||
}
|
||||
367
Troll/troll.js
Normal file
367
Troll/troll.js
Normal file
@@ -0,0 +1,367 @@
|
||||
// .env Variables
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
// Node Modules
|
||||
const Discord = require('discord.js');
|
||||
const client = new Discord.Client();
|
||||
const cron = require('node-cron');
|
||||
|
||||
// Bot Modules (stores http requests & random functions respectively)
|
||||
const dataRequest = require('../modules/dataRequest');
|
||||
const calcRandom = require('../modules/calcRandom');
|
||||
var attacked = 0;
|
||||
|
||||
// Playing activities state machine
|
||||
var ActivityEnumState = {
|
||||
GetDataActivity: 0,
|
||||
ListenDataActivity: 1,
|
||||
WatchingRavagersActivity: 2,
|
||||
StreamingSanctumActivity: 3
|
||||
}
|
||||
var activityState;
|
||||
|
||||
// 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');
|
||||
ListenDataActivity();
|
||||
|
||||
//client.user.setActivity('sCRIBe of the Codex');
|
||||
console.log(`Connected! \
|
||||
\nLogged in as: ${client.user.username} - (${client.user.id})`);
|
||||
|
||||
//client.channels.get(process.env.GATE_CHANNEL_ID).send("I'M YOUR NEW BABE EVERYONE! LOVE ME.");
|
||||
});
|
||||
|
||||
// Create an event listener for messages
|
||||
client.on('message', async message => {
|
||||
// Ignores ALL bot messages
|
||||
if (message.author.bot) return;
|
||||
// Message has to be in Outskirts (should be edited later)
|
||||
if (!(message.channel.id === process.env.STASIS_CHANNEL_ID
|
||||
|| message.channel.id === process.env.TEST_CHANNEL_ID)) return;
|
||||
|
||||
|
||||
var wholeMessage = message.content.toLowerCase().replace(/[.,\/#!$%\^&\*;:{}=\-_`~()]/g,"");
|
||||
var words = wholeMessage.split(" ");
|
||||
// Asking Alexis on a date
|
||||
if (words.includes("librarian") && words.includes("date")) {
|
||||
var dialogOptions = [
|
||||
'IM LOVED.',
|
||||
'THANK YOU.',
|
||||
':thumbsup:',
|
||||
'I AM ALWAYS AVAILABLE UNLESS I\'M OFFLINE',
|
||||
'I\'M INTO ANYONE!',
|
||||
'YOU INTEREST ME.',
|
||||
'YES!!',
|
||||
'TELL ME MORE!',
|
||||
'YES DATE ME.'
|
||||
];
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
message.channel.send(`${message.author} ${dialogOptions[randomNumber]}`);
|
||||
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();
|
||||
|
||||
// Has to be (prefix)command
|
||||
if (message.content.indexOf(process.env.PREFIX) !== 0) return;
|
||||
|
||||
switch (command) {
|
||||
case "ping":
|
||||
message.reply("PONGPINGPONGPINGPONG!");
|
||||
break;
|
||||
case "attack":
|
||||
attacked++;
|
||||
message.channel.send(message.author + " ***OW. SCREW YOU!*** ```Attacked " + attacked + " times.```");
|
||||
break;
|
||||
case "tip":
|
||||
if (!args[0])
|
||||
message.reply("THANKS FOR THE " + args[0] + "!");
|
||||
else
|
||||
message.reply("TIP ME ***SOMETHING!?!**");
|
||||
break;
|
||||
case "orderordertaperecorder":
|
||||
message.reply("YES.");
|
||||
break;
|
||||
case "eaglewritewhen":
|
||||
message.reply("GOOD QUESTION");
|
||||
break;
|
||||
case "tim":
|
||||
message.reply("HE'S THE MURDERER!");
|
||||
break;
|
||||
case "scavenge":
|
||||
message.channel.send("YOU FOUND NOTHING BUT LIES! MWAHAHA.");
|
||||
break;
|
||||
case "codex":
|
||||
message.reply("WHAT'S A CODEX. ***THERE IS NO SUCH THING.***");
|
||||
break;
|
||||
case "secret":
|
||||
message.reply("I MEAN, YOU TRIED! ***TRY HARDER***.");
|
||||
break;
|
||||
case "redacted":
|
||||
message.reply("This is now ***REDACTED***.")
|
||||
break;
|
||||
case "buydrink":
|
||||
var dialogOptions = [
|
||||
'HOW DID YOU KNOW WE HAVE FREE BEER.',
|
||||
'TAKE YOUR DRINKS.',
|
||||
'GET DRUNK.',
|
||||
'ENJOY OR ELSE!',
|
||||
'IT\'S BEEN A MONTH. HOW MUCH LONGER!',
|
||||
'IT\'S DANGEROUS TO GO ALONE, TAKE THIS.',
|
||||
'IM ACTUALLY MESSING WITH YOUR MINDS BY SPIKING WITH THE DRINKS.',
|
||||
'HURRY UP AND COLLAPSE FROM THE BEER!',
|
||||
'MOOAAAARRR BEEER!',
|
||||
'EAGLE WRITE II WHEN.',
|
||||
'HEY, AT LEAST I TRY TO BE NICE.',
|
||||
'THE SOMEONE IS ALWAYS RIGHT FOUNDATION™ NEEDS YOUR CRYSTALS',
|
||||
'**REDACTED** IS COMING TO SANCTUM.',
|
||||
'RELIGION SUX',
|
||||
'KAJSLKFDJLAJJ;OIF AEJOIEJGOIEJGOIEJGRA',
|
||||
'1090190308401840184385825',
|
||||
'HERE IS SOME DIALOG. HAPPY?',
|
||||
'TICK TOCK KAI BUDDY, BETTER NOT KEEP **REDACTED** WAITIN. I HEARD HE\'S A VERY IMPATIENT MAN.',
|
||||
'DOES ANYONE READ THE TEXT.',
|
||||
'WHATEVER YOU DO YOU WILL NEVER FIND THE SECRET COMMAND',
|
||||
'PRESS ALT+F4 FOR FREE CRYSTALS.',
|
||||
'ONE DAY YOU WILL STOP FIGHTING FOR SOME STUPID THING.',
|
||||
'WHY DO YOU PLAY THIS GAME SO MUCH ANYWAYS.',
|
||||
'YOU CAN\'T FIGHT HERE. THIS IS THE WAR ROOM!',
|
||||
'HELL IS THE ULTIMATE TEST OF SURVIVAL WHERE YOU PROBABLY WILL GATE.',
|
||||
'WHAT DO YOU WANT ME TO DO, MORE BEER?',
|
||||
'FOR YOU SEE!™ THE PERSON WHO HAS BEEN KEEPING YOU HERE ALL ALONG IS...',
|
||||
'WHY AM I STILL HERE??',
|
||||
'WHAT DO YOU GUYS THINK OF ALEXIS COMPARED TO ME!',
|
||||
'CHECK THIS OUT.',
|
||||
'PEOPLE ACTUALLY TAKING BEER? CHECK.',
|
||||
'NO ROGUE BOT CHECK CAN STOP ME!',
|
||||
`I AM THE LIBRARIAN. I HAND OUT LIVERS!`
|
||||
];
|
||||
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
var newMessage = "";
|
||||
|
||||
if (message.mentions.members.size < 1) {
|
||||
newMessage = ":beer: " + dialogOptions[randomNumber] + " <@" + message.author.id + ">! <:crystals:460974340247257089> **FREE**";
|
||||
} 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) {
|
||||
newMessage = ":beer: " + dialogOptions[randomNumber] + " <@" + member.user.id + ">!\n\n" + "***GIVEN BY *** <@" + message.author.id + "> AT GUNPOINT OR SOMETHING. <:crystals:460974340247257089> **FREE**";
|
||||
} else {
|
||||
newMessage = ":x: <@" + message.author.id + "> YOU WANNA BUY ***WHO*** A ***WHAT*** NOW?";
|
||||
}
|
||||
}
|
||||
sendMessage(message.channel.id, newMessage);
|
||||
break;
|
||||
case "check":
|
||||
if (message.channel.id == process.env.TEST_CHANNEL_ID) return;
|
||||
message.reply("WOW, YOU FOUND IT. THIS MAY OR MAY NOT COME INTO SANCTUM, WE'RE ONLY PLANNING. DON'T EXCEPT IT, KEEP EXPECTATIONS LOW. HAVE MERCY ON THE OVERSEERS.");
|
||||
const server = client.guilds.get(process.env.SANCTUM_ID);
|
||||
const sizeLimit = 19;
|
||||
var LVL = 2;
|
||||
var minutes = 15;
|
||||
var raidUsers = ["200340393596944384", "433759248800022532", "274301199841361920",
|
||||
"150649616772235264", "201102155896193024", "454823752925052930"];
|
||||
var raidUserNames = [];
|
||||
var userString = ``;
|
||||
|
||||
// Collects usable usersnames
|
||||
for (var i in raidUsers) {
|
||||
// Use this totally not large line of code
|
||||
var name = server.members.get(raidUsers[i]).displayName;
|
||||
console.log("NAME: " + name);
|
||||
|
||||
// If displayName (possible nickname) is too large
|
||||
if (name.length > sizeLimit) {
|
||||
// Grabs normal username
|
||||
var username = client.users.get(raidUsers[i]).username;
|
||||
console.log("EDITED NAME: " + name);
|
||||
|
||||
// If that's too large
|
||||
if (username.length > sizeLimit) {
|
||||
// Uses displayName and adds "..."
|
||||
name = truncate(name, sizeLimit);
|
||||
}
|
||||
}
|
||||
raidUserNames.push(name);
|
||||
}
|
||||
|
||||
console.log("RAIDUSERNAMES: " + raidUserNames);
|
||||
for (var r in raidUserNames) {
|
||||
var emote;
|
||||
if (server.members.get(raidUsers[i]).roles.has(process.env.GROUP_A_ROLE)) {
|
||||
factionID = process.env.GROUP_A_ROLE;
|
||||
}
|
||||
userString += raidUserNames[r] + "\n";
|
||||
}
|
||||
|
||||
const embed = new Discord.RichEmbed()
|
||||
.setTitle(":triangular_flag_on_post: Hell's Gate: Dungeon Raid")
|
||||
/*
|
||||
* Alternatively, use "#00AE86", [0, 174, 134] or an integer number.
|
||||
*/
|
||||
.setColor("#e74c3c")
|
||||
.setDescription(`**OUTDATED, PLEASE USE OTHER COMMANDS LIKE !join INSTEAD.** This dungeon is **Danger LVL ${LVL}**, it is relatively safe. The level will increase in the next **${minutes} minutes**.
|
||||
The scouted map by TheSomeoneXD can be found [here](https://www.youtube.com/watch?v=dQw4w9WgXcQ).`)
|
||||
.setFooter("OBBO Find X • OBSIDIAN TECHNOLOGIES")
|
||||
//.setImage("https://i.imgur.com/BlQTi94.jpg")
|
||||
//.setThumbnail("https://i.imgur.com/BZgLV7w.png")
|
||||
.setThumbnail("https://i.imgur.com/BlQTi94.jpg")
|
||||
.addField("Location",
|
||||
`The party is at the beginning of the dungeon. There is a dying **!traveler** next to the stairs, starving.
|
||||
**!north** leads up stairs, into a room with a Ravager.
|
||||
**!west** leads to a chest room.`)
|
||||
|
||||
.addField("Party Members",
|
||||
`<:anarchy:460990297099337750>:shield: TheSomeoneXD\n\
|
||||
<:order:460991638152413194>:shield: *Totally NOT the FBI*\n\
|
||||
<:anarchy:460990297099337750>:crossed_swords: refraction\n\
|
||||
<:order:460991638152413194>:crossed_swords: FrozenAlex\n\
|
||||
<:religionhand:461582719051104276>:crossed_swords: Kai Buddy\n\
|
||||
<:religionhand:461582719051104276>:heart: Jim Ruswick`, true)
|
||||
|
||||
.addField("User Info",
|
||||
`Tank
|
||||
Tank
|
||||
DPS
|
||||
DPS
|
||||
DPS
|
||||
Support`, true)
|
||||
|
||||
message.channel.send({embed});
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
client.on('error', console.error);
|
||||
|
||||
// You may use cron
|
||||
//cron.schedule('* */1 * * *', function() {
|
||||
cron.schedule('*/20 * * * *', function() {
|
||||
/*
|
||||
console.log('10 MIN.');
|
||||
var dialogOptions = [
|
||||
'HEY! LISTEN!',
|
||||
'SANCTUM SHOULD COME IN A FEW YEARS, JUST WAIT.',
|
||||
`HEY Y'ALL, LET'S SCAVENGE SOME OF YOUR MINDS OR SOMETHING.`,
|
||||
`WINNERS DON'T DO DRUGS. EXCEPT STEROIDS. IN WHICH CASE, USE LOTS OF DRUGS!`,
|
||||
`CHECK YOUR GUNS, WE'RE RAIDING THE CRYSTAL BANKS. AND I GET ALL OF IT!`,
|
||||
`CODING YOUR OWN GAMES, IS EASIER THAN YOU THINK. YOU KNOW, YOU SHOULD TAKE THIS ONLINE COURSE ON UDEMY.`,
|
||||
`MY FAVORITE ANIME IS CORY IN THE HOUSE.`,
|
||||
`ORDER. ORDER. TAPE RECORDER.`,
|
||||
`PLUSHIES ARE A DISEASE VECTOR.`,
|
||||
`HURRY UP AND CHECK YOU IDIOTS. THERE'S A SECRET THAT YOU WILL NEVER FIND!`,
|
||||
`TRAVELERS MAKE GOOD MEEEEAAAATTTTTTT!`,
|
||||
`YOU THINK YOU CAN FIGHT, TRAVELERS??`,
|
||||
`HEY Y'ALL, LET'S SCAVENGE US SOME NOTHING.`,
|
||||
`I AM BEST BOT. DATE ME!`,
|
||||
`C HASHTAG!`,
|
||||
`ROSES ARE RED. VIOLETS ARE BLUE. THIS IS A TALE ABOUT... I FORGOT. HELP?`,
|
||||
`<@200340393596944384> WHEN ARE YOU GOING TO CREATE **REDACTED**??`
|
||||
];
|
||||
|
||||
var randomNumber = Math.floor(Math.random() * dialogOptions.length);
|
||||
client.channels.get(process.env.STASIS_CHANNEL_ID).send(dialogOptions[randomNumber]);
|
||||
*/
|
||||
});
|
||||
|
||||
// Every 15 minutes
|
||||
cron.schedule('*/15 * * * *', () => {
|
||||
var random = calcRandom.random(0, 2);
|
||||
switch (random) {
|
||||
case 0:
|
||||
GetDataActivity();
|
||||
break;
|
||||
case 1:
|
||||
ListenDataActivity();
|
||||
break;
|
||||
case 2:
|
||||
WatchingRavagersActivity();
|
||||
break;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
function GetDataActivity() {
|
||||
// Sets your "Playing"
|
||||
client.user.setActivity("Collecting data.", {
|
||||
type: "PLAYING"
|
||||
}).then(presence => console.log(`Activity set to ${presence.game ? presence.game.name : 'none'}`))
|
||||
.catch(console.error);
|
||||
|
||||
activityState = ActivityEnumState.GetDataActivity;
|
||||
}
|
||||
|
||||
function ListenDataActivity() {
|
||||
// Sets your "Playing"
|
||||
client.user.setActivity("something interesting.", {
|
||||
type: "LISTENING"
|
||||
}).then(presence => console.log(`Activity set to ${presence.game ? presence.game.name : 'none'}`))
|
||||
.catch(console.error);
|
||||
|
||||
activityState = ActivityEnumState.ListenDataActivity;
|
||||
}
|
||||
|
||||
function WatchingRavagersActivity() {
|
||||
// Sets your "Playing"
|
||||
client.user.setActivity("for Ravager positions.", {
|
||||
type: "WATCHING"
|
||||
}).then(presence => console.log(`Activity set to ${presence.game ? presence.game.name : 'none'}`))
|
||||
.catch(console.error);
|
||||
|
||||
activityState = ActivityEnumState.WatchingRavagersActivity;
|
||||
}
|
||||
|
||||
function StreamingSanctumActivity() {
|
||||
// Sets your "Playing"
|
||||
client.user.setActivity("developing Sanctum.", {
|
||||
type: "STREAMING",
|
||||
url: "https://www.twitch.tv/timruswick"
|
||||
}).then(presence => console.log(`Activity set to ${presence.game ? presence.game.name : 'none'}`))
|
||||
.catch(console.error);
|
||||
|
||||
activityState = ActivityEnumState.StreamingSanctumActivity;
|
||||
}
|
||||
|
||||
// Async Waiting
|
||||
function sleep(time) {
|
||||
return new Promise((resolve, reject) => {
|
||||
setTimeout(resolve, time);
|
||||
});
|
||||
}
|
||||
|
||||
// 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);
|
||||
}
|
||||
|
||||
// Log our bot in (change the token by looking into the .env file)
|
||||
client.login(process.env.LIBRARIAN_TOKEN);
|
||||
27
modules/calcRandom.js
Normal file
27
modules/calcRandom.js
Normal file
@@ -0,0 +1,27 @@
|
||||
module.exports = {
|
||||
// Changed it from exclusive high to inclusive high
|
||||
random: function(low, high) {
|
||||
return Math.floor(Math.random() * (high - low + 1) + low);
|
||||
},
|
||||
|
||||
randomExc: function(low, high) {
|
||||
return Math.floor(Math.random() * (high - low) + low);
|
||||
},
|
||||
|
||||
// Random generation by %
|
||||
gamble: function(percentage) {
|
||||
// I found out that it wasn't acutally entirely accurate (0.1 difference)
|
||||
// So I changed it to be 1 to 100, and have a <= instead of <
|
||||
// I calculated it with PineTools and a small JS script to calculate it.
|
||||
// Feel free to change it!
|
||||
var winState = Math.floor(module.exports.random(1, 100));
|
||||
//var winState = Math.floor(module.exports.random(0, 101));
|
||||
|
||||
if (winState <= percentage) {
|
||||
// if (winState < percentage)
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
34
modules/channelProcessor.js
Normal file
34
modules/channelProcessor.js
Normal file
@@ -0,0 +1,34 @@
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
module.exports = {
|
||||
isBotChannel: function(channelID) {
|
||||
// Insert new channels here
|
||||
var botChannels = [
|
||||
process.env.GROUP_A_BOT_ID,
|
||||
process.env.GROUP_B_BOT_ID,
|
||||
process.env.GROUP_C_BOT_ID,
|
||||
process.env.TEST_CHANNEL_ID
|
||||
];
|
||||
|
||||
// Apparently Outskirts was in the discord.io code, add that if needed
|
||||
|
||||
for (let index = 0; index < botChannels.length; index++) {
|
||||
const element = botChannels[index];
|
||||
if (channelID == element) return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
isRaidChannel: function(channelID) {
|
||||
// Insert new channels here
|
||||
var raidChannels = [
|
||||
process.env.HELLS_GATE_CHANNEL_ID
|
||||
];
|
||||
|
||||
for (let index = 0; index < raidChannels.length; index++) {
|
||||
const element = raidChannels[index];
|
||||
if (channelID == element) return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
29
modules/dataRequest.js
Normal file
29
modules/dataRequest.js
Normal file
@@ -0,0 +1,29 @@
|
||||
var request = require('sync-request');
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
module.exports = {
|
||||
loadServerData: function(dataToLoad, usersID = ''){
|
||||
var res = request('GET', `http://skullboxstudios.com/projects/sanctum/botserver/getData.php?pk=${process.env.SERVER_PASS_KEY}&dataToLoad=` + dataToLoad + '&userid=' + usersID);
|
||||
console.log(res.getBody());
|
||||
return res.getBody();
|
||||
},
|
||||
|
||||
sendServerData: function(dataType, dataToSend, usersID = '', dataToSend2 = ''){
|
||||
var res = request('GET', `http://skullboxstudios.com/projects/sanctum/botserver/sendData.php?pk=${process.env.SERVER_PASS_KEY}&dataType=` + dataType + '&dataToSend=' + dataToSend + '&dataToSend2=' + dataToSend2 + '&userid=' + usersID);
|
||||
console.log(res.getBody());
|
||||
return res.getBody();
|
||||
},
|
||||
|
||||
sendAttackData: function(dataType, dataToSend, dataToSend2 = ''){
|
||||
var res = request('GET', `http://skullboxstudios.com/projects/sanctum/botserver/sendPostData.php?pk=${process.env.SERVER_PASS_KEY}&dataType=` + dataType + '&dataToSend=' + dataToSend + '&dataToSend2=' + dataToSend2)
|
||||
console.log(res.getBody());
|
||||
return res.getBody();
|
||||
},
|
||||
|
||||
// Possibly unused?
|
||||
postServerData: function(dataType, dataToPost, dataToSend2 = ''){
|
||||
var res = request('POST', `http://skullboxstudios.com/projects/sanctum/botserver/sendPostData.php?pk=${process.env.SERVER_PASS_KEY}&dataType=` + dataType + '&dataToSend2=' + dataToSend2, dataToPost)
|
||||
console.log(res.getBody());
|
||||
return res.getBody();
|
||||
}
|
||||
}
|
||||
20
modules/messages.js
Normal file
20
modules/messages.js
Normal file
@@ -0,0 +1,20 @@
|
||||
// Do not use, no client reference
|
||||
|
||||
module.exports = {
|
||||
sendMessage: function(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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user