commit
564a5d3135
7 changed files with 2121 additions and 165 deletions
21
LICENSE
Normal file
21
LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2018 LBRY <filip@lbry.io>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
64
bot/bot.js
64
bot/bot.js
|
@ -1,65 +1,53 @@
|
|||
'use strict';
|
||||
|
||||
// Load up libraries
|
||||
const Discord = require("discord.js");
|
||||
const Discord = require('discord.js');
|
||||
// Load config!
|
||||
let config = require('config');
|
||||
config = config.get('bot');
|
||||
|
||||
var aliases;
|
||||
try {
|
||||
aliases = require("./alias.json");
|
||||
aliases = require('./alias.json');
|
||||
} catch (e) {
|
||||
//No aliases defined
|
||||
aliases = {
|
||||
"test": {
|
||||
process: function(bot,msg){
|
||||
test: {
|
||||
process: function(bot, msg) {
|
||||
msg.channel.send('test');
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
var commands = {
|
||||
|
||||
};
|
||||
var commands = {};
|
||||
|
||||
var bot = new Discord.Client();
|
||||
|
||||
bot.on("ready", function() {
|
||||
console.log(
|
||||
"Logged in! Serving in " + bot.guilds.array().length + " servers"
|
||||
);
|
||||
require("./plugins.js").init();
|
||||
console.log("type " + config.prefix + "help in Discord for a commands list.");
|
||||
bot.user.setGame(
|
||||
config.prefix + "tip"
|
||||
);
|
||||
bot.on('ready', function() {
|
||||
console.log('Logged in! Serving in ' + bot.guilds.array().length + ' servers');
|
||||
require('./plugins.js').init();
|
||||
console.log('type ' + config.prefix + 'help in Discord for a commands list.');
|
||||
bot.user.setGame(config.prefix + 'tip');
|
||||
});
|
||||
|
||||
bot.on("disconnected", function() {
|
||||
console.log("Disconnected!");
|
||||
bot.on('disconnected', function() {
|
||||
console.log('Disconnected!');
|
||||
process.exit(1); //exit node.js with an error
|
||||
});
|
||||
|
||||
function checkMessageForCommand(msg, isEdit) {
|
||||
//check if message is a command
|
||||
if (msg.author.id != bot.user.id && msg.content.startsWith(config.prefix)) {
|
||||
console.log(
|
||||
"treating " + msg.content + " from " + msg.author + " as command"
|
||||
);
|
||||
var cmdTxt = msg.content.split(" ")[0].substring(config.prefix.length);
|
||||
var suffix = msg.content.substring(
|
||||
cmdTxt.length + config.prefix.length + 1
|
||||
); //add one for the ! and one for the space
|
||||
console.log('treating ' + msg.content + ' from ' + msg.author + ' as command');
|
||||
var cmdTxt = msg.content.split(' ')[0].substring(config.prefix.length);
|
||||
var suffix = msg.content.substring(cmdTxt.length + config.prefix.length + 1); //add one for the ! and one for the space
|
||||
if (msg.isMentioned(bot.user)) {
|
||||
try {
|
||||
cmdTxt = msg.content.split(" ")[1];
|
||||
suffix = msg.content.substring(
|
||||
bot.user.mention().length + cmdTxt.length + config.prefix.length + 1
|
||||
);
|
||||
cmdTxt = msg.content.split(' ')[1];
|
||||
suffix = msg.content.substring(bot.user.mention().length + cmdTxt.length + config.prefix.length + 1);
|
||||
} catch (e) {
|
||||
//no command
|
||||
msg.channel.send("Yes?");
|
||||
msg.channel.send('Yes?');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -74,9 +62,9 @@ function checkMessageForCommand(msg, isEdit) {
|
|||
try {
|
||||
cmd.process(bot, msg, suffix, isEdit);
|
||||
} catch (e) {
|
||||
var msgTxt = "command " + cmdTxt + " failed :(";
|
||||
var msgTxt = 'command ' + cmdTxt + ' failed :(';
|
||||
if (config.debug) {
|
||||
msgTxt += "\n" + e.stack;
|
||||
msgTxt += '\n' + e.stack;
|
||||
}
|
||||
msg.channel.send(msgTxt);
|
||||
}
|
||||
|
@ -89,16 +77,16 @@ function checkMessageForCommand(msg, isEdit) {
|
|||
}
|
||||
|
||||
if (msg.author != bot.user && msg.isMentioned(bot.user)) {
|
||||
msg.channel.send("yes?"); //using a mention here can lead to looping
|
||||
msg.channel.send('yes?'); //using a mention here can lead to looping
|
||||
} else {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bot.on("message", msg => checkMessageForCommand(msg, false));
|
||||
bot.on("messageUpdate", (oldMessage, newMessage) => {
|
||||
bot.on('message', msg => checkMessageForCommand(msg, false));
|
||||
/*bot.on("messageUpdate", (oldMessage, newMessage) => {
|
||||
checkMessageForCommand(newMessage, true);
|
||||
});
|
||||
});*/
|
||||
|
||||
exports.addCommand = function(commandName, commandObject) {
|
||||
try {
|
||||
|
@ -113,7 +101,7 @@ exports.addCustomFunc = function(customFunc) {
|
|||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
}
|
||||
};
|
||||
exports.commandCount = function() {
|
||||
return Object.keys(commands).length;
|
||||
};
|
||||
|
|
|
@ -10,32 +10,44 @@ exports.commands = [
|
|||
]
|
||||
exports.tip = {
|
||||
usage: "<subcommand>",
|
||||
description: 'balance: get your balance\n deposit: get adress for your deposits\n withdraw ADDRESS AMOUNT: withdraw AMOUNT credits to ADDRESS\n <user> <amount>: mention a user with @ and then the amount to tip them',
|
||||
process: async function(bot,msg,suffix){
|
||||
let tipper = msg.author.id,
|
||||
words = msg.content.trim().split(' ').filter( function(n){return n !== "";} ),
|
||||
subcommand = words.length >= 2 ? words[1] : 'help';
|
||||
if (subcommand === 'help') {
|
||||
doHelp(msg);
|
||||
}
|
||||
else if (subcommand === 'balance') {
|
||||
doBalance(msg, tipper);
|
||||
}
|
||||
else if (subcommand === 'deposit') {
|
||||
doDeposit(msg, tipper);
|
||||
}
|
||||
else if (subcommand === 'withdraw') {
|
||||
doWithdraw(msg, tipper, words);
|
||||
}
|
||||
else {
|
||||
doTip(msg, tipper, words);
|
||||
description: '\t[help]\n\t\tGet this message\n\tbalance\n\t\tGet your balance\n\tdeposit\n\t\tGet address for your deposits\n\twithdraw ADDRESS AMOUNT\n\t\tWithdraw AMOUNT credits to ADDRESS\n\t[private] <user> <amount>\n\t\tMention a user with @ and then the amount to tip them, or put private before the user to tip them privately.\nKey: [] : Optionally include contained keyword, <> : Replace with appropriate value.',
|
||||
process: async function (bot, msg, suffix) {
|
||||
let tipper = msg.author.id.replace('!', ''),
|
||||
words = msg.content.trim().split(' ').filter(function (n) { return n !== ""; }),
|
||||
subcommand = words.length >= 2 ? words[1] : 'help',
|
||||
helpmsgparts = [['[help]', 'Get this message'],
|
||||
['balance', 'Get your balance'],
|
||||
['deposit', 'Get address for your deposits'],
|
||||
['withdraw ADDRESS AMOUNT', 'Withdraw AMOUNT credits to ADDRESS'],
|
||||
['[private] <user> <amount>', 'Mention a user with @ and then the amount to tip them, or put private before the user to tip them privately.']],
|
||||
helpmsg = '```**!tip**\n' + formatDescriptions(helpmsgparts) + 'Key: [] : Optionally include contained keyword, <> : Replace with appropriate value.```',
|
||||
channelwarning = 'Please use <#369896313082478594> or DMs to talk to bots.';
|
||||
switch (subcommand) {
|
||||
case 'help': privateOrSandboxOnly(msg, channelwarning, doHelp, [helpmsg]); break;
|
||||
case 'balance': doBalance(msg, tipper); break;
|
||||
case 'deposit': privateOrSandboxOnly(msg, channelwarning, doDeposit, [tipper]); break;
|
||||
case 'withdraw': privateOrSandboxOnly(msg, channelwarning, doWithdraw, [tipper, words, helpmsg]); break;
|
||||
default: doTip(msg, tipper, words, helpmsg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function privateOrSandboxOnly(message, wrongchannelmsg, fn, args) {
|
||||
if (!inPrivateOrBotSandbox(message)) {
|
||||
message.reply(wrongchannelmsg);
|
||||
return;
|
||||
}
|
||||
fn.apply(null, [message, ...args]);
|
||||
}
|
||||
|
||||
|
||||
function doHelp(message, helpmsg) {
|
||||
message.author.send(helpmsg);
|
||||
}
|
||||
|
||||
|
||||
function doBalance(message, tipper) {
|
||||
lbry.getBalance(tipper, 1, function(err, balance) {
|
||||
lbry.getBalance(tipper, 1, function (err, balance) {
|
||||
if (err) {
|
||||
message.reply('Error getting balance');
|
||||
}
|
||||
|
@ -47,11 +59,7 @@ function doBalance(message, tipper) {
|
|||
|
||||
|
||||
function doDeposit(message, tipper) {
|
||||
if(!inPrivateOrBotSandbox(message)){
|
||||
message.reply('Please use <#369896313082478594> or DMs to talk to bots.');
|
||||
return;
|
||||
}
|
||||
getAddress(tipper, function(err, address) {
|
||||
getAddress(tipper, function (err, address) {
|
||||
if (err) {
|
||||
message.reply('Error getting deposit address');
|
||||
}
|
||||
|
@ -62,13 +70,9 @@ function doDeposit(message, tipper) {
|
|||
}
|
||||
|
||||
|
||||
function doWithdraw(message, tipper, words) {
|
||||
if(!inPrivateOrBotSandbox(message)){
|
||||
message.reply('Please use <#369896313082478594> or DMs to talk to bots.');
|
||||
return;
|
||||
}
|
||||
function doWithdraw(message, tipper, words, helpmsg) {
|
||||
if (words.length < 4) {
|
||||
doHelp(message);
|
||||
doHelp(message, helpmsg);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -80,7 +84,7 @@ function doWithdraw(message, tipper, words) {
|
|||
return;
|
||||
}
|
||||
|
||||
lbry.sendFrom(tipper, address, amount, function(err, txId) {
|
||||
lbry.sendFrom(tipper, address, amount, function (err, txId) {
|
||||
if (err) {
|
||||
message.reply(err.message);
|
||||
}
|
||||
|
@ -91,56 +95,58 @@ function doWithdraw(message, tipper, words) {
|
|||
}
|
||||
|
||||
|
||||
function doTip(message, tipper, words) {
|
||||
function doTip(message, tipper, words, helpmsg) {
|
||||
if (words.length < 3 || !words) {
|
||||
doHelp(message);
|
||||
doHelp(message, helpmsg);
|
||||
return;
|
||||
}
|
||||
|
||||
let amount = getValidatedAmount(words[2]);
|
||||
let prv = 0;
|
||||
let amountOffset = 2;
|
||||
if (words.length >= 4 && words[1] === 'private') {
|
||||
prv = 1;
|
||||
amountOffset = 3;
|
||||
}
|
||||
|
||||
let amount = getValidatedAmount(words[amountOffset]);
|
||||
|
||||
if (amount === null) {
|
||||
message.reply('I dont know how to tip that many credits');
|
||||
return;
|
||||
}
|
||||
|
||||
if (message.mentions.members.first().id) {
|
||||
let id = message.mentions.members.first().id;
|
||||
sendLbc(message, tipper, id, amount);
|
||||
if (message.mentions.users.first().id) {
|
||||
sendLbc(message, tipper, message.mentions.users.first().id.replace('!', ''), amount, prv);
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
message.reply('Sorry, I could not find a user in your tip...');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function doHelp(message) {
|
||||
if(!inPrivateOrBotSandbox(message)){
|
||||
message.reply('Please use <#369896313082478594> or DMs to talk to bots.');
|
||||
return;
|
||||
}
|
||||
message.reply('Sent you help via DM!');
|
||||
message.author.send('**!tip**\n !tip balance: get your balance\n !tip deposit: get adress for your deposits\n !tip withdraw ADDRESS AMOUNT: withdraw AMOUNT credits to ADDRESS\n !tip <user> <amount>: send <amount> credits to <user>');
|
||||
}
|
||||
|
||||
|
||||
function sendLbc(message, tipper, id, amount) {
|
||||
getAddress(id, function(err, address){
|
||||
function sendLbc(message, tipper, recipient, amount, privacyFlag) {
|
||||
getAddress(recipient, function (err, address) {
|
||||
if (err) {
|
||||
message.reply(err.message);
|
||||
}
|
||||
else {
|
||||
lbry.sendFrom(tipper, address, amount, 1, null, null, function(err, txId){
|
||||
lbry.sendFrom(tipper, address, amount, 1, null, null, function (err, txId) {
|
||||
if (err) {
|
||||
message.reply(err.message);
|
||||
}
|
||||
else {
|
||||
var imessage =
|
||||
'Wubba lubba dub dub! <@' + tipper + '> tipped <@' + id + '> ' + amount + ' LBC (' + txLink(txId) + '). ' +
|
||||
'Wubba lubba dub dub! <@' + tipper + '> tipped <@' + recipient + '> ' + amount + ' LBC (' + txLink(txId) + '). ' +
|
||||
'DM me `!tip` for tipbot instructions.'
|
||||
if (privacyFlag) {
|
||||
message.author.send(imessage);
|
||||
if (message.author.id != message.mentions.users.first().id) {
|
||||
message.mentions.users.first().send(imessage);
|
||||
}
|
||||
} else {
|
||||
message.reply(imessage);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
@ -148,15 +154,15 @@ function sendLbc(message, tipper, id, amount) {
|
|||
|
||||
|
||||
function getAddress(userId, cb) {
|
||||
lbry.getAddressesByAccount(userId, function(err, addresses) {
|
||||
lbry.getAddressesByAccount(userId, function (err, addresses) {
|
||||
if (err) {
|
||||
cb(err);
|
||||
}
|
||||
else if(addresses.length > 0) {
|
||||
else if (addresses.length > 0) {
|
||||
cb(null, addresses[0]);
|
||||
}
|
||||
else {
|
||||
lbry.getNewAddress(userId, function(err, address) {
|
||||
lbry.getNewAddress(userId, function (err, address) {
|
||||
if (err) {
|
||||
cb(err);
|
||||
}
|
||||
|
@ -168,18 +174,20 @@ function getAddress(userId, cb) {
|
|||
});
|
||||
}
|
||||
|
||||
function inPrivateOrBotSandbox(msg){
|
||||
if((msg.channel.type == 'dm') || (msg.channel.id === '369896313082478594')){
|
||||
|
||||
function inPrivateOrBotSandbox(msg) {
|
||||
if ((msg.channel.type == 'dm') || (msg.channel.id === '369896313082478594')) {
|
||||
return true;
|
||||
}else{
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function getValidatedAmount(amount) {
|
||||
amount = amount.trim();
|
||||
if (amount.toLowerCase().endsWith('lbc')) {
|
||||
amount = amount.substring(0, amount.length-3);
|
||||
amount = amount.substring(0, amount.length - 3);
|
||||
}
|
||||
return amount.match(/^[0-9]+(\.[0-9]+)?$/) ? amount : null;
|
||||
}
|
||||
|
@ -188,3 +196,9 @@ function getValidatedAmount(amount) {
|
|||
function txLink(txId) {
|
||||
return "<https://explorer.lbry.io/tx/" + txId + ">";
|
||||
}
|
||||
|
||||
|
||||
function formatDescriptions(msgparts) {
|
||||
return msgparts.map(elem => '\t' + elem[0] + '\n\t\t' + elem[1] + '\n')
|
||||
.join('');
|
||||
}
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
'use strict';
|
||||
|
||||
const fs = require("fs"),
|
||||
path = require("path");
|
||||
const fs = require('fs'),
|
||||
path = require('path');
|
||||
|
||||
function getPlugins(srcpath) {
|
||||
return fs.readdirSync(srcpath);
|
||||
}
|
||||
let plugin_directory = path.join(__dirname, "modules");
|
||||
let plugin_directory = path.join(__dirname, 'modules');
|
||||
let plugins = getPlugins(plugin_directory);
|
||||
|
||||
exports.init = function init() {
|
||||
|
@ -14,7 +14,7 @@ exports.init = function init() {
|
|||
};
|
||||
|
||||
function load_plugins() {
|
||||
const dbot = require("./bot.js");
|
||||
const dbot = require('./bot.js');
|
||||
let commandCount = 0;
|
||||
let otherFunc = 0;
|
||||
for (let i = 0; i < plugins.length; i++) {
|
||||
|
@ -25,7 +25,7 @@ function load_plugins() {
|
|||
console.log(`Improper setup of the '${plugins[i]}' plugin. : ${err}`);
|
||||
}
|
||||
if (plugin) {
|
||||
if ("commands" in plugin) {
|
||||
if ('commands' in plugin) {
|
||||
for (let j = 0; j < plugin.commands.length; j++) {
|
||||
if (plugin.commands[j] in plugin) {
|
||||
dbot.addCommand(plugin.commands[j], plugin[plugin.commands[j]]);
|
||||
|
@ -33,7 +33,7 @@ function load_plugins() {
|
|||
}
|
||||
}
|
||||
}
|
||||
if("custom" in plugin){
|
||||
if ('custom' in plugin) {
|
||||
for (let j = 0; j < plugin.custom.length; j++) {
|
||||
if (plugin.custom[j] in plugin) {
|
||||
dbot.addCustomFunc(plugin[plugin.custom[j]]);
|
||||
|
|
1911
package-lock.json
generated
Normal file
1911
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
16
package.json
16
package.json
|
@ -8,8 +8,8 @@
|
|||
"discord.js": "^11.2.1",
|
||||
"embed-creator": "^1.1.4",
|
||||
"jsonpath": "^0.2.12",
|
||||
"moment": "^2.19.1",
|
||||
"mongoose": "^4.12.3",
|
||||
"moment": "^2.20.1",
|
||||
"mongoose": "^4.13.7",
|
||||
"node-config": "^0.0.2",
|
||||
"numeral": "^2.0.6",
|
||||
"request": "^2.83.0"
|
||||
|
@ -17,16 +17,18 @@
|
|||
"scripts": {
|
||||
"prettier": "prettier * --write",
|
||||
"build": "babel bot -d dist",
|
||||
"prod": "babel bot -d dist & node dist/bot.js"
|
||||
"prod": "babel bot -d dist & node dist/bot.js",
|
||||
"lint": "prettier --write bot/**/*.js",
|
||||
"precommit": "prettier --write bot/**/*.js"
|
||||
},
|
||||
"devDependencies": {
|
||||
"prettier": "1.7.4"
|
||||
},
|
||||
"name": "wunderbot-discord",
|
||||
"version": "0.0.1",
|
||||
"description": "LBRYs bot for Discord",
|
||||
"name": "lbry-tipbot",
|
||||
"version": "0.0.3",
|
||||
"description": "LBRYs tipbot for Discord",
|
||||
"main": "app.js",
|
||||
"repository": "https://github.com/filipnyquist/wunderbot-disc",
|
||||
"repository": "https://github.com/lbryio/lbry-tipbot",
|
||||
"author": "filipnyquist <filip@lbry.io>",
|
||||
"license": "MIT"
|
||||
}
|
||||
|
|
106
yarn.lock
106
yarn.lock
|
@ -2,6 +2,10 @@
|
|||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@types/node@^7.0.48":
|
||||
version "7.0.48"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.48.tgz#24bfdc0aa82e8f6dbd017159c58094a2e06d0abb"
|
||||
|
||||
JSONSelect@0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/JSONSelect/-/JSONSelect-0.4.0.tgz#a08edcc67eb3fcbe99ed630855344a0cf282bb8d"
|
||||
|
@ -18,13 +22,13 @@ ajv@^4.9.1:
|
|||
json-stable-stringify "^1.0.1"
|
||||
|
||||
ajv@^5.1.0:
|
||||
version "5.2.3"
|
||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.3.tgz#c06f598778c44c6b161abafe3466b81ad1814ed2"
|
||||
version "5.4.0"
|
||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.4.0.tgz#32d1cf08dbc80c432f426f12e10b2511f6b46474"
|
||||
dependencies:
|
||||
co "^4.6.0"
|
||||
fast-deep-equal "^1.0.0"
|
||||
fast-json-stable-stringify "^2.0.0"
|
||||
json-schema-traverse "^0.3.0"
|
||||
json-stable-stringify "^1.0.1"
|
||||
|
||||
ansi-regex@^2.0.0:
|
||||
version "2.1.1"
|
||||
|
@ -407,8 +411,8 @@ bcrypt-pbkdf@^1.0.0:
|
|||
tweetnacl "^0.14.3"
|
||||
|
||||
binary-extensions@^1.0.0:
|
||||
version "1.10.0"
|
||||
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0"
|
||||
version "1.11.0"
|
||||
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205"
|
||||
|
||||
bitcoin@^3.0.1:
|
||||
version "3.0.1"
|
||||
|
@ -523,16 +527,18 @@ combined-stream@^1.0.5, combined-stream@~1.0.5:
|
|||
delayed-stream "~1.0.0"
|
||||
|
||||
commander@^2.11.0:
|
||||
version "2.11.0"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
|
||||
version "2.12.0"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.0.tgz#2f13615c39c687a77926aa68ef25c099db1e72fb"
|
||||
dependencies:
|
||||
"@types/node" "^7.0.48"
|
||||
|
||||
concat-map@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||
|
||||
config@^1.27.0:
|
||||
version "1.27.0"
|
||||
resolved "https://registry.yarnpkg.com/config/-/config-1.27.0.tgz#3ab30d0080ff76f407c2f47ac1326adfd908af5f"
|
||||
version "1.28.1"
|
||||
resolved "https://registry.yarnpkg.com/config/-/config-1.28.1.tgz#7625d2a1e4c90f131d8a73347982d93c3873282d"
|
||||
dependencies:
|
||||
json5 "0.4.0"
|
||||
os-homedir "1.0.2"
|
||||
|
@ -595,6 +601,10 @@ detect-indent@^4.0.0:
|
|||
dependencies:
|
||||
repeating "^2.0.0"
|
||||
|
||||
detect-libc@^1.0.2:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
|
||||
|
||||
discord.js@^11.2.1:
|
||||
version "11.2.1"
|
||||
resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-11.2.1.tgz#bfc0f5a8b6398dc372d026e503592646456053fc"
|
||||
|
@ -616,8 +626,8 @@ ecc-jsbn@~0.1.1:
|
|||
jsbn "~0.1.0"
|
||||
|
||||
embed-creator@^1.1.4:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/embed-creator/-/embed-creator-1.1.4.tgz#7f8a783db6ae384d029e746837d65553e6ff0f9e"
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/embed-creator/-/embed-creator-1.2.3.tgz#f122165d39f9ca35aed3ef7b7ae643e7dd856ea1"
|
||||
|
||||
es6-promise@3.2.1:
|
||||
version "3.2.1"
|
||||
|
@ -695,6 +705,10 @@ fast-deep-equal@^1.0.0:
|
|||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff"
|
||||
|
||||
fast-json-stable-stringify@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
|
||||
|
||||
filename-regex@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
|
||||
|
@ -740,19 +754,19 @@ form-data@~2.3.1:
|
|||
mime-types "^2.1.12"
|
||||
|
||||
fs-readdir-recursive@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560"
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27"
|
||||
|
||||
fs.realpath@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
||||
|
||||
fsevents@^1.0.0:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4"
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8"
|
||||
dependencies:
|
||||
nan "^2.3.0"
|
||||
node-pre-gyp "^0.6.36"
|
||||
node-pre-gyp "^0.6.39"
|
||||
|
||||
fstream-ignore@^1.0.5:
|
||||
version "1.0.5"
|
||||
|
@ -887,9 +901,9 @@ home-or-tmp@^2.0.0:
|
|||
os-homedir "^1.0.0"
|
||||
os-tmpdir "^1.0.1"
|
||||
|
||||
hooks-fixed@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/hooks-fixed/-/hooks-fixed-2.0.0.tgz#a01d894d52ac7f6599bbb1f63dfc9c411df70cba"
|
||||
hooks-fixed@2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/hooks-fixed/-/hooks-fixed-2.0.2.tgz#20076daa07e77d8a6106883ce3f1722e051140b0"
|
||||
|
||||
http-signature@~1.1.0:
|
||||
version "1.1.1"
|
||||
|
@ -919,8 +933,8 @@ inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3:
|
|||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
||||
|
||||
ini@~1.3.0:
|
||||
version "1.3.4"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
|
||||
version "1.3.5"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
|
||||
|
||||
invariant@^2.2.2:
|
||||
version "2.2.2"
|
||||
|
@ -935,8 +949,8 @@ is-binary-path@^1.0.0:
|
|||
binary-extensions "^1.0.0"
|
||||
|
||||
is-buffer@^1.1.5:
|
||||
version "1.1.5"
|
||||
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc"
|
||||
version "1.1.6"
|
||||
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
|
||||
|
||||
is-dotfile@^1.0.0:
|
||||
version "1.0.3"
|
||||
|
@ -1112,6 +1126,10 @@ lex-parser@0.1.x, lex-parser@~0.1.3:
|
|||
version "0.1.4"
|
||||
resolved "https://registry.yarnpkg.com/lex-parser/-/lex-parser-0.1.4.tgz#64c4f025f17fd53bfb45763faeb16f015a747550"
|
||||
|
||||
lodash.get@4.4.2:
|
||||
version "4.4.2"
|
||||
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
|
||||
|
||||
lodash.some@^4.6.0:
|
||||
version "4.6.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d"
|
||||
|
@ -1179,8 +1197,8 @@ minimist@^1.2.0:
|
|||
minimist "0.0.8"
|
||||
|
||||
moment@^2.10.3, moment@^2.19.1:
|
||||
version "2.19.1"
|
||||
resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.1.tgz#56da1a2d1cbf01d38b7e1afc31c10bcfa1929167"
|
||||
version "2.19.2"
|
||||
resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.2.tgz#8a7f774c95a64550b4c7ebd496683908f9419dbe"
|
||||
|
||||
mongodb-core@2.1.17:
|
||||
version "2.1.17"
|
||||
|
@ -1198,13 +1216,14 @@ mongodb@2.2.33:
|
|||
readable-stream "2.2.7"
|
||||
|
||||
mongoose@^4.12.3:
|
||||
version "4.12.3"
|
||||
resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-4.12.3.tgz#7099bf8ce4945150001f4c2462e56c9e958ddcb9"
|
||||
version "4.13.4"
|
||||
resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-4.13.4.tgz#31afd5fe865911678adbc892c4d3f66d0a821dfb"
|
||||
dependencies:
|
||||
async "2.1.4"
|
||||
bson "~1.0.4"
|
||||
hooks-fixed "2.0.0"
|
||||
hooks-fixed "2.0.2"
|
||||
kareem "1.5.0"
|
||||
lodash.get "4.4.2"
|
||||
mongodb "2.2.33"
|
||||
mpath "0.3.0"
|
||||
mpromise "0.5.5"
|
||||
|
@ -1240,17 +1259,18 @@ muri@1.3.0:
|
|||
resolved "https://registry.yarnpkg.com/muri/-/muri-1.3.0.tgz#aeccf3db64c56aa7c5b34e00f95b7878527a4721"
|
||||
|
||||
nan@^2.3.0:
|
||||
version "2.7.0"
|
||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46"
|
||||
version "2.8.0"
|
||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a"
|
||||
|
||||
node-config@^0.0.2:
|
||||
version "0.0.2"
|
||||
resolved "https://registry.yarnpkg.com/node-config/-/node-config-0.0.2.tgz#46b40dcfbcb0e66d46a15f81b54eac2130fb150d"
|
||||
|
||||
node-pre-gyp@^0.6.36:
|
||||
version "0.6.38"
|
||||
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.38.tgz#e92a20f83416415bb4086f6d1fb78b3da73d113d"
|
||||
node-pre-gyp@^0.6.39:
|
||||
version "0.6.39"
|
||||
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649"
|
||||
dependencies:
|
||||
detect-libc "^1.0.2"
|
||||
hawk "3.1.3"
|
||||
mkdirp "^0.5.1"
|
||||
nopt "^4.0.1"
|
||||
|
@ -1585,8 +1605,8 @@ sliced@1.0.1:
|
|||
resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41"
|
||||
|
||||
snekfetch@^3.3.0:
|
||||
version "3.5.2"
|
||||
resolved "https://registry.yarnpkg.com/snekfetch/-/snekfetch-3.5.2.tgz#aec6f2a7d2c43b9ed942653d1074070a2c1cae50"
|
||||
version "3.5.8"
|
||||
resolved "https://registry.yarnpkg.com/snekfetch/-/snekfetch-3.5.8.tgz#4d4e539f8435352105e74c392f62f66740a27d6c"
|
||||
|
||||
sntp@1.x.x:
|
||||
version "1.0.9"
|
||||
|
@ -1595,8 +1615,8 @@ sntp@1.x.x:
|
|||
hoek "2.x.x"
|
||||
|
||||
sntp@2.x.x:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.0.2.tgz#5064110f0af85f7cfdb7d6b67a40028ce52b4b2b"
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8"
|
||||
dependencies:
|
||||
hoek "4.x.x"
|
||||
|
||||
|
@ -1667,8 +1687,8 @@ supports-color@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
|
||||
|
||||
tar-pack@^3.4.0:
|
||||
version "3.4.0"
|
||||
resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984"
|
||||
version "3.4.1"
|
||||
resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f"
|
||||
dependencies:
|
||||
debug "^2.2.0"
|
||||
fstream "^1.0.10"
|
||||
|
@ -1720,8 +1740,8 @@ uid-number@^0.0.6:
|
|||
resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
|
||||
|
||||
ultron@~1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.0.tgz#b07a2e6a541a815fc6a34ccd4533baec307ca864"
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c"
|
||||
|
||||
underscore@1.1.x:
|
||||
version "1.1.7"
|
||||
|
@ -1768,8 +1788,8 @@ wrappy@1:
|
|||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||
|
||||
ws@^3.1.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-3.2.0.tgz#d5d3d6b11aff71e73f808f40cc69d52bb6d4a185"
|
||||
version "3.3.2"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.2.tgz#96c1d08b3fefda1d5c1e33700d3bfaa9be2d5608"
|
||||
dependencies:
|
||||
async-limiter "~1.0.0"
|
||||
safe-buffer "~5.1.0"
|
||||
|
|
Loading…
Reference in a new issue