mirror of
https://github.com/arthur-pbty/xiao.git
synced 2026-06-06 14:20:51 +02:00
eslint config aqua
This commit is contained in:
-142
@@ -1,142 +0,0 @@
|
||||
{
|
||||
"extends": "eslint:recommended",
|
||||
"env": {
|
||||
"node": true,
|
||||
"es6": true
|
||||
},
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 2017
|
||||
},
|
||||
"rules": {
|
||||
"no-compare-neg-zero": "error",
|
||||
"no-extra-parens": ["warn", "all", {
|
||||
"nestedBinaryExpressions": false
|
||||
}],
|
||||
"no-template-curly-in-string": "error",
|
||||
"no-unsafe-negation": "error",
|
||||
|
||||
"accessor-pairs": "warn",
|
||||
"array-callback-return": "error",
|
||||
"complexity": "warn",
|
||||
"consistent-return": "error",
|
||||
"curly": ["error", "multi-line", "consistent"],
|
||||
"dot-location": ["error", "property"],
|
||||
"dot-notation": "error",
|
||||
"eqeqeq": "error",
|
||||
"no-empty-function": "error",
|
||||
"no-floating-decimal": "error",
|
||||
"no-implied-eval": "error",
|
||||
"no-invalid-this": "error",
|
||||
"no-lone-blocks": "error",
|
||||
"no-multi-spaces": "error",
|
||||
"no-new-func": "error",
|
||||
"no-new-wrappers": "error",
|
||||
"no-new": "error",
|
||||
"no-octal-escape": "error",
|
||||
"no-return-assign": "error",
|
||||
"no-return-await": "error",
|
||||
"no-self-compare": "error",
|
||||
"no-sequences": "error",
|
||||
"no-throw-literal": "error",
|
||||
"no-unmodified-loop-condition": "error",
|
||||
"no-unused-expressions": "error",
|
||||
"no-useless-call": "error",
|
||||
"no-useless-concat": "error",
|
||||
"no-useless-escape": "error",
|
||||
"no-useless-return": "error",
|
||||
"no-void": "error",
|
||||
"no-warning-comments": "warn",
|
||||
"prefer-promise-reject-errors": "error",
|
||||
"require-await": "warn",
|
||||
"wrap-iife": "error",
|
||||
"yoda": "error",
|
||||
|
||||
"no-label-var": "error",
|
||||
"no-shadow": "error",
|
||||
"no-undef-init": "error",
|
||||
|
||||
"callback-return": "error",
|
||||
"handle-callback-err": "error",
|
||||
"no-mixed-requires": "error",
|
||||
"no-new-require": "error",
|
||||
"no-path-concat": "error",
|
||||
"no-console": 0,
|
||||
"no-var": "error",
|
||||
|
||||
"array-bracket-spacing": "error",
|
||||
"block-spacing": "error",
|
||||
"brace-style": ["error", "1tbs", { "allowSingleLine": true }],
|
||||
"capitalized-comments": ["error", "always", { "ignoreConsecutiveComments": true }],
|
||||
"comma-dangle": "error",
|
||||
"comma-spacing": "error",
|
||||
"comma-style": "error",
|
||||
"computed-property-spacing": "error",
|
||||
"consistent-this": "error",
|
||||
"eol-last": "error",
|
||||
"func-names": "error",
|
||||
"func-style": ["error", "declaration", { "allowArrowFunctions": true }],
|
||||
"indent": ["error", 4, { "SwitchCase": 1 }],
|
||||
"key-spacing": "error",
|
||||
"keyword-spacing": ["error", {
|
||||
"overrides": {
|
||||
"if": { "after": true },
|
||||
"for": { "after": true },
|
||||
"while": { "after": true },
|
||||
"catch": { "after": true },
|
||||
"switch": { "after": true }
|
||||
}
|
||||
}],
|
||||
"max-depth": ["error", 6],
|
||||
"max-len": ["error", 120, 2],
|
||||
"max-nested-callbacks": ["error", { "max": 4 }],
|
||||
"max-statements-per-line": ["error", { "max": 2 }],
|
||||
"new-cap": "error",
|
||||
"newline-per-chained-call": ["error", { "ignoreChainWithDepth": 5 }],
|
||||
"no-array-constructor": "error",
|
||||
"no-bitwise": "warn",
|
||||
"no-inline-comments": "error",
|
||||
"no-multiple-empty-lines": ["error", { "max": 2, "maxEOF": 1, "maxBOF": 0 }],
|
||||
"no-new-object": "error",
|
||||
"no-spaced-func": "error",
|
||||
"no-trailing-spaces": "error",
|
||||
"no-unneeded-ternary": "error",
|
||||
"no-whitespace-before-property": "error",
|
||||
"nonblock-statement-body-position": "error",
|
||||
"object-curly-newline": "error",
|
||||
"object-curly-spacing": ["error", "always"],
|
||||
"operator-assignment": "error",
|
||||
"operator-linebreak": ["error", "after"],
|
||||
"padded-blocks": ["error", "never"],
|
||||
"quote-props": ["error", "as-needed"],
|
||||
"quotes": ["error", "single", { "avoidEscape": true, "allowTemplateLiterals": true }],
|
||||
"semi-spacing": "error",
|
||||
"semi": "error",
|
||||
"space-before-blocks": "error",
|
||||
"space-before-function-paren": ["error", {
|
||||
"anonymous": "never",
|
||||
"named": "never",
|
||||
"asyncArrow": "always"
|
||||
}],
|
||||
"space-in-parens": "error",
|
||||
"space-infix-ops": "error",
|
||||
"space-unary-ops": "error",
|
||||
"spaced-comment": "error",
|
||||
"template-tag-spacing": "error",
|
||||
"unicode-bom": "error",
|
||||
|
||||
"arrow-body-style": "error",
|
||||
"arrow-parens": ["error", "always"],
|
||||
"arrow-spacing": "error",
|
||||
"no-duplicate-imports": "error",
|
||||
"no-useless-computed-key": "error",
|
||||
"no-useless-constructor": "error",
|
||||
"prefer-arrow-callback": "error",
|
||||
"prefer-const": "error",
|
||||
"prefer-rest-params": "error",
|
||||
"prefer-spread": "error",
|
||||
"prefer-template": "error",
|
||||
"rest-spread-spacing": "error",
|
||||
"template-curly-spacing": "error",
|
||||
"yield-star-spacing": "error"
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,3 @@
|
||||
# Packages
|
||||
node_modules/
|
||||
|
||||
# Log Files
|
||||
logs/
|
||||
*.log
|
||||
|
||||
+100
-100
@@ -2,56 +2,56 @@ const { token, owner, prefix, invite } = require('./config');
|
||||
const path = require('path');
|
||||
const { CommandoClient } = require('discord.js-commando');
|
||||
const client = new CommandoClient({
|
||||
commandPrefix: prefix,
|
||||
owner,
|
||||
invite,
|
||||
disableEveryone: true,
|
||||
unknownCommandResponse: false,
|
||||
disabledEvents: [
|
||||
'TYPING_START',
|
||||
'VOICE_STATE_UPDATE',
|
||||
'FRIEND_ADD',
|
||||
'FRIEND_REMOVE'
|
||||
],
|
||||
messageCacheLifetime: 60,
|
||||
messageSweepInterval: 60
|
||||
commandPrefix: prefix,
|
||||
owner,
|
||||
invite,
|
||||
disableEveryone: true,
|
||||
unknownCommandResponse: false,
|
||||
disabledEvents: [
|
||||
'TYPING_START',
|
||||
'VOICE_STATE_UPDATE',
|
||||
'FRIEND_ADD',
|
||||
'FRIEND_REMOVE'
|
||||
],
|
||||
messageCacheLifetime: 60,
|
||||
messageSweepInterval: 60
|
||||
});
|
||||
const { carbon, dBots, dBotsOrg } = require('./structures/Util');
|
||||
|
||||
client.registry
|
||||
.registerDefaultTypes()
|
||||
.registerGroups([
|
||||
['util', 'Utility'],
|
||||
['user-info', 'User Info'],
|
||||
['guild-info', 'Server Info'],
|
||||
['moderation', 'Moderation'],
|
||||
['random-res', 'Random Response'],
|
||||
['random-img', 'Random Image'],
|
||||
['image-edit', 'Image Manipulation'],
|
||||
['avatar-edit', 'Avatar Manipulation'],
|
||||
['text-edit', 'Text Manipulation'],
|
||||
['num-edit', 'Number Manipulation'],
|
||||
['search', 'Search'],
|
||||
['games', 'Games'],
|
||||
['random', 'Random/Other'],
|
||||
['roleplay', 'Roleplay']
|
||||
])
|
||||
.registerDefaultCommands({
|
||||
help: false,
|
||||
ping: false,
|
||||
prefix: false,
|
||||
commandState: false
|
||||
})
|
||||
.registerCommandsIn(path.join(__dirname, 'commands'));
|
||||
.registerDefaultTypes()
|
||||
.registerGroups([
|
||||
['util', 'Utility'],
|
||||
['user-info', 'User Info'],
|
||||
['guild-info', 'Server Info'],
|
||||
['moderation', 'Moderation'],
|
||||
['random-res', 'Random Response'],
|
||||
['random-img', 'Random Image'],
|
||||
['image-edit', 'Image Manipulation'],
|
||||
['avatar-edit', 'Avatar Manipulation'],
|
||||
['text-edit', 'Text Manipulation'],
|
||||
['num-edit', 'Number Manipulation'],
|
||||
['search', 'Search'],
|
||||
['games', 'Games'],
|
||||
['random', 'Random/Other'],
|
||||
['roleplay', 'Roleplay']
|
||||
])
|
||||
.registerDefaultCommands({
|
||||
help: false,
|
||||
ping: false,
|
||||
prefix: false,
|
||||
commandState: false
|
||||
})
|
||||
.registerCommandsIn(path.join(__dirname, 'commands'));
|
||||
|
||||
client.on('ready', () => {
|
||||
console.log(`[READY] Shard ${client.shard.id} Logged in as ${client.user.tag} (${client.user.id})!`);
|
||||
client.user.setGame(`${prefix}help | Shard ${client.shard.id}`);
|
||||
console.log(`[READY] Shard ${client.shard.id} Logged in as ${client.user.tag} (${client.user.id})!`);
|
||||
client.user.setGame(`${prefix}help | Shard ${client.shard.id}`);
|
||||
});
|
||||
|
||||
client.on('disconnect', (event) => {
|
||||
console.log(`[DISCONNECT] Shard ${client.shard.id} disconnected with Code ${event.code}.`);
|
||||
process.exit(0);
|
||||
client.on('disconnect', event => {
|
||||
console.log(`[DISCONNECT] Shard ${client.shard.id} disconnected with Code ${event.code}.`);
|
||||
process.exit(0);
|
||||
});
|
||||
|
||||
client.on('error', console.error);
|
||||
@@ -60,73 +60,73 @@ client.on('warn', console.warn);
|
||||
|
||||
client.on('commandError', (command, err) => console.error(command.name, err));
|
||||
|
||||
client.on('message', async (msg) => {
|
||||
if (!msg.guild || msg.author.bot) return;
|
||||
const topic = msg.guild.defaultChannel.topic || '';
|
||||
if (!topic.toLowerCase().includes('<inviteguard>')) return;
|
||||
const member = await msg.guild.fetchMember(msg.author);
|
||||
if (member.hasPermission('ADMINISTRATOR')) return;
|
||||
if (/(discord(\.gg\/|app\.com\/invite\/|\.me\/))/gi.test(msg.content)) {
|
||||
if (msg.channel.permissionsFor(client.user).has('MANAGE_MESSAGES')) msg.delete();
|
||||
msg.reply('Invites are prohibited from being posted here.');
|
||||
}
|
||||
client.on('message', async msg => {
|
||||
if (!msg.guild || msg.author.bot) return;
|
||||
const topic = msg.guild.defaultChannel.topic || '';
|
||||
if (!topic.toLowerCase().includes('<inviteguard>')) return;
|
||||
const member = await msg.guild.fetchMember(msg.author);
|
||||
if (member.hasPermission('ADMINISTRATOR')) return;
|
||||
if (/discord(\.gg\/|app\.com\/invite\/|\.me\/)/gi.test(msg.content)) {
|
||||
if (msg.channel.permissionsFor(client.user).has('MANAGE_MESSAGES')) msg.delete();
|
||||
msg.reply('Invites are prohibited from being posted here.');
|
||||
}
|
||||
});
|
||||
|
||||
client.on('guildMemberAdd', (member) => {
|
||||
const channel = member.guild.channels.filter((c) => {
|
||||
const topic = c.topic || '';
|
||||
if (topic.includes('<memberlog>')) return true;
|
||||
else return false;
|
||||
}).first() || member.guild.channels.find('name', 'member-log');
|
||||
if (!channel || !channel.permissionsFor(client.user).has('SEND_MESSAGES')) return;
|
||||
const parseMsg = (topic) => {
|
||||
if (!topic || !/(<joinmessage>.+<\/joinmessage>)/gi.test(topic)) return '';
|
||||
const setting = topic.match(/(<joinmessage>.+<\/joinmessage>)/gi)[0];
|
||||
return setting.slice(13, setting.length - 14)
|
||||
.replace(/(\(member\))/gi, member.user.username)
|
||||
.replace(/(\(server\))/gi, member.guild.name)
|
||||
.replace(/(\(mention\))/gi, member.toString());
|
||||
};
|
||||
const msg = channel.topic ? parseMsg(channel.topic) : '';
|
||||
channel.send(msg || `Welcome ${member.user.username}!`);
|
||||
client.on('guildMemberAdd', member => {
|
||||
const channel = member.guild.channels.filter(c => {
|
||||
const topic = c.topic || '';
|
||||
if (topic.includes('<memberlog>')) return true;
|
||||
return false;
|
||||
}).first() || member.guild.channels.find('name', 'member-log');
|
||||
if (!channel || !channel.permissionsFor(client.user).has('SEND_MESSAGES')) return;
|
||||
const parseMsg = topic => {
|
||||
if (!topic || !/<joinmessage>.+<\/joinmessage>/gi.test(topic)) return '';
|
||||
const setting = topic.match(/<joinmessage>.+<\/joinmessage>/gi)[0];
|
||||
return setting.slice(13, setting.length - 14)
|
||||
.replace(/\(member\)/gi, member.user.username)
|
||||
.replace(/\(server\)/gi, member.guild.name)
|
||||
.replace(/\(mention\)/gi, member.toString());
|
||||
};
|
||||
const msg = channel.topic ? parseMsg(channel.topic) : '';
|
||||
channel.send(msg || `Welcome ${member.user.username}!`);
|
||||
});
|
||||
|
||||
client.on('guildMemberRemove', (member) => {
|
||||
const channel = member.guild.channels.filter((c) => {
|
||||
const topic = c.topic || '';
|
||||
if (topic.includes('<memberlog>')) return true;
|
||||
else return false;
|
||||
}).first() || member.guild.channels.find('name', 'member-log');
|
||||
if (!channel || !channel.permissionsFor(client.user).has('SEND_MESSAGES')) return;
|
||||
const parseMsg = (topic) => {
|
||||
if (!topic || !/(<leavemessage>.+<\/leavemessage>)/gi.test(topic)) return '';
|
||||
const setting = topic.match(/(<leavemessage>.+<\/leavemessage>)/gi)[0];
|
||||
return setting.slice(14, setting.length - 15)
|
||||
.replace(/(\(member\))/gi, member.user.username)
|
||||
.replace(/(\(server\))/gi, member.guild.name)
|
||||
.replace(/(\(mention\))/gi, member.toString());
|
||||
};
|
||||
const msg = channel.topic ? parseMsg(channel.topic) : '';
|
||||
channel.send(msg || `Bye ${member.user.username}...`);
|
||||
client.on('guildMemberRemove', member => {
|
||||
const channel = member.guild.channels.filter(c => {
|
||||
const topic = c.topic || '';
|
||||
if (topic.includes('<memberlog>')) return true;
|
||||
return false;
|
||||
}).first() || member.guild.channels.find('name', 'member-log');
|
||||
if (!channel || !channel.permissionsFor(client.user).has('SEND_MESSAGES')) return;
|
||||
const parseMsg = topic => {
|
||||
if (!topic || !/<leavemessage>.+<\/leavemessage>/gi.test(topic)) return '';
|
||||
const setting = topic.match(/<leavemessage>.+<\/leavemessage>/gi)[0];
|
||||
return setting.slice(14, setting.length - 15)
|
||||
.replace(/\(member\)/gi, member.user.username)
|
||||
.replace(/\(server\)/gi, member.guild.name)
|
||||
.replace(/\(mention\)/gi, member.toString());
|
||||
};
|
||||
const msg = channel.topic ? parseMsg(channel.topic) : '';
|
||||
channel.send(msg || `Bye ${member.user.username}...`);
|
||||
});
|
||||
|
||||
|
||||
client.on('guildCreate', async (guild) => {
|
||||
console.log(`[GUILD] I have joined ${guild.name}! (${guild.id})`);
|
||||
const guilds = await client.shard.fetchClientValues('guilds.size');
|
||||
const count = guilds.reduce((prev, val) => prev + val, 0);
|
||||
carbon(count);
|
||||
dBots(count, client.user.id);
|
||||
dBotsOrg(count, client.user.id);
|
||||
client.on('guildCreate', async guild => {
|
||||
console.log(`[GUILD] I have joined ${guild.name}! (${guild.id})`);
|
||||
const guilds = await client.shard.fetchClientValues('guilds.size');
|
||||
const count = guilds.reduce((prev, val) => prev + val, 0);
|
||||
carbon(count);
|
||||
dBots(count, client.user.id);
|
||||
dBotsOrg(count, client.user.id);
|
||||
});
|
||||
|
||||
client.on('guildDelete', async (guild) => {
|
||||
console.log(`[GUILD] I have left ${guild.name}... (${guild.id})`);
|
||||
const guilds = await client.shard.fetchClientValues('guilds.size');
|
||||
const count = guilds.reduce((prev, val) => prev + val, 0);
|
||||
carbon(count);
|
||||
dBots(count, client.user.id);
|
||||
dBotsOrg(count, client.user.id);
|
||||
client.on('guildDelete', async guild => {
|
||||
console.log(`[GUILD] I have left ${guild.name}... (${guild.id})`);
|
||||
const guilds = await client.shard.fetchClientValues('guilds.size');
|
||||
const count = guilds.reduce((prev, val) => prev + val, 0);
|
||||
carbon(count);
|
||||
dBots(count, client.user.id);
|
||||
dBotsOrg(count, client.user.id);
|
||||
});
|
||||
|
||||
client.login(token);
|
||||
|
||||
+20
-20
@@ -1,22 +1,22 @@
|
||||
[
|
||||
"It is certain",
|
||||
"It is decidedly so",
|
||||
"Without a doubt",
|
||||
"Yes definitely",
|
||||
"You may rely on it",
|
||||
"As I see it, yes",
|
||||
"Most likely",
|
||||
"Outlook good",
|
||||
"Yes",
|
||||
"Signs point to yes",
|
||||
"Reply hazy try again",
|
||||
"Ask again later",
|
||||
"Better not tell you now",
|
||||
"Cannot predict now",
|
||||
"Concentrate and ask again",
|
||||
"Don't count on it",
|
||||
"My reply is no",
|
||||
"My sources say no",
|
||||
"Outlook not so good",
|
||||
"Very doubtful"
|
||||
"It is certain",
|
||||
"It is decidedly so",
|
||||
"Without a doubt",
|
||||
"Yes definitely",
|
||||
"You may rely on it",
|
||||
"As I see it, yes",
|
||||
"Most likely",
|
||||
"Outlook good",
|
||||
"Yes",
|
||||
"Signs point to yes",
|
||||
"Reply hazy try again",
|
||||
"Ask again later",
|
||||
"Better not tell you now",
|
||||
"Cannot predict now",
|
||||
"Concentrate and ask again",
|
||||
"Don't count on it",
|
||||
"My reply is no",
|
||||
"My sources say no",
|
||||
"Outlook not so good",
|
||||
"Very doubtful"
|
||||
]
|
||||
|
||||
+102
-102
@@ -1,104 +1,104 @@
|
||||
[
|
||||
"Your smile is contagious.",
|
||||
"You look great today.",
|
||||
"You're a smart cookie.",
|
||||
"I bet you make babies smile.",
|
||||
"You have impeccable manners.",
|
||||
"I like your style.",
|
||||
"You have the best laugh.",
|
||||
"I appreciate you.",
|
||||
"You are the most perfect you there is.",
|
||||
"You are enough.",
|
||||
"You're strong.",
|
||||
"Your perspective is refreshing.",
|
||||
"You're an awesome friend.",
|
||||
"You light up the room.",
|
||||
"You shine brighter than a shooting star.",
|
||||
"You deserve a hug right now.",
|
||||
"You should be proud of yourself.",
|
||||
"You're more helpful than you realize.",
|
||||
"You have a great sense of humor.",
|
||||
"You've got all the right moves!",
|
||||
"Is that your picture next to 'charming' in the dictionary?",
|
||||
"Your kindness is a balm to all who encounter it.",
|
||||
"You're all that and a super-size bag of chips.",
|
||||
"On a scale from 1 to 10, you're an 11.",
|
||||
"You are brave.",
|
||||
"You're even more beautiful on the inside than you are on the outside.",
|
||||
"You have the courage of your convictions.",
|
||||
"Your eyes are breathtaking.",
|
||||
"If cartoon bluebirds were real, a bunch of them would be sitting on your shoulders singing right now.",
|
||||
"You are making a difference.",
|
||||
"You're like sunshine on a rainy day.",
|
||||
"You bring out the best in other people.",
|
||||
"Your ability to recall random factoids at just the right time is impressive.",
|
||||
"You're a great listener.",
|
||||
"How is it that you always look great, even in sweatpants?",
|
||||
"Everything would be better if more people were like you!",
|
||||
"I bet you sweat glitter.",
|
||||
"You were cool way before hipsters were cool.",
|
||||
"That color is perfect on you.",
|
||||
"Hanging out with you is always a blast.",
|
||||
"You always know -- and say -- exactly what I need to hear when I need to hear it.",
|
||||
"You smell really good.",
|
||||
"You may dance like no one's watching, but everyone's watching because you're an amazing dancer!",
|
||||
"Being around you makes everything better!",
|
||||
"When you say, 'I meant to do that,' I totally believe you.",
|
||||
"When you're not afraid to be yourself is when you're most incredible.",
|
||||
"Colors seem brighter when you're around.",
|
||||
"You're more fun than a ball pit filled with candy. (And seriously, what could be more fun than that?)",
|
||||
"That thing you don't like about yourself is what makes you so interesting.",
|
||||
"You're wonderful.",
|
||||
"You have cute elbows. For reals!",
|
||||
"Jokes are funnier when you tell them.",
|
||||
"You're better than a triple-scoop ice cream cone. With sprinkles.",
|
||||
"Your bellybutton is kind of adorable.",
|
||||
"Your hair looks stunning.",
|
||||
"You're one of a kind!",
|
||||
"You're inspiring.",
|
||||
"If you were a box of crayons, you'd be the giant name-brand one with the built-in sharpener.",
|
||||
"You should be thanked more often. So thank you!!",
|
||||
"Our community is better because you're in it.",
|
||||
"Someone is getting through something hard right now because you've got their back.",
|
||||
"You have the best ideas.",
|
||||
"You always know how to find that silver lining.",
|
||||
"Everyone gets knocked down sometimes, but you always get back up and keep going.",
|
||||
"You're a candle in the darkness.",
|
||||
"You're a great example to others.",
|
||||
"Being around you is like being on a happy little vacation.",
|
||||
"You always know just what to say.",
|
||||
"You're always learning new things and trying to better yourself, which is awesome.",
|
||||
"If someone based an Internet meme on you, it would have impeccable grammar.",
|
||||
"You could survive a Zombie apocalypse.",
|
||||
"You're more fun than bubble wrap.",
|
||||
"When you make a mistake, you fix it.",
|
||||
"Who raised you? They deserve a medal for a job well done.",
|
||||
"You're great at figuring stuff out.",
|
||||
"Your voice is magnificent.",
|
||||
"The people you love are lucky to have you in their lives.",
|
||||
"You're like a breath of fresh air.",
|
||||
"You're gorgeous -- and that's the least interesting thing about you, too.",
|
||||
"You're so thoughtful.",
|
||||
"Your creative potential seems limitless.",
|
||||
"Your name suits you to a T.",
|
||||
"You're irresistible when you blush.",
|
||||
"Actions speak louder than words, and yours tell an incredible story.",
|
||||
"Somehow you make time stop and fly at the same time.",
|
||||
"When you make up your mind about something, nothing stands in your way.",
|
||||
"You seem to really know who you are.",
|
||||
"Any team would be lucky to have you on it.",
|
||||
"In high school I bet you were voted 'most likely to keep being awesome.'",
|
||||
"I bet you do the crossword puzzle in ink.",
|
||||
"Babies and small animals probably love you.",
|
||||
"If you were a scented candle they'd call it Perfectly Imperfect (and it would smell like summer).",
|
||||
"There's ordinary, and then there's you.",
|
||||
"You're someone's reason to smile.",
|
||||
"You're even better than a unicorn, because you're real.",
|
||||
"How do you keep being so funny and making everyone laugh?",
|
||||
"You have a good head on your shoulders.",
|
||||
"Has anyone ever told you that you have great posture?",
|
||||
"The way you treasure your loved ones is incredible.",
|
||||
"You're really something special.",
|
||||
"You're a gift to those around you.",
|
||||
"You don't deserve it."
|
||||
"Your smile is contagious.",
|
||||
"You look great today.",
|
||||
"You're a smart cookie.",
|
||||
"I bet you make babies smile.",
|
||||
"You have impeccable manners.",
|
||||
"I like your style.",
|
||||
"You have the best laugh.",
|
||||
"I appreciate you.",
|
||||
"You are the most perfect you there is.",
|
||||
"You are enough.",
|
||||
"You're strong.",
|
||||
"Your perspective is refreshing.",
|
||||
"You're an awesome friend.",
|
||||
"You light up the room.",
|
||||
"You shine brighter than a shooting star.",
|
||||
"You deserve a hug right now.",
|
||||
"You should be proud of yourself.",
|
||||
"You're more helpful than you realize.",
|
||||
"You have a great sense of humor.",
|
||||
"You've got all the right moves!",
|
||||
"Is that your picture next to 'charming' in the dictionary?",
|
||||
"Your kindness is a balm to all who encounter it.",
|
||||
"You're all that and a super-size bag of chips.",
|
||||
"On a scale from 1 to 10, you're an 11.",
|
||||
"You are brave.",
|
||||
"You're even more beautiful on the inside than you are on the outside.",
|
||||
"You have the courage of your convictions.",
|
||||
"Your eyes are breathtaking.",
|
||||
"If cartoon bluebirds were real, a bunch of them would be sitting on your shoulders singing right now.",
|
||||
"You are making a difference.",
|
||||
"You're like sunshine on a rainy day.",
|
||||
"You bring out the best in other people.",
|
||||
"Your ability to recall random factoids at just the right time is impressive.",
|
||||
"You're a great listener.",
|
||||
"How is it that you always look great, even in sweatpants?",
|
||||
"Everything would be better if more people were like you!",
|
||||
"I bet you sweat glitter.",
|
||||
"You were cool way before hipsters were cool.",
|
||||
"That color is perfect on you.",
|
||||
"Hanging out with you is always a blast.",
|
||||
"You always know -- and say -- exactly what I need to hear when I need to hear it.",
|
||||
"You smell really good.",
|
||||
"You may dance like no one's watching, but everyone's watching because you're an amazing dancer!",
|
||||
"Being around you makes everything better!",
|
||||
"When you say, 'I meant to do that,' I totally believe you.",
|
||||
"When you're not afraid to be yourself is when you're most incredible.",
|
||||
"Colors seem brighter when you're around.",
|
||||
"You're more fun than a ball pit filled with candy. (And seriously, what could be more fun than that?)",
|
||||
"That thing you don't like about yourself is what makes you so interesting.",
|
||||
"You're wonderful.",
|
||||
"You have cute elbows. For reals!",
|
||||
"Jokes are funnier when you tell them.",
|
||||
"You're better than a triple-scoop ice cream cone. With sprinkles.",
|
||||
"Your bellybutton is kind of adorable.",
|
||||
"Your hair looks stunning.",
|
||||
"You're one of a kind!",
|
||||
"You're inspiring.",
|
||||
"If you were a box of crayons, you'd be the giant name-brand one with the built-in sharpener.",
|
||||
"You should be thanked more often. So thank you!!",
|
||||
"Our community is better because you're in it.",
|
||||
"Someone is getting through something hard right now because you've got their back.",
|
||||
"You have the best ideas.",
|
||||
"You always know how to find that silver lining.",
|
||||
"Everyone gets knocked down sometimes, but you always get back up and keep going.",
|
||||
"You're a candle in the darkness.",
|
||||
"You're a great example to others.",
|
||||
"Being around you is like being on a happy little vacation.",
|
||||
"You always know just what to say.",
|
||||
"You're always learning new things and trying to better yourself, which is awesome.",
|
||||
"If someone based an Internet meme on you, it would have impeccable grammar.",
|
||||
"You could survive a Zombie apocalypse.",
|
||||
"You're more fun than bubble wrap.",
|
||||
"When you make a mistake, you fix it.",
|
||||
"Who raised you? They deserve a medal for a job well done.",
|
||||
"You're great at figuring stuff out.",
|
||||
"Your voice is magnificent.",
|
||||
"The people you love are lucky to have you in their lives.",
|
||||
"You're like a breath of fresh air.",
|
||||
"You're gorgeous -- and that's the least interesting thing about you, too.",
|
||||
"You're so thoughtful.",
|
||||
"Your creative potential seems limitless.",
|
||||
"Your name suits you to a T.",
|
||||
"You're irresistible when you blush.",
|
||||
"Actions speak louder than words, and yours tell an incredible story.",
|
||||
"Somehow you make time stop and fly at the same time.",
|
||||
"When you make up your mind about something, nothing stands in your way.",
|
||||
"You seem to really know who you are.",
|
||||
"Any team would be lucky to have you on it.",
|
||||
"In high school I bet you were voted 'most likely to keep being awesome.'",
|
||||
"I bet you do the crossword puzzle in ink.",
|
||||
"Babies and small animals probably love you.",
|
||||
"If you were a scented candle they'd call it Perfectly Imperfect (and it would smell like summer).",
|
||||
"There's ordinary, and then there's you.",
|
||||
"You're someone's reason to smile.",
|
||||
"You're even better than a unicorn, because you're real.",
|
||||
"How do you keep being so funny and making everyone laugh?",
|
||||
"You have a good head on your shoulders.",
|
||||
"Has anyone ever told you that you have great posture?",
|
||||
"The way you treasure your loved ones is incredible.",
|
||||
"You're really something special.",
|
||||
"You're a gift to those around you.",
|
||||
"You don't deserve it."
|
||||
]
|
||||
|
||||
+32
-32
@@ -1,34 +1,34 @@
|
||||
[
|
||||
"AUD",
|
||||
"USD",
|
||||
"BGN",
|
||||
"BRL",
|
||||
"CAD",
|
||||
"CHF",
|
||||
"CNY",
|
||||
"CZK",
|
||||
"DKK",
|
||||
"GBP",
|
||||
"HKD",
|
||||
"HRK",
|
||||
"HUF",
|
||||
"IDR",
|
||||
"ILS",
|
||||
"INR",
|
||||
"JPY",
|
||||
"KRW",
|
||||
"MXN",
|
||||
"MYR",
|
||||
"NOK",
|
||||
"NZD",
|
||||
"PHP",
|
||||
"PLN",
|
||||
"RON",
|
||||
"RUB",
|
||||
"SEK",
|
||||
"SGD",
|
||||
"THB",
|
||||
"TRY",
|
||||
"ZAR",
|
||||
"EUR"
|
||||
"AUD",
|
||||
"USD",
|
||||
"BGN",
|
||||
"BRL",
|
||||
"CAD",
|
||||
"CHF",
|
||||
"CNY",
|
||||
"CZK",
|
||||
"DKK",
|
||||
"GBP",
|
||||
"HKD",
|
||||
"HRK",
|
||||
"HUF",
|
||||
"IDR",
|
||||
"ILS",
|
||||
"INR",
|
||||
"JPY",
|
||||
"KRW",
|
||||
"MXN",
|
||||
"MYR",
|
||||
"NOK",
|
||||
"NZD",
|
||||
"PHP",
|
||||
"PLN",
|
||||
"RON",
|
||||
"RUB",
|
||||
"SEK",
|
||||
"SGD",
|
||||
"THB",
|
||||
"TRY",
|
||||
"ZAR",
|
||||
"EUR"
|
||||
]
|
||||
|
||||
+46
-46
@@ -1,48 +1,48 @@
|
||||
{
|
||||
"if900hp": "All cars unlocked!",
|
||||
"i'm an easter egg": "You're also an example.",
|
||||
"not a valid tag": "No, it's not valid at all.",
|
||||
"tag": "This command is *easter egg*, not *tag* :yum:",
|
||||
"easter egg": ":egg:",
|
||||
"snek": "*Blame :snake:*",
|
||||
"snekfetch": "superagent is better.",
|
||||
"xiaobot": "That's my name.",
|
||||
"dragonfire535": "http://dragonfire535.tk",
|
||||
"heroes of dreamland": "https://www.wattpad.com/story/8712240-heroes-of-dreamland-book-1-kirby-and-the-monstrous",
|
||||
"neopets": "I got robbed by the pant devil.",
|
||||
"koneko-chan": "https://i.ytimg.com/vi/YStwTmG4Ex0/hqdefault.jpg",
|
||||
"shrug": "¯\\_(ツ)_/¯",
|
||||
"vulcan": ":vulcan:",
|
||||
"soundboard": "Rest in Peace...",
|
||||
"me": "You.",
|
||||
"no u": "no u",
|
||||
"eat pant": "https://i.redd.it/226fiufo2slx.jpg",
|
||||
"i never asked for this": "https://cdn.discordapp.com/attachments/252317073814978561/304811008457834516/image.jpg",
|
||||
"egg": "You're an egg.",
|
||||
"beta": "https://cdn.discordapp.com/attachments/252317073814978561/304812045851688963/image.jpg",
|
||||
"pathetic": "https://cdn.discordapp.com/attachments/252317073814978561/304812045851688963/image.jpg",
|
||||
"swagolor": "https://cdn.discordapp.com/attachments/252317073814978561/306110096491151363/Swagolor.png",
|
||||
"canyounot": "Can YOU not?",
|
||||
"slowclap": "*slow clap*",
|
||||
"just do it": "https://www.youtube.com/watch?v=ZXsQAXx_ao0",
|
||||
"april": "https://i.imgur.com/c60iG3E.png",
|
||||
"captain karen": "https://i.imgur.com/8TFq5If.jpg",
|
||||
"karen": "https://i.imgur.com/a4ZbCiO.png",
|
||||
"rules": "https://i.imgur.com/PYeFBU5.png",
|
||||
"book1": "Book.",
|
||||
"new": "Nope, not quite yet.",
|
||||
"adam": "Adam pls.",
|
||||
"token": "[READACTED]",
|
||||
"nom": "https://cdn.discordapp.com/attachments/256055608279695360/308434352377954304/tumblr_ojzfs3jjoJ1qz64n4o1_540.gif",
|
||||
"good vs evil": "https://cdn.discordapp.com/attachments/256055608279695360/308404323392684033/837631b64ef351ddabe8c2200c2feca54d81af62_hq.jpg",
|
||||
"ebearskittychan": "The best :heart:",
|
||||
"i am your father": "NOOOOOOOOOOOOOO!",
|
||||
"waifu": "I'm your waifu, right?",
|
||||
"no": "yes",
|
||||
"miki": "Pure Evil.",
|
||||
"pokemon": "Gotta catch 'em all.",
|
||||
"angery": "https://cdn.discordapp.com/attachments/256055608279695360/308701431165091840/angerey.png",
|
||||
"banana": "https://cdn.discordapp.com/attachments/256055608279695360/308771979010244618/vfy6JExK7Ryhi.gif",
|
||||
"yuno gasai": "https://cdn.discordapp.com/attachments/256055608279695360/308658394766508033/ff79c3c19cf7e6fdc00c1c26c204c3f6.jpg",
|
||||
"why": "https://www.youtube.com/watch?v=sluHwh3hJhI"
|
||||
"if900hp": "All cars unlocked!",
|
||||
"i'm an easter egg": "You're also an example.",
|
||||
"not a valid tag": "No, it's not valid at all.",
|
||||
"tag": "This command is *easter egg*, not *tag* :yum:",
|
||||
"easter egg": ":egg:",
|
||||
"snek": "*Blame :snake:*",
|
||||
"snekfetch": "superagent is better.",
|
||||
"xiaobot": "That's my name.",
|
||||
"dragonfire535": "http://dragonfire535.tk",
|
||||
"heroes of dreamland": "https://www.wattpad.com/story/8712240-heroes-of-dreamland-book-1-kirby-and-the-monstrous",
|
||||
"neopets": "I got robbed by the pant devil.",
|
||||
"koneko-chan": "https://i.ytimg.com/vi/YStwTmG4Ex0/hqdefault.jpg",
|
||||
"shrug": "¯\\_(ツ)_/¯",
|
||||
"vulcan": ":vulcan:",
|
||||
"soundboard": "Rest in Peace...",
|
||||
"me": "You.",
|
||||
"no u": "no u",
|
||||
"eat pant": "https://i.redd.it/226fiufo2slx.jpg",
|
||||
"i never asked for this": "https://cdn.discordapp.com/attachments/252317073814978561/304811008457834516/image.jpg",
|
||||
"egg": "You're an egg.",
|
||||
"beta": "https://cdn.discordapp.com/attachments/252317073814978561/304812045851688963/image.jpg",
|
||||
"pathetic": "https://cdn.discordapp.com/attachments/252317073814978561/304812045851688963/image.jpg",
|
||||
"swagolor": "https://cdn.discordapp.com/attachments/252317073814978561/306110096491151363/Swagolor.png",
|
||||
"canyounot": "Can YOU not?",
|
||||
"slowclap": "*slow clap*",
|
||||
"just do it": "https://www.youtube.com/watch?v=ZXsQAXx_ao0",
|
||||
"april": "https://i.imgur.com/c60iG3E.png",
|
||||
"captain karen": "https://i.imgur.com/8TFq5If.jpg",
|
||||
"karen": "https://i.imgur.com/a4ZbCiO.png",
|
||||
"rules": "https://i.imgur.com/PYeFBU5.png",
|
||||
"book1": "Book.",
|
||||
"new": "Nope, not quite yet.",
|
||||
"adam": "Adam pls.",
|
||||
"token": "[READACTED]",
|
||||
"nom": "https://cdn.discordapp.com/attachments/256055608279695360/308434352377954304/tumblr_ojzfs3jjoJ1qz64n4o1_540.gif",
|
||||
"good vs evil": "https://cdn.discordapp.com/attachments/256055608279695360/308404323392684033/837631b64ef351ddabe8c2200c2feca54d81af62_hq.jpg",
|
||||
"ebearskittychan": "The best :heart:",
|
||||
"i am your father": "NOOOOOOOOOOOOOO!",
|
||||
"waifu": "I'm your waifu, right?",
|
||||
"no": "yes",
|
||||
"miki": "Pure Evil.",
|
||||
"pokemon": "Gotta catch 'em all.",
|
||||
"angery": "https://cdn.discordapp.com/attachments/256055608279695360/308701431165091840/angerey.png",
|
||||
"banana": "https://cdn.discordapp.com/attachments/256055608279695360/308771979010244618/vfy6JExK7Ryhi.gif",
|
||||
"yuno gasai": "https://cdn.discordapp.com/attachments/256055608279695360/308658394766508033/ff79c3c19cf7e6fdc00c1c26c204c3f6.jpg",
|
||||
"why": "https://www.youtube.com/watch?v=sluHwh3hJhI"
|
||||
}
|
||||
|
||||
+99
-99
@@ -1,101 +1,101 @@
|
||||
[
|
||||
"The billionth digit of Pi is 9.",
|
||||
"Humans can survive underwater. But not for very long.",
|
||||
"A nanosecond lasts one billionth of a second.",
|
||||
"Honey does not spoil.",
|
||||
"The atomic weight of Germanium is seven two point four six.",
|
||||
"An ostrich's eye is bigger than its brain.",
|
||||
"Rats cannot throw up.",
|
||||
"Iguanas can stay underwater for twenty-eight point seven minutes.",
|
||||
"The moon orbits the Earth every 27.32 days.",
|
||||
"A gallon of water weighs 8.34 pounds.",
|
||||
"According to Norse legend, thunder god Thor's chariot was pulled across the sky by two goats.",
|
||||
"Tungsten has the highest melting point of any metal, at 3,410 degrees Celsius.",
|
||||
"Gently cleaning the tongue twice a day is the most effective way to fight bad breath.",
|
||||
"The Tariff Act of 1789, established to protect domestic manufacture, was the second salute ever enacted by the United States government.",
|
||||
"The value of Pi is the ratio of any circle's circumference to its diameter in Euclidean space.",
|
||||
"The Mexican-American War ended in 1848 with the signing of the Treaty of Guadalupe Hidalgo.",
|
||||
"In 1879, Sandford Fleming first proposed the adoption of worldwide standardized time zones at the Royal Canadian Institute.",
|
||||
"Marie Curie invented the theory of radioactivity, the treatment of radioactivity, and the dying of radioactivity.",
|
||||
"At the end of The Seagull by Anton Chekhov, Konstantin kills himself.",
|
||||
"Hot water freezes quicker than cold water.",
|
||||
"The situation you are in is very dangerous.",
|
||||
"Polymerase I polypeptide A is a human gene.",
|
||||
"The sun is 333,330 times larger than Earth.",
|
||||
"Dental floss has superb tensile strength.",
|
||||
"Raseph, the Semitic god of war and plague, had a gazelle growing out of his forehead.",
|
||||
"Human tapeworms can grow up to twenty-two point nine meters.",
|
||||
"If you have trouble with simple counting, use the following mnemonic device: one comes before two comes before 60 comes after 12 comes before six trillion comes after 504. This should make your earlier counting difficulties seem like no big deal.",
|
||||
"The first person to prove that cow's milk is drinkable was very, very thirsty.",
|
||||
"Roman toothpaste was made with human urine. Urine as an ingredient in toothpaste continued to be used up until the 18th century.",
|
||||
"Volcano-ologists are experts in the study of volcanoes.",
|
||||
"In Victorian England, a commoner was not allowed to look directly at the Queen, due to a belief at the time that the poor had the ability to steal thoughts. Science now believes that less than 4 percent of poor people are able to do this.",
|
||||
"Cellular phones will not give you cancer. Only hepatitis.",
|
||||
"In Greek myth, Prometheus stole fire from the Gods and gave it to humankind. The jewelry he kept for himself.",
|
||||
"The Schrodinger's cat paradox outlines a situation in which a cat in a box must be considered, for all intents and purposes, simultaneously alive and dead. Schrodinger created this paradox as a justification for killing cats.",
|
||||
"In 1862, Abraham Lincoln signed the Emancipation Proclamation, freeing the slaves. Like everything he did, Lincoln freed the slaves while sleepwalking, and later had no memory of the event.",
|
||||
"The plural of surgeon general is surgeons general. The past tense of surgeons general is surgeonsed general.",
|
||||
"Contrary to popular belief, the Eskimo does not have one hundred different words for snow. They do, however, have two hundred and thirty-four words for fudge.",
|
||||
"Halley's Comet can be viewed orbiting Earth every seventy-six years. For the other seventy-five, it retreats to the heart of the sun, where it hibernates undisturbed.",
|
||||
"The first commercial airline flight took to the air in 1914. Everyone involved screamed the entire way.",
|
||||
"Edmund Hillary, the first person to climb Mount Everest, did so accidentally while chasing a bird.",
|
||||
"We will both die because of your negligence.",
|
||||
"This is a bad plan. You will fail.",
|
||||
"He will most likely kill you, violently.",
|
||||
"He will most likely kill you.",
|
||||
"You will be dead soon.",
|
||||
"You are going to die in this room.",
|
||||
"The Fact Sphere is a good person, whose insights are relevant.",
|
||||
"The Fact Sphere is a good sphere, with many friends.",
|
||||
"Dreams are the subconscious mind's way of reminding people to go to school naked and have their teeth fall out.",
|
||||
"The square root of rope is string.",
|
||||
"89 percent of magic tricks are not actually magic. Technically, they are sorcery.",
|
||||
"At some point in their lives 1 in 6 children will be abducted by the Dutch.",
|
||||
"According to most advanced algorithms, the world's best name is Craig.",
|
||||
"To make a photocopier, simply photocopy a mirror.",
|
||||
"Whales are twice as intelligent, and three times as delicious, as humans.",
|
||||
"Pants were invented by sailors in the sixteenth century to avoid Poseiden's wrath. It was believed that the sight of naked sailors angered the sea god.",
|
||||
"In Greek myth, the craftsman Daedalus invented human flight so a group of Minotaurs would stop teasing him about it.",
|
||||
"The average life expectancy of a rhinoceros in captivity is 15 years.",
|
||||
"China produces the world's second largest crop of soybeans.",
|
||||
"In 1948, at the request of a dying boy, baseball legend Babe Ruth ate seventy-five hot dogs, then died of hot dog poisoning.",
|
||||
"William Shakespeare did not exist. His plays were masterminded in 1589 by Francis Bacon, who used a Ouija board to enslave play-writing ghosts.",
|
||||
"It is incorrectly noted that Thomas Edison invented push-ups in 1878. Nikolai Tesla had in fact patented the activity three years earlier, under the name Tesla-cize.",
|
||||
"The automobile brake was not invented until 1895. Before this, someone had to remain in the car at all times, driving in circles until passengers returned from their errands.",
|
||||
"The most poisonous fish in the world is the orange ruffy. Everything but its eyes are made of deadly poison. The ruffy's eyes are composed of a less harmful, deadly poison.",
|
||||
"The occupation of court jester was invented accidentally, when a vassal's epilepsy was mistaken for capering.",
|
||||
"Before the Wright Brothers invented the airplane, anyone wanting to fly anywhere was required to eat 200 pounds of helium.",
|
||||
"Before the invention of scrambled eggs in 1912, the typical breakfast was either whole eggs still in the shell or scrambled rocks.",
|
||||
"During the Great Depression, the Tennessee Valley Authority outlawed pet rabbits, forcing many to hot glue-gun long ears onto their pet mice.",
|
||||
"The situation is hopeless.",
|
||||
"Diamonds are made when coal is put under intense pressure. Diamonds put under intense pressure become foam pellets, commonly used today as packing material.",
|
||||
"Corruption is at 25 percent.",
|
||||
"Corruption is at 50 percent.",
|
||||
"Fact: Space does not exist.",
|
||||
"The Fact Sphere is not defective. Its facts are wholly accurate and very interesting.",
|
||||
"The Fact Sphere is always right.",
|
||||
"You will never go into space.",
|
||||
"The Space Sphere will never go to space.",
|
||||
"While the submarine is vastly superior to the boat in every way, over 97 percent of people still use boats for aquatic transportation.",
|
||||
"The likelihood of you dying within the next five minutes is eighty-seven point six one percent.",
|
||||
"The likelihood of you dying violently within the next five minutes is eighty-seven point six one percent.",
|
||||
"You are about to get me killed.",
|
||||
"The Fact Sphere is the most intelligent sphere.",
|
||||
"The Fact Sphere is the most handsome sphere.",
|
||||
"The Fact Sphere is incredibly handsome.",
|
||||
"Sphere that insist of going into space are inferior to spheres who don't.",
|
||||
"Whoever wins this battle is clearly superior, and will earn the allegiance of the Fact Sphere.",
|
||||
"You could stand to lose a few pounds.",
|
||||
"Avocados have the highest fiber and calories of any fruit.",
|
||||
"Avocados have the highest fiber and calories of any fruit. They are found in Australians.",
|
||||
"Every square inch of the human body has 32 million bacteria on it.",
|
||||
"The average adult body contains half a pound of salt.",
|
||||
"The Adventure Sphere is a blowhard and a coward.",
|
||||
"Twelve. Twelve. Twelve. Twelve. Twelve. Twelve. Twelve. Twelve. Twelve. Twelve.",
|
||||
"Pens. Pens. Pens. Pens. Pens. Pens. Pens.",
|
||||
"Apples. Oranges. Pears. Plums. Kumquats. Tangerines. Lemons. Limes. Avocado. Tomoato. Banana. Papaya. Guava.",
|
||||
"Error. Error. Error. File not found.",
|
||||
"Error. Error. Error. Fact not found.",
|
||||
"Fact not found.",
|
||||
"Warning, sphere corruption at twenty-- rats cannot throw up."
|
||||
"The billionth digit of Pi is 9.",
|
||||
"Humans can survive underwater. But not for very long.",
|
||||
"A nanosecond lasts one billionth of a second.",
|
||||
"Honey does not spoil.",
|
||||
"The atomic weight of Germanium is seven two point four six.",
|
||||
"An ostrich's eye is bigger than its brain.",
|
||||
"Rats cannot throw up.",
|
||||
"Iguanas can stay underwater for twenty-eight point seven minutes.",
|
||||
"The moon orbits the Earth every 27.32 days.",
|
||||
"A gallon of water weighs 8.34 pounds.",
|
||||
"According to Norse legend, thunder god Thor's chariot was pulled across the sky by two goats.",
|
||||
"Tungsten has the highest melting point of any metal, at 3,410 degrees Celsius.",
|
||||
"Gently cleaning the tongue twice a day is the most effective way to fight bad breath.",
|
||||
"The Tariff Act of 1789, established to protect domestic manufacture, was the second salute ever enacted by the United States government.",
|
||||
"The value of Pi is the ratio of any circle's circumference to its diameter in Euclidean space.",
|
||||
"The Mexican-American War ended in 1848 with the signing of the Treaty of Guadalupe Hidalgo.",
|
||||
"In 1879, Sandford Fleming first proposed the adoption of worldwide standardized time zones at the Royal Canadian Institute.",
|
||||
"Marie Curie invented the theory of radioactivity, the treatment of radioactivity, and the dying of radioactivity.",
|
||||
"At the end of The Seagull by Anton Chekhov, Konstantin kills himself.",
|
||||
"Hot water freezes quicker than cold water.",
|
||||
"The situation you are in is very dangerous.",
|
||||
"Polymerase I polypeptide A is a human gene.",
|
||||
"The sun is 333,330 times larger than Earth.",
|
||||
"Dental floss has superb tensile strength.",
|
||||
"Raseph, the Semitic god of war and plague, had a gazelle growing out of his forehead.",
|
||||
"Human tapeworms can grow up to twenty-two point nine meters.",
|
||||
"If you have trouble with simple counting, use the following mnemonic device: one comes before two comes before 60 comes after 12 comes before six trillion comes after 504. This should make your earlier counting difficulties seem like no big deal.",
|
||||
"The first person to prove that cow's milk is drinkable was very, very thirsty.",
|
||||
"Roman toothpaste was made with human urine. Urine as an ingredient in toothpaste continued to be used up until the 18th century.",
|
||||
"Volcano-ologists are experts in the study of volcanoes.",
|
||||
"In Victorian England, a commoner was not allowed to look directly at the Queen, due to a belief at the time that the poor had the ability to steal thoughts. Science now believes that less than 4 percent of poor people are able to do this.",
|
||||
"Cellular phones will not give you cancer. Only hepatitis.",
|
||||
"In Greek myth, Prometheus stole fire from the Gods and gave it to humankind. The jewelry he kept for himself.",
|
||||
"The Schrodinger's cat paradox outlines a situation in which a cat in a box must be considered, for all intents and purposes, simultaneously alive and dead. Schrodinger created this paradox as a justification for killing cats.",
|
||||
"In 1862, Abraham Lincoln signed the Emancipation Proclamation, freeing the slaves. Like everything he did, Lincoln freed the slaves while sleepwalking, and later had no memory of the event.",
|
||||
"The plural of surgeon general is surgeons general. The past tense of surgeons general is surgeonsed general.",
|
||||
"Contrary to popular belief, the Eskimo does not have one hundred different words for snow. They do, however, have two hundred and thirty-four words for fudge.",
|
||||
"Halley's Comet can be viewed orbiting Earth every seventy-six years. For the other seventy-five, it retreats to the heart of the sun, where it hibernates undisturbed.",
|
||||
"The first commercial airline flight took to the air in 1914. Everyone involved screamed the entire way.",
|
||||
"Edmund Hillary, the first person to climb Mount Everest, did so accidentally while chasing a bird.",
|
||||
"We will both die because of your negligence.",
|
||||
"This is a bad plan. You will fail.",
|
||||
"He will most likely kill you, violently.",
|
||||
"He will most likely kill you.",
|
||||
"You will be dead soon.",
|
||||
"You are going to die in this room.",
|
||||
"The Fact Sphere is a good person, whose insights are relevant.",
|
||||
"The Fact Sphere is a good sphere, with many friends.",
|
||||
"Dreams are the subconscious mind's way of reminding people to go to school naked and have their teeth fall out.",
|
||||
"The square root of rope is string.",
|
||||
"89 percent of magic tricks are not actually magic. Technically, they are sorcery.",
|
||||
"At some point in their lives 1 in 6 children will be abducted by the Dutch.",
|
||||
"According to most advanced algorithms, the world's best name is Craig.",
|
||||
"To make a photocopier, simply photocopy a mirror.",
|
||||
"Whales are twice as intelligent, and three times as delicious, as humans.",
|
||||
"Pants were invented by sailors in the sixteenth century to avoid Poseiden's wrath. It was believed that the sight of naked sailors angered the sea god.",
|
||||
"In Greek myth, the craftsman Daedalus invented human flight so a group of Minotaurs would stop teasing him about it.",
|
||||
"The average life expectancy of a rhinoceros in captivity is 15 years.",
|
||||
"China produces the world's second largest crop of soybeans.",
|
||||
"In 1948, at the request of a dying boy, baseball legend Babe Ruth ate seventy-five hot dogs, then died of hot dog poisoning.",
|
||||
"William Shakespeare did not exist. His plays were masterminded in 1589 by Francis Bacon, who used a Ouija board to enslave play-writing ghosts.",
|
||||
"It is incorrectly noted that Thomas Edison invented push-ups in 1878. Nikolai Tesla had in fact patented the activity three years earlier, under the name Tesla-cize.",
|
||||
"The automobile brake was not invented until 1895. Before this, someone had to remain in the car at all times, driving in circles until passengers returned from their errands.",
|
||||
"The most poisonous fish in the world is the orange ruffy. Everything but its eyes are made of deadly poison. The ruffy's eyes are composed of a less harmful, deadly poison.",
|
||||
"The occupation of court jester was invented accidentally, when a vassal's epilepsy was mistaken for capering.",
|
||||
"Before the Wright Brothers invented the airplane, anyone wanting to fly anywhere was required to eat 200 pounds of helium.",
|
||||
"Before the invention of scrambled eggs in 1912, the typical breakfast was either whole eggs still in the shell or scrambled rocks.",
|
||||
"During the Great Depression, the Tennessee Valley Authority outlawed pet rabbits, forcing many to hot glue-gun long ears onto their pet mice.",
|
||||
"The situation is hopeless.",
|
||||
"Diamonds are made when coal is put under intense pressure. Diamonds put under intense pressure become foam pellets, commonly used today as packing material.",
|
||||
"Corruption is at 25 percent.",
|
||||
"Corruption is at 50 percent.",
|
||||
"Fact: Space does not exist.",
|
||||
"The Fact Sphere is not defective. Its facts are wholly accurate and very interesting.",
|
||||
"The Fact Sphere is always right.",
|
||||
"You will never go into space.",
|
||||
"The Space Sphere will never go to space.",
|
||||
"While the submarine is vastly superior to the boat in every way, over 97 percent of people still use boats for aquatic transportation.",
|
||||
"The likelihood of you dying within the next five minutes is eighty-seven point six one percent.",
|
||||
"The likelihood of you dying violently within the next five minutes is eighty-seven point six one percent.",
|
||||
"You are about to get me killed.",
|
||||
"The Fact Sphere is the most intelligent sphere.",
|
||||
"The Fact Sphere is the most handsome sphere.",
|
||||
"The Fact Sphere is incredibly handsome.",
|
||||
"Sphere that insist of going into space are inferior to spheres who don't.",
|
||||
"Whoever wins this battle is clearly superior, and will earn the allegiance of the Fact Sphere.",
|
||||
"You could stand to lose a few pounds.",
|
||||
"Avocados have the highest fiber and calories of any fruit.",
|
||||
"Avocados have the highest fiber and calories of any fruit. They are found in Australians.",
|
||||
"Every square inch of the human body has 32 million bacteria on it.",
|
||||
"The average adult body contains half a pound of salt.",
|
||||
"The Adventure Sphere is a blowhard and a coward.",
|
||||
"Twelve. Twelve. Twelve. Twelve. Twelve. Twelve. Twelve. Twelve. Twelve. Twelve.",
|
||||
"Pens. Pens. Pens. Pens. Pens. Pens. Pens.",
|
||||
"Apples. Oranges. Pears. Plums. Kumquats. Tangerines. Lemons. Limes. Avocado. Tomoato. Banana. Papaya. Guava.",
|
||||
"Error. Error. Error. File not found.",
|
||||
"Error. Error. Error. Fact not found.",
|
||||
"Fact not found.",
|
||||
"Warning, sphere corruption at twenty-- rats cannot throw up."
|
||||
]
|
||||
|
||||
+30
-30
@@ -1,32 +1,32 @@
|
||||
[
|
||||
"Do not seek so much to find the answer as much as to understand the question better.",
|
||||
"You will soon be honored by someone you respect.",
|
||||
"Happiness comes from a good life.",
|
||||
"You are contemplating some action which will bring credit upon you.",
|
||||
"Be prepared for extra energy.",
|
||||
"You are admired for your adventurous ways.",
|
||||
"The love of your life is sitting across from you.",
|
||||
"Beauty is simply beauty. Originality is magical.",
|
||||
"Never quit!",
|
||||
"Today is an ideal time to water your personal garden.",
|
||||
"Questions provide the key to unlocking our unlimited potential.",
|
||||
"Expect great things and great things will come.",
|
||||
"The Greatest War Sometimes Isn't On The Battlefield But Against Oneself.",
|
||||
"Become who you are.",
|
||||
"In case of fire, keep calm, pay bill and run.",
|
||||
"Anyone who dares to be, can never be weak.",
|
||||
"You broke my cookie!",
|
||||
"Dream lofty dreams, and as you dream, so shall you become.",
|
||||
"You've got what it takes, but it will take everything you've got!",
|
||||
"Trust your intuition.",
|
||||
"The wise are aware of their treasure, while fools follow their vanity.",
|
||||
"You will always have good luck in your personal affairs.",
|
||||
"You don't need talent to gain experience.",
|
||||
"All the preparation you've done will finally be paying off!",
|
||||
"Determination is the wake-up call to the human will.",
|
||||
"The most useless energy is trying to change what and who God so carefully created.",
|
||||
"You cannot become rich except by enriching others.",
|
||||
"Your happiness is intertwined with your outlook on life.",
|
||||
"Sing and rejoice, fortune is smiling on you.",
|
||||
"Well-arranged time is the surest sign of a well-arranged mind."
|
||||
"Do not seek so much to find the answer as much as to understand the question better.",
|
||||
"You will soon be honored by someone you respect.",
|
||||
"Happiness comes from a good life.",
|
||||
"You are contemplating some action which will bring credit upon you.",
|
||||
"Be prepared for extra energy.",
|
||||
"You are admired for your adventurous ways.",
|
||||
"The love of your life is sitting across from you.",
|
||||
"Beauty is simply beauty. Originality is magical.",
|
||||
"Never quit!",
|
||||
"Today is an ideal time to water your personal garden.",
|
||||
"Questions provide the key to unlocking our unlimited potential.",
|
||||
"Expect great things and great things will come.",
|
||||
"The Greatest War Sometimes Isn't On The Battlefield But Against Oneself.",
|
||||
"Become who you are.",
|
||||
"In case of fire, keep calm, pay bill and run.",
|
||||
"Anyone who dares to be, can never be weak.",
|
||||
"You broke my cookie!",
|
||||
"Dream lofty dreams, and as you dream, so shall you become.",
|
||||
"You've got what it takes, but it will take everything you've got!",
|
||||
"Trust your intuition.",
|
||||
"The wise are aware of their treasure, while fools follow their vanity.",
|
||||
"You will always have good luck in your personal affairs.",
|
||||
"You don't need talent to gain experience.",
|
||||
"All the preparation you've done will finally be paying off!",
|
||||
"Determination is the wake-up call to the human will.",
|
||||
"The most useless energy is trying to change what and who God so carefully created.",
|
||||
"You cannot become rich except by enriching others.",
|
||||
"Your happiness is intertwined with your outlook on life.",
|
||||
"Sing and rejoice, fortune is smiling on you.",
|
||||
"Well-arranged time is the surest sign of a well-arranged mind."
|
||||
]
|
||||
|
||||
+12
-12
@@ -1,14 +1,14 @@
|
||||
[
|
||||
"capricorn",
|
||||
"aquarius",
|
||||
"pisces",
|
||||
"aries",
|
||||
"taurus",
|
||||
"gemini",
|
||||
"cancer",
|
||||
"leo",
|
||||
"virgo",
|
||||
"libra",
|
||||
"scorpio",
|
||||
"sagittarius"
|
||||
"capricorn",
|
||||
"aquarius",
|
||||
"pisces",
|
||||
"aries",
|
||||
"taurus",
|
||||
"gemini",
|
||||
"cancer",
|
||||
"leo",
|
||||
"virgo",
|
||||
"libra",
|
||||
"scorpio",
|
||||
"sagittarius"
|
||||
]
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
[
|
||||
"Maybe someday",
|
||||
"Nothing",
|
||||
"Neither",
|
||||
"I don't think so",
|
||||
"Yes",
|
||||
"Try asking again"
|
||||
"Maybe someday",
|
||||
"Nothing",
|
||||
"Neither",
|
||||
"I don't think so",
|
||||
"Yes",
|
||||
"Try asking again"
|
||||
]
|
||||
|
||||
+19
-19
@@ -1,21 +1,21 @@
|
||||
{
|
||||
"operations": [
|
||||
"+",
|
||||
"-",
|
||||
"*"
|
||||
],
|
||||
"difficulties": [
|
||||
"easy",
|
||||
"medium",
|
||||
"hard",
|
||||
"extreme",
|
||||
"impossible"
|
||||
],
|
||||
"maxValues": {
|
||||
"easy": 10,
|
||||
"medium": 50,
|
||||
"hard": 100,
|
||||
"extreme": 1000,
|
||||
"impossible": 10000
|
||||
}
|
||||
"operations": [
|
||||
"+",
|
||||
"-",
|
||||
"*"
|
||||
],
|
||||
"difficulties": [
|
||||
"easy",
|
||||
"medium",
|
||||
"hard",
|
||||
"extreme",
|
||||
"impossible"
|
||||
],
|
||||
"maxValues": {
|
||||
"easy": 10,
|
||||
"medium": 50,
|
||||
"hard": 100,
|
||||
"extreme": 1000,
|
||||
"impossible": 10000
|
||||
}
|
||||
}
|
||||
|
||||
+95
-95
@@ -1,97 +1,97 @@
|
||||
[
|
||||
"tenguy",
|
||||
"afraid",
|
||||
"older",
|
||||
"aag",
|
||||
"tried",
|
||||
"biw",
|
||||
"blb",
|
||||
"kermit",
|
||||
"bd",
|
||||
"ch",
|
||||
"cbg",
|
||||
"wonka",
|
||||
"cb",
|
||||
"keanu",
|
||||
"dsm",
|
||||
"live",
|
||||
"ants",
|
||||
"doge",
|
||||
"alwaysonbeat",
|
||||
"ermg",
|
||||
"facepalm",
|
||||
"fwp",
|
||||
"fa",
|
||||
"fbf",
|
||||
"fry",
|
||||
"hipster",
|
||||
"icanhas",
|
||||
"crazypills",
|
||||
"mw",
|
||||
"noidea",
|
||||
"regret",
|
||||
"boat",
|
||||
"hagrid",
|
||||
"sohappy",
|
||||
"captain",
|
||||
"inigo",
|
||||
"iw",
|
||||
"ackbar",
|
||||
"happening",
|
||||
"joker",
|
||||
"ive",
|
||||
"ll",
|
||||
"morpheus",
|
||||
"mb",
|
||||
"badchoice",
|
||||
"mmm",
|
||||
"jetpack",
|
||||
"red",
|
||||
"mordor",
|
||||
"oprah",
|
||||
"oag",
|
||||
"remembers",
|
||||
"philosoraptor",
|
||||
"jw",
|
||||
"patrick",
|
||||
"rollsafe",
|
||||
"sad-obama",
|
||||
"sad-clinton",
|
||||
"sadfrog",
|
||||
"sad-bush",
|
||||
"sad-biden",
|
||||
"sad-boehner",
|
||||
"saltbae",
|
||||
"sarcasticbear",
|
||||
"dwight",
|
||||
"sb",
|
||||
"ss",
|
||||
"sf",
|
||||
"dodgson",
|
||||
"money",
|
||||
"sohot",
|
||||
"nice",
|
||||
"awesome-awkward",
|
||||
"awesome",
|
||||
"awkward-awesome",
|
||||
"awkward",
|
||||
"fetch",
|
||||
"success",
|
||||
"scc",
|
||||
"ski",
|
||||
"officespace",
|
||||
"interesting",
|
||||
"toohigh",
|
||||
"bs",
|
||||
"center",
|
||||
"both",
|
||||
"winter",
|
||||
"xy",
|
||||
"buzz",
|
||||
"yodawg",
|
||||
"uno",
|
||||
"yallgot",
|
||||
"bad",
|
||||
"elf",
|
||||
"chosen"
|
||||
"tenguy",
|
||||
"afraid",
|
||||
"older",
|
||||
"aag",
|
||||
"tried",
|
||||
"biw",
|
||||
"blb",
|
||||
"kermit",
|
||||
"bd",
|
||||
"ch",
|
||||
"cbg",
|
||||
"wonka",
|
||||
"cb",
|
||||
"keanu",
|
||||
"dsm",
|
||||
"live",
|
||||
"ants",
|
||||
"doge",
|
||||
"alwaysonbeat",
|
||||
"ermg",
|
||||
"facepalm",
|
||||
"fwp",
|
||||
"fa",
|
||||
"fbf",
|
||||
"fry",
|
||||
"hipster",
|
||||
"icanhas",
|
||||
"crazypills",
|
||||
"mw",
|
||||
"noidea",
|
||||
"regret",
|
||||
"boat",
|
||||
"hagrid",
|
||||
"sohappy",
|
||||
"captain",
|
||||
"inigo",
|
||||
"iw",
|
||||
"ackbar",
|
||||
"happening",
|
||||
"joker",
|
||||
"ive",
|
||||
"ll",
|
||||
"morpheus",
|
||||
"mb",
|
||||
"badchoice",
|
||||
"mmm",
|
||||
"jetpack",
|
||||
"red",
|
||||
"mordor",
|
||||
"oprah",
|
||||
"oag",
|
||||
"remembers",
|
||||
"philosoraptor",
|
||||
"jw",
|
||||
"patrick",
|
||||
"rollsafe",
|
||||
"sad-obama",
|
||||
"sad-clinton",
|
||||
"sadfrog",
|
||||
"sad-bush",
|
||||
"sad-biden",
|
||||
"sad-boehner",
|
||||
"saltbae",
|
||||
"sarcasticbear",
|
||||
"dwight",
|
||||
"sb",
|
||||
"ss",
|
||||
"sf",
|
||||
"dodgson",
|
||||
"money",
|
||||
"sohot",
|
||||
"nice",
|
||||
"awesome-awkward",
|
||||
"awesome",
|
||||
"awkward-awesome",
|
||||
"awkward",
|
||||
"fetch",
|
||||
"success",
|
||||
"scc",
|
||||
"ski",
|
||||
"officespace",
|
||||
"interesting",
|
||||
"toohigh",
|
||||
"bs",
|
||||
"center",
|
||||
"both",
|
||||
"winter",
|
||||
"xy",
|
||||
"buzz",
|
||||
"yodawg",
|
||||
"uno",
|
||||
"yallgot",
|
||||
"bad",
|
||||
"elf",
|
||||
"chosen"
|
||||
]
|
||||
|
||||
+40
-40
@@ -1,42 +1,42 @@
|
||||
{
|
||||
"a": ".-",
|
||||
"b": "-...",
|
||||
"c": "-.-.",
|
||||
"d": "-..",
|
||||
"e": ".",
|
||||
"f": "..-.",
|
||||
"g": "--.",
|
||||
"h": "....",
|
||||
"i": "..",
|
||||
"j": ".---",
|
||||
"k": "-.-",
|
||||
"l": ".-..",
|
||||
"m": "--",
|
||||
"n": "-.",
|
||||
"o": "---",
|
||||
"p": ".--.",
|
||||
"q": "--.-",
|
||||
"r": ".-.",
|
||||
"s": "...",
|
||||
"t": "-",
|
||||
"u": "..-",
|
||||
"v": "...-",
|
||||
"w": ".--",
|
||||
"x": "-..-",
|
||||
"y": "-.--",
|
||||
"z": "--..",
|
||||
"0": "-----",
|
||||
"1": ".----",
|
||||
"2": "..---",
|
||||
"3": "...--",
|
||||
"4": "....-",
|
||||
"5": ".....",
|
||||
"6": "-....",
|
||||
"7": "--...",
|
||||
"8": "---..",
|
||||
"9": "----.",
|
||||
".": ".-.-.-",
|
||||
"?": "..--..",
|
||||
",": "--..--",
|
||||
"'": ".----."
|
||||
"a": ".-",
|
||||
"b": "-...",
|
||||
"c": "-.-.",
|
||||
"d": "-..",
|
||||
"e": ".",
|
||||
"f": "..-.",
|
||||
"g": "--.",
|
||||
"h": "....",
|
||||
"i": "..",
|
||||
"j": ".---",
|
||||
"k": "-.-",
|
||||
"l": ".-..",
|
||||
"m": "--",
|
||||
"n": "-.",
|
||||
"o": "---",
|
||||
"p": ".--.",
|
||||
"q": "--.-",
|
||||
"r": ".-.",
|
||||
"s": "...",
|
||||
"t": "-",
|
||||
"u": "..-",
|
||||
"v": "...-",
|
||||
"w": ".--",
|
||||
"x": "-..-",
|
||||
"y": "-.--",
|
||||
"z": "--..",
|
||||
"0": "-----",
|
||||
"1": ".----",
|
||||
"2": "..---",
|
||||
"3": "...--",
|
||||
"4": "....-",
|
||||
"5": ".....",
|
||||
"6": "-....",
|
||||
"7": "--...",
|
||||
"8": "---..",
|
||||
"9": "----.",
|
||||
".": ".-.-.-",
|
||||
"?": "..--..",
|
||||
",": "--..--",
|
||||
"'": ".----."
|
||||
}
|
||||
|
||||
+219
-219
@@ -1,221 +1,221 @@
|
||||
{
|
||||
"lastNames": [
|
||||
"Walker",
|
||||
"Tworni",
|
||||
"Ross",
|
||||
"Smith",
|
||||
"Odendahl",
|
||||
"Deere",
|
||||
"Brown",
|
||||
"Williams",
|
||||
"Jones",
|
||||
"Miles",
|
||||
"Moss",
|
||||
"Roberto",
|
||||
"McFly",
|
||||
"McDonald",
|
||||
"Lewis",
|
||||
"Armstrong",
|
||||
"Stevenson",
|
||||
"Schwarzenegger",
|
||||
"Robinson",
|
||||
"Parker",
|
||||
"Piper",
|
||||
"Johnson",
|
||||
"Brantley",
|
||||
"Stewart",
|
||||
"Ree",
|
||||
"Talbot",
|
||||
"Seville",
|
||||
"Peace",
|
||||
"Spielberg",
|
||||
"Baggins",
|
||||
"Wilborn",
|
||||
"Vankirk",
|
||||
"Shireman",
|
||||
"Jimerson",
|
||||
"Masters",
|
||||
"Hack",
|
||||
"Satcher",
|
||||
"Younkin",
|
||||
"Aguila",
|
||||
"Duffey",
|
||||
"Burgin",
|
||||
"Highfall",
|
||||
"Wee",
|
||||
"Solari",
|
||||
"Tomaselli",
|
||||
"Basler",
|
||||
"Difranco",
|
||||
"Latch",
|
||||
"Rives",
|
||||
"Dolan",
|
||||
"Abraham",
|
||||
"Holter",
|
||||
"Portugal",
|
||||
"Lininger",
|
||||
"Holst",
|
||||
"Mccroy",
|
||||
"Follmer",
|
||||
"Hotchkiss",
|
||||
"Gassaway",
|
||||
"Wang",
|
||||
"Agron",
|
||||
"Raasch",
|
||||
"Gourd",
|
||||
"Czaja",
|
||||
"Marquart",
|
||||
"Papadopoulos",
|
||||
"Ringer",
|
||||
"Lax",
|
||||
"Sperling",
|
||||
"Galusha",
|
||||
"Alston"
|
||||
],
|
||||
"maleNames": [
|
||||
"Bob",
|
||||
"Daniel",
|
||||
"Logan",
|
||||
"Chris",
|
||||
"Nathan",
|
||||
"George",
|
||||
"Mart",
|
||||
"Charlie",
|
||||
"Felix",
|
||||
"Ralph",
|
||||
"William",
|
||||
"Max",
|
||||
"Jerry",
|
||||
"Marty",
|
||||
"Joshua",
|
||||
"Cody",
|
||||
"Richard",
|
||||
"Alex",
|
||||
"Alexander",
|
||||
"Jordan",
|
||||
"Zachary",
|
||||
"Bill",
|
||||
"Alfred",
|
||||
"Bruce",
|
||||
"Caiden",
|
||||
"Calvin",
|
||||
"Eric",
|
||||
"Robert",
|
||||
"Mark",
|
||||
"Miles",
|
||||
"Nash",
|
||||
"Ronald",
|
||||
"Ivan",
|
||||
"Edgar",
|
||||
"Royal",
|
||||
"Augustine",
|
||||
"Dominic",
|
||||
"Noel",
|
||||
"Rocky",
|
||||
"Grover",
|
||||
"Paul",
|
||||
"Jeremy",
|
||||
"Stevie",
|
||||
"Brock",
|
||||
"Jc",
|
||||
"Tony",
|
||||
"Enoch",
|
||||
"Zachery",
|
||||
"Harvey",
|
||||
"Gilbert",
|
||||
"Chang",
|
||||
"Emery",
|
||||
"Carroll",
|
||||
"Odell",
|
||||
"Jean",
|
||||
"Archie",
|
||||
"Russ",
|
||||
"Barry",
|
||||
"Lowell",
|
||||
"Jacob",
|
||||
"Riku",
|
||||
"Frederic",
|
||||
"Levi",
|
||||
"Faustino",
|
||||
"Leland",
|
||||
"Domenic",
|
||||
"Irwin",
|
||||
"Moises",
|
||||
"Louie",
|
||||
"Larry",
|
||||
"Victor"
|
||||
],
|
||||
"femaleNames": [
|
||||
"Elizabeth",
|
||||
"Chelsey",
|
||||
"Rachel",
|
||||
"Logan",
|
||||
"Alex",
|
||||
"Jordan",
|
||||
"Mary",
|
||||
"Shirley",
|
||||
"Sandy",
|
||||
"Linda",
|
||||
"Audrey",
|
||||
"Autumn",
|
||||
"Gracie",
|
||||
"Grace",
|
||||
"Erin",
|
||||
"Catherine",
|
||||
"Stephanie",
|
||||
"Lucy",
|
||||
"Patty",
|
||||
"Julie",
|
||||
"Christina",
|
||||
"Fiona",
|
||||
"Riley",
|
||||
"Ashley",
|
||||
"Bree",
|
||||
"Lucila",
|
||||
"Wendi",
|
||||
"Evangelina",
|
||||
"Ricki",
|
||||
"Merna",
|
||||
"Tegan",
|
||||
"Venus",
|
||||
"Claris",
|
||||
"Tana",
|
||||
"Sakura",
|
||||
"Edythe",
|
||||
"Adena",
|
||||
"Princess",
|
||||
"Elnora",
|
||||
"Star",
|
||||
"Edyth",
|
||||
"Beverly",
|
||||
"Kelsie",
|
||||
"Letha",
|
||||
"Latisha",
|
||||
"Lolita",
|
||||
"Bernandine",
|
||||
"Jessenia",
|
||||
"Hannah",
|
||||
"Leonore",
|
||||
"Alene",
|
||||
"Fannie",
|
||||
"Bernardine",
|
||||
"Leena",
|
||||
"Tera",
|
||||
"Yvette",
|
||||
"Melisa",
|
||||
"Alissa",
|
||||
"Xiao",
|
||||
"Richelle",
|
||||
"Bridgett",
|
||||
"Sumiko",
|
||||
"Paulette",
|
||||
"Charlott",
|
||||
"Honey",
|
||||
"Veola",
|
||||
"Sherita",
|
||||
"Amanda",
|
||||
"Vannessa",
|
||||
"April",
|
||||
"Ruth"
|
||||
]
|
||||
"lastNames": [
|
||||
"Walker",
|
||||
"Tworni",
|
||||
"Ross",
|
||||
"Smith",
|
||||
"Odendahl",
|
||||
"Deere",
|
||||
"Brown",
|
||||
"Williams",
|
||||
"Jones",
|
||||
"Miles",
|
||||
"Moss",
|
||||
"Roberto",
|
||||
"McFly",
|
||||
"McDonald",
|
||||
"Lewis",
|
||||
"Armstrong",
|
||||
"Stevenson",
|
||||
"Schwarzenegger",
|
||||
"Robinson",
|
||||
"Parker",
|
||||
"Piper",
|
||||
"Johnson",
|
||||
"Brantley",
|
||||
"Stewart",
|
||||
"Ree",
|
||||
"Talbot",
|
||||
"Seville",
|
||||
"Peace",
|
||||
"Spielberg",
|
||||
"Baggins",
|
||||
"Wilborn",
|
||||
"Vankirk",
|
||||
"Shireman",
|
||||
"Jimerson",
|
||||
"Masters",
|
||||
"Hack",
|
||||
"Satcher",
|
||||
"Younkin",
|
||||
"Aguila",
|
||||
"Duffey",
|
||||
"Burgin",
|
||||
"Highfall",
|
||||
"Wee",
|
||||
"Solari",
|
||||
"Tomaselli",
|
||||
"Basler",
|
||||
"Difranco",
|
||||
"Latch",
|
||||
"Rives",
|
||||
"Dolan",
|
||||
"Abraham",
|
||||
"Holter",
|
||||
"Portugal",
|
||||
"Lininger",
|
||||
"Holst",
|
||||
"Mccroy",
|
||||
"Follmer",
|
||||
"Hotchkiss",
|
||||
"Gassaway",
|
||||
"Wang",
|
||||
"Agron",
|
||||
"Raasch",
|
||||
"Gourd",
|
||||
"Czaja",
|
||||
"Marquart",
|
||||
"Papadopoulos",
|
||||
"Ringer",
|
||||
"Lax",
|
||||
"Sperling",
|
||||
"Galusha",
|
||||
"Alston"
|
||||
],
|
||||
"maleNames": [
|
||||
"Bob",
|
||||
"Daniel",
|
||||
"Logan",
|
||||
"Chris",
|
||||
"Nathan",
|
||||
"George",
|
||||
"Mart",
|
||||
"Charlie",
|
||||
"Felix",
|
||||
"Ralph",
|
||||
"William",
|
||||
"Max",
|
||||
"Jerry",
|
||||
"Marty",
|
||||
"Joshua",
|
||||
"Cody",
|
||||
"Richard",
|
||||
"Alex",
|
||||
"Alexander",
|
||||
"Jordan",
|
||||
"Zachary",
|
||||
"Bill",
|
||||
"Alfred",
|
||||
"Bruce",
|
||||
"Caiden",
|
||||
"Calvin",
|
||||
"Eric",
|
||||
"Robert",
|
||||
"Mark",
|
||||
"Miles",
|
||||
"Nash",
|
||||
"Ronald",
|
||||
"Ivan",
|
||||
"Edgar",
|
||||
"Royal",
|
||||
"Augustine",
|
||||
"Dominic",
|
||||
"Noel",
|
||||
"Rocky",
|
||||
"Grover",
|
||||
"Paul",
|
||||
"Jeremy",
|
||||
"Stevie",
|
||||
"Brock",
|
||||
"Jc",
|
||||
"Tony",
|
||||
"Enoch",
|
||||
"Zachery",
|
||||
"Harvey",
|
||||
"Gilbert",
|
||||
"Chang",
|
||||
"Emery",
|
||||
"Carroll",
|
||||
"Odell",
|
||||
"Jean",
|
||||
"Archie",
|
||||
"Russ",
|
||||
"Barry",
|
||||
"Lowell",
|
||||
"Jacob",
|
||||
"Riku",
|
||||
"Frederic",
|
||||
"Levi",
|
||||
"Faustino",
|
||||
"Leland",
|
||||
"Domenic",
|
||||
"Irwin",
|
||||
"Moises",
|
||||
"Louie",
|
||||
"Larry",
|
||||
"Victor"
|
||||
],
|
||||
"femaleNames": [
|
||||
"Elizabeth",
|
||||
"Chelsey",
|
||||
"Rachel",
|
||||
"Logan",
|
||||
"Alex",
|
||||
"Jordan",
|
||||
"Mary",
|
||||
"Shirley",
|
||||
"Sandy",
|
||||
"Linda",
|
||||
"Audrey",
|
||||
"Autumn",
|
||||
"Gracie",
|
||||
"Grace",
|
||||
"Erin",
|
||||
"Catherine",
|
||||
"Stephanie",
|
||||
"Lucy",
|
||||
"Patty",
|
||||
"Julie",
|
||||
"Christina",
|
||||
"Fiona",
|
||||
"Riley",
|
||||
"Ashley",
|
||||
"Bree",
|
||||
"Lucila",
|
||||
"Wendi",
|
||||
"Evangelina",
|
||||
"Ricki",
|
||||
"Merna",
|
||||
"Tegan",
|
||||
"Venus",
|
||||
"Claris",
|
||||
"Tana",
|
||||
"Sakura",
|
||||
"Edythe",
|
||||
"Adena",
|
||||
"Princess",
|
||||
"Elnora",
|
||||
"Star",
|
||||
"Edyth",
|
||||
"Beverly",
|
||||
"Kelsie",
|
||||
"Letha",
|
||||
"Latisha",
|
||||
"Lolita",
|
||||
"Bernandine",
|
||||
"Jessenia",
|
||||
"Hannah",
|
||||
"Leonore",
|
||||
"Alene",
|
||||
"Fannie",
|
||||
"Bernardine",
|
||||
"Leena",
|
||||
"Tera",
|
||||
"Yvette",
|
||||
"Melisa",
|
||||
"Alissa",
|
||||
"Xiao",
|
||||
"Richelle",
|
||||
"Bridgett",
|
||||
"Sumiko",
|
||||
"Paulette",
|
||||
"Charlott",
|
||||
"Honey",
|
||||
"Veola",
|
||||
"Sherita",
|
||||
"Amanda",
|
||||
"Vannessa",
|
||||
"April",
|
||||
"Ruth"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
{
|
||||
"ADMINISTRATOR": "Administrator",
|
||||
"VIEW_AUDIT_LOG": "View Audit Log",
|
||||
"MANAGE_GUILD": "Manage Server",
|
||||
"MANAGE_ROLES": "Manage Roles",
|
||||
"MANAGE_CHANNELS": "Manage Channels",
|
||||
"KICK_MEMBERS": "Kick Members",
|
||||
"BAN_MEMBERS": "Ban Members",
|
||||
"CREATE_INSTANT_INVITE": "Create Instant Invite",
|
||||
"CHANGE_NICKNAME": "Change Nickname",
|
||||
"MANAGE_NICKNAMES": "Manage Nicknames",
|
||||
"MANAGE_EMOJIS": "Manage Emojis",
|
||||
"MANAGE_WEBHOOKS": "Manage Webhooks",
|
||||
"READ_MESSAGES": "Read Messages",
|
||||
"SEND_MESSAGES": "Send Messages",
|
||||
"SEND_TTS_MESSAGES": "Send TTS Messages",
|
||||
"MANAGE_MESSAGES": "Manage Messages",
|
||||
"EMBED_LINKS": "Embed Links",
|
||||
"ATTACH_FILES": "Attach Files",
|
||||
"READ_MESSAGE_HISTORY": "Read Message History",
|
||||
"MENTION_EVERYONE": "Mention Everyone",
|
||||
"USE_EXTERNAL_EMOJIS": "Use External Emojis",
|
||||
"ADD_REACTIONS": "Add Reactions",
|
||||
"CONNECT": "Connect",
|
||||
"SPEAK": "Speak",
|
||||
"MUTE_MEMBERS": "Mute Members",
|
||||
"DEAFEN_MEMBERS": "Deafen Members",
|
||||
"MOVE_MEMBERS": "Move Members",
|
||||
"USE_VAD": "Use Voice Activity"
|
||||
"ADMINISTRATOR": "Administrator",
|
||||
"VIEW_AUDIT_LOG": "View Audit Log",
|
||||
"MANAGE_GUILD": "Manage Server",
|
||||
"MANAGE_ROLES": "Manage Roles",
|
||||
"MANAGE_CHANNELS": "Manage Channels",
|
||||
"KICK_MEMBERS": "Kick Members",
|
||||
"BAN_MEMBERS": "Ban Members",
|
||||
"CREATE_INSTANT_INVITE": "Create Instant Invite",
|
||||
"CHANGE_NICKNAME": "Change Nickname",
|
||||
"MANAGE_NICKNAMES": "Manage Nicknames",
|
||||
"MANAGE_EMOJIS": "Manage Emojis",
|
||||
"MANAGE_WEBHOOKS": "Manage Webhooks",
|
||||
"READ_MESSAGES": "Read Messages",
|
||||
"SEND_MESSAGES": "Send Messages",
|
||||
"SEND_TTS_MESSAGES": "Send TTS Messages",
|
||||
"MANAGE_MESSAGES": "Manage Messages",
|
||||
"EMBED_LINKS": "Embed Links",
|
||||
"ATTACH_FILES": "Attach Files",
|
||||
"READ_MESSAGE_HISTORY": "Read Message History",
|
||||
"MENTION_EVERYONE": "Mention Everyone",
|
||||
"USE_EXTERNAL_EMOJIS": "Use External Emojis",
|
||||
"ADD_REACTIONS": "Add Reactions",
|
||||
"CONNECT": "Connect",
|
||||
"SPEAK": "Speak",
|
||||
"MUTE_MEMBERS": "Mute Members",
|
||||
"DEAFEN_MEMBERS": "Deafen Members",
|
||||
"MOVE_MEMBERS": "Move Members",
|
||||
"USE_VAD": "Use Voice Activity"
|
||||
}
|
||||
|
||||
+152
-152
@@ -1,154 +1,154 @@
|
||||
{
|
||||
"address": "port o' call",
|
||||
"admin": "helm",
|
||||
"am": "be",
|
||||
"an": "a",
|
||||
"and": "n'",
|
||||
"are": "be",
|
||||
"award": "prize",
|
||||
"bathroom": "head",
|
||||
"beer": "grog",
|
||||
"before": "afore",
|
||||
"belief": "creed",
|
||||
"between": "betwixt",
|
||||
"big": "vast",
|
||||
"bill": "coin",
|
||||
"bills": "coins",
|
||||
"boss": "admiral",
|
||||
"bourbon": "rum",
|
||||
"box": "barrel",
|
||||
"boy": "lad",
|
||||
"buddy": "mate",
|
||||
"business": "company",
|
||||
"businesses": "companies",
|
||||
"calling": "callin'",
|
||||
"canada": "Great North",
|
||||
"cash": "coin",
|
||||
"cat": "parrot",
|
||||
"cheat": "hornswaggle",
|
||||
"comes": "hails",
|
||||
"comments": "yer words",
|
||||
"cool": "shipshape",
|
||||
"country": "land",
|
||||
"dashboard": "shanty",
|
||||
"dead": "in Davy Jones's Locker",
|
||||
"disconnect": "keelhaul",
|
||||
"do": "d'",
|
||||
"dog": "parrot",
|
||||
"dollar": "doubloon",
|
||||
"dollars": "doubloons",
|
||||
"dude": "pirate",
|
||||
"employee": "crew",
|
||||
"everyone": "all hands",
|
||||
"eye": "eye-patch",
|
||||
"family": "kin",
|
||||
"fee": "debt",
|
||||
"female": "wench",
|
||||
"females": "wenches",
|
||||
"food": "grub",
|
||||
"for": "fer",
|
||||
"friend": "mate",
|
||||
"friends": "crew",
|
||||
"fuck": "shiver me timbers",
|
||||
"gin": "rum",
|
||||
"girl": "lass",
|
||||
"girls": "lassies",
|
||||
"go": "sail",
|
||||
"good": "jolly good",
|
||||
"grave": "Davy Jones's Locker",
|
||||
"group": "maties",
|
||||
"gun": "bluderbuss",
|
||||
"haha": "yo ho",
|
||||
"hahaha": "yo ho ho",
|
||||
"hahahaha": "yo ho ho ho",
|
||||
"hand": "hook",
|
||||
"happy": "grog-filled",
|
||||
"hello": "ahoy",
|
||||
"hey": "ahoy",
|
||||
"hi": "ahoy",
|
||||
"hotel": "fleebag inn",
|
||||
"i": "me",
|
||||
"i'm": "i be",
|
||||
"internet": "series o' tubes",
|
||||
"invalid": "sunk",
|
||||
"is": "be",
|
||||
"island": "isle",
|
||||
"isn't": "be not",
|
||||
"it's": "'tis",
|
||||
"jail": "brig",
|
||||
"kill": "keelhaul",
|
||||
"king": "king",
|
||||
"ladies": "lasses",
|
||||
"lady": "lass",
|
||||
"lawyer": "scurvy land lubber",
|
||||
"left": "port",
|
||||
"leg": "peg",
|
||||
"logout": "walk the plank",
|
||||
"lol": "blimey",
|
||||
"male": "pirate",
|
||||
"man": "pirate",
|
||||
"manager": "admiral",
|
||||
"money": "doubloons",
|
||||
"month": "moon",
|
||||
"my": "me",
|
||||
"never": "nary",
|
||||
"no": "nay",
|
||||
"not": "nay",
|
||||
"of": "o'",
|
||||
"old": "barnacle-covered",
|
||||
"omg": "shiver me timbers",
|
||||
"over": "o'er",
|
||||
"page": "parchment",
|
||||
"people": "scallywags",
|
||||
"person": "scurvy dog",
|
||||
"posted": "tacked to the yardarm",
|
||||
"president": "king",
|
||||
"prison": "brig",
|
||||
"quickly": "smartly",
|
||||
"really": "verily",
|
||||
"relative": "kin",
|
||||
"relatives": "kin",
|
||||
"religion": "creed",
|
||||
"restaurant": "galley",
|
||||
"right": "starboard",
|
||||
"rotf": "rollin' on the decks",
|
||||
"say": "cry",
|
||||
"seconds": "ticks o' tha clock",
|
||||
"shipping": "cargo",
|
||||
"shit": "shiver me timbers",
|
||||
"small": "puny",
|
||||
"snack": "grub",
|
||||
"soldier": "sailor",
|
||||
"sorry": "yarr",
|
||||
"spouse": "ball 'n' chain",
|
||||
"state": "land",
|
||||
"supervisor": "Cap'n",
|
||||
"that's": "that be",
|
||||
"the": "thar",
|
||||
"theif": "swoggler",
|
||||
"them": "'em",
|
||||
"this": "dis",
|
||||
"to": "t'",
|
||||
"together": "t'gether",
|
||||
"treasure": "booty",
|
||||
"vodka": "rum",
|
||||
"was": "be",
|
||||
"water": "grog",
|
||||
"we": "our jolly crew",
|
||||
"we're": "we's",
|
||||
"whiskey": "rum",
|
||||
"whisky": "rum",
|
||||
"wine": "grog",
|
||||
"with": "wit'",
|
||||
"woman": "comely wench",
|
||||
"women": "beauties",
|
||||
"work": "duty",
|
||||
"yah": "aye",
|
||||
"yeah": "aye",
|
||||
"yes": "aye",
|
||||
"you": "ye",
|
||||
"you're": "you be",
|
||||
"you've": "ye",
|
||||
"your": "yer",
|
||||
"yup": "aye"
|
||||
"address": "port o' call",
|
||||
"admin": "helm",
|
||||
"am": "be",
|
||||
"an": "a",
|
||||
"and": "n'",
|
||||
"are": "be",
|
||||
"award": "prize",
|
||||
"bathroom": "head",
|
||||
"beer": "grog",
|
||||
"before": "afore",
|
||||
"belief": "creed",
|
||||
"between": "betwixt",
|
||||
"big": "vast",
|
||||
"bill": "coin",
|
||||
"bills": "coins",
|
||||
"boss": "admiral",
|
||||
"bourbon": "rum",
|
||||
"box": "barrel",
|
||||
"boy": "lad",
|
||||
"buddy": "mate",
|
||||
"business": "company",
|
||||
"businesses": "companies",
|
||||
"calling": "callin'",
|
||||
"canada": "Great North",
|
||||
"cash": "coin",
|
||||
"cat": "parrot",
|
||||
"cheat": "hornswaggle",
|
||||
"comes": "hails",
|
||||
"comments": "yer words",
|
||||
"cool": "shipshape",
|
||||
"country": "land",
|
||||
"dashboard": "shanty",
|
||||
"dead": "in Davy Jones's Locker",
|
||||
"disconnect": "keelhaul",
|
||||
"do": "d'",
|
||||
"dog": "parrot",
|
||||
"dollar": "doubloon",
|
||||
"dollars": "doubloons",
|
||||
"dude": "pirate",
|
||||
"employee": "crew",
|
||||
"everyone": "all hands",
|
||||
"eye": "eye-patch",
|
||||
"family": "kin",
|
||||
"fee": "debt",
|
||||
"female": "wench",
|
||||
"females": "wenches",
|
||||
"food": "grub",
|
||||
"for": "fer",
|
||||
"friend": "mate",
|
||||
"friends": "crew",
|
||||
"fuck": "shiver me timbers",
|
||||
"gin": "rum",
|
||||
"girl": "lass",
|
||||
"girls": "lassies",
|
||||
"go": "sail",
|
||||
"good": "jolly good",
|
||||
"grave": "Davy Jones's Locker",
|
||||
"group": "maties",
|
||||
"gun": "bluderbuss",
|
||||
"haha": "yo ho",
|
||||
"hahaha": "yo ho ho",
|
||||
"hahahaha": "yo ho ho ho",
|
||||
"hand": "hook",
|
||||
"happy": "grog-filled",
|
||||
"hello": "ahoy",
|
||||
"hey": "ahoy",
|
||||
"hi": "ahoy",
|
||||
"hotel": "fleebag inn",
|
||||
"i": "me",
|
||||
"i'm": "i be",
|
||||
"internet": "series o' tubes",
|
||||
"invalid": "sunk",
|
||||
"is": "be",
|
||||
"island": "isle",
|
||||
"isn't": "be not",
|
||||
"it's": "'tis",
|
||||
"jail": "brig",
|
||||
"kill": "keelhaul",
|
||||
"king": "king",
|
||||
"ladies": "lasses",
|
||||
"lady": "lass",
|
||||
"lawyer": "scurvy land lubber",
|
||||
"left": "port",
|
||||
"leg": "peg",
|
||||
"logout": "walk the plank",
|
||||
"lol": "blimey",
|
||||
"male": "pirate",
|
||||
"man": "pirate",
|
||||
"manager": "admiral",
|
||||
"money": "doubloons",
|
||||
"month": "moon",
|
||||
"my": "me",
|
||||
"never": "nary",
|
||||
"no": "nay",
|
||||
"not": "nay",
|
||||
"of": "o'",
|
||||
"old": "barnacle-covered",
|
||||
"omg": "shiver me timbers",
|
||||
"over": "o'er",
|
||||
"page": "parchment",
|
||||
"people": "scallywags",
|
||||
"person": "scurvy dog",
|
||||
"posted": "tacked to the yardarm",
|
||||
"president": "king",
|
||||
"prison": "brig",
|
||||
"quickly": "smartly",
|
||||
"really": "verily",
|
||||
"relative": "kin",
|
||||
"relatives": "kin",
|
||||
"religion": "creed",
|
||||
"restaurant": "galley",
|
||||
"right": "starboard",
|
||||
"rotf": "rollin' on the decks",
|
||||
"say": "cry",
|
||||
"seconds": "ticks o' tha clock",
|
||||
"shipping": "cargo",
|
||||
"shit": "shiver me timbers",
|
||||
"small": "puny",
|
||||
"snack": "grub",
|
||||
"soldier": "sailor",
|
||||
"sorry": "yarr",
|
||||
"spouse": "ball 'n' chain",
|
||||
"state": "land",
|
||||
"supervisor": "Cap'n",
|
||||
"that's": "that be",
|
||||
"the": "thar",
|
||||
"theif": "swoggler",
|
||||
"them": "'em",
|
||||
"this": "dis",
|
||||
"to": "t'",
|
||||
"together": "t'gether",
|
||||
"treasure": "booty",
|
||||
"vodka": "rum",
|
||||
"was": "be",
|
||||
"water": "grog",
|
||||
"we": "our jolly crew",
|
||||
"we're": "we's",
|
||||
"whiskey": "rum",
|
||||
"whisky": "rum",
|
||||
"wine": "grog",
|
||||
"with": "wit'",
|
||||
"woman": "comely wench",
|
||||
"women": "beauties",
|
||||
"work": "duty",
|
||||
"yah": "aye",
|
||||
"yeah": "aye",
|
||||
"yes": "aye",
|
||||
"you": "ye",
|
||||
"you're": "you be",
|
||||
"you've": "ye",
|
||||
"your": "yer",
|
||||
"yup": "aye"
|
||||
}
|
||||
|
||||
+152
-152
@@ -1,154 +1,154 @@
|
||||
{
|
||||
"bulbasaur": "1",
|
||||
"ivysaur": "2",
|
||||
"venusaur": "3",
|
||||
"charmander": "4",
|
||||
"charmeleon": "5",
|
||||
"charizard": "6",
|
||||
"squirtle": "7",
|
||||
"wartortle": "8",
|
||||
"blastoise": "9",
|
||||
"caterpie": "10",
|
||||
"metapod": "11",
|
||||
"butterfree": "12",
|
||||
"weedle": "13",
|
||||
"kakuna": "14",
|
||||
"beedrill": "15",
|
||||
"pidgey": "16",
|
||||
"pidgeotto": "17",
|
||||
"pidgeot": "18",
|
||||
"rattata": "19",
|
||||
"raticate": "20",
|
||||
"spearow": "21",
|
||||
"fearow": "22",
|
||||
"ekans": "23",
|
||||
"arbok": "24",
|
||||
"pikachu": "25",
|
||||
"raichu": "26",
|
||||
"sandshrew": "27",
|
||||
"sandslash": "28",
|
||||
"nidoranf": "29",
|
||||
"nidorina": "30",
|
||||
"nidoqueen": "31",
|
||||
"nidoranm": "32",
|
||||
"nidorino": "33",
|
||||
"nidoking": "34",
|
||||
"clefairy": "35",
|
||||
"clefable": "36",
|
||||
"vulpix": "37",
|
||||
"ninetales": "38",
|
||||
"jigglypuff": "39",
|
||||
"wigglytuff": "40",
|
||||
"zubat": "41",
|
||||
"golbat": "42",
|
||||
"oddish": "43",
|
||||
"gloom": "44",
|
||||
"vileplume": "45",
|
||||
"paras": "46",
|
||||
"parasect": "47",
|
||||
"venonat": "48",
|
||||
"venomoth": "49",
|
||||
"diglett": "50",
|
||||
"dugtrio": "51",
|
||||
"meowth": "52",
|
||||
"persian": "53",
|
||||
"psyduck": "54",
|
||||
"golduck": "55",
|
||||
"mankey": "56",
|
||||
"primeape": "57",
|
||||
"growlithe": "58",
|
||||
"arcanine": "59",
|
||||
"poliwag": "60",
|
||||
"poliwhirl": "61",
|
||||
"poliwrath": "62",
|
||||
"abra": "63",
|
||||
"kadabra": "64",
|
||||
"alakazam": "65",
|
||||
"machop": "66",
|
||||
"machoke": "67",
|
||||
"machamp": "68",
|
||||
"bellsprout": "69",
|
||||
"weepinbell": "70",
|
||||
"victreebel": "71",
|
||||
"tentacool": "72",
|
||||
"tentacruel": "73",
|
||||
"geodude": "74",
|
||||
"graveler": "75",
|
||||
"golem": "76",
|
||||
"ponyta": "77",
|
||||
"rapidash": "78",
|
||||
"slowpoke": "79",
|
||||
"slowbro": "80",
|
||||
"magnemite": "81",
|
||||
"magneton": "82",
|
||||
"farfetch'd": "83",
|
||||
"doduo": "84",
|
||||
"dodrio": "85",
|
||||
"seel": "86",
|
||||
"dewgong": "87",
|
||||
"grimer": "88",
|
||||
"muk": "89",
|
||||
"shellder": "90",
|
||||
"cloyster": "91",
|
||||
"gastly": "92",
|
||||
"haunter": "93",
|
||||
"gengar": "94",
|
||||
"onix": "95",
|
||||
"drowzee": "96",
|
||||
"hypno": "97",
|
||||
"krabby": "98",
|
||||
"kingler": "99",
|
||||
"voltorb": "100",
|
||||
"electrode": "101",
|
||||
"exeggcute": "102",
|
||||
"exeggutor": "103",
|
||||
"cubone": "104",
|
||||
"marowak": "105",
|
||||
"hitmonlee": "106",
|
||||
"hitmonchan": "107",
|
||||
"lickitung": "108",
|
||||
"koffing": "109",
|
||||
"weezing": "110",
|
||||
"rhyhorn": "111",
|
||||
"rhydon": "112",
|
||||
"chansey": "113",
|
||||
"tangela": "114",
|
||||
"kangaskhan": "115",
|
||||
"horsea": "116",
|
||||
"seadra": "117",
|
||||
"goldeen": "118",
|
||||
"seaking": "119",
|
||||
"staryu": "120",
|
||||
"starmie": "121",
|
||||
"mr. mime": "122",
|
||||
"scyther": "123",
|
||||
"jynx": "124",
|
||||
"electabuzz": "125",
|
||||
"magmar": "126",
|
||||
"pinsir": "127",
|
||||
"tauros": "128",
|
||||
"magikarp": "129",
|
||||
"gyarados": "130",
|
||||
"lapras": "131",
|
||||
"ditto": "132",
|
||||
"eevee": "133",
|
||||
"vaporeon": "134",
|
||||
"jolteon": "135",
|
||||
"flareon": "136",
|
||||
"porygon": "137",
|
||||
"omanyte": "138",
|
||||
"omastar": "139",
|
||||
"kabuto": "140",
|
||||
"kabutops": "141",
|
||||
"aerodactyl": "142",
|
||||
"snorlax": "143",
|
||||
"articuno": "144",
|
||||
"zapdos": "145",
|
||||
"moltres": "146",
|
||||
"dratini": "147",
|
||||
"dragonair": "148",
|
||||
"dragonite": "149",
|
||||
"mewtwo": "150",
|
||||
"mew": "151",
|
||||
"missingno.": "0"
|
||||
"bulbasaur": "1",
|
||||
"ivysaur": "2",
|
||||
"venusaur": "3",
|
||||
"charmander": "4",
|
||||
"charmeleon": "5",
|
||||
"charizard": "6",
|
||||
"squirtle": "7",
|
||||
"wartortle": "8",
|
||||
"blastoise": "9",
|
||||
"caterpie": "10",
|
||||
"metapod": "11",
|
||||
"butterfree": "12",
|
||||
"weedle": "13",
|
||||
"kakuna": "14",
|
||||
"beedrill": "15",
|
||||
"pidgey": "16",
|
||||
"pidgeotto": "17",
|
||||
"pidgeot": "18",
|
||||
"rattata": "19",
|
||||
"raticate": "20",
|
||||
"spearow": "21",
|
||||
"fearow": "22",
|
||||
"ekans": "23",
|
||||
"arbok": "24",
|
||||
"pikachu": "25",
|
||||
"raichu": "26",
|
||||
"sandshrew": "27",
|
||||
"sandslash": "28",
|
||||
"nidoranf": "29",
|
||||
"nidorina": "30",
|
||||
"nidoqueen": "31",
|
||||
"nidoranm": "32",
|
||||
"nidorino": "33",
|
||||
"nidoking": "34",
|
||||
"clefairy": "35",
|
||||
"clefable": "36",
|
||||
"vulpix": "37",
|
||||
"ninetales": "38",
|
||||
"jigglypuff": "39",
|
||||
"wigglytuff": "40",
|
||||
"zubat": "41",
|
||||
"golbat": "42",
|
||||
"oddish": "43",
|
||||
"gloom": "44",
|
||||
"vileplume": "45",
|
||||
"paras": "46",
|
||||
"parasect": "47",
|
||||
"venonat": "48",
|
||||
"venomoth": "49",
|
||||
"diglett": "50",
|
||||
"dugtrio": "51",
|
||||
"meowth": "52",
|
||||
"persian": "53",
|
||||
"psyduck": "54",
|
||||
"golduck": "55",
|
||||
"mankey": "56",
|
||||
"primeape": "57",
|
||||
"growlithe": "58",
|
||||
"arcanine": "59",
|
||||
"poliwag": "60",
|
||||
"poliwhirl": "61",
|
||||
"poliwrath": "62",
|
||||
"abra": "63",
|
||||
"kadabra": "64",
|
||||
"alakazam": "65",
|
||||
"machop": "66",
|
||||
"machoke": "67",
|
||||
"machamp": "68",
|
||||
"bellsprout": "69",
|
||||
"weepinbell": "70",
|
||||
"victreebel": "71",
|
||||
"tentacool": "72",
|
||||
"tentacruel": "73",
|
||||
"geodude": "74",
|
||||
"graveler": "75",
|
||||
"golem": "76",
|
||||
"ponyta": "77",
|
||||
"rapidash": "78",
|
||||
"slowpoke": "79",
|
||||
"slowbro": "80",
|
||||
"magnemite": "81",
|
||||
"magneton": "82",
|
||||
"farfetch'd": "83",
|
||||
"doduo": "84",
|
||||
"dodrio": "85",
|
||||
"seel": "86",
|
||||
"dewgong": "87",
|
||||
"grimer": "88",
|
||||
"muk": "89",
|
||||
"shellder": "90",
|
||||
"cloyster": "91",
|
||||
"gastly": "92",
|
||||
"haunter": "93",
|
||||
"gengar": "94",
|
||||
"onix": "95",
|
||||
"drowzee": "96",
|
||||
"hypno": "97",
|
||||
"krabby": "98",
|
||||
"kingler": "99",
|
||||
"voltorb": "100",
|
||||
"electrode": "101",
|
||||
"exeggcute": "102",
|
||||
"exeggutor": "103",
|
||||
"cubone": "104",
|
||||
"marowak": "105",
|
||||
"hitmonlee": "106",
|
||||
"hitmonchan": "107",
|
||||
"lickitung": "108",
|
||||
"koffing": "109",
|
||||
"weezing": "110",
|
||||
"rhyhorn": "111",
|
||||
"rhydon": "112",
|
||||
"chansey": "113",
|
||||
"tangela": "114",
|
||||
"kangaskhan": "115",
|
||||
"horsea": "116",
|
||||
"seadra": "117",
|
||||
"goldeen": "118",
|
||||
"seaking": "119",
|
||||
"staryu": "120",
|
||||
"starmie": "121",
|
||||
"mr. mime": "122",
|
||||
"scyther": "123",
|
||||
"jynx": "124",
|
||||
"electabuzz": "125",
|
||||
"magmar": "126",
|
||||
"pinsir": "127",
|
||||
"tauros": "128",
|
||||
"magikarp": "129",
|
||||
"gyarados": "130",
|
||||
"lapras": "131",
|
||||
"ditto": "132",
|
||||
"eevee": "133",
|
||||
"vaporeon": "134",
|
||||
"jolteon": "135",
|
||||
"flareon": "136",
|
||||
"porygon": "137",
|
||||
"omanyte": "138",
|
||||
"omastar": "139",
|
||||
"kabuto": "140",
|
||||
"kabutops": "141",
|
||||
"aerodactyl": "142",
|
||||
"snorlax": "143",
|
||||
"articuno": "144",
|
||||
"zapdos": "145",
|
||||
"moltres": "146",
|
||||
"dratini": "147",
|
||||
"dragonair": "148",
|
||||
"dragonite": "149",
|
||||
"mewtwo": "150",
|
||||
"mew": "151",
|
||||
"missingno.": "0"
|
||||
}
|
||||
|
||||
+34
-34
@@ -1,36 +1,36 @@
|
||||
[
|
||||
"*puts you in the oven*",
|
||||
"You're so stupid.",
|
||||
"Sorry, I can't hear you over how annoying you are.",
|
||||
"I've got better things to do.",
|
||||
"You're as dumb as Cleverbot.",
|
||||
"Your IQ is lower than the Mariana Trench.",
|
||||
"You're so annoying even the flies stay away from your stench.",
|
||||
"Go away, please.",
|
||||
"I'd give you a nasty look but you've already got one.",
|
||||
"It looks like your face caught fire and someone tried to put it out with a hammer.",
|
||||
"Your family tree must be a cactus because everyone on it is a prick.",
|
||||
"Someday you will go far, and I hope you stay there.",
|
||||
"The zoo called. They're wondering how you got out of your cage.",
|
||||
"I was hoping for a battle of wits, but you appear to be unarmed.",
|
||||
"You are proof that evolution can go in reverse.",
|
||||
"Brains aren't everything, in your case, they're nothing.",
|
||||
"Sorry I didn't get that, I don't speak idiot.",
|
||||
"Why is it acceptable for you to be an idiot, but not for me to point it out?",
|
||||
"We all sprang from apes, but you did not spring far enough.",
|
||||
"You're an unknown command.",
|
||||
"If you could go anywhere I chose, I'd choose dead.",
|
||||
"Even monkeys can go to space, so clearly you lack some potential.",
|
||||
"It's brains over brawn, yet you have neither.",
|
||||
"You look like a monkey, and you smell like one too.",
|
||||
"Even among idiots you're lacking.",
|
||||
"You fail even when you're doing absolutely nothing.",
|
||||
"If there was a vote for 'least likely to succeed' you'd win first prize.",
|
||||
"I'm surrounded by idiots... Or, wait, that's just you.",
|
||||
"I wanna go home. Well, really I just want to get away from the awful aroma you've got going there.",
|
||||
"Every time you touch me I have to go home and wash all my clothes nine times just to get a normal smell back.",
|
||||
"If I had a dollar for every brain you don't have, I'd have one dollar.",
|
||||
"I'd help you succeed but you're incapable.",
|
||||
"Your hairline is built like a graph chart, positive and negative forces attract but the clippers and your hair repel",
|
||||
"I know a good joke! You!"
|
||||
"*puts you in the oven*",
|
||||
"You're so stupid.",
|
||||
"Sorry, I can't hear you over how annoying you are.",
|
||||
"I've got better things to do.",
|
||||
"You're as dumb as Cleverbot.",
|
||||
"Your IQ is lower than the Mariana Trench.",
|
||||
"You're so annoying even the flies stay away from your stench.",
|
||||
"Go away, please.",
|
||||
"I'd give you a nasty look but you've already got one.",
|
||||
"It looks like your face caught fire and someone tried to put it out with a hammer.",
|
||||
"Your family tree must be a cactus because everyone on it is a prick.",
|
||||
"Someday you will go far, and I hope you stay there.",
|
||||
"The zoo called. They're wondering how you got out of your cage.",
|
||||
"I was hoping for a battle of wits, but you appear to be unarmed.",
|
||||
"You are proof that evolution can go in reverse.",
|
||||
"Brains aren't everything, in your case, they're nothing.",
|
||||
"Sorry I didn't get that, I don't speak idiot.",
|
||||
"Why is it acceptable for you to be an idiot, but not for me to point it out?",
|
||||
"We all sprang from apes, but you did not spring far enough.",
|
||||
"You're an unknown command.",
|
||||
"If you could go anywhere I chose, I'd choose dead.",
|
||||
"Even monkeys can go to space, so clearly you lack some potential.",
|
||||
"It's brains over brawn, yet you have neither.",
|
||||
"You look like a monkey, and you smell like one too.",
|
||||
"Even among idiots you're lacking.",
|
||||
"You fail even when you're doing absolutely nothing.",
|
||||
"If there was a vote for 'least likely to succeed' you'd win first prize.",
|
||||
"I'm surrounded by idiots... Or, wait, that's just you.",
|
||||
"I wanna go home. Well, really I just want to get away from the awful aroma you've got going there.",
|
||||
"Every time you touch me I have to go home and wash all my clothes nine times just to get a normal smell back.",
|
||||
"If I had a dollar for every brain you don't have, I'd have one dollar.",
|
||||
"I'd help you succeed but you're incapable.",
|
||||
"Your hairline is built like a graph chart, positive and negative forces attract but the clippers and your hair repel",
|
||||
"I know a good joke! You!"
|
||||
]
|
||||
|
||||
+229
-229
@@ -1,231 +1,231 @@
|
||||
{
|
||||
"i": "tem",
|
||||
"hi": "hoi",
|
||||
"that": "dat",
|
||||
"that's": "dat",
|
||||
"hello": "hoi",
|
||||
"me": "temmie",
|
||||
"goodbye": "boi",
|
||||
"bye": "boi",
|
||||
"later": "boi",
|
||||
"college": "colleg",
|
||||
"money": "muns",
|
||||
"food": "tem flakes",
|
||||
"snack": "tem flakes",
|
||||
"snacks": "tem flakes",
|
||||
"meal": "tem flakes",
|
||||
"meals": "tem flakes",
|
||||
"human": "hooman",
|
||||
"humans": "hoomans",
|
||||
"chocolate": "choco",
|
||||
"cute": "coot",
|
||||
"allergic": "allergics",
|
||||
"allergy": "allergics",
|
||||
"do": "dos",
|
||||
"does": "dos",
|
||||
"what": "ppppppppp...",
|
||||
"who": "ppppppppp...",
|
||||
"when": "ppppppppp...",
|
||||
"why": "ppppppppp...",
|
||||
"where": "ppppppppp...",
|
||||
"how": "ppppppppp...",
|
||||
"xd": "xd",
|
||||
"but": "b-but",
|
||||
"store": "tem shop",
|
||||
"restaurant": "tem shop",
|
||||
"shop": "tem shop",
|
||||
"temmie": "temmiy",
|
||||
"sick": "holves",
|
||||
"illness": "holves",
|
||||
"ill": "holves",
|
||||
"disease": "holves",
|
||||
"cat": "tem",
|
||||
"dog": "tem",
|
||||
"hugs": "pets",
|
||||
"pats": "pets",
|
||||
"waves": "pets",
|
||||
"high-fives": "pets",
|
||||
"fistbumps": "pets",
|
||||
"hug": "pet",
|
||||
"pat": "pet",
|
||||
"wave": "pet",
|
||||
"high-five": "pet",
|
||||
"fistbump": "pet",
|
||||
"hungry": "hungr",
|
||||
"muscles": "not coot",
|
||||
"aw": "awwawa",
|
||||
"yikes": "omg!",
|
||||
"ah": "omg!",
|
||||
"oh": "omg!",
|
||||
"yipe": "omg!",
|
||||
"wait": "omg!",
|
||||
"yes": "yee!",
|
||||
"no": "no!",
|
||||
"person": "bark",
|
||||
"monster": "munster",
|
||||
"monsters": "munsters",
|
||||
"great": "tem outta tem",
|
||||
"awesome": "tem outta tem",
|
||||
"cool": "tem outta tem",
|
||||
"nice": "tem outta tem",
|
||||
"good": "tem outta tem",
|
||||
"walks": "vibrates",
|
||||
"moves": "vibrates",
|
||||
"sits": "vibrates",
|
||||
"goes": "vibrates",
|
||||
"runs": "vibrates intensely",
|
||||
"climbs": "vibrates intensely",
|
||||
"escapes": "vibrates intensely",
|
||||
"normal": "bob",
|
||||
"hmm": "p...",
|
||||
"okay": "ok",
|
||||
"lol": "lel",
|
||||
"enemy": "special enemy",
|
||||
"villain": "special enemy",
|
||||
"badguy": "special enemy",
|
||||
"school": "skool",
|
||||
"um": "p...",
|
||||
"elizabeth": "ebears",
|
||||
"yeah": "yaya",
|
||||
"yea": "yaya",
|
||||
"uh-huh": "yaya",
|
||||
"vampire": "wampire",
|
||||
"tired": "*dies*",
|
||||
"exhausted": "*dies*",
|
||||
"bored": "*dies*",
|
||||
"annoyed": "*dies*",
|
||||
"irritated": "*dies*",
|
||||
"mad": "*dies*",
|
||||
"sleepy": "*dies*",
|
||||
"confused": "*dies*",
|
||||
"house": "tem villag",
|
||||
"home": "tem villag",
|
||||
"apartment": "tem villag",
|
||||
"world": "undergroun",
|
||||
"hotel": "mtt resort",
|
||||
"motel": "mtt resort",
|
||||
"inn": "mtt resort",
|
||||
"cash": "g",
|
||||
"gold": "g",
|
||||
"jewels": "g",
|
||||
"aaron": "not coot",
|
||||
"boy": "tim",
|
||||
"girl": "tem",
|
||||
"we": "tems",
|
||||
"you": "u",
|
||||
"your": "ur",
|
||||
"yours": "urs",
|
||||
"there": "dere",
|
||||
"proud": "prouds",
|
||||
"random": "rando",
|
||||
"see": "c",
|
||||
"this": "dis",
|
||||
"egg": "eg",
|
||||
"very": "very!",
|
||||
"excited": "excite",
|
||||
"doesn't": "don't",
|
||||
"sleep": "slep",
|
||||
"noodles": "alphys foob",
|
||||
"scream": "screems",
|
||||
"gonna": "gunna",
|
||||
"pasta": "papy foob",
|
||||
"spaghetti": "papy foob",
|
||||
"scary": "scaredy",
|
||||
"frightening": "scaredy",
|
||||
"worry": "worrys",
|
||||
"worries": "worrys",
|
||||
"sushi": "undyne foob",
|
||||
"banana": "bernerner",
|
||||
"bananas": "bernerners",
|
||||
"apple": "oppl",
|
||||
"apples": "oppls",
|
||||
"grape": "grep",
|
||||
"grapes": "greps",
|
||||
"wonder": "wunders",
|
||||
"wonders": "wunders",
|
||||
"wondering": "wunders",
|
||||
"wonderful": "wunderfull",
|
||||
"think": "finks",
|
||||
"thinks": "finks",
|
||||
"thought": "finked",
|
||||
"beat": "dunks",
|
||||
"defeat": "dunks",
|
||||
"defeated": "dunkd",
|
||||
"they're": "their",
|
||||
"their": "there",
|
||||
"you're": "ur",
|
||||
"because": "cuz",
|
||||
"bc": "cuz",
|
||||
"will": "wil",
|
||||
"things": "thins",
|
||||
"thing": "thin",
|
||||
"science": "scienc",
|
||||
"ice cream": "noice creem",
|
||||
"spear": "speer",
|
||||
"baby": "temini",
|
||||
"babies": "teminis",
|
||||
"child": "temini",
|
||||
"children": "teminis",
|
||||
"kid": "temini",
|
||||
"kids": "teminis",
|
||||
"bot": "xiao",
|
||||
"robot": "mettatun",
|
||||
"ghost": "bluuk",
|
||||
"nap": "slep",
|
||||
"boop": "blep",
|
||||
"beep": "blep",
|
||||
"bleep": "blep",
|
||||
"bop": "blep",
|
||||
"spider": "spoider",
|
||||
"spiders": "sploiders",
|
||||
"music": "moosics",
|
||||
"again": "agin",
|
||||
"the": "teh",
|
||||
"family": "fam",
|
||||
"smart": "smarts",
|
||||
"smartness": "smartiness",
|
||||
"intelligence": "smartiness",
|
||||
"typo": "tpyo",
|
||||
"typo'd": "tyop'd",
|
||||
"typos": "typoys",
|
||||
"yay": "yee",
|
||||
"potato": "tato",
|
||||
"potatoes": "tatos",
|
||||
"fry": "fri",
|
||||
"fries": "fri",
|
||||
"burger": "glamburg",
|
||||
"steak": "stek",
|
||||
"heart": "hart",
|
||||
"love": "lub",
|
||||
"hate": "h8",
|
||||
"like": "liek",
|
||||
"library": "librarby",
|
||||
"fire": "flemz",
|
||||
"flame": "flemz",
|
||||
"fires": "flemz",
|
||||
"flames": "flemz",
|
||||
"witchcraft": "magics",
|
||||
"witchcrafts": "magics",
|
||||
"magic": "magics",
|
||||
"sorcery": "magics",
|
||||
"superpower": "magics",
|
||||
"superpowers": "magics",
|
||||
"sorceries": "magics",
|
||||
"and": "n",
|
||||
"my": "tem's",
|
||||
"mine": "tem's",
|
||||
"everyone": "everytem",
|
||||
"anyone": "anytem",
|
||||
"someone": "sometem",
|
||||
"everbody": "everytemmie",
|
||||
"anybody": "anytemmie",
|
||||
"somebody": "sometemmie",
|
||||
"beautiful": "booftifull",
|
||||
"pretty": "prety",
|
||||
"so": "soooo",
|
||||
"help": "halp",
|
||||
"uh-uh": "nuh",
|
||||
"nope": "nuh",
|
||||
"nuh-uh": "nuh",
|
||||
"please": "pls"
|
||||
"i": "tem",
|
||||
"hi": "hoi",
|
||||
"that": "dat",
|
||||
"that's": "dat",
|
||||
"hello": "hoi",
|
||||
"me": "temmie",
|
||||
"goodbye": "boi",
|
||||
"bye": "boi",
|
||||
"later": "boi",
|
||||
"college": "colleg",
|
||||
"money": "muns",
|
||||
"food": "tem flakes",
|
||||
"snack": "tem flakes",
|
||||
"snacks": "tem flakes",
|
||||
"meal": "tem flakes",
|
||||
"meals": "tem flakes",
|
||||
"human": "hooman",
|
||||
"humans": "hoomans",
|
||||
"chocolate": "choco",
|
||||
"cute": "coot",
|
||||
"allergic": "allergics",
|
||||
"allergy": "allergics",
|
||||
"do": "dos",
|
||||
"does": "dos",
|
||||
"what": "ppppppppp...",
|
||||
"who": "ppppppppp...",
|
||||
"when": "ppppppppp...",
|
||||
"why": "ppppppppp...",
|
||||
"where": "ppppppppp...",
|
||||
"how": "ppppppppp...",
|
||||
"xd": "xd",
|
||||
"but": "b-but",
|
||||
"store": "tem shop",
|
||||
"restaurant": "tem shop",
|
||||
"shop": "tem shop",
|
||||
"temmie": "temmiy",
|
||||
"sick": "holves",
|
||||
"illness": "holves",
|
||||
"ill": "holves",
|
||||
"disease": "holves",
|
||||
"cat": "tem",
|
||||
"dog": "tem",
|
||||
"hugs": "pets",
|
||||
"pats": "pets",
|
||||
"waves": "pets",
|
||||
"high-fives": "pets",
|
||||
"fistbumps": "pets",
|
||||
"hug": "pet",
|
||||
"pat": "pet",
|
||||
"wave": "pet",
|
||||
"high-five": "pet",
|
||||
"fistbump": "pet",
|
||||
"hungry": "hungr",
|
||||
"muscles": "not coot",
|
||||
"aw": "awwawa",
|
||||
"yikes": "omg!",
|
||||
"ah": "omg!",
|
||||
"oh": "omg!",
|
||||
"yipe": "omg!",
|
||||
"wait": "omg!",
|
||||
"yes": "yee!",
|
||||
"no": "no!",
|
||||
"person": "bark",
|
||||
"monster": "munster",
|
||||
"monsters": "munsters",
|
||||
"great": "tem outta tem",
|
||||
"awesome": "tem outta tem",
|
||||
"cool": "tem outta tem",
|
||||
"nice": "tem outta tem",
|
||||
"good": "tem outta tem",
|
||||
"walks": "vibrates",
|
||||
"moves": "vibrates",
|
||||
"sits": "vibrates",
|
||||
"goes": "vibrates",
|
||||
"runs": "vibrates intensely",
|
||||
"climbs": "vibrates intensely",
|
||||
"escapes": "vibrates intensely",
|
||||
"normal": "bob",
|
||||
"hmm": "p...",
|
||||
"okay": "ok",
|
||||
"lol": "lel",
|
||||
"enemy": "special enemy",
|
||||
"villain": "special enemy",
|
||||
"badguy": "special enemy",
|
||||
"school": "skool",
|
||||
"um": "p...",
|
||||
"elizabeth": "ebears",
|
||||
"yeah": "yaya",
|
||||
"yea": "yaya",
|
||||
"uh-huh": "yaya",
|
||||
"vampire": "wampire",
|
||||
"tired": "*dies*",
|
||||
"exhausted": "*dies*",
|
||||
"bored": "*dies*",
|
||||
"annoyed": "*dies*",
|
||||
"irritated": "*dies*",
|
||||
"mad": "*dies*",
|
||||
"sleepy": "*dies*",
|
||||
"confused": "*dies*",
|
||||
"house": "tem villag",
|
||||
"home": "tem villag",
|
||||
"apartment": "tem villag",
|
||||
"world": "undergroun",
|
||||
"hotel": "mtt resort",
|
||||
"motel": "mtt resort",
|
||||
"inn": "mtt resort",
|
||||
"cash": "g",
|
||||
"gold": "g",
|
||||
"jewels": "g",
|
||||
"aaron": "not coot",
|
||||
"boy": "tim",
|
||||
"girl": "tem",
|
||||
"we": "tems",
|
||||
"you": "u",
|
||||
"your": "ur",
|
||||
"yours": "urs",
|
||||
"there": "dere",
|
||||
"proud": "prouds",
|
||||
"random": "rando",
|
||||
"see": "c",
|
||||
"this": "dis",
|
||||
"egg": "eg",
|
||||
"very": "very!",
|
||||
"excited": "excite",
|
||||
"doesn't": "don't",
|
||||
"sleep": "slep",
|
||||
"noodles": "alphys foob",
|
||||
"scream": "screems",
|
||||
"gonna": "gunna",
|
||||
"pasta": "papy foob",
|
||||
"spaghetti": "papy foob",
|
||||
"scary": "scaredy",
|
||||
"frightening": "scaredy",
|
||||
"worry": "worrys",
|
||||
"worries": "worrys",
|
||||
"sushi": "undyne foob",
|
||||
"banana": "bernerner",
|
||||
"bananas": "bernerners",
|
||||
"apple": "oppl",
|
||||
"apples": "oppls",
|
||||
"grape": "grep",
|
||||
"grapes": "greps",
|
||||
"wonder": "wunders",
|
||||
"wonders": "wunders",
|
||||
"wondering": "wunders",
|
||||
"wonderful": "wunderfull",
|
||||
"think": "finks",
|
||||
"thinks": "finks",
|
||||
"thought": "finked",
|
||||
"beat": "dunks",
|
||||
"defeat": "dunks",
|
||||
"defeated": "dunkd",
|
||||
"they're": "their",
|
||||
"their": "there",
|
||||
"you're": "ur",
|
||||
"because": "cuz",
|
||||
"bc": "cuz",
|
||||
"will": "wil",
|
||||
"things": "thins",
|
||||
"thing": "thin",
|
||||
"science": "scienc",
|
||||
"ice cream": "noice creem",
|
||||
"spear": "speer",
|
||||
"baby": "temini",
|
||||
"babies": "teminis",
|
||||
"child": "temini",
|
||||
"children": "teminis",
|
||||
"kid": "temini",
|
||||
"kids": "teminis",
|
||||
"bot": "xiao",
|
||||
"robot": "mettatun",
|
||||
"ghost": "bluuk",
|
||||
"nap": "slep",
|
||||
"boop": "blep",
|
||||
"beep": "blep",
|
||||
"bleep": "blep",
|
||||
"bop": "blep",
|
||||
"spider": "spoider",
|
||||
"spiders": "sploiders",
|
||||
"music": "moosics",
|
||||
"again": "agin",
|
||||
"the": "teh",
|
||||
"family": "fam",
|
||||
"smart": "smarts",
|
||||
"smartness": "smartiness",
|
||||
"intelligence": "smartiness",
|
||||
"typo": "tpyo",
|
||||
"typo'd": "tyop'd",
|
||||
"typos": "typoys",
|
||||
"yay": "yee",
|
||||
"potato": "tato",
|
||||
"potatoes": "tatos",
|
||||
"fry": "fri",
|
||||
"fries": "fri",
|
||||
"burger": "glamburg",
|
||||
"steak": "stek",
|
||||
"heart": "hart",
|
||||
"love": "lub",
|
||||
"hate": "h8",
|
||||
"like": "liek",
|
||||
"library": "librarby",
|
||||
"fire": "flemz",
|
||||
"flame": "flemz",
|
||||
"fires": "flemz",
|
||||
"flames": "flemz",
|
||||
"witchcraft": "magics",
|
||||
"witchcrafts": "magics",
|
||||
"magic": "magics",
|
||||
"sorcery": "magics",
|
||||
"superpower": "magics",
|
||||
"superpowers": "magics",
|
||||
"sorceries": "magics",
|
||||
"and": "n",
|
||||
"my": "tem's",
|
||||
"mine": "tem's",
|
||||
"everyone": "everytem",
|
||||
"anyone": "anytem",
|
||||
"someone": "sometem",
|
||||
"everbody": "everytemmie",
|
||||
"anybody": "anytemmie",
|
||||
"somebody": "sometemmie",
|
||||
"beautiful": "booftifull",
|
||||
"pretty": "prety",
|
||||
"so": "soooo",
|
||||
"help": "halp",
|
||||
"uh-uh": "nuh",
|
||||
"nope": "nuh",
|
||||
"nuh-uh": "nuh",
|
||||
"please": "pls"
|
||||
}
|
||||
|
||||
+93
-93
@@ -1,95 +1,95 @@
|
||||
{
|
||||
"az": "Azerbaijan",
|
||||
"sq": "Albanian",
|
||||
"am": "Amharic",
|
||||
"en": "English",
|
||||
"ar": "Arabic",
|
||||
"hy": "Armenian",
|
||||
"af": "Afrikaans",
|
||||
"eu": "Basque",
|
||||
"ba": "Bashkir",
|
||||
"be": "Belarusian",
|
||||
"bn": "Bengali",
|
||||
"my": "Burmese",
|
||||
"bg": "Bulgarian",
|
||||
"bs": "Bosnian",
|
||||
"cy": "Welsh",
|
||||
"hu": "Hungarian",
|
||||
"vi": "Vietnamese",
|
||||
"ht": "Haitian (Creole)",
|
||||
"gl": "Galician",
|
||||
"nl": "Dutch",
|
||||
"mrj": "Hill Mari",
|
||||
"el": "Greek",
|
||||
"ka": "Georgian",
|
||||
"gu": "Gujarati",
|
||||
"da": "Danish",
|
||||
"he": "Hebrew",
|
||||
"yi": "Yiddish",
|
||||
"id": "Indonesian",
|
||||
"ga": "Irish",
|
||||
"it": "Italian",
|
||||
"is": "Icelandic",
|
||||
"es": "Spanish",
|
||||
"kk": "Kazakh",
|
||||
"kn": "Kannada",
|
||||
"ca": "Catalan",
|
||||
"ky": "Kyrgyz",
|
||||
"zh": "Chinese",
|
||||
"ko": "Korean",
|
||||
"xh": "Xhosa",
|
||||
"km": "Khmer",
|
||||
"lo": "Laotian",
|
||||
"la": "Latin",
|
||||
"lv": "Latvian",
|
||||
"lt": "Lithuanian",
|
||||
"lb": "Luxembourgish",
|
||||
"mg": "Malagasy",
|
||||
"ms": "Malay",
|
||||
"ml": "Malayalam",
|
||||
"mt": "Maltese",
|
||||
"mk": "Macedonian",
|
||||
"mi": "Maori",
|
||||
"mr": "Marathi",
|
||||
"mhr": "Mari",
|
||||
"mn": "Mongolian",
|
||||
"de": "German",
|
||||
"ne": "Nepali",
|
||||
"no": "Norwegian",
|
||||
"pa": "Punjabi",
|
||||
"pap": "Papiamento",
|
||||
"fa": "Persian",
|
||||
"pl": "Polish",
|
||||
"pt": "Portuguese",
|
||||
"ro": "Romanian",
|
||||
"ru": "Russian",
|
||||
"ceb": "Cebuano",
|
||||
"sr": "Serbian",
|
||||
"si": "Sinhala",
|
||||
"sk": "Slovakian",
|
||||
"sl": "Slovenian",
|
||||
"sw": "Swahili",
|
||||
"su": "Sundanese",
|
||||
"tg": "Tajik",
|
||||
"th": "Thai",
|
||||
"tl": "Tagalog",
|
||||
"ta": "Tamil",
|
||||
"tt": "Tatar",
|
||||
"te": "Telugu",
|
||||
"tr": "Turkish",
|
||||
"udm": "Udmurt",
|
||||
"uz": "Uzbek",
|
||||
"uk": "Ukranian",
|
||||
"ur": "Urdu",
|
||||
"fi": "Finnish",
|
||||
"fr": "French",
|
||||
"hi": "Hindi",
|
||||
"hr": "Croatian",
|
||||
"cs": "Czech",
|
||||
"sv": "Swedish",
|
||||
"gd": "Scottish",
|
||||
"et": "Estonian",
|
||||
"eo": "Esperanto",
|
||||
"jv": "Javanese",
|
||||
"ja": "Japanese"
|
||||
"az": "Azerbaijan",
|
||||
"sq": "Albanian",
|
||||
"am": "Amharic",
|
||||
"en": "English",
|
||||
"ar": "Arabic",
|
||||
"hy": "Armenian",
|
||||
"af": "Afrikaans",
|
||||
"eu": "Basque",
|
||||
"ba": "Bashkir",
|
||||
"be": "Belarusian",
|
||||
"bn": "Bengali",
|
||||
"my": "Burmese",
|
||||
"bg": "Bulgarian",
|
||||
"bs": "Bosnian",
|
||||
"cy": "Welsh",
|
||||
"hu": "Hungarian",
|
||||
"vi": "Vietnamese",
|
||||
"ht": "Haitian (Creole)",
|
||||
"gl": "Galician",
|
||||
"nl": "Dutch",
|
||||
"mrj": "Hill Mari",
|
||||
"el": "Greek",
|
||||
"ka": "Georgian",
|
||||
"gu": "Gujarati",
|
||||
"da": "Danish",
|
||||
"he": "Hebrew",
|
||||
"yi": "Yiddish",
|
||||
"id": "Indonesian",
|
||||
"ga": "Irish",
|
||||
"it": "Italian",
|
||||
"is": "Icelandic",
|
||||
"es": "Spanish",
|
||||
"kk": "Kazakh",
|
||||
"kn": "Kannada",
|
||||
"ca": "Catalan",
|
||||
"ky": "Kyrgyz",
|
||||
"zh": "Chinese",
|
||||
"ko": "Korean",
|
||||
"xh": "Xhosa",
|
||||
"km": "Khmer",
|
||||
"lo": "Laotian",
|
||||
"la": "Latin",
|
||||
"lv": "Latvian",
|
||||
"lt": "Lithuanian",
|
||||
"lb": "Luxembourgish",
|
||||
"mg": "Malagasy",
|
||||
"ms": "Malay",
|
||||
"ml": "Malayalam",
|
||||
"mt": "Maltese",
|
||||
"mk": "Macedonian",
|
||||
"mi": "Maori",
|
||||
"mr": "Marathi",
|
||||
"mhr": "Mari",
|
||||
"mn": "Mongolian",
|
||||
"de": "German",
|
||||
"ne": "Nepali",
|
||||
"no": "Norwegian",
|
||||
"pa": "Punjabi",
|
||||
"pap": "Papiamento",
|
||||
"fa": "Persian",
|
||||
"pl": "Polish",
|
||||
"pt": "Portuguese",
|
||||
"ro": "Romanian",
|
||||
"ru": "Russian",
|
||||
"ceb": "Cebuano",
|
||||
"sr": "Serbian",
|
||||
"si": "Sinhala",
|
||||
"sk": "Slovakian",
|
||||
"sl": "Slovenian",
|
||||
"sw": "Swahili",
|
||||
"su": "Sundanese",
|
||||
"tg": "Tajik",
|
||||
"th": "Thai",
|
||||
"tl": "Tagalog",
|
||||
"ta": "Tamil",
|
||||
"tt": "Tatar",
|
||||
"te": "Telugu",
|
||||
"tr": "Turkish",
|
||||
"udm": "Udmurt",
|
||||
"uz": "Uzbek",
|
||||
"uk": "Ukranian",
|
||||
"ur": "Urdu",
|
||||
"fi": "Finnish",
|
||||
"fr": "French",
|
||||
"hi": "Hindi",
|
||||
"hr": "Croatian",
|
||||
"cs": "Czech",
|
||||
"sv": "Swedish",
|
||||
"gd": "Scottish",
|
||||
"et": "Estonian",
|
||||
"eo": "Esperanto",
|
||||
"jv": "Javanese",
|
||||
"ja": "Japanese"
|
||||
}
|
||||
|
||||
@@ -1,48 +1,48 @@
|
||||
{
|
||||
"sentences": [
|
||||
"The quick brown fox jumps over the lazy dog.",
|
||||
"Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo.",
|
||||
"How razorback-jumping frogs can level six piqued gymnasts!",
|
||||
"Amazingly few discotheques provide jukeboxes.",
|
||||
"I am so blue I'm greener than purple.",
|
||||
"I stepped on a Corn Flake, now I'm a Cereal Killer.",
|
||||
"On a scale from one to ten what is your favourite colour of the alphabet?",
|
||||
"The sparkly lamp ate a pillow then punched Larry.",
|
||||
"My world is where everybody is a pony and we all eat rainbows and poop butterflies.",
|
||||
"If your canoe is stuck in a tree with the headlights on, how many pancakes does it take to get to the moon?",
|
||||
"There's a purple mushroom in my backyard, screaming Taco's!",
|
||||
"When life gives you lemons, chuck them at people you hate.",
|
||||
"I think I will buy the red car, or I will lease the blue one.",
|
||||
"Italy is my favorite country; in fact, I plan to spend two weeks there next year.",
|
||||
"She borrowed the book from him many years ago and hasn't yet returned it.",
|
||||
"Lets all be unique together until we realise we are all the same.",
|
||||
"If Purple People Eaters are real… where do they find purple people to eat?",
|
||||
"The waves were crashing on the shore; it was a lovely sight.",
|
||||
"This is the last random sentence I will be writing and I am going to stop mid-sent.",
|
||||
"The memory we used to share is no longer coherent.",
|
||||
"She did not cheat on the test, for it was not the right thing to do.",
|
||||
"She only paints with bold colors; she does not like pastels.",
|
||||
"Malls are great places to shop; I can find everything I need under one roof.",
|
||||
"The body may perhaps compensates for the loss of a true metaphysics.",
|
||||
"They got there early, and they got really good seats.",
|
||||
"Everyone was busy, so I went to the movie alone.",
|
||||
"Yeah, I think it's a good environment for learning English.",
|
||||
"I would have gotten the promotion, but my attendance wasn’t good enough.",
|
||||
"There were white out conditions in the town; subsequently, the roads were impassable.",
|
||||
"If you like tuna and tomato sauce- try combining the two. It’s really not as bad as it sounds."
|
||||
],
|
||||
"difficulties": [
|
||||
"easy",
|
||||
"medium",
|
||||
"hard",
|
||||
"extreme",
|
||||
"impossible"
|
||||
],
|
||||
"times": {
|
||||
"easy": 25000,
|
||||
"medium": 20000,
|
||||
"hard": 15000,
|
||||
"extreme": 10000,
|
||||
"impossible": 5000
|
||||
}
|
||||
"sentences": [
|
||||
"The quick brown fox jumps over the lazy dog.",
|
||||
"Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo.",
|
||||
"How razorback-jumping frogs can level six piqued gymnasts!",
|
||||
"Amazingly few discotheques provide jukeboxes.",
|
||||
"I am so blue I'm greener than purple.",
|
||||
"I stepped on a Corn Flake, now I'm a Cereal Killer.",
|
||||
"On a scale from one to ten what is your favourite colour of the alphabet?",
|
||||
"The sparkly lamp ate a pillow then punched Larry.",
|
||||
"My world is where everybody is a pony and we all eat rainbows and poop butterflies.",
|
||||
"If your canoe is stuck in a tree with the headlights on, how many pancakes does it take to get to the moon?",
|
||||
"There's a purple mushroom in my backyard, screaming Taco's!",
|
||||
"When life gives you lemons, chuck them at people you hate.",
|
||||
"I think I will buy the red car, or I will lease the blue one.",
|
||||
"Italy is my favorite country; in fact, I plan to spend two weeks there next year.",
|
||||
"She borrowed the book from him many years ago and hasn't yet returned it.",
|
||||
"Lets all be unique together until we realise we are all the same.",
|
||||
"If Purple People Eaters are real… where do they find purple people to eat?",
|
||||
"The waves were crashing on the shore; it was a lovely sight.",
|
||||
"This is the last random sentence I will be writing and I am going to stop mid-sent.",
|
||||
"The memory we used to share is no longer coherent.",
|
||||
"She did not cheat on the test, for it was not the right thing to do.",
|
||||
"She only paints with bold colors; she does not like pastels.",
|
||||
"Malls are great places to shop; I can find everything I need under one roof.",
|
||||
"The body may perhaps compensates for the loss of a true metaphysics.",
|
||||
"They got there early, and they got really good seats.",
|
||||
"Everyone was busy, so I went to the movie alone.",
|
||||
"Yeah, I think it's a good environment for learning English.",
|
||||
"I would have gotten the promotion, but my attendance wasn’t good enough.",
|
||||
"There were white out conditions in the town; subsequently, the roads were impassable.",
|
||||
"If you like tuna and tomato sauce- try combining the two. It’s really not as bad as it sounds."
|
||||
],
|
||||
"difficulties": [
|
||||
"easy",
|
||||
"medium",
|
||||
"hard",
|
||||
"extreme",
|
||||
"impossible"
|
||||
],
|
||||
"times": {
|
||||
"easy": 25000,
|
||||
"medium": 20000,
|
||||
"hard": 15000,
|
||||
"extreme": 10000,
|
||||
"impossible": 5000
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,54 +1,54 @@
|
||||
{
|
||||
"a": "ɐ",
|
||||
"b": "q",
|
||||
"c": "ɔ",
|
||||
"d": "p",
|
||||
"e": "ǝ",
|
||||
"f": "ɟ",
|
||||
"g": "ƃ",
|
||||
"h": "ɥ",
|
||||
"i": "ᴉ",
|
||||
"j": "ɾ",
|
||||
"k": "ʞ",
|
||||
"m": "ɯ",
|
||||
"n": "u",
|
||||
"p": "d",
|
||||
"q": "b",
|
||||
"r": "ɹ",
|
||||
"t": "ʇ",
|
||||
"u": "n",
|
||||
"v": "ʌ",
|
||||
"w": "ʍ",
|
||||
"y": "ʎ",
|
||||
"A": "∀",
|
||||
"C": "Ɔ",
|
||||
"E": "Ǝ",
|
||||
"F": "Ⅎ",
|
||||
"G": "פ",
|
||||
"J": "ſ",
|
||||
"L": "˥",
|
||||
"M": "W",
|
||||
"P": "Ԁ",
|
||||
"T": "┴",
|
||||
"U": "∩",
|
||||
"V": "Λ",
|
||||
"W": "M",
|
||||
"Y": "⅄",
|
||||
"1": "Ɩ",
|
||||
"2": "ᄅ",
|
||||
"3": "Ɛ",
|
||||
"4": "ㄣ",
|
||||
"5": "ϛ",
|
||||
"6": "9",
|
||||
"7": "ㄥ",
|
||||
"9": "6",
|
||||
",": "'",
|
||||
".": "˙",
|
||||
"'": ",",
|
||||
"\"": ",,",
|
||||
"_": "‾",
|
||||
"&": "⅋",
|
||||
"!": "¡",
|
||||
"?": "¿",
|
||||
"`": ","
|
||||
"a": "ɐ",
|
||||
"b": "q",
|
||||
"c": "ɔ",
|
||||
"d": "p",
|
||||
"e": "ǝ",
|
||||
"f": "ɟ",
|
||||
"g": "ƃ",
|
||||
"h": "ɥ",
|
||||
"i": "ᴉ",
|
||||
"j": "ɾ",
|
||||
"k": "ʞ",
|
||||
"m": "ɯ",
|
||||
"n": "u",
|
||||
"p": "d",
|
||||
"q": "b",
|
||||
"r": "ɹ",
|
||||
"t": "ʇ",
|
||||
"u": "n",
|
||||
"v": "ʌ",
|
||||
"w": "ʍ",
|
||||
"y": "ʎ",
|
||||
"A": "∀",
|
||||
"C": "Ɔ",
|
||||
"E": "Ǝ",
|
||||
"F": "Ⅎ",
|
||||
"G": "פ",
|
||||
"J": "ſ",
|
||||
"L": "˥",
|
||||
"M": "W",
|
||||
"P": "Ԁ",
|
||||
"T": "┴",
|
||||
"U": "∩",
|
||||
"V": "Λ",
|
||||
"W": "M",
|
||||
"Y": "⅄",
|
||||
"1": "Ɩ",
|
||||
"2": "ᄅ",
|
||||
"3": "Ɛ",
|
||||
"4": "ㄣ",
|
||||
"5": "ϛ",
|
||||
"6": "9",
|
||||
"7": "ㄥ",
|
||||
"9": "6",
|
||||
",": "'",
|
||||
".": "˙",
|
||||
"'": ",",
|
||||
"\"": ",,",
|
||||
"_": "‾",
|
||||
"&": "⅋",
|
||||
"!": "¡",
|
||||
"?": "¿",
|
||||
"`": ","
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"online": "<:online:313956277808005120> Online",
|
||||
"idle": "<:away:313956277220802560> Idle",
|
||||
"dnd": "<:dnd:313956276893646850> Do Not Disturb",
|
||||
"offline": "<:offline:313956277237710868> Offline"
|
||||
"online": "<:online:313956277808005120> Online",
|
||||
"idle": "<:away:313956277220802560> Idle",
|
||||
"dnd": "<:dnd:313956276893646850> Do Not Disturb",
|
||||
"offline": "<:offline:313956277237710868> Offline"
|
||||
}
|
||||
|
||||
+40
-40
@@ -1,42 +1,42 @@
|
||||
[
|
||||
"https://www.youtube.com/watch?v=ebAKoRcYFTA",
|
||||
"https://www.youtube.com/watch?v=Mqps4anhz0Q",
|
||||
"https://www.youtube.com/watch?v=AUEiHQOCQ2M",
|
||||
"https://www.youtube.com/watch?v=oyteTOBxRm8",
|
||||
"https://www.youtube.com/watch?v=uwwU55zBYlQ",
|
||||
"https://www.youtube.com/watch?v=sSYoz0JmnZo",
|
||||
"https://www.youtube.com/watch?v=NpU4dsXW6EI",
|
||||
"https://www.youtube.com/watch?v=MzyXD8bNbvk",
|
||||
"https://www.youtube.com/watch?v=hyV4qGAPKac",
|
||||
"https://www.youtube.com/watch?v=pywNi6gD1FA",
|
||||
"https://www.youtube.com/watch?v=17FEtaiWdVg",
|
||||
"https://www.youtube.com/watch?v=fmrA-gxJxgQ",
|
||||
"https://www.youtube.com/watch?v=yOBWgSPrYVA",
|
||||
"https://www.youtube.com/watch?v=nCaqf9WhqOY",
|
||||
"https://www.youtube.com/watch?v=cQKGUgOfD8U",
|
||||
"https://www.youtube.com/watch?v=sK92X82T3Sk",
|
||||
"https://www.youtube.com/watch?v=AH5_sKwDw1E",
|
||||
"https://www.youtube.com/watch?v=dw-KJNqcK-Q",
|
||||
"https://www.youtube.com/watch?v=X47JmmqbMvc",
|
||||
"https://www.youtube.com/watch?v=ojQPpYVQt7U",
|
||||
"https://www.youtube.com/watch?v=N1-Z8uslIsI",
|
||||
"https://www.youtube.com/watch?v=EAgk-t2zzqw",
|
||||
"https://www.youtube.com/watch?v=uLBC2kWYFo8",
|
||||
"https://www.youtube.com/watch?v=OXHYIlkZLUU",
|
||||
"https://www.youtube.com/watch?v=ObIa9wXbyMQ",
|
||||
"https://www.youtube.com/watch?v=dGNoCICGmo0",
|
||||
"https://www.youtube.com/watch?v=LcoyEZkTKfY",
|
||||
"https://www.youtube.com/watch?v=mKHaW0qd5Mw",
|
||||
"https://www.youtube.com/watch?v=GG627DYk_E4",
|
||||
"https://www.youtube.com/watch?v=jTm6Q5Pj_Jo",
|
||||
"https://www.youtube.com/watch?v=TVeIDmk3rBo",
|
||||
"https://www.youtube.com/watch?v=1K3in6w9tt4",
|
||||
"https://www.youtube.com/watch?v=07r67gGbtLQ",
|
||||
"https://www.youtube.com/watch?v=243vPl8HdVk",
|
||||
"https://www.youtube.com/watch?v=zweVJrnE1uY",
|
||||
"https://www.youtube.com/watch?v=RKtoreimcQ8",
|
||||
"https://www.youtube.com/watch?v=Je6dCVfHvkU",
|
||||
"https://www.youtube.com/watch?v=UxFv12y_evM",
|
||||
"https://www.youtube.com/watch?v=2HegQtmJeto",
|
||||
"https://www.youtube.com/watch?v=8-Epnpruww0"
|
||||
"https://www.youtube.com/watch?v=ebAKoRcYFTA",
|
||||
"https://www.youtube.com/watch?v=Mqps4anhz0Q",
|
||||
"https://www.youtube.com/watch?v=AUEiHQOCQ2M",
|
||||
"https://www.youtube.com/watch?v=oyteTOBxRm8",
|
||||
"https://www.youtube.com/watch?v=uwwU55zBYlQ",
|
||||
"https://www.youtube.com/watch?v=sSYoz0JmnZo",
|
||||
"https://www.youtube.com/watch?v=NpU4dsXW6EI",
|
||||
"https://www.youtube.com/watch?v=MzyXD8bNbvk",
|
||||
"https://www.youtube.com/watch?v=hyV4qGAPKac",
|
||||
"https://www.youtube.com/watch?v=pywNi6gD1FA",
|
||||
"https://www.youtube.com/watch?v=17FEtaiWdVg",
|
||||
"https://www.youtube.com/watch?v=fmrA-gxJxgQ",
|
||||
"https://www.youtube.com/watch?v=yOBWgSPrYVA",
|
||||
"https://www.youtube.com/watch?v=nCaqf9WhqOY",
|
||||
"https://www.youtube.com/watch?v=cQKGUgOfD8U",
|
||||
"https://www.youtube.com/watch?v=sK92X82T3Sk",
|
||||
"https://www.youtube.com/watch?v=AH5_sKwDw1E",
|
||||
"https://www.youtube.com/watch?v=dw-KJNqcK-Q",
|
||||
"https://www.youtube.com/watch?v=X47JmmqbMvc",
|
||||
"https://www.youtube.com/watch?v=ojQPpYVQt7U",
|
||||
"https://www.youtube.com/watch?v=N1-Z8uslIsI",
|
||||
"https://www.youtube.com/watch?v=EAgk-t2zzqw",
|
||||
"https://www.youtube.com/watch?v=uLBC2kWYFo8",
|
||||
"https://www.youtube.com/watch?v=OXHYIlkZLUU",
|
||||
"https://www.youtube.com/watch?v=ObIa9wXbyMQ",
|
||||
"https://www.youtube.com/watch?v=dGNoCICGmo0",
|
||||
"https://www.youtube.com/watch?v=LcoyEZkTKfY",
|
||||
"https://www.youtube.com/watch?v=mKHaW0qd5Mw",
|
||||
"https://www.youtube.com/watch?v=GG627DYk_E4",
|
||||
"https://www.youtube.com/watch?v=jTm6Q5Pj_Jo",
|
||||
"https://www.youtube.com/watch?v=TVeIDmk3rBo",
|
||||
"https://www.youtube.com/watch?v=1K3in6w9tt4",
|
||||
"https://www.youtube.com/watch?v=07r67gGbtLQ",
|
||||
"https://www.youtube.com/watch?v=243vPl8HdVk",
|
||||
"https://www.youtube.com/watch?v=zweVJrnE1uY",
|
||||
"https://www.youtube.com/watch?v=RKtoreimcQ8",
|
||||
"https://www.youtube.com/watch?v=Je6dCVfHvkU",
|
||||
"https://www.youtube.com/watch?v=UxFv12y_evM",
|
||||
"https://www.youtube.com/watch?v=2HegQtmJeto",
|
||||
"https://www.youtube.com/watch?v=8-Epnpruww0"
|
||||
]
|
||||
|
||||
+10
-10
@@ -1,12 +1,12 @@
|
||||
[
|
||||
"https://i.imgur.com/Nh2LjC2.jpg",
|
||||
"https://i.imgur.com/PC2ONfo.jpg",
|
||||
"https://i.imgur.com/RHJpMsq.jpg",
|
||||
"https://i.imgur.com/ufLAjPy.jpg",
|
||||
"https://i.imgur.com/q4FcJAh.jpg",
|
||||
"https://i.imgur.com/86wDaxo.png",
|
||||
"https://i.imgur.com/ZziLhLt.jpg",
|
||||
"https://i.imgur.com/wc5Zl0q.png",
|
||||
"https://i.imgur.com/eHpScR2.jpg",
|
||||
"https://i.imgur.com/Nj5N9Qp.png"
|
||||
"https://i.imgur.com/Nh2LjC2.jpg",
|
||||
"https://i.imgur.com/PC2ONfo.jpg",
|
||||
"https://i.imgur.com/RHJpMsq.jpg",
|
||||
"https://i.imgur.com/ufLAjPy.jpg",
|
||||
"https://i.imgur.com/q4FcJAh.jpg",
|
||||
"https://i.imgur.com/86wDaxo.png",
|
||||
"https://i.imgur.com/ZziLhLt.jpg",
|
||||
"https://i.imgur.com/wc5Zl0q.png",
|
||||
"https://i.imgur.com/eHpScR2.jpg",
|
||||
"https://i.imgur.com/Nj5N9Qp.png"
|
||||
]
|
||||
|
||||
@@ -4,46 +4,46 @@ const snekfetch = require('snekfetch');
|
||||
const path = require('path');
|
||||
|
||||
module.exports = class YearsCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: '3000-years',
|
||||
aliases: ['az', '3ky', '3k-years'],
|
||||
group: 'avatar-edit',
|
||||
memberName: '3000-years',
|
||||
description: 'Draws a user\'s avatar over Pokémon\'s "It\'s been 3000 years" meme.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: '3000-years',
|
||||
aliases: ['az', '3ky', '3k-years'],
|
||||
group: 'avatar-edit',
|
||||
memberName: '3000-years',
|
||||
description: 'Draws a user\'s avatar over Pokémon\'s "It\'s been 3000 years" meme.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(856, 569);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', '3000-years.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.drawImage(base, 0, 0);
|
||||
ctx.drawImage(avatar, 461, 127, 200, 200);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: '3000-years.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(856, 569);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', '3000-years.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.drawImage(base, 0, 0);
|
||||
ctx.drawImage(avatar, 461, 127, 200, 200);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: '3000-years.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -4,46 +4,46 @@ const snekfetch = require('snekfetch');
|
||||
const path = require('path');
|
||||
|
||||
module.exports = class ApprovedCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'approved',
|
||||
aliases: ['approve'],
|
||||
group: 'avatar-edit',
|
||||
memberName: 'approved',
|
||||
description: 'Draws an "approved" stamp over a user\'s avatar.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'approved',
|
||||
aliases: ['approve'],
|
||||
group: 'avatar-edit',
|
||||
memberName: 'approved',
|
||||
description: 'Draws an "approved" stamp over a user\'s avatar.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(256, 256);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'approved.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.drawImage(avatar, 0, 0, 256, 256);
|
||||
ctx.drawImage(base, 0, 0, 256, 256);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'approved.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(256, 256);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'approved.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.drawImage(avatar, 0, 0, 256, 256);
|
||||
ctx.drawImage(base, 0, 0, 256, 256);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'approved.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -4,47 +4,47 @@ const snekfetch = require('snekfetch');
|
||||
const path = require('path');
|
||||
|
||||
module.exports = class BeautifulCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'beautiful',
|
||||
aliases: ['grunkle-stan'],
|
||||
group: 'avatar-edit',
|
||||
memberName: 'beautiful',
|
||||
description: 'Draws a user\'s avatar over Gravity Falls\' "Oh, this? This is beautiful." meme.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'beautiful',
|
||||
aliases: ['grunkle-stan'],
|
||||
group: 'avatar-edit',
|
||||
memberName: 'beautiful',
|
||||
description: 'Draws a user\'s avatar over Gravity Falls\' "Oh, this? This is beautiful." meme.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(500, 532);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'beautiful.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.drawImage(base, 0, 0);
|
||||
ctx.drawImage(avatar, 341, 35, 117, 135);
|
||||
ctx.drawImage(avatar, 343, 301, 117, 135);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'beautiful.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(500, 532);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'beautiful.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.drawImage(base, 0, 0);
|
||||
ctx.drawImage(avatar, 341, 35, 117, 135);
|
||||
ctx.drawImage(avatar, 343, 301, 117, 135);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'beautiful.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -4,50 +4,50 @@ const snekfetch = require('snekfetch');
|
||||
const path = require('path');
|
||||
|
||||
module.exports = class BobRossCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'bob-ross',
|
||||
aliases: ['ross'],
|
||||
group: 'avatar-edit',
|
||||
memberName: 'bob-ross',
|
||||
description: 'Draws a user\'s avatar over Bob Ross\' canvas.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'bob-ross',
|
||||
aliases: ['ross'],
|
||||
group: 'avatar-edit',
|
||||
memberName: 'bob-ross',
|
||||
description: 'Draws a user\'s avatar over Bob Ross\' canvas.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(600, 775);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'bob-ross.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.fillStyle = 'white';
|
||||
ctx.fillRect(0, 0, 600, 775);
|
||||
ctx.rotate(3 * Math.PI / 180);
|
||||
ctx.drawImage(avatar, 69, 102, 256, 256);
|
||||
ctx.rotate(-3 * Math.PI / 180);
|
||||
ctx.drawImage(base, 0, 0);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'bob-ross.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(600, 775);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'bob-ross.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.fillStyle = 'white';
|
||||
ctx.fillRect(0, 0, 600, 775);
|
||||
ctx.rotate(3 * Math.PI / 180);
|
||||
ctx.drawImage(avatar, 69, 102, 256, 256);
|
||||
ctx.rotate(-3 * Math.PI / 180);
|
||||
ctx.drawImage(base, 0, 0);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'bob-ross.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -6,68 +6,68 @@ const path = require('path');
|
||||
const { version } = require('../../package');
|
||||
|
||||
module.exports = class CardCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'card',
|
||||
aliases: ['discord-card'],
|
||||
group: 'avatar-edit',
|
||||
memberName: 'card',
|
||||
description: 'Creates a trading card of random rarity based on a user\'s profile.',
|
||||
guildOnly: true,
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'member',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'member',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'card',
|
||||
aliases: ['discord-card'],
|
||||
group: 'avatar-edit',
|
||||
memberName: 'card',
|
||||
description: 'Creates a trading card of random rarity based on a user\'s profile.',
|
||||
guildOnly: true,
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'member',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'member',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const member = args.member || msg.member;
|
||||
const avatarURL = member.user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const cardID = Math.floor(Math.random() * (9999 - 1000 + 1)) + 1000;
|
||||
let rarity;
|
||||
if (cardID < 5000) rarity = 'C';
|
||||
else if (cardID < 8000) rarity = 'U';
|
||||
else rarity = 'R';
|
||||
parseFont(path.join(__dirname, '..', '..', 'assets', 'fonts', 'Roboto.ttf'), { family: 'Roboto' });
|
||||
const canvas = createCanvas(390, 544);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'card.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.fillStyle = 'white';
|
||||
ctx.fillRect(0, 0, 390, 544);
|
||||
ctx.drawImage(avatar, 11, 11, 370, 370);
|
||||
ctx.drawImage(base, 0, 0);
|
||||
ctx.font = '18px Roboto';
|
||||
ctx.fillStyle = 'black';
|
||||
ctx.fillText(member.displayName, 30, 62);
|
||||
ctx.fillText('Discord Join Date:', 148, 400);
|
||||
ctx.fillText(moment(member.user.createdTimestamp).format('MMMM Do YYYY'), 148, 420);
|
||||
ctx.fillText('Role:', 148, 457);
|
||||
ctx.fillText(member.highestRole.name, 148, 477);
|
||||
ctx.fillText(rarity, 73, 411);
|
||||
ctx.fillText(cardID, 60, 457);
|
||||
ctx.fillText(version.split('.')[0], 68, 502);
|
||||
ctx.font = '14px Roboto';
|
||||
ctx.fillText(member.id, 30, 355);
|
||||
ctx.fillText(`#${member.user.discriminator}`, 313, 355);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'card.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
async run(msg, args) {
|
||||
const member = args.member || msg.member;
|
||||
const avatarURL = member.user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const cardID = Math.floor(Math.random() * (9999 - 1000 + 1)) + 1000;
|
||||
let rarity;
|
||||
if (cardID < 5000) rarity = 'C';
|
||||
else if (cardID < 8000) rarity = 'U';
|
||||
else rarity = 'R';
|
||||
parseFont(path.join(__dirname, '..', '..', 'assets', 'fonts', 'Roboto.ttf'), { family: 'Roboto' });
|
||||
const canvas = createCanvas(390, 544);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'card.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.fillStyle = 'white';
|
||||
ctx.fillRect(0, 0, 390, 544);
|
||||
ctx.drawImage(avatar, 11, 11, 370, 370);
|
||||
ctx.drawImage(base, 0, 0);
|
||||
ctx.font = '18px Roboto';
|
||||
ctx.fillStyle = 'black';
|
||||
ctx.fillText(member.displayName, 30, 62);
|
||||
ctx.fillText('Discord Join Date:', 148, 400);
|
||||
ctx.fillText(moment(member.user.createdTimestamp).format('MMMM Do YYYY'), 148, 420);
|
||||
ctx.fillText('Role:', 148, 457);
|
||||
ctx.fillText(member.highestRole.name, 148, 477);
|
||||
ctx.fillText(rarity, 73, 411);
|
||||
ctx.fillText(cardID, 60, 457);
|
||||
ctx.fillText(version.split('.')[0], 68, 502);
|
||||
ctx.font = '14px Roboto';
|
||||
ctx.fillText(member.id, 30, 355);
|
||||
ctx.fillText(`#${member.user.discriminator}`, 313, 355);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'card.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -4,47 +4,47 @@ const snekfetch = require('snekfetch');
|
||||
const path = require('path');
|
||||
|
||||
module.exports = class ChallengerCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'challenger',
|
||||
group: 'avatar-edit',
|
||||
memberName: 'challenger',
|
||||
description: 'Draws a user\'s avatar over Super Smash Bros.\'s "Challenger Approaching" screen.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'challenger',
|
||||
group: 'avatar-edit',
|
||||
memberName: 'challenger',
|
||||
description: 'Draws a user\'s avatar over Super Smash Bros.\'s "Challenger Approaching" screen.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(500, 500);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'challenger.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.fillStyle = '#ff0028';
|
||||
ctx.fillRect(0, 0, 500, 500);
|
||||
ctx.drawImage(avatar, 226, 155, 200, 200);
|
||||
ctx.drawImage(base, 0, 0);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'challenger.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(500, 500);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'challenger.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.fillStyle = '#ff0028';
|
||||
ctx.fillRect(0, 0, 500, 500);
|
||||
ctx.drawImage(avatar, 226, 155, 200, 200);
|
||||
ctx.drawImage(base, 0, 0);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'challenger.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -4,47 +4,47 @@ const snekfetch = require('snekfetch');
|
||||
const path = require('path');
|
||||
|
||||
module.exports = class DexterCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'dexter',
|
||||
group: 'avatar-edit',
|
||||
memberName: 'dexter',
|
||||
description: 'Draws a user\'s avatar over Dexter from Pokémon\'s screen.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'dexter',
|
||||
group: 'avatar-edit',
|
||||
memberName: 'dexter',
|
||||
description: 'Draws a user\'s avatar over Dexter from Pokémon\'s screen.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(744, 554);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'dexter.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.drawImage(base, 0, 0);
|
||||
ctx.rotate(-11 * Math.PI / 180);
|
||||
ctx.drawImage(avatar, 234, 274, 225, 225);
|
||||
ctx.rotate(11 * Math.PI / 180);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'dexter.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(744, 554);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'dexter.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.drawImage(base, 0, 0);
|
||||
ctx.rotate(-11 * Math.PI / 180);
|
||||
ctx.drawImage(avatar, 234, 274, 225, 225);
|
||||
ctx.rotate(11 * Math.PI / 180);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'dexter.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -3,53 +3,53 @@ const { createCanvas, loadImage } = require('canvas');
|
||||
const snekfetch = require('snekfetch');
|
||||
|
||||
module.exports = class GreyscaleCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'greyscale',
|
||||
aliases: ['grayscale'],
|
||||
group: 'avatar-edit',
|
||||
memberName: 'greyscale',
|
||||
description: 'Draws a user\'s avatar in greyscale.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'greyscale',
|
||||
aliases: ['grayscale'],
|
||||
group: 'avatar-edit',
|
||||
memberName: 'greyscale',
|
||||
description: 'Draws a user\'s avatar in greyscale.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(256, 256);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.drawImage(avatar, 0, 0, 256, 256);
|
||||
const imgData = ctx.getImageData(0, 0, 256, 256);
|
||||
const { data } = imgData;
|
||||
for (let i = 0; i < data.length; i += 4) {
|
||||
const brightness = (0.34 * data[i]) + (0.5 * data[i + 1]) + (0.16 * data[i + 2]);
|
||||
data[i] = brightness;
|
||||
data[i + 1] = brightness;
|
||||
data[i + 2] = brightness;
|
||||
}
|
||||
ctx.putImageData(imgData, 0, 0);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'greyscale.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(256, 256);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.drawImage(avatar, 0, 0, 256, 256);
|
||||
const imgData = ctx.getImageData(0, 0, 256, 256);
|
||||
const { data } = imgData;
|
||||
for (let i = 0; i < data.length; i += 4) {
|
||||
const brightness = (0.34 * data[i]) + (0.5 * data[i + 1]) + (0.16 * data[i + 2]);
|
||||
data[i] = brightness;
|
||||
data[i + 1] = brightness;
|
||||
data[i + 2] = brightness;
|
||||
}
|
||||
ctx.putImageData(imgData, 0, 0);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'greyscale.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -3,51 +3,51 @@ const { createCanvas, loadImage } = require('canvas');
|
||||
const snekfetch = require('snekfetch');
|
||||
|
||||
module.exports = class InvertCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'invert',
|
||||
group: 'avatar-edit',
|
||||
memberName: 'invert',
|
||||
description: 'Draws a user\'s avatar inverted.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'invert',
|
||||
group: 'avatar-edit',
|
||||
memberName: 'invert',
|
||||
description: 'Draws a user\'s avatar inverted.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(256, 256);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.drawImage(avatar, 0, 0, 256, 256);
|
||||
const imgData = ctx.getImageData(0, 0, 256, 256);
|
||||
const { data } = imgData;
|
||||
for (let i = 0; i < data.length; i += 4) {
|
||||
data[i] = 255 - data[i];
|
||||
data[i + 1] = 255 - data[i + 1];
|
||||
data[i + 2] = 255 - data[i + 2];
|
||||
}
|
||||
ctx.putImageData(imgData, 0, 0);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'invert.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(256, 256);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.drawImage(avatar, 0, 0, 256, 256);
|
||||
const imgData = ctx.getImageData(0, 0, 256, 256);
|
||||
const { data } = imgData;
|
||||
for (let i = 0; i < data.length; i += 4) {
|
||||
data[i] = 255 - data[i];
|
||||
data[i + 1] = 255 - data[i + 1];
|
||||
data[i + 2] = 255 - data[i + 2];
|
||||
}
|
||||
ctx.putImageData(imgData, 0, 0);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'invert.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -4,46 +4,46 @@ const snekfetch = require('snekfetch');
|
||||
const path = require('path');
|
||||
|
||||
module.exports = class RejctedCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'rejected',
|
||||
aliases: ['reject'],
|
||||
group: 'avatar-edit',
|
||||
memberName: 'rejected',
|
||||
description: 'Draws a "rejected" stamp over a user\'s avatar.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'rejected',
|
||||
aliases: ['reject'],
|
||||
group: 'avatar-edit',
|
||||
memberName: 'rejected',
|
||||
description: 'Draws a "rejected" stamp over a user\'s avatar.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(256, 256);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'rejected.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.drawImage(avatar, 0, 0, 256, 256);
|
||||
ctx.drawImage(base, 0, 0, 256, 256);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'rejected.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(256, 256);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'rejected.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.drawImage(avatar, 0, 0, 256, 256);
|
||||
ctx.drawImage(base, 0, 0, 256, 256);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'rejected.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
+50
-50
@@ -4,55 +4,55 @@ const snekfetch = require('snekfetch');
|
||||
const path = require('path');
|
||||
|
||||
module.exports = class RIPCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'rip',
|
||||
aliases: ['grave', 'grave-stone'],
|
||||
group: 'avatar-edit',
|
||||
memberName: 'rip',
|
||||
description: 'Draws a user\'s avatar over a gravestone.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'rip',
|
||||
aliases: ['grave', 'grave-stone'],
|
||||
group: 'avatar-edit',
|
||||
memberName: 'rip',
|
||||
description: 'Draws a user\'s avatar over a gravestone.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(507, 338);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'rip.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.drawImage(base, 0, 0);
|
||||
ctx.drawImage(avatar, 158, 51, 200, 200);
|
||||
const imgData = ctx.getImageData(158, 51, 200, 200);
|
||||
const { data } = imgData;
|
||||
for (let i = 0; i < data.length; i += 4) {
|
||||
const brightness = (0.34 * data[i]) + (0.5 * data[i + 1]) + (0.16 * data[i + 2]);
|
||||
data[i] = brightness;
|
||||
data[i + 1] = brightness;
|
||||
data[i + 2] = brightness;
|
||||
}
|
||||
ctx.putImageData(imgData, 158, 51);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'rip.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(507, 338);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'rip.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.drawImage(base, 0, 0);
|
||||
ctx.drawImage(avatar, 158, 51, 200, 200);
|
||||
const imgData = ctx.getImageData(158, 51, 200, 200);
|
||||
const { data } = imgData;
|
||||
for (let i = 0; i < data.length; i += 4) {
|
||||
const brightness = (0.34 * data[i]) + (0.5 * data[i + 1]) + (0.16 * data[i + 2]);
|
||||
data[i] = brightness;
|
||||
data[i + 1] = brightness;
|
||||
data[i + 2] = brightness;
|
||||
}
|
||||
ctx.putImageData(imgData, 158, 51);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'rip.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -4,47 +4,47 @@ const snekfetch = require('snekfetch');
|
||||
const path = require('path');
|
||||
|
||||
module.exports = class SimbaCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'simba',
|
||||
group: 'avatar-edit',
|
||||
memberName: 'simba',
|
||||
description: 'Draws a user\'s avatar over Simba from The Lion King\'s reflection.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'simba',
|
||||
group: 'avatar-edit',
|
||||
memberName: 'simba',
|
||||
description: 'Draws a user\'s avatar over Simba from The Lion King\'s reflection.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(500, 281);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'simba.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.drawImage(base, 0, 0);
|
||||
ctx.rotate(-24 * Math.PI / 180);
|
||||
ctx.drawImage(avatar, 75, 160, 130, 150);
|
||||
ctx.rotate(24 * Math.PI / 180);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'simba.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(500, 281);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'simba.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.drawImage(base, 0, 0);
|
||||
ctx.rotate(-24 * Math.PI / 180);
|
||||
ctx.drawImage(avatar, 75, 160, 130, 150);
|
||||
ctx.rotate(24 * Math.PI / 180);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'simba.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -4,50 +4,50 @@ const snekfetch = require('snekfetch');
|
||||
const path = require('path');
|
||||
|
||||
module.exports = class SteamCardCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'steam-card',
|
||||
group: 'avatar-edit',
|
||||
memberName: 'steam-card',
|
||||
description: 'Draws a user\'s avatar over a Steam card.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'steam-card',
|
||||
group: 'avatar-edit',
|
||||
memberName: 'steam-card',
|
||||
description: 'Draws a user\'s avatar over a Steam card.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 512
|
||||
});
|
||||
try {
|
||||
parseFont(path.join(__dirname, '..', '..', 'assets', 'fonts', 'Roboto.ttf'), { family: 'Roboto' });
|
||||
const canvas = createCanvas(494, 568);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'steam-card.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.fillStyle = 'white';
|
||||
ctx.fillRect(0, 0, 494, 568);
|
||||
ctx.drawImage(avatar, 25, 25, 450, 450);
|
||||
ctx.drawImage(base, 0, 0);
|
||||
ctx.font = '30px Roboto';
|
||||
ctx.fillText(user.username, 35, 48);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'steam-card.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 512
|
||||
});
|
||||
try {
|
||||
parseFont(path.join(__dirname, '..', '..', 'assets', 'fonts', 'Roboto.ttf'), { family: 'Roboto' });
|
||||
const canvas = createCanvas(494, 568);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'steam-card.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.fillStyle = 'white';
|
||||
ctx.fillRect(0, 0, 494, 568);
|
||||
ctx.drawImage(avatar, 25, 25, 450, 450);
|
||||
ctx.drawImage(base, 0, 0);
|
||||
ctx.font = '30px Roboto';
|
||||
ctx.fillText(user.username, 35, 48);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'steam-card.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -4,54 +4,54 @@ const snekfetch = require('snekfetch');
|
||||
const path = require('path');
|
||||
|
||||
module.exports = class ThugLifeCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'thug-life',
|
||||
group: 'avatar-edit',
|
||||
memberName: 'thug-life',
|
||||
description: 'Draws "Thug Life" over a user\'s avatar.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'thug-life',
|
||||
group: 'avatar-edit',
|
||||
memberName: 'thug-life',
|
||||
description: 'Draws "Thug Life" over a user\'s avatar.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(256, 256);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'thug-life.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.drawImage(avatar, 0, 0, 256, 256);
|
||||
ctx.drawImage(base, 15, 175, 225, 75);
|
||||
const imgData = ctx.getImageData(0, 0, 256, 256);
|
||||
const { data } = imgData;
|
||||
for (let i = 0; i < data.length; i += 4) {
|
||||
const brightness = (0.34 * data[i]) + (0.5 * data[i + 1]) + (0.16 * data[i + 2]);
|
||||
data[i] = brightness;
|
||||
data[i + 1] = brightness;
|
||||
data[i + 2] = brightness;
|
||||
}
|
||||
ctx.putImageData(imgData, 0, 0);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'thug-life.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 256
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(256, 256);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'thug-life.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.drawImage(avatar, 0, 0, 256, 256);
|
||||
ctx.drawImage(base, 15, 175, 225, 75);
|
||||
const imgData = ctx.getImageData(0, 0, 256, 256);
|
||||
const { data } = imgData;
|
||||
for (let i = 0; i < data.length; i += 4) {
|
||||
const brightness = (0.34 * data[i]) + (0.5 * data[i + 1]) + (0.16 * data[i + 2]);
|
||||
data[i] = brightness;
|
||||
data[i + 1] = brightness;
|
||||
data[i + 2] = brightness;
|
||||
}
|
||||
ctx.putImageData(imgData, 0, 0);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'thug-life.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -4,51 +4,51 @@ const snekfetch = require('snekfetch');
|
||||
const path = require('path');
|
||||
|
||||
module.exports = class TriggeredCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'triggered',
|
||||
group: 'avatar-edit',
|
||||
memberName: 'triggered',
|
||||
description: 'Draws a user\'s avatar over a Triggered meme.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'triggered',
|
||||
group: 'avatar-edit',
|
||||
memberName: 'triggered',
|
||||
description: 'Draws a user\'s avatar over a Triggered meme.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 512
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(320, 371);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'triggered.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.fillStyle = 'white';
|
||||
ctx.fillRect(0, 0, 320, 371);
|
||||
ctx.drawImage(avatar, 0, 0, 320, 320);
|
||||
const imgData = ctx.getImageData(0, 0, 320, 320);
|
||||
const { data } = imgData;
|
||||
for (let i = 0; i < data.length; i += 4) data[i] = Math.max(255, data[i]);
|
||||
ctx.putImageData(imgData, 0, 0);
|
||||
ctx.drawImage(base, 0, 0);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'triggered.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 512
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(320, 371);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'triggered.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.fillStyle = 'white';
|
||||
ctx.fillRect(0, 0, 320, 371);
|
||||
ctx.drawImage(avatar, 0, 0, 320, 320);
|
||||
const imgData = ctx.getImageData(0, 0, 320, 320);
|
||||
const { data } = imgData;
|
||||
for (let i = 0; i < data.length; i += 4) data[i] = Math.max(255, data[i]);
|
||||
ctx.putImageData(imgData, 0, 0);
|
||||
ctx.drawImage(base, 0, 0);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'triggered.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -4,45 +4,45 @@ const snekfetch = require('snekfetch');
|
||||
const path = require('path');
|
||||
|
||||
module.exports = class WantedCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'wanted',
|
||||
group: 'avatar-edit',
|
||||
memberName: 'wanted',
|
||||
description: 'Draws a user\'s avatar over a wanted poster.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'wanted',
|
||||
group: 'avatar-edit',
|
||||
memberName: 'wanted',
|
||||
description: 'Draws a user\'s avatar over a wanted poster.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 30
|
||||
},
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'Which user would you like to edit the avatar of?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 512
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(741, 1000);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'wanted.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.drawImage(base, 0, 0);
|
||||
ctx.drawImage(avatar, 150, 360, 430, 430);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'wanted.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
async run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
format: 'png',
|
||||
size: 512
|
||||
});
|
||||
try {
|
||||
const canvas = createCanvas(741, 1000);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'wanted.png'));
|
||||
const { body } = await snekfetch.get(avatarURL);
|
||||
const avatar = await loadImage(body);
|
||||
ctx.drawImage(base, 0, 0);
|
||||
ctx.drawImage(avatar, 150, 360, 430, 430);
|
||||
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'wanted.png' }] });
|
||||
} catch (err) {
|
||||
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
+117
-117
@@ -2,123 +2,123 @@ const Command = require('../../structures/Command');
|
||||
const { stripIndents } = require('common-tags');
|
||||
|
||||
module.exports = class BattleCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'battle',
|
||||
aliases: ['fight', 'death-battle'],
|
||||
group: 'games',
|
||||
memberName: 'battle',
|
||||
description: 'Engage in a turn-based battle against another user or the AI.',
|
||||
guildOnly: true,
|
||||
args: [
|
||||
{
|
||||
key: 'opponent',
|
||||
prompt: 'Who would you like to battle?',
|
||||
type: 'user',
|
||||
default: 'AI'
|
||||
}
|
||||
]
|
||||
});
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'battle',
|
||||
aliases: ['fight', 'death-battle'],
|
||||
group: 'games',
|
||||
memberName: 'battle',
|
||||
description: 'Engage in a turn-based battle against another user or the AI.',
|
||||
guildOnly: true,
|
||||
args: [
|
||||
{
|
||||
key: 'opponent',
|
||||
prompt: 'Who would you like to battle?',
|
||||
type: 'user',
|
||||
default: 'AI'
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
this.fighting = new Set();
|
||||
}
|
||||
this.fighting = new Set();
|
||||
}
|
||||
|
||||
async run(msg, args) { // eslint-disable-line complexity
|
||||
const { opponent } = args;
|
||||
if (opponent.bot) return msg.say('Bots may not be fought.');
|
||||
if (opponent.id === msg.author.id) return msg.say('You may not fight yourself.');
|
||||
if (this.fighting.has(msg.guild.id)) return msg.say('Only one fight may be occurring per server.');
|
||||
this.fighting.add(msg.guild.id);
|
||||
try {
|
||||
if (opponent !== 'AI') {
|
||||
await msg.say(`${opponent}, do you accept this challenge? **__Y__es** or **No**?`);
|
||||
const verify = await msg.channel.awaitMessages((res) => res.author.id === opponent.id, {
|
||||
max: 1,
|
||||
time: 30000
|
||||
});
|
||||
if (!verify.size || !['yes', 'y'].includes(verify.first().content.toLowerCase())) {
|
||||
this.fighting.delete(msg.guild.id);
|
||||
return msg.say('Looks like they declined...');
|
||||
}
|
||||
}
|
||||
let userHP = 500;
|
||||
let oppoHP = 500;
|
||||
let userTurn = false;
|
||||
let guard = false;
|
||||
const reset = (changeGuard = true) => {
|
||||
if (userTurn) userTurn = false;
|
||||
else userTurn = true;
|
||||
if (changeGuard && guard) guard = false;
|
||||
};
|
||||
const dealDamage = (damage) => {
|
||||
if (userTurn) oppoHP -= damage;
|
||||
else userHP -= damage;
|
||||
};
|
||||
const forfeit = () => {
|
||||
if (userTurn) userHP = 0;
|
||||
else oppoHP = 0;
|
||||
};
|
||||
while (userHP > 0 && oppoHP > 0) { // eslint-disable-line no-unmodified-loop-condition
|
||||
const user = userTurn ? msg.author : opponent;
|
||||
let choice;
|
||||
if (opponent !== 'AI' || (opponent === 'AI' && userTurn)) {
|
||||
const id = userTurn ? msg.author.id : opponent.id;
|
||||
await msg.say(stripIndents`
|
||||
${user}, do you **fight**, **guard**, **special**, or **run**?
|
||||
**${msg.author.username}**: ${userHP}HP
|
||||
**${opponent === 'AI' ? 'AI' : opponent.username}**: ${oppoHP}HP
|
||||
`);
|
||||
const turn = await msg.channel.awaitMessages((res) => res.author.id === id, {
|
||||
max: 1,
|
||||
time: 30000
|
||||
});
|
||||
if (!turn.size) {
|
||||
await msg.say('Time!');
|
||||
forfeit();
|
||||
break;
|
||||
}
|
||||
choice = turn.first().content.toLowerCase();
|
||||
} else {
|
||||
const choices = ['fight', 'guard', 'special'];
|
||||
choice = choices[Math.floor(Math.random() * choices.length)];
|
||||
}
|
||||
if (choice === 'fight') {
|
||||
const damage = Math.floor(Math.random() * (guard ? 10 : 100)) + 1;
|
||||
await msg.say(`${user} deals **${damage}** damage!`);
|
||||
dealDamage(damage);
|
||||
reset();
|
||||
} else if (choice === 'guard') {
|
||||
await msg.say(`${user} guards!`);
|
||||
guard = true;
|
||||
reset(false);
|
||||
} else if (choice === 'special') {
|
||||
const hit = Math.floor(Math.random() * 4) + 1;
|
||||
if (hit === 1) {
|
||||
const damage = Math.floor(Math.random() * ((guard ? 300 : 150) - 100 + 1) + 100);
|
||||
await msg.say(`${user} deals **${damage}** damage!`);
|
||||
dealDamage(damage);
|
||||
reset();
|
||||
} else {
|
||||
await msg.say(`${user}'s attack missed!`);
|
||||
reset();
|
||||
}
|
||||
} else if (choice === 'run') {
|
||||
await msg.say(`${user} flees!`);
|
||||
forfeit();
|
||||
break;
|
||||
} else {
|
||||
await msg.say(`${user}, I do not understand what you want to do.`);
|
||||
}
|
||||
}
|
||||
this.fighting.delete(msg.guild.id);
|
||||
return msg.say(stripIndents`
|
||||
The match is over!
|
||||
**Winner:** ${userHP > oppoHP ? `${msg.author} (${userHP}HP)` : `${opponent} (${oppoHP}HP)`}
|
||||
**Loser:** ${userHP > oppoHP ? `${opponent} (${oppoHP}HP)` : `${msg.author} (${userHP}HP)`}
|
||||
`);
|
||||
} catch (err) {
|
||||
this.fighting.delete(msg.guild.id);
|
||||
return msg.say(`Oh no, an Error occurred: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
async run(msg, args) { // eslint-disable-line complexity
|
||||
const { opponent } = args;
|
||||
if (opponent.bot) return msg.say('Bots may not be fought.');
|
||||
if (opponent.id === msg.author.id) return msg.say('You may not fight yourself.');
|
||||
if (this.fighting.has(msg.guild.id)) return msg.say('Only one fight may be occurring per server.');
|
||||
this.fighting.add(msg.guild.id);
|
||||
try {
|
||||
if (opponent !== 'AI') {
|
||||
await msg.say(`${opponent}, do you accept this challenge? **__Y__es** or **No**?`);
|
||||
const verify = await msg.channel.awaitMessages(res => res.author.id === opponent.id, {
|
||||
max: 1,
|
||||
time: 30000
|
||||
});
|
||||
if (!verify.size || !['yes', 'y'].includes(verify.first().content.toLowerCase())) {
|
||||
this.fighting.delete(msg.guild.id);
|
||||
return msg.say('Looks like they declined...');
|
||||
}
|
||||
}
|
||||
let userHP = 500;
|
||||
let oppoHP = 500;
|
||||
let userTurn = false;
|
||||
let guard = false;
|
||||
const reset = (changeGuard = true) => {
|
||||
if (userTurn) userTurn = false;
|
||||
else userTurn = true;
|
||||
if (changeGuard && guard) guard = false;
|
||||
};
|
||||
const dealDamage = damage => {
|
||||
if (userTurn) oppoHP -= damage;
|
||||
else userHP -= damage;
|
||||
};
|
||||
const forfeit = () => {
|
||||
if (userTurn) userHP = 0;
|
||||
else oppoHP = 0;
|
||||
};
|
||||
while (userHP > 0 && oppoHP > 0) { // eslint-disable-line no-unmodified-loop-condition
|
||||
const user = userTurn ? msg.author : opponent;
|
||||
let choice;
|
||||
if (opponent !== 'AI' || (opponent === 'AI' && userTurn)) {
|
||||
const id = userTurn ? msg.author.id : opponent.id;
|
||||
await msg.say(stripIndents`
|
||||
${user}, do you **fight**, **guard**, **special**, or **run**?
|
||||
**${msg.author.username}**: ${userHP}HP
|
||||
**${opponent === 'AI' ? 'AI' : opponent.username}**: ${oppoHP}HP
|
||||
`);
|
||||
const turn = await msg.channel.awaitMessages(res => res.author.id === id, {
|
||||
max: 1,
|
||||
time: 30000
|
||||
});
|
||||
if (!turn.size) {
|
||||
await msg.say('Time!');
|
||||
forfeit();
|
||||
break;
|
||||
}
|
||||
choice = turn.first().content.toLowerCase();
|
||||
} else {
|
||||
const choices = ['fight', 'guard', 'special'];
|
||||
choice = choices[Math.floor(Math.random() * choices.length)];
|
||||
}
|
||||
if (choice === 'fight') {
|
||||
const damage = Math.floor(Math.random() * (guard ? 10 : 100)) + 1;
|
||||
await msg.say(`${user} deals **${damage}** damage!`);
|
||||
dealDamage(damage);
|
||||
reset();
|
||||
} else if (choice === 'guard') {
|
||||
await msg.say(`${user} guards!`);
|
||||
guard = true;
|
||||
reset(false);
|
||||
} else if (choice === 'special') {
|
||||
const hit = Math.floor(Math.random() * 4) + 1;
|
||||
if (hit === 1) {
|
||||
const damage = Math.floor((Math.random() * ((guard ? 300 : 150) - (100 + 1))) + 100);
|
||||
await msg.say(`${user} deals **${damage}** damage!`);
|
||||
dealDamage(damage);
|
||||
reset();
|
||||
} else {
|
||||
await msg.say(`${user}'s attack missed!`);
|
||||
reset();
|
||||
}
|
||||
} else if (choice === 'run') {
|
||||
await msg.say(`${user} flees!`);
|
||||
forfeit();
|
||||
break;
|
||||
} else {
|
||||
await msg.say(`${user}, I do not understand what you want to do.`);
|
||||
}
|
||||
}
|
||||
this.fighting.delete(msg.guild.id);
|
||||
return msg.say(stripIndents`
|
||||
The match is over!
|
||||
**Winner:** ${userHP > oppoHP ? `${msg.author} (${userHP}HP)` : `${opponent} (${oppoHP}HP)`}
|
||||
**Loser:** ${userHP > oppoHP ? `${opponent} (${oppoHP}HP)` : `${msg.author} (${userHP}HP)`}
|
||||
`);
|
||||
} catch (err) {
|
||||
this.fighting.delete(msg.guild.id);
|
||||
return msg.say(`Oh no, an Error occurred: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
+12
-12
@@ -2,17 +2,17 @@ const Command = require('../../structures/Command');
|
||||
const fishes = [':fish:', ':tropical_fish:', ':blowfish:', ':wrench:'];
|
||||
|
||||
module.exports = class FishyCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'fishy',
|
||||
group: 'games',
|
||||
memberName: 'fishy',
|
||||
description: 'Catches a fish.'
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'fishy',
|
||||
group: 'games',
|
||||
memberName: 'fishy',
|
||||
description: 'Catches a fish.'
|
||||
});
|
||||
}
|
||||
|
||||
run(msg) {
|
||||
const fish = fishes[Math.floor(Math.random() * fishes.length)];
|
||||
return msg.say(`You caught a: ${fish}`);
|
||||
}
|
||||
run(msg) {
|
||||
const fish = fishes[Math.floor(Math.random() * fishes.length)];
|
||||
return msg.say(`You caught a: ${fish}`);
|
||||
}
|
||||
};
|
||||
|
||||
+54
-54
@@ -2,60 +2,60 @@ const Command = require('../../structures/Command');
|
||||
const words = ['fire', 'draw', 'shoot', 'bang', 'pull'];
|
||||
|
||||
module.exports = class GunfightCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'gunfight',
|
||||
aliases: ['western-gunfight'],
|
||||
group: 'games',
|
||||
memberName: 'gunfight',
|
||||
description: 'Engage in a western gunfight against another user.',
|
||||
guildOnly: true,
|
||||
args: [
|
||||
{
|
||||
key: 'opponent',
|
||||
prompt: 'Who would you like to gunfight?',
|
||||
type: 'user'
|
||||
}
|
||||
]
|
||||
});
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'gunfight',
|
||||
aliases: ['western-gunfight'],
|
||||
group: 'games',
|
||||
memberName: 'gunfight',
|
||||
description: 'Engage in a western gunfight against another user.',
|
||||
guildOnly: true,
|
||||
args: [
|
||||
{
|
||||
key: 'opponent',
|
||||
prompt: 'Who would you like to gunfight?',
|
||||
type: 'user'
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
this.fighting = new Set();
|
||||
}
|
||||
this.fighting = new Set();
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const { opponent } = args;
|
||||
if (opponent.bot) return msg.say('Bots may not be fought.');
|
||||
if (opponent.id === msg.author.id) return msg.say('You may not fight yourself.');
|
||||
if (this.fighting.has(msg.guild.id)) return msg.say('Only one fight may be occurring per server.');
|
||||
this.fighting.add(msg.guild.id);
|
||||
try {
|
||||
await msg.say(`${opponent}, do you accept this challenge? **__Y__es** or **No**?`);
|
||||
const verify = await msg.channel.awaitMessages((res) => res.author.id === opponent.id, {
|
||||
max: 1,
|
||||
time: 30000
|
||||
});
|
||||
if (!verify.size || !['yes', 'y'].includes(verify.first().content.toLowerCase())) {
|
||||
this.fighting.delete(msg.guild.id);
|
||||
return msg.say('Looks like they declined...');
|
||||
}
|
||||
await msg.say('Get Ready...');
|
||||
const length = Math.floor(Math.random() * (30000 - 1000 + 1) + 1000);
|
||||
this.client.setTimeout(async () => {
|
||||
const word = words[Math.floor(Math.random() * words.length)];
|
||||
await msg.say(`TYPE \`${word.toUpperCase()}\` NOW!`);
|
||||
const filter = (res) => [opponent.id, msg.author.id].includes(res.author.id) && res.content.toLowerCase() === word; // eslint-disable-line max-len
|
||||
const winner = await msg.channel.awaitMessages(filter, {
|
||||
max: 1,
|
||||
time: 30000
|
||||
});
|
||||
this.fighting.delete(msg.guild.id);
|
||||
if (!winner.size) return msg.say('Oh... No one won.');
|
||||
else return msg.say(`And the winner is ${winner.first().author.username}!`);
|
||||
}, length);
|
||||
return null;
|
||||
} catch (err) {
|
||||
this.fighting.delete(msg.guild.id);
|
||||
return msg.say(`Oh no, an Error occurred: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
async run(msg, args) {
|
||||
const { opponent } = args;
|
||||
if (opponent.bot) return msg.say('Bots may not be fought.');
|
||||
if (opponent.id === msg.author.id) return msg.say('You may not fight yourself.');
|
||||
if (this.fighting.has(msg.guild.id)) return msg.say('Only one fight may be occurring per server.');
|
||||
this.fighting.add(msg.guild.id);
|
||||
try {
|
||||
await msg.say(`${opponent}, do you accept this challenge? **__Y__es** or **No**?`);
|
||||
const verify = await msg.channel.awaitMessages(res => res.author.id === opponent.id, {
|
||||
max: 1,
|
||||
time: 30000
|
||||
});
|
||||
if (!verify.size || !['yes', 'y'].includes(verify.first().content.toLowerCase())) {
|
||||
this.fighting.delete(msg.guild.id);
|
||||
return msg.say('Looks like they declined...');
|
||||
}
|
||||
await msg.say('Get Ready...');
|
||||
const length = Math.floor((Math.random() * ((30000 - 1000) + 1)) + 1000);
|
||||
this.client.setTimeout(async () => {
|
||||
const word = words[Math.floor(Math.random() * words.length)];
|
||||
await msg.say(`TYPE \`${word.toUpperCase()}\` NOW!`);
|
||||
const filter = res => [opponent.id, msg.author.id].includes(res.author.id) && res.content.toLowerCase() === word; // eslint-disable-line max-len
|
||||
const winner = await msg.channel.awaitMessages(filter, {
|
||||
max: 1,
|
||||
time: 30000
|
||||
});
|
||||
this.fighting.delete(msg.guild.id);
|
||||
if (!winner.size) return msg.say('Oh... No one won.');
|
||||
return msg.say(`And the winner is ${winner.first().author.username}!`);
|
||||
}, length);
|
||||
return null;
|
||||
} catch (err) {
|
||||
this.fighting.delete(msg.guild.id);
|
||||
return msg.say(`Oh no, an Error occurred: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
+74
-74
@@ -4,80 +4,80 @@ const { stripIndents } = require('common-tags');
|
||||
const { wordnikKey } = require('../../config');
|
||||
|
||||
module.exports = class HangmanCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'hangman',
|
||||
group: 'games',
|
||||
memberName: 'hangman',
|
||||
description: 'Play a game of hangman.',
|
||||
guildOnly: true
|
||||
});
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'hangman',
|
||||
group: 'games',
|
||||
memberName: 'hangman',
|
||||
description: 'Play a game of hangman.',
|
||||
guildOnly: true
|
||||
});
|
||||
|
||||
this.playing = new Set();
|
||||
}
|
||||
this.playing = new Set();
|
||||
}
|
||||
|
||||
async run(msg) {
|
||||
if (this.playing.has(msg.guild.id)) return msg.say('Only one game may be occurring per server.');
|
||||
this.playing.add(msg.guild.id);
|
||||
try {
|
||||
const { body } = await snekfetch
|
||||
.get('http://api.wordnik.com:80/v4/words.json/randomWord')
|
||||
.query({
|
||||
hasDictionaryDef: true,
|
||||
minCorpusCount: 0,
|
||||
maxCorpusCount: -1,
|
||||
minDictionaryCount: 1,
|
||||
maxDictionaryCount: -1,
|
||||
minLength: -1,
|
||||
maxLength: -1,
|
||||
api_key: wordnikKey
|
||||
});
|
||||
const word = body.word.toLowerCase().replace(/[ ]/g, '-');
|
||||
let points = 0;
|
||||
const confirmation = [];
|
||||
const incorrect = [];
|
||||
const display = '_'.repeat(word.length).split('');
|
||||
while (word.length !== confirmation.length && points < 7) {
|
||||
await msg.code(null, stripIndents`
|
||||
___________
|
||||
| |
|
||||
| ${points > 0 ? 'O' : ''}
|
||||
| ${points > 2 ? '—' : ' '}${points > 1 ? '|' : ''}${points > 3 ? '—' : ''}
|
||||
| ${points > 4 ? '/' : ''} ${points > 5 ? '\\' : ''}
|
||||
===========
|
||||
The word is: ${display.join(' ')}. Which letter do you choose?
|
||||
`);
|
||||
const guess = await msg.channel.awaitMessages((res) => res.author.id === msg.author.id, {
|
||||
max: 1,
|
||||
time: 30000
|
||||
});
|
||||
if (!guess.size) {
|
||||
await msg.say('Time!');
|
||||
break;
|
||||
}
|
||||
const choice = guess.first().content.toLowerCase();
|
||||
if (confirmation.includes(choice) || incorrect.includes(choice)) {
|
||||
await msg.say('You have already picked that letter!');
|
||||
} else if (word.includes(choice)) {
|
||||
await msg.say('Nice job!');
|
||||
for (let i = 0; i < word.length; i++) {
|
||||
if (word[i] === choice) {
|
||||
confirmation.push(word[i]);
|
||||
display[i] = word[i];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
await msg.say('Nope!');
|
||||
incorrect.push(choice);
|
||||
points++;
|
||||
}
|
||||
}
|
||||
this.playing.delete(msg.guild.id);
|
||||
if (word.length === confirmation.length) return msg.say(`You won, it was ${word}!`);
|
||||
else return msg.say(`Too bad... It was ${word}...`);
|
||||
} catch (err) {
|
||||
this.playing.delete(msg.guild.id);
|
||||
return msg.say(`Oh no, an Error occurred: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
async run(msg) {
|
||||
if (this.playing.has(msg.guild.id)) return msg.say('Only one game may be occurring per server.');
|
||||
this.playing.add(msg.guild.id);
|
||||
try {
|
||||
const { body } = await snekfetch
|
||||
.get('http://api.wordnik.com:80/v4/words.json/randomWord')
|
||||
.query({
|
||||
hasDictionaryDef: true,
|
||||
minCorpusCount: 0,
|
||||
maxCorpusCount: -1,
|
||||
minDictionaryCount: 1,
|
||||
maxDictionaryCount: -1,
|
||||
minLength: -1,
|
||||
maxLength: -1,
|
||||
api_key: wordnikKey
|
||||
});
|
||||
const word = body.word.toLowerCase().replace(/[ ]/g, '-');
|
||||
let points = 0;
|
||||
const confirmation = [];
|
||||
const incorrect = [];
|
||||
const display = '_'.repeat(word.length).split('');
|
||||
while (word.length !== confirmation.length && points < 7) {
|
||||
await msg.code(null, stripIndents`
|
||||
___________
|
||||
| |
|
||||
| ${points > 0 ? 'O' : ''}
|
||||
| ${points > 2 ? '—' : ' '}${points > 1 ? '|' : ''}${points > 3 ? '—' : ''}
|
||||
| ${points > 4 ? '/' : ''} ${points > 5 ? '\\' : ''}
|
||||
===========
|
||||
The word is: ${display.join(' ')}. Which letter do you choose?
|
||||
`);
|
||||
const guess = await msg.channel.awaitMessages(res => res.author.id === msg.author.id, {
|
||||
max: 1,
|
||||
time: 30000
|
||||
});
|
||||
if (!guess.size) {
|
||||
await msg.say('Time!');
|
||||
break;
|
||||
}
|
||||
const choice = guess.first().content.toLowerCase();
|
||||
if (confirmation.includes(choice) || incorrect.includes(choice)) {
|
||||
await msg.say('You have already picked that letter!');
|
||||
} else if (word.includes(choice)) {
|
||||
await msg.say('Nice job!');
|
||||
for (let i = 0; i < word.length; i++) {
|
||||
if (word[i] === choice) { // eslint-disable-line max-depth
|
||||
confirmation.push(word[i]);
|
||||
display[i] = word[i];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
await msg.say('Nope!');
|
||||
incorrect.push(choice);
|
||||
points++;
|
||||
}
|
||||
}
|
||||
this.playing.delete(msg.guild.id);
|
||||
if (word.length === confirmation.length) return msg.say(`You won, it was ${word}!`);
|
||||
return msg.say(`Too bad... It was ${word}...`);
|
||||
} catch (err) {
|
||||
this.playing.delete(msg.guild.id);
|
||||
return msg.say(`Oh no, an Error occurred: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
+13
-13
@@ -1,18 +1,18 @@
|
||||
const Command = require('../../structures/Command');
|
||||
|
||||
module.exports = class LotteryCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'lottery',
|
||||
group: 'games',
|
||||
memberName: 'lottery',
|
||||
description: 'Attempt to win the lottery, with a 1 in 100 chance of winning.'
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'lottery',
|
||||
group: 'games',
|
||||
memberName: 'lottery',
|
||||
description: 'Attempt to win the lottery, with a 1 in 100 chance of winning.'
|
||||
});
|
||||
}
|
||||
|
||||
run(msg) {
|
||||
const lottery = Math.floor(Math.random() * 100) + 1;
|
||||
if (lottery === 1) return msg.reply(`Wow! You actually won! Great job!`);
|
||||
else return msg.reply(`Nope, sorry, you lost.`);
|
||||
}
|
||||
run(msg) {
|
||||
const lottery = Math.floor(Math.random() * 100) + 1;
|
||||
if (lottery === 1) return msg.reply(`Wow! You actually won! Great job!`);
|
||||
return msg.reply(`Nope, sorry, you lost.`);
|
||||
}
|
||||
};
|
||||
|
||||
+40
-40
@@ -4,45 +4,45 @@ const math = require('mathjs');
|
||||
const { operations, difficulties, maxValues } = require('../../assets/json/math-game');
|
||||
|
||||
module.exports = class MathGameCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'math-game',
|
||||
group: 'games',
|
||||
memberName: 'math-game',
|
||||
description: 'See how fast you can answer a math problem in a given time limit.',
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
{
|
||||
key: 'difficulty',
|
||||
prompt: `What should the difficulty of the game be? One of: ${difficulties.join(', ')}`,
|
||||
type: 'string',
|
||||
validate: (difficulty) => {
|
||||
if (difficulties.includes(difficulty.toLowerCase())) return true;
|
||||
else return `The difficulty must be one of: ${difficulties.join(', ')}`;
|
||||
},
|
||||
parse: (difficulty) => difficulty.toLowerCase()
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'math-game',
|
||||
group: 'games',
|
||||
memberName: 'math-game',
|
||||
description: 'See how fast you can answer a math problem in a given time limit.',
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
{
|
||||
key: 'difficulty',
|
||||
prompt: `What should the difficulty of the game be? One of: ${difficulties.join(', ')}`,
|
||||
type: 'string',
|
||||
validate: difficulty => {
|
||||
if (difficulties.includes(difficulty.toLowerCase())) return true;
|
||||
return `The difficulty must be one of: ${difficulties.join(', ')}`;
|
||||
},
|
||||
parse: difficulty => difficulty.toLowerCase()
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const { difficulty } = args;
|
||||
const operation = operations[Math.floor(Math.random() * operations.length)];
|
||||
const value1 = Math.floor(Math.random() * maxValues[difficulty]) + 1;
|
||||
const value2 = Math.floor(Math.random() * maxValues[difficulty]) + 1;
|
||||
const expression = `${value1} ${operation} ${value2}`;
|
||||
const answer = math.eval(expression).toString();
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle('You have 10 seconds to answer:')
|
||||
.setDescription(expression);
|
||||
await msg.embed(embed);
|
||||
const msgs = await msg.channel.awaitMessages((res) => res.author.id === msg.author.id, {
|
||||
max: 1,
|
||||
time: 10000
|
||||
});
|
||||
if (!msgs.size) return msg.say(`Time! It was ${answer}, sorry!`);
|
||||
if (msgs.first().content !== answer) return msg.say(`Nope, sorry, it's ${answer}.`);
|
||||
else return msg.say('Nice job! 10/10! You deserve some cake!');
|
||||
}
|
||||
async run(msg, args) {
|
||||
const { difficulty } = args;
|
||||
const operation = operations[Math.floor(Math.random() * operations.length)];
|
||||
const value1 = Math.floor(Math.random() * maxValues[difficulty]) + 1;
|
||||
const value2 = Math.floor(Math.random() * maxValues[difficulty]) + 1;
|
||||
const expression = `${value1} ${operation} ${value2}`;
|
||||
const answer = math.eval(expression).toString();
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle('You have 10 seconds to answer:')
|
||||
.setDescription(expression);
|
||||
await msg.embed(embed);
|
||||
const msgs = await msg.channel.awaitMessages(res => res.author.id === msg.author.id, {
|
||||
max: 1,
|
||||
time: 10000
|
||||
});
|
||||
if (!msgs.size) return msg.say(`Time! It was ${answer}, sorry!`);
|
||||
if (msgs.first().content !== answer) return msg.say(`Nope, sorry, it's ${answer}.`);
|
||||
return msg.say('Nice job! 10/10! You deserve some cake!');
|
||||
}
|
||||
};
|
||||
|
||||
+34
-34
@@ -4,39 +4,39 @@ const { stripIndents } = require('common-tags');
|
||||
const snekfetch = require('snekfetch');
|
||||
|
||||
module.exports = class QuizCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'quiz',
|
||||
aliases: ['jeopardy'],
|
||||
group: 'games',
|
||||
memberName: 'quiz',
|
||||
description: 'Answer a true/false quiz question.',
|
||||
clientPermissions: ['EMBED_LINKS']
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'quiz',
|
||||
aliases: ['jeopardy'],
|
||||
group: 'games',
|
||||
memberName: 'quiz',
|
||||
description: 'Answer a true/false quiz question.',
|
||||
clientPermissions: ['EMBED_LINKS']
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg) {
|
||||
const { body } = await snekfetch
|
||||
.get('https://opentdb.com/api.php')
|
||||
.query({
|
||||
amount: 1,
|
||||
type: 'boolean',
|
||||
encode: 'url3986'
|
||||
});
|
||||
const answer = body.results[0].correct_answer.toLowerCase();
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle('You have 15 seconds to answer this question:')
|
||||
.setDescription(stripIndents`
|
||||
**${decodeURIComponent(body.results[0].category)}**
|
||||
True or False: ${decodeURIComponent(body.results[0].question)}
|
||||
`);
|
||||
await msg.embed(embed);
|
||||
const msgs = await msg.channel.awaitMessages((res) => res.author.id === msg.author.id, {
|
||||
max: 1,
|
||||
time: 15000
|
||||
});
|
||||
if (!msgs.size) return msg.say(`Time! It was ${answer}, sorry!`);
|
||||
if (msgs.first().content.toLowerCase() !== answer) return msg.say(`Nope, sorry, it's ${answer}.`);
|
||||
else return msg.say('Nice job! 10/10! You deserve some cake!');
|
||||
}
|
||||
async run(msg) {
|
||||
const { body } = await snekfetch
|
||||
.get('https://opentdb.com/api.php')
|
||||
.query({
|
||||
amount: 1,
|
||||
type: 'boolean',
|
||||
encode: 'url3986'
|
||||
});
|
||||
const answer = body.results[0].correct_answer.toLowerCase();
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle('You have 15 seconds to answer this question:')
|
||||
.setDescription(stripIndents`
|
||||
**${decodeURIComponent(body.results[0].category)}**
|
||||
True or False: ${decodeURIComponent(body.results[0].question)}
|
||||
`);
|
||||
await msg.embed(embed);
|
||||
const msgs = await msg.channel.awaitMessages(res => res.author.id === msg.author.id, {
|
||||
max: 1,
|
||||
time: 15000
|
||||
});
|
||||
if (!msgs.size) return msg.say(`Time! It was ${answer}, sorry!`);
|
||||
if (msgs.first().content.toLowerCase() !== answer) return msg.say(`Nope, sorry, it's ${answer}.`);
|
||||
return msg.say('Nice job! 10/10! You deserve some cake!');
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2,41 +2,41 @@ const Command = require('../../structures/Command');
|
||||
const choices = ['paper', 'rock', 'scissors'];
|
||||
|
||||
module.exports = class RockPaperScissorsCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'rock-paper-scissors',
|
||||
aliases: ['rps'],
|
||||
group: 'games',
|
||||
memberName: 'rock-paper-scissors',
|
||||
description: 'Play Rock-Paper-Scissors.',
|
||||
args: [
|
||||
{
|
||||
key: 'choice',
|
||||
prompt: 'Rock, Paper, or Scissors?',
|
||||
type: 'string',
|
||||
parse: (choice) => choice.toLowerCase()
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'rock-paper-scissors',
|
||||
aliases: ['rps'],
|
||||
group: 'games',
|
||||
memberName: 'rock-paper-scissors',
|
||||
description: 'Play Rock-Paper-Scissors.',
|
||||
args: [
|
||||
{
|
||||
key: 'choice',
|
||||
prompt: 'Rock, Paper, or Scissors?',
|
||||
type: 'string',
|
||||
parse: choice => choice.toLowerCase()
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
run(msg, args) { // eslint-disable-line consistent-return
|
||||
const { choice } = args;
|
||||
const response = choices[Math.floor(Math.random() * choices.length)];
|
||||
if (choice === 'rock') {
|
||||
if (response === 'rock') return msg.say('Rock! Aw... A tie...');
|
||||
else if (response === 'paper') return msg.say('Paper! Yes! I win!');
|
||||
else if (response === 'scissors') return msg.say('Scissors! Aw... I lose...');
|
||||
} else if (choice === 'paper') {
|
||||
if (response === 'rock') return msg.say('Rock! Aw... I lose...');
|
||||
else if (response === 'paper') return msg.say('Paper! Aw... A tie...');
|
||||
else if (response === 'scissors') return msg.say('Scissors! Yes! I win!');
|
||||
} else if (choice === 'scissors') {
|
||||
if (response === 'rock') return msg.say('Rock! Yes! I win!');
|
||||
else if (response === 'paper') return msg.say('Paper! Aw... I lose...');
|
||||
else if (response === 'scissors') return msg.say('Scissors! Aw... A tie...');
|
||||
} else {
|
||||
return msg.say('I win by default, you little cheater.');
|
||||
}
|
||||
}
|
||||
run(msg, args) { // eslint-disable-line consistent-return
|
||||
const { choice } = args;
|
||||
const response = choices[Math.floor(Math.random() * choices.length)];
|
||||
if (choice === 'rock') {
|
||||
if (response === 'rock') return msg.say('Rock! Aw... A tie...');
|
||||
else if (response === 'paper') return msg.say('Paper! Yes! I win!');
|
||||
else if (response === 'scissors') return msg.say('Scissors! Aw... I lose...');
|
||||
} else if (choice === 'paper') {
|
||||
if (response === 'rock') return msg.say('Rock! Aw... I lose...');
|
||||
else if (response === 'paper') return msg.say('Paper! Aw... A tie...');
|
||||
else if (response === 'scissors') return msg.say('Scissors! Yes! I win!');
|
||||
} else if (choice === 'scissors') {
|
||||
if (response === 'rock') return msg.say('Rock! Yes! I win!');
|
||||
else if (response === 'paper') return msg.say('Paper! Aw... I lose...');
|
||||
else if (response === 'scissors') return msg.say('Scissors! Aw... A tie...');
|
||||
} else {
|
||||
return msg.say('I win by default, you little cheater.');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
+24
-24
@@ -3,29 +3,29 @@ const { stripIndents } = require('common-tags');
|
||||
const slots = [':grapes:', ':tangerine:', ':pear:', ':cherries:', ':lemon:'];
|
||||
|
||||
module.exports = class SlotsCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'slots',
|
||||
group: 'games',
|
||||
memberName: 'slots',
|
||||
description: 'Play a game of slots.'
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'slots',
|
||||
group: 'games',
|
||||
memberName: 'slots',
|
||||
description: 'Play a game of slots.'
|
||||
});
|
||||
}
|
||||
|
||||
run(msg) {
|
||||
const slotOne = slots[Math.floor(Math.random() * slots.length)];
|
||||
const slotTwo = slots[Math.floor(Math.random() * slots.length)];
|
||||
const slotThree = slots[Math.floor(Math.random() * slots.length)];
|
||||
if (slotOne === slotTwo && slotOne === slotThree) {
|
||||
return msg.say(stripIndents`
|
||||
${slotOne}|${slotTwo}|${slotThree}
|
||||
Wow! You won! Great job... er... luck!
|
||||
`);
|
||||
} else {
|
||||
return msg.say(stripIndents`
|
||||
${slotOne}|${slotTwo}|${slotThree}
|
||||
Aww... You lost... Guess it's just bad luck, huh?
|
||||
`);
|
||||
}
|
||||
}
|
||||
run(msg) {
|
||||
const slotOne = slots[Math.floor(Math.random() * slots.length)];
|
||||
const slotTwo = slots[Math.floor(Math.random() * slots.length)];
|
||||
const slotThree = slots[Math.floor(Math.random() * slots.length)];
|
||||
if (slotOne === slotTwo && slotOne === slotThree) {
|
||||
return msg.say(stripIndents`
|
||||
${slotOne}|${slotTwo}|${slotThree}
|
||||
Wow! You won! Great job... er... luck!
|
||||
`);
|
||||
} else {
|
||||
return msg.say(stripIndents`
|
||||
${slotOne}|${slotTwo}|${slotThree}
|
||||
Aww... You lost... Guess it's just bad luck, huh?
|
||||
`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -3,41 +3,41 @@ const { MessageEmbed } = require('discord.js');
|
||||
const { sentences, difficulties, times } = require('../../assets/json/typing-game');
|
||||
|
||||
module.exports = class TypingGameCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'typing-game',
|
||||
group: 'games',
|
||||
memberName: 'typing-game',
|
||||
description: 'See how fast you can type a sentence in a given time limit.',
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
{
|
||||
key: 'difficulty',
|
||||
prompt: `What should the difficulty of the game be? One of: ${difficulties.join(', ')}`,
|
||||
type: 'string',
|
||||
validate: (difficulty) => {
|
||||
if (difficulties.includes(difficulty.toLowerCase())) return true;
|
||||
else return `The difficulty must be one of: ${difficulties.join(', ')}`;
|
||||
},
|
||||
parse: (difficulty) => difficulty.toLowerCase()
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'typing-game',
|
||||
group: 'games',
|
||||
memberName: 'typing-game',
|
||||
description: 'See how fast you can type a sentence in a given time limit.',
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
{
|
||||
key: 'difficulty',
|
||||
prompt: `What should the difficulty of the game be? One of: ${difficulties.join(', ')}`,
|
||||
type: 'string',
|
||||
validate: difficulty => {
|
||||
if (difficulties.includes(difficulty.toLowerCase())) return true;
|
||||
return `The difficulty must be one of: ${difficulties.join(', ')}`;
|
||||
},
|
||||
parse: difficulty => difficulty.toLowerCase()
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const { difficulty } = args;
|
||||
const sentence = sentences[Math.floor(Math.random() * sentences.length)];
|
||||
const time = times[difficulty];
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle(`You have ${time / 1000} seconds to type:`)
|
||||
.setDescription(sentence);
|
||||
await msg.embed(embed);
|
||||
const msgs = await msg.channel.awaitMessages((res) => res.author.id === msg.author.id, {
|
||||
max: 1,
|
||||
time
|
||||
});
|
||||
if (!msgs.size || msgs.first().content !== sentence) return msg.say('Sorry! You lose!');
|
||||
else return msg.say('Nice job! 10/10! You deserve some cake!');
|
||||
}
|
||||
async run(msg, args) {
|
||||
const { difficulty } = args;
|
||||
const sentence = sentences[Math.floor(Math.random() * sentences.length)];
|
||||
const time = times[difficulty];
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle(`You have ${time / 1000} seconds to type:`)
|
||||
.setDescription(sentence);
|
||||
await msg.embed(embed);
|
||||
const msgs = await msg.channel.awaitMessages(res => res.author.id === msg.author.id, {
|
||||
max: 1,
|
||||
time
|
||||
});
|
||||
if (!msgs.size || msgs.first().content !== sentence) return msg.say('Sorry! You lose!');
|
||||
return msg.say('Nice job! 10/10! You deserve some cake!');
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
const Command = require('../../structures/Command');
|
||||
|
||||
module.exports = class EmojiCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'emoji',
|
||||
group: 'guild-info',
|
||||
memberName: 'emoji',
|
||||
description: 'Responds with a list of the server\'s custom emoji.',
|
||||
guildOnly: true
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'emoji',
|
||||
group: 'guild-info',
|
||||
memberName: 'emoji',
|
||||
description: 'Responds with a list of the server\'s custom emoji.',
|
||||
guildOnly: true
|
||||
});
|
||||
}
|
||||
|
||||
run(msg) {
|
||||
const emoji = msg.guild.emojis;
|
||||
if (!emoji.size) return msg.say('You have no custom emoji.');
|
||||
return msg.say(emoji.map((e) => e).join(''));
|
||||
}
|
||||
run(msg) {
|
||||
const emoji = msg.guild.emojis;
|
||||
if (!emoji.size) return msg.say('You have no custom emoji.');
|
||||
return msg.say(emoji.map(e => e).join(''));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -4,43 +4,46 @@ const moment = require('moment');
|
||||
const perms = require('../../assets/json/permissions');
|
||||
|
||||
module.exports = class RoleInfoCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'role-info',
|
||||
aliases: ['role'],
|
||||
group: 'guild-info',
|
||||
memberName: 'role-info',
|
||||
description: 'Responds with detailed information on a role.',
|
||||
guildOnly: true,
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
{
|
||||
key: 'role',
|
||||
prompt: 'Which role would you like to get info on?',
|
||||
type: 'role'
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'role-info',
|
||||
aliases: ['role'],
|
||||
group: 'guild-info',
|
||||
memberName: 'role-info',
|
||||
description: 'Responds with detailed information on a role.',
|
||||
guildOnly: true,
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
{
|
||||
key: 'role',
|
||||
prompt: 'Which role would you like to get info on?',
|
||||
type: 'role'
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
run(msg, args) {
|
||||
const { role } = args;
|
||||
const embed = new MessageEmbed()
|
||||
.setColor(role.hexColor)
|
||||
.addField('❯ Name',
|
||||
role.name, true)
|
||||
.addField('❯ ID',
|
||||
role.id, true)
|
||||
.addField('❯ Color',
|
||||
role.hexColor.toUpperCase(), true)
|
||||
.addField('❯ Creation Date',
|
||||
moment(role.createdAt).format('MMMM Do YYYY'), true)
|
||||
.addField('❯ Hoisted',
|
||||
role.hoist ? 'Yes' : 'No', true)
|
||||
.addField('❯ Mentionable',
|
||||
role.mentionable ? 'Yes' : 'No', true)
|
||||
.addField('❯ Permissions',
|
||||
Object.keys(perms).filter((perm) => role.serialize()[perm]).map((perm) => perms[perm]).join(', '));
|
||||
return msg.embed(embed);
|
||||
}
|
||||
run(msg, args) {
|
||||
const { role } = args;
|
||||
const embed = new MessageEmbed()
|
||||
.setColor(role.hexColor)
|
||||
.addField('❯ Name',
|
||||
role.name, true)
|
||||
.addField('❯ ID',
|
||||
role.id, true)
|
||||
.addField('❯ Color',
|
||||
role.hexColor.toUpperCase(), true)
|
||||
.addField('❯ Creation Date',
|
||||
moment(role.createdAt).format('MMMM Do YYYY'), true)
|
||||
.addField('❯ Hoisted',
|
||||
role.hoist ? 'Yes' : 'No', true)
|
||||
.addField('❯ Mentionable',
|
||||
role.mentionable ? 'Yes' : 'No', true)
|
||||
.addField('❯ Permissions',
|
||||
Object.keys(perms)
|
||||
.filter(perm => role.serialize()[perm])
|
||||
.map(perm => perms[perm])
|
||||
.join(', '));
|
||||
return msg.embed(embed);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -4,38 +4,38 @@ const moment = require('moment');
|
||||
const filterLevels = ['Off', 'No Role', 'Everyone'];
|
||||
|
||||
module.exports = class GuildInfoCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'server-info',
|
||||
aliases: ['guild', 'server', 'guild-info'],
|
||||
group: 'guild-info',
|
||||
memberName: 'server-info',
|
||||
description: 'Responds with detailed information on the server.',
|
||||
guildOnly: true,
|
||||
clientPermissions: ['EMBED_LINKS']
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'server-info',
|
||||
aliases: ['guild', 'server', 'guild-info'],
|
||||
group: 'guild-info',
|
||||
memberName: 'server-info',
|
||||
description: 'Responds with detailed information on the server.',
|
||||
guildOnly: true,
|
||||
clientPermissions: ['EMBED_LINKS']
|
||||
});
|
||||
}
|
||||
|
||||
run(msg) {
|
||||
const embed = new MessageEmbed()
|
||||
.setColor(0x00AE86)
|
||||
.setThumbnail(msg.guild.iconURL())
|
||||
.addField('❯ Name',
|
||||
msg.guild.name, true)
|
||||
.addField('❯ ID',
|
||||
msg.guild.id, true)
|
||||
.addField('❯ Creation Date',
|
||||
moment(msg.guild.createdAt).format('MMMM Do YYYY'), true)
|
||||
.addField('❯ Default Channel',
|
||||
msg.guild.defaultChannel, true)
|
||||
.addField('❯ Region',
|
||||
msg.guild.region, true)
|
||||
.addField('❯ Explicit Filter',
|
||||
filterLevels[msg.guild.explicitContentFilter], true)
|
||||
.addField('❯ Owner',
|
||||
msg.guild.owner ? msg.guild.owner.user.username : 'None', true)
|
||||
.addField('❯ Members',
|
||||
msg.guild.memberCount, true);
|
||||
return msg.embed(embed);
|
||||
}
|
||||
run(msg) {
|
||||
const embed = new MessageEmbed()
|
||||
.setColor(0x00AE86)
|
||||
.setThumbnail(msg.guild.iconURL())
|
||||
.addField('❯ Name',
|
||||
msg.guild.name, true)
|
||||
.addField('❯ ID',
|
||||
msg.guild.id, true)
|
||||
.addField('❯ Creation Date',
|
||||
moment(msg.guild.createdAt).format('MMMM Do YYYY'), true)
|
||||
.addField('❯ Default Channel',
|
||||
msg.guild.defaultChannel, true)
|
||||
.addField('❯ Region',
|
||||
msg.guild.region, true)
|
||||
.addField('❯ Explicit Filter',
|
||||
filterLevels[msg.guild.explicitContentFilter], true)
|
||||
.addField('❯ Owner',
|
||||
msg.guild.owner ? msg.guild.owner.user.username : 'None', true)
|
||||
.addField('❯ Members',
|
||||
msg.guild.memberCount, true);
|
||||
return msg.embed(embed);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2,37 +2,37 @@ const Command = require('../../structures/Command');
|
||||
const snekfetch = require('snekfetch');
|
||||
|
||||
module.exports = class AchievementCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'achievement',
|
||||
group: 'image-edit',
|
||||
memberName: 'achievement',
|
||||
description: 'Sends a Minecraft achievement with the text of your choice.',
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'text',
|
||||
prompt: 'What should the text of the achievement be?',
|
||||
type: 'string',
|
||||
validate: (text) => {
|
||||
if (text.length < 25) return true;
|
||||
else return 'Text must be under 25 characters.';
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'achievement',
|
||||
group: 'image-edit',
|
||||
memberName: 'achievement',
|
||||
description: 'Sends a Minecraft achievement with the text of your choice.',
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
key: 'text',
|
||||
prompt: 'What should the text of the achievement be?',
|
||||
type: 'string',
|
||||
validate: text => {
|
||||
if (text.length < 25) return true;
|
||||
return 'Text must be under 25 characters.';
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const { text } = args;
|
||||
const { body } = await snekfetch
|
||||
.get('https://www.minecraftskinstealer.com/achievement/a.php')
|
||||
.query({
|
||||
i: 1,
|
||||
h: 'Achievement Get!',
|
||||
t: text
|
||||
});
|
||||
return msg.say({ files: [{ attachment: body, name: 'achievement.png' }] });
|
||||
}
|
||||
async run(msg, args) {
|
||||
const { text } = args;
|
||||
const { body } = await snekfetch
|
||||
.get('https://www.minecraftskinstealer.com/achievement/a.php')
|
||||
.query({
|
||||
i: 1,
|
||||
h: 'Achievement Get!',
|
||||
t: text
|
||||
});
|
||||
return msg.say({ files: [{ attachment: body, name: 'achievement.png' }] });
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+38
-38
@@ -2,43 +2,43 @@ const Command = require('../../structures/Command');
|
||||
const codes = require('../../assets/json/meme');
|
||||
|
||||
module.exports = class MemeCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'meme',
|
||||
group: 'image-edit',
|
||||
memberName: 'meme',
|
||||
description: 'Sends a meme with text of your choice, and a background of your choice.',
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
details: `**Codes:** ${codes.join(', ')}`,
|
||||
args: [
|
||||
{
|
||||
key: 'type',
|
||||
prompt: 'What meme type do you want to use?',
|
||||
type: 'string',
|
||||
validate: (type) => {
|
||||
if (codes.includes(type.toLowerCase())) return true;
|
||||
else return 'Invalid meme type. Use `help meme` to view a list of meme types.';
|
||||
},
|
||||
parse: (type) => type.toLowerCase()
|
||||
},
|
||||
{
|
||||
key: 'top',
|
||||
prompt: 'What should the top row of the meme to be?',
|
||||
type: 'string',
|
||||
parse: (top) => encodeURIComponent(top.replace(/[ ]/g, '-'))
|
||||
},
|
||||
{
|
||||
key: 'bottom',
|
||||
prompt: 'What should the bottom row of the meme to be?',
|
||||
type: 'string',
|
||||
parse: (bottom) => encodeURIComponent(bottom.replace(/[ ]/g, '-'))
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'meme',
|
||||
group: 'image-edit',
|
||||
memberName: 'meme',
|
||||
description: 'Sends a meme with text of your choice, and a background of your choice.',
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
details: `**Codes:** ${codes.join(', ')}`,
|
||||
args: [
|
||||
{
|
||||
key: 'type',
|
||||
prompt: 'What meme type do you want to use?',
|
||||
type: 'string',
|
||||
validate: type => {
|
||||
if (codes.includes(type.toLowerCase())) return true;
|
||||
return 'Invalid meme type. Use `help meme` to view a list of meme types.';
|
||||
},
|
||||
parse: type => type.toLowerCase()
|
||||
},
|
||||
{
|
||||
key: 'top',
|
||||
prompt: 'What should the top row of the meme to be?',
|
||||
type: 'string',
|
||||
parse: top => encodeURIComponent(top.replace(/[ ]/g, '-'))
|
||||
},
|
||||
{
|
||||
key: 'bottom',
|
||||
prompt: 'What should the bottom row of the meme to be?',
|
||||
type: 'string',
|
||||
parse: bottom => encodeURIComponent(bottom.replace(/[ ]/g, '-'))
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
run(msg, args) {
|
||||
const { type, top, bottom } = args;
|
||||
return msg.say({ files: [`https://memegen.link/${type}/${top}/${bottom}.jpg`] });
|
||||
}
|
||||
run(msg, args) {
|
||||
const { type, top, bottom } = args;
|
||||
return msg.say({ files: [`https://memegen.link/${type}/${top}/${bottom}.jpg`] });
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2,40 +2,40 @@ const Command = require('../../structures/Command');
|
||||
const pokemon = require('../../assets/json/pokemon-fusion');
|
||||
|
||||
module.exports = class PokemonFusionCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'pokemon-fusion',
|
||||
aliases: ['poke-fusion', 'poke-fuse'],
|
||||
group: 'image-edit',
|
||||
memberName: 'pokemon-fusion',
|
||||
description: 'Fuses two Generation I Pokémon together.',
|
||||
args: [
|
||||
{
|
||||
key: 'source1',
|
||||
prompt: 'What Pokémon should be fused?',
|
||||
type: 'string',
|
||||
validate: (source1) => {
|
||||
if (pokemon[source1.toLowerCase()]) return true;
|
||||
else return 'Only Pokémon from Generation I may be used.';
|
||||
},
|
||||
parse: (source1) => pokemon[source1.toLowerCase()]
|
||||
},
|
||||
{
|
||||
key: 'source2',
|
||||
prompt: 'What Pokémon should be fused?',
|
||||
type: 'string',
|
||||
validate: (source2) => {
|
||||
if (pokemon[source2.toLowerCase()]) return true;
|
||||
else return 'Only Pokémon from Generation I may be used.';
|
||||
},
|
||||
parse: (source2) => pokemon[source2.toLowerCase()]
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'pokemon-fusion',
|
||||
aliases: ['poke-fusion', 'poke-fuse'],
|
||||
group: 'image-edit',
|
||||
memberName: 'pokemon-fusion',
|
||||
description: 'Fuses two Generation I Pokémon together.',
|
||||
args: [
|
||||
{
|
||||
key: 'source1',
|
||||
prompt: 'What Pokémon should be fused?',
|
||||
type: 'string',
|
||||
validate: source1 => {
|
||||
if (pokemon[source1.toLowerCase()]) return true;
|
||||
return 'Only Pokémon from Generation I may be used.';
|
||||
},
|
||||
parse: source1 => pokemon[source1.toLowerCase()]
|
||||
},
|
||||
{
|
||||
key: 'source2',
|
||||
prompt: 'What Pokémon should be fused?',
|
||||
type: 'string',
|
||||
validate: source2 => {
|
||||
if (pokemon[source2.toLowerCase()]) return true;
|
||||
return 'Only Pokémon from Generation I may be used.';
|
||||
},
|
||||
parse: source2 => pokemon[source2.toLowerCase()]
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
run(msg, args) {
|
||||
const { source1, source2 } = args;
|
||||
return msg.say({ files: [`http://images.alexonsager.net/pokemon/fused/${source1}/${source1}.${source2}.png`] });
|
||||
}
|
||||
run(msg, args) {
|
||||
const { source1, source2 } = args;
|
||||
return msg.say({ files: [`http://images.alexonsager.net/pokemon/fused/${source1}/${source1}.${source2}.png`] });
|
||||
}
|
||||
};
|
||||
|
||||
+77
-77
@@ -3,82 +3,82 @@ const { MessageEmbed } = require('discord.js');
|
||||
const { stripIndents } = require('common-tags');
|
||||
|
||||
module.exports = class BanCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'ban',
|
||||
aliases: ['banne'],
|
||||
group: 'moderation',
|
||||
memberName: 'ban',
|
||||
description: 'Bans a user and logs the ban to the mod logs.',
|
||||
guildOnly: true,
|
||||
clientPermissions: ['BAN_MEMBERS'],
|
||||
userPermissions: ['BAN_MEMBERS'],
|
||||
args: [
|
||||
{
|
||||
key: 'member',
|
||||
prompt: 'What member do you want to ban?',
|
||||
type: 'member'
|
||||
},
|
||||
{
|
||||
key: 'reason',
|
||||
prompt: 'What do you want to set the reason as?',
|
||||
type: 'string',
|
||||
validate: (reason) => {
|
||||
if (reason.length < 140) return true;
|
||||
else return 'Reason must be under 140 characters.';
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'ban',
|
||||
aliases: ['banne'],
|
||||
group: 'moderation',
|
||||
memberName: 'ban',
|
||||
description: 'Bans a user and logs the ban to the mod logs.',
|
||||
guildOnly: true,
|
||||
clientPermissions: ['BAN_MEMBERS'],
|
||||
userPermissions: ['BAN_MEMBERS'],
|
||||
args: [
|
||||
{
|
||||
key: 'member',
|
||||
prompt: 'What member do you want to ban?',
|
||||
type: 'member'
|
||||
},
|
||||
{
|
||||
key: 'reason',
|
||||
prompt: 'What do you want to set the reason as?',
|
||||
type: 'string',
|
||||
validate: reason => {
|
||||
if (reason.length < 140) return true;
|
||||
return 'Reason must be under 140 characters.';
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const modlogs = msg.guild.channels.filter((c) => {
|
||||
const topic = c.topic || '';
|
||||
if (topic.includes('<modlog>')) return true;
|
||||
else return false;
|
||||
}).first() || msg.guild.channels.find('name', 'mod-log');
|
||||
const { member, reason } = args;
|
||||
if (!member.bannable) return msg.say('This member is not bannable. Perhaps they have a higher role than me?');
|
||||
await msg.say(`Are you sure you want to ban ${member.user.tag} (${member.id})?`);
|
||||
const msgs = await msg.channel.awaitMessages((res) => res.author.id === msg.author.id, {
|
||||
max: 1,
|
||||
time: 30000
|
||||
});
|
||||
if (!msgs.size || !['y', 'yes'].includes(msgs.first().content.toLowerCase())) return msg.say('Aborting.');
|
||||
try {
|
||||
await member.send(stripIndents`
|
||||
You were banned from ${msg.guild.name}!
|
||||
Reason: ${reason}
|
||||
`);
|
||||
} catch (err) {
|
||||
await msg.say('Failed to Send DM.');
|
||||
}
|
||||
await member.ban({
|
||||
days: 7,
|
||||
reason: `${msg.author.tag}: ${reason}`
|
||||
});
|
||||
await msg.say(`Successfully banned ${member.user.tag}.`);
|
||||
if (!modlogs || !modlogs.permissionsFor(this.client.user).has('SEND_MESSAGES')) {
|
||||
return msg.say('Could not log the ban to the mod logs.');
|
||||
} else if (modlogs.permissionsFor(this.client.user).has('EMBED_LINKS')) {
|
||||
const embed = new MessageEmbed()
|
||||
.setAuthor(msg.author.tag, msg.author.displayAvatarURL())
|
||||
.setColor(0xFF0000)
|
||||
.setTimestamp()
|
||||
.setDescription(stripIndents`
|
||||
**Member:** ${member.user.tag} (${member.id})
|
||||
**Action:** Ban
|
||||
**Reason:** ${reason}
|
||||
`);
|
||||
return modlogs.send({ embed });
|
||||
} else {
|
||||
return modlogs.send(stripIndents`
|
||||
**Member:** ${member.user.tag} (${member.id})
|
||||
**Action:** Ban
|
||||
**Reason:** ${reason}
|
||||
**Moderator:** ${msg.author.tag}
|
||||
`);
|
||||
}
|
||||
}
|
||||
async run(msg, args) {
|
||||
const modlogs = msg.guild.channels.filter(c => {
|
||||
const topic = c.topic || '';
|
||||
if (topic.includes('<modlog>')) return true;
|
||||
return false;
|
||||
}).first() || msg.guild.channels.find('name', 'mod-log');
|
||||
const { member, reason } = args;
|
||||
if (!member.bannable) return msg.say('This member is not bannable. Perhaps they have a higher role than me?');
|
||||
await msg.say(`Are you sure you want to ban ${member.user.tag} (${member.id})?`);
|
||||
const msgs = await msg.channel.awaitMessages(res => res.author.id === msg.author.id, {
|
||||
max: 1,
|
||||
time: 30000
|
||||
});
|
||||
if (!msgs.size || !['y', 'yes'].includes(msgs.first().content.toLowerCase())) return msg.say('Aborting.');
|
||||
try {
|
||||
await member.send(stripIndents`
|
||||
You were banned from ${msg.guild.name}!
|
||||
Reason: ${reason}
|
||||
`);
|
||||
} catch (err) {
|
||||
await msg.say('Failed to Send DM.');
|
||||
}
|
||||
await member.ban({
|
||||
days: 7,
|
||||
reason: `${msg.author.tag}: ${reason}`
|
||||
});
|
||||
await msg.say(`Successfully banned ${member.user.tag}.`);
|
||||
if (!modlogs || !modlogs.permissionsFor(this.client.user).has('SEND_MESSAGES')) {
|
||||
return msg.say('Could not log the ban to the mod logs.');
|
||||
} else if (modlogs.permissionsFor(this.client.user).has('EMBED_LINKS')) {
|
||||
const embed = new MessageEmbed()
|
||||
.setAuthor(msg.author.tag, msg.author.displayAvatarURL())
|
||||
.setColor(0xFF0000)
|
||||
.setTimestamp()
|
||||
.setDescription(stripIndents`
|
||||
**Member:** ${member.user.tag} (${member.id})
|
||||
**Action:** Ban
|
||||
**Reason:** ${reason}
|
||||
`);
|
||||
return modlogs.send({ embed });
|
||||
} else {
|
||||
return modlogs.send(stripIndents`
|
||||
**Member:** ${member.user.tag} (${member.id})
|
||||
**Action:** Ban
|
||||
**Reason:** ${reason}
|
||||
**Moderator:** ${msg.author.tag}
|
||||
`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
+74
-74
@@ -3,79 +3,79 @@ const { MessageEmbed } = require('discord.js');
|
||||
const { stripIndents } = require('common-tags');
|
||||
|
||||
module.exports = class KickCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'kick',
|
||||
aliases: ['kickke'],
|
||||
group: 'moderation',
|
||||
memberName: 'kick',
|
||||
description: 'Kicks a user and logs the kick to the mod logs.',
|
||||
guildOnly: true,
|
||||
clientPermissions: ['KICK_MEMBERS'],
|
||||
userPermissions: ['KICK_MEMBERS'],
|
||||
args: [
|
||||
{
|
||||
key: 'member',
|
||||
prompt: 'What member do you want to kick?',
|
||||
type: 'member'
|
||||
},
|
||||
{
|
||||
key: 'reason',
|
||||
prompt: 'What do you want to set the reason as?',
|
||||
type: 'string',
|
||||
validate: (reason) => {
|
||||
if (reason.length < 140) return true;
|
||||
else return 'Reason must be under 140 characters.';
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'kick',
|
||||
aliases: ['kickke'],
|
||||
group: 'moderation',
|
||||
memberName: 'kick',
|
||||
description: 'Kicks a user and logs the kick to the mod logs.',
|
||||
guildOnly: true,
|
||||
clientPermissions: ['KICK_MEMBERS'],
|
||||
userPermissions: ['KICK_MEMBERS'],
|
||||
args: [
|
||||
{
|
||||
key: 'member',
|
||||
prompt: 'What member do you want to kick?',
|
||||
type: 'member'
|
||||
},
|
||||
{
|
||||
key: 'reason',
|
||||
prompt: 'What do you want to set the reason as?',
|
||||
type: 'string',
|
||||
validate: reason => {
|
||||
if (reason.length < 140) return true;
|
||||
return 'Reason must be under 140 characters.';
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const modlogs = msg.guild.channels.filter((c) => {
|
||||
const topic = c.topic || '';
|
||||
if (topic.includes('<modlog>')) return true;
|
||||
else return false;
|
||||
}).first() || msg.guild.channels.find('name', 'mod-log');
|
||||
const { member, reason } = args;
|
||||
if (!member.kickable) return msg.say('This member is not kickable. Perhaps they have a higher role than me?');
|
||||
await msg.say(`Are you sure you want to kick ${member.user.tag} (${member.id})?`);
|
||||
const msgs = await msg.channel.awaitMessages((res) => res.author.id === msg.author.id, {
|
||||
max: 1,
|
||||
time: 30000
|
||||
});
|
||||
if (!msgs.size || !['y', 'yes'].includes(msgs.first().content.toLowerCase())) return msg.say('Aborting.');
|
||||
try {
|
||||
await member.send(stripIndents`
|
||||
You were kicked from ${msg.guild.name}!
|
||||
Reason: ${reason}
|
||||
`);
|
||||
} catch (err) {
|
||||
await msg.say('Failed to Send DM.');
|
||||
}
|
||||
await member.kick(`${msg.author.tag}: ${reason}`);
|
||||
await msg.say(`Successfully kicked ${member.user.tag}.`);
|
||||
if (!modlogs || !modlogs.permissionsFor(this.client.user).has('SEND_MESSAGES')) {
|
||||
return msg.say('Could not log the kick to the mod logs.');
|
||||
} else if (modlogs.permissionsFor(this.client.user).has('EMBED_LINKS')) {
|
||||
const embed = new MessageEmbed()
|
||||
.setAuthor(msg.author.tag, msg.author.displayAvatarURL())
|
||||
.setColor(0xFFA500)
|
||||
.setTimestamp()
|
||||
.setDescription(stripIndents`
|
||||
**Member:** ${member.user.tag} (${member.id})
|
||||
**Action:** Kick
|
||||
**Reason:** ${reason}
|
||||
`);
|
||||
return modlogs.send({ embed });
|
||||
} else {
|
||||
return modlogs.send(stripIndents`
|
||||
**Member:** ${member.user.tag} (${member.id})
|
||||
**Action:** Kick
|
||||
**Reason:** ${reason}
|
||||
**Moderator:** ${msg.author.tag}
|
||||
`);
|
||||
}
|
||||
}
|
||||
async run(msg, args) {
|
||||
const modlogs = msg.guild.channels.filter(c => {
|
||||
const topic = c.topic || '';
|
||||
if (topic.includes('<modlog>')) return true;
|
||||
return false;
|
||||
}).first() || msg.guild.channels.find('name', 'mod-log');
|
||||
const { member, reason } = args;
|
||||
if (!member.kickable) return msg.say('This member is not kickable. Perhaps they have a higher role than me?');
|
||||
await msg.say(`Are you sure you want to kick ${member.user.tag} (${member.id})?`);
|
||||
const msgs = await msg.channel.awaitMessages(res => res.author.id === msg.author.id, {
|
||||
max: 1,
|
||||
time: 30000
|
||||
});
|
||||
if (!msgs.size || !['y', 'yes'].includes(msgs.first().content.toLowerCase())) return msg.say('Aborting.');
|
||||
try {
|
||||
await member.send(stripIndents`
|
||||
You were kicked from ${msg.guild.name}!
|
||||
Reason: ${reason}
|
||||
`);
|
||||
} catch (err) {
|
||||
await msg.say('Failed to Send DM.');
|
||||
}
|
||||
await member.kick(`${msg.author.tag}: ${reason}`);
|
||||
await msg.say(`Successfully kicked ${member.user.tag}.`);
|
||||
if (!modlogs || !modlogs.permissionsFor(this.client.user).has('SEND_MESSAGES')) {
|
||||
return msg.say('Could not log the kick to the mod logs.');
|
||||
} else if (modlogs.permissionsFor(this.client.user).has('EMBED_LINKS')) {
|
||||
const embed = new MessageEmbed()
|
||||
.setAuthor(msg.author.tag, msg.author.displayAvatarURL())
|
||||
.setColor(0xFFA500)
|
||||
.setTimestamp()
|
||||
.setDescription(stripIndents`
|
||||
**Member:** ${member.user.tag} (${member.id})
|
||||
**Action:** Kick
|
||||
**Reason:** ${reason}
|
||||
`);
|
||||
return modlogs.send({ embed });
|
||||
} else {
|
||||
return modlogs.send(stripIndents`
|
||||
**Member:** ${member.user.tag} (${member.id})
|
||||
**Action:** Kick
|
||||
**Reason:** ${reason}
|
||||
**Moderator:** ${msg.author.tag}
|
||||
`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2,42 +2,42 @@ const Command = require('../../structures/Command');
|
||||
const { stripIndents } = require('common-tags');
|
||||
|
||||
module.exports = class LockdownCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'lockdown',
|
||||
group: 'moderation',
|
||||
memberName: 'lockdown',
|
||||
description: 'Prevents users from posting in the current channel, or removes a lockdown.',
|
||||
guildOnly: true,
|
||||
clientPermissions: ['ADMINISTRATOR'],
|
||||
userPermissions: ['ADMINISTRATOR'],
|
||||
args: [
|
||||
{
|
||||
key: 'type',
|
||||
prompt: 'Please enter either start or stop.',
|
||||
type: 'string',
|
||||
default: 'start',
|
||||
validate: (type) => {
|
||||
if (['start', 'stop'].includes(type.toLowerCase())) return true;
|
||||
else return 'Please enter either start or stop.';
|
||||
},
|
||||
parse: (type) => type.toLowerCase()
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'lockdown',
|
||||
group: 'moderation',
|
||||
memberName: 'lockdown',
|
||||
description: 'Prevents users from posting in the current channel, or removes a lockdown.',
|
||||
guildOnly: true,
|
||||
clientPermissions: ['ADMINISTRATOR'],
|
||||
userPermissions: ['ADMINISTRATOR'],
|
||||
args: [
|
||||
{
|
||||
key: 'type',
|
||||
prompt: 'Please enter either start or stop.',
|
||||
type: 'string',
|
||||
default: 'start',
|
||||
validate: type => {
|
||||
if (['start', 'stop'].includes(type.toLowerCase())) return true;
|
||||
return 'Please enter either start or stop.';
|
||||
},
|
||||
parse: type => type.toLowerCase()
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const { type } = args;
|
||||
if (type === 'start') {
|
||||
await msg.channel.overwritePermissions(msg.guild.defaultRole, { SEND_MESSAGES: false });
|
||||
return msg.say(stripIndents`
|
||||
Lockdown Started, users without Administrator can no longer post messages.
|
||||
Please use \`lockdown stop\` to end the lockdown.
|
||||
`);
|
||||
} else {
|
||||
await msg.channel.overwritePermissions(msg.guild.defaultRole, { SEND_MESSAGES: null });
|
||||
return msg.say('Lockdown Ended.');
|
||||
}
|
||||
}
|
||||
async run(msg, args) { // eslint-disable-line consistent-return
|
||||
const { type } = args;
|
||||
if (type === 'start') {
|
||||
await msg.channel.overwritePermissions(msg.guild.defaultRole, { SEND_MESSAGES: false });
|
||||
return msg.say(stripIndents`
|
||||
Lockdown Started, users without Administrator can no longer post messages.
|
||||
Please use \`lockdown stop\` to end the lockdown.
|
||||
`);
|
||||
} else if (type === 'stop') {
|
||||
await msg.channel.overwritePermissions(msg.guild.defaultRole, { SEND_MESSAGES: null });
|
||||
return msg.say('Lockdown Ended.');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,42 +1,42 @@
|
||||
const Command = require('../../structures/Command');
|
||||
|
||||
module.exports = class PruneCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'prune',
|
||||
group: 'moderation',
|
||||
memberName: 'prune',
|
||||
description: 'Deletes up to 99 messages from the current channel.',
|
||||
guildOnly: true,
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 15
|
||||
},
|
||||
clientPermissions: ['READ_MESSAGE_HISTORY', 'MANAGE_MESSAGES'],
|
||||
userPermissions: ['MANAGE_MESSAGES'],
|
||||
args: [
|
||||
{
|
||||
key: 'count',
|
||||
label: 'amount of messages',
|
||||
prompt: 'How many messages do you want to delete? Limit of up to 99.',
|
||||
type: 'integer',
|
||||
validate: (count) => {
|
||||
if (count < 100 && count > 0) return true;
|
||||
else return 'Count must be from 1-99.';
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'prune',
|
||||
group: 'moderation',
|
||||
memberName: 'prune',
|
||||
description: 'Deletes up to 99 messages from the current channel.',
|
||||
guildOnly: true,
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 15
|
||||
},
|
||||
clientPermissions: ['READ_MESSAGE_HISTORY', 'MANAGE_MESSAGES'],
|
||||
userPermissions: ['MANAGE_MESSAGES'],
|
||||
args: [
|
||||
{
|
||||
key: 'count',
|
||||
label: 'amount of messages',
|
||||
prompt: 'How many messages do you want to delete? Limit of up to 99.',
|
||||
type: 'integer',
|
||||
validate: count => {
|
||||
if (count < 100 && count > 0) return true;
|
||||
return 'Count must be from 1-99.';
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const { count } = args;
|
||||
try {
|
||||
const messages = await msg.channel.fetchMessages({ limit: count + 1 });
|
||||
await msg.channel.bulkDelete(messages, true);
|
||||
return null;
|
||||
} catch (err) {
|
||||
return msg.say('There are no messages younger than two weeks that can be deleted.');
|
||||
}
|
||||
}
|
||||
async run(msg, args) {
|
||||
const { count } = args;
|
||||
try {
|
||||
const messages = await msg.channel.fetchMessages({ limit: count + 1 });
|
||||
await msg.channel.bulkDelete(messages, true);
|
||||
return null;
|
||||
} catch (err) {
|
||||
return msg.say('There are no messages younger than two weeks that can be deleted.');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -3,83 +3,83 @@ const { MessageEmbed } = require('discord.js');
|
||||
const { stripIndents } = require('common-tags');
|
||||
|
||||
module.exports = class SoftbanCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'softban',
|
||||
aliases: ['softbanne'],
|
||||
group: 'moderation',
|
||||
memberName: 'softban',
|
||||
description: 'Kicks a user and deletes their messages, and logs the softban to the mod logs.',
|
||||
guildOnly: true,
|
||||
clientPermissions: ['BAN_MEMBERS'],
|
||||
userPermissions: ['KICK_MEMBERS'],
|
||||
args: [
|
||||
{
|
||||
key: 'member',
|
||||
prompt: 'What member do you want to softban?',
|
||||
type: 'member'
|
||||
},
|
||||
{
|
||||
key: 'reason',
|
||||
prompt: 'What do you want to set the reason as?',
|
||||
type: 'string',
|
||||
validate: (reason) => {
|
||||
if (reason.length < 140) return true;
|
||||
else return 'Reason must be under 140 characters.';
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'softban',
|
||||
aliases: ['softbanne'],
|
||||
group: 'moderation',
|
||||
memberName: 'softban',
|
||||
description: 'Kicks a user and deletes their messages, and logs the softban to the mod logs.',
|
||||
guildOnly: true,
|
||||
clientPermissions: ['BAN_MEMBERS'],
|
||||
userPermissions: ['KICK_MEMBERS'],
|
||||
args: [
|
||||
{
|
||||
key: 'member',
|
||||
prompt: 'What member do you want to softban?',
|
||||
type: 'member'
|
||||
},
|
||||
{
|
||||
key: 'reason',
|
||||
prompt: 'What do you want to set the reason as?',
|
||||
type: 'string',
|
||||
validate: reason => {
|
||||
if (reason.length < 140) return true;
|
||||
return 'Reason must be under 140 characters.';
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const modlogs = msg.guild.channels.filter((c) => {
|
||||
const topic = c.topic || '';
|
||||
if (topic.includes('<modlog>')) return true;
|
||||
else return false;
|
||||
}).first() || msg.guild.channels.find('name', 'mod-log');
|
||||
const { member, reason } = args;
|
||||
if (!member.bannable) return msg.say('This member is not bannable. Perhaps they have a higher role than me?');
|
||||
await msg.say(`Are you sure you want to softban ${member.user.tag} (${member.id})?`);
|
||||
const msgs = await msg.channel.awaitMessages((res) => res.author.id === msg.author.id, {
|
||||
max: 1,
|
||||
time: 30000
|
||||
});
|
||||
if (!msgs.size || !['y', 'yes'].includes(msgs.first().content.toLowerCase())) return msg.say('Aborting.');
|
||||
try {
|
||||
await member.send(stripIndents`
|
||||
You were softbanned from ${msg.guild.name}!
|
||||
Reason: ${reason}
|
||||
`);
|
||||
} catch (err) {
|
||||
await msg.say('Failed to Send DM.');
|
||||
}
|
||||
await member.ban({
|
||||
days: 7,
|
||||
reason: `${msg.author.tag}: ${reason} (Softban)`
|
||||
});
|
||||
await msg.guild.unban(member.user, 'Softban');
|
||||
await msg.say(`Successfully softbanned ${member.user.tag}.`);
|
||||
if (!modlogs || !modlogs.permissionsFor(this.client.user).has('SEND_MESSAGES')) {
|
||||
return msg.say('Could not log the softban to the mod logs.');
|
||||
} else if (modlogs.permissionsFor(this.client.user).has('EMBED_LINKS')) {
|
||||
const embed = new MessageEmbed()
|
||||
.setAuthor(msg.author.tag, msg.author.displayAvatarURL())
|
||||
.setColor(0xFF4500)
|
||||
.setTimestamp()
|
||||
.setDescription(stripIndents`
|
||||
**Member:** ${member.user.tag} (${member.id})
|
||||
**Action:** Softban
|
||||
**Reason:** ${reason}
|
||||
`);
|
||||
return modlogs.send({ embed });
|
||||
} else {
|
||||
return modlogs.send(stripIndents`
|
||||
**Member:** ${member.user.tag} (${member.id})
|
||||
**Action:** Softban
|
||||
**Reason:** ${reason}
|
||||
**Moderator:** ${msg.author.tag}
|
||||
`);
|
||||
}
|
||||
}
|
||||
async run(msg, args) {
|
||||
const modlogs = msg.guild.channels.filter(c => {
|
||||
const topic = c.topic || '';
|
||||
if (topic.includes('<modlog>')) return true;
|
||||
return false;
|
||||
}).first() || msg.guild.channels.find('name', 'mod-log');
|
||||
const { member, reason } = args;
|
||||
if (!member.bannable) return msg.say('This member is not bannable. Perhaps they have a higher role than me?');
|
||||
await msg.say(`Are you sure you want to softban ${member.user.tag} (${member.id})?`);
|
||||
const msgs = await msg.channel.awaitMessages(res => res.author.id === msg.author.id, {
|
||||
max: 1,
|
||||
time: 30000
|
||||
});
|
||||
if (!msgs.size || !['y', 'yes'].includes(msgs.first().content.toLowerCase())) return msg.say('Aborting.');
|
||||
try {
|
||||
await member.send(stripIndents`
|
||||
You were softbanned from ${msg.guild.name}!
|
||||
Reason: ${reason}
|
||||
`);
|
||||
} catch (err) {
|
||||
await msg.say('Failed to Send DM.');
|
||||
}
|
||||
await member.ban({
|
||||
days: 7,
|
||||
reason: `${msg.author.tag}: ${reason} (Softban)`
|
||||
});
|
||||
await msg.guild.unban(member.user, 'Softban');
|
||||
await msg.say(`Successfully softbanned ${member.user.tag}.`);
|
||||
if (!modlogs || !modlogs.permissionsFor(this.client.user).has('SEND_MESSAGES')) {
|
||||
return msg.say('Could not log the softban to the mod logs.');
|
||||
} else if (modlogs.permissionsFor(this.client.user).has('EMBED_LINKS')) {
|
||||
const embed = new MessageEmbed()
|
||||
.setAuthor(msg.author.tag, msg.author.displayAvatarURL())
|
||||
.setColor(0xFF4500)
|
||||
.setTimestamp()
|
||||
.setDescription(stripIndents`
|
||||
**Member:** ${member.user.tag} (${member.id})
|
||||
**Action:** Softban
|
||||
**Reason:** ${reason}
|
||||
`);
|
||||
return modlogs.send({ embed });
|
||||
} else {
|
||||
return modlogs.send(stripIndents`
|
||||
**Member:** ${member.user.tag} (${member.id})
|
||||
**Action:** Softban
|
||||
**Reason:** ${reason}
|
||||
**Moderator:** ${msg.author.tag}
|
||||
`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -3,73 +3,73 @@ const { MessageEmbed } = require('discord.js');
|
||||
const { stripIndents } = require('common-tags');
|
||||
|
||||
module.exports = class UnbanCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'unban',
|
||||
aliases: ['unbanne'],
|
||||
group: 'moderation',
|
||||
memberName: 'unban',
|
||||
description: 'Unbans a user and logs the unban to the mod logs.',
|
||||
guildOnly: true,
|
||||
clientPermissions: ['BAN_MEMBERS'],
|
||||
userPermissions: ['BAN_MEMBERS'],
|
||||
args: [
|
||||
{
|
||||
key: 'id',
|
||||
prompt: 'What is the id of the member you want to unban?',
|
||||
type: 'string'
|
||||
},
|
||||
{
|
||||
key: 'reason',
|
||||
prompt: 'What do you want to set the reason as?',
|
||||
type: 'string',
|
||||
validate: (reason) => {
|
||||
if (reason.length < 140) return true;
|
||||
else return 'Reason must be under 140 characters.';
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'unban',
|
||||
aliases: ['unbanne'],
|
||||
group: 'moderation',
|
||||
memberName: 'unban',
|
||||
description: 'Unbans a user and logs the unban to the mod logs.',
|
||||
guildOnly: true,
|
||||
clientPermissions: ['BAN_MEMBERS'],
|
||||
userPermissions: ['BAN_MEMBERS'],
|
||||
args: [
|
||||
{
|
||||
key: 'id',
|
||||
prompt: 'What is the id of the member you want to unban?',
|
||||
type: 'string'
|
||||
},
|
||||
{
|
||||
key: 'reason',
|
||||
prompt: 'What do you want to set the reason as?',
|
||||
type: 'string',
|
||||
validate: reason => {
|
||||
if (reason.length < 140) return true;
|
||||
return 'Reason must be under 140 characters.';
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const modlogs = msg.guild.channels.filter((c) => {
|
||||
const topic = c.topic || '';
|
||||
if (topic.includes('<modlog>')) return true;
|
||||
else return false;
|
||||
}).first() || msg.guild.channels.find('name', 'mod-log');
|
||||
const { id, reason } = args;
|
||||
const bans = await msg.guild.fetchBans();
|
||||
if (!bans.has(id)) return msg.say('This ID is not in the Guild Banlist.');
|
||||
const member = bans.get(id).user;
|
||||
await msg.say(`Are you sure you want to unban ${member.tag} (${member.id})?`);
|
||||
const msgs = await msg.channel.awaitMessages((res) => res.author.id === msg.author.id, {
|
||||
max: 1,
|
||||
time: 30000
|
||||
});
|
||||
if (!msgs.size || !['y', 'yes'].includes(msgs.first().content.toLowerCase())) return msg.say('Aborting.');
|
||||
await msg.guild.unban(member, `${msg.author.tag}: ${reason}`);
|
||||
await msg.say(`Successfully unbanned ${member.user.tag}.`);
|
||||
if (!modlogs || !modlogs.permissionsFor(this.client.user).has('SEND_MESSAGES')) {
|
||||
return msg.say('Could not log the unban to the mod logs.');
|
||||
} else if (modlogs.permissionsFor(this.client.user).has('EMBED_LINKS')) {
|
||||
const embed = new MessageEmbed()
|
||||
.setAuthor(msg.author.tag, msg.author.displayAvatarURL())
|
||||
.setColor(0x00AE86)
|
||||
.setTimestamp()
|
||||
.setDescription(stripIndents`
|
||||
**Member:** ${member.user.tag} (${member.id})
|
||||
**Action:** Unban
|
||||
**Reason:** ${reason}
|
||||
`);
|
||||
return modlogs.send({ embed });
|
||||
} else {
|
||||
return modlogs.send(stripIndents`
|
||||
**Member:** ${member.user.tag} (${member.id})
|
||||
**Action:** Unban
|
||||
**Reason:** ${reason}
|
||||
**Moderator:** ${msg.author.tag}
|
||||
`);
|
||||
}
|
||||
}
|
||||
async run(msg, args) {
|
||||
const modlogs = msg.guild.channels.filter(c => {
|
||||
const topic = c.topic || '';
|
||||
if (topic.includes('<modlog>')) return true;
|
||||
return false;
|
||||
}).first() || msg.guild.channels.find('name', 'mod-log');
|
||||
const { id, reason } = args;
|
||||
const bans = await msg.guild.fetchBans();
|
||||
if (!bans.has(id)) return msg.say('This ID is not in the Guild Banlist.');
|
||||
const member = bans.get(id).user;
|
||||
await msg.say(`Are you sure you want to unban ${member.tag} (${member.id})?`);
|
||||
const msgs = await msg.channel.awaitMessages(res => res.author.id === msg.author.id, {
|
||||
max: 1,
|
||||
time: 30000
|
||||
});
|
||||
if (!msgs.size || !['y', 'yes'].includes(msgs.first().content.toLowerCase())) return msg.say('Aborting.');
|
||||
await msg.guild.unban(member, `${msg.author.tag}: ${reason}`);
|
||||
await msg.say(`Successfully unbanned ${member.user.tag}.`);
|
||||
if (!modlogs || !modlogs.permissionsFor(this.client.user).has('SEND_MESSAGES')) {
|
||||
return msg.say('Could not log the unban to the mod logs.');
|
||||
} else if (modlogs.permissionsFor(this.client.user).has('EMBED_LINKS')) {
|
||||
const embed = new MessageEmbed()
|
||||
.setAuthor(msg.author.tag, msg.author.displayAvatarURL())
|
||||
.setColor(0x00AE86)
|
||||
.setTimestamp()
|
||||
.setDescription(stripIndents`
|
||||
**Member:** ${member.user.tag} (${member.id})
|
||||
**Action:** Unban
|
||||
**Reason:** ${reason}
|
||||
`);
|
||||
return modlogs.send({ embed });
|
||||
} else {
|
||||
return modlogs.send(stripIndents`
|
||||
**Member:** ${member.user.tag} (${member.id})
|
||||
**Action:** Unban
|
||||
**Reason:** ${reason}
|
||||
**Moderator:** ${msg.author.tag}
|
||||
`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
+71
-71
@@ -3,76 +3,76 @@ const { MessageEmbed } = require('discord.js');
|
||||
const { stripIndents } = require('common-tags');
|
||||
|
||||
module.exports = class WarnCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'warn',
|
||||
aliases: ['warnne'],
|
||||
group: 'moderation',
|
||||
memberName: 'warn',
|
||||
description: 'Warns a user and logs the warn to the mod logs.',
|
||||
guildOnly: true,
|
||||
userPermissions: ['KICK_MEMBERS'],
|
||||
args: [
|
||||
{
|
||||
key: 'member',
|
||||
prompt: 'What member do you want to warn?',
|
||||
type: 'member'
|
||||
},
|
||||
{
|
||||
key: 'reason',
|
||||
prompt: 'What do you want to set the reason as?',
|
||||
type: 'string',
|
||||
validate: (reason) => {
|
||||
if (reason.length < 140) return true;
|
||||
else return 'Invalid Reason. Reason must be under 140 characters.';
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'warn',
|
||||
aliases: ['warnne'],
|
||||
group: 'moderation',
|
||||
memberName: 'warn',
|
||||
description: 'Warns a user and logs the warn to the mod logs.',
|
||||
guildOnly: true,
|
||||
userPermissions: ['KICK_MEMBERS'],
|
||||
args: [
|
||||
{
|
||||
key: 'member',
|
||||
prompt: 'What member do you want to warn?',
|
||||
type: 'member'
|
||||
},
|
||||
{
|
||||
key: 'reason',
|
||||
prompt: 'What do you want to set the reason as?',
|
||||
type: 'string',
|
||||
validate: reason => {
|
||||
if (reason.length < 140) return true;
|
||||
return 'Invalid Reason. Reason must be under 140 characters.';
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const modlogs = msg.guild.channels.filter((c) => {
|
||||
const topic = c.topic || '';
|
||||
if (topic.includes('<modlog>')) return true;
|
||||
else return false;
|
||||
}).first() || msg.guild.channels.find('name', 'mod-log');
|
||||
const { member, reason } = args;
|
||||
await msg.say(`Are you sure you want to warn ${member.user.tag} (${member.id})?`);
|
||||
const msgs = await msg.channel.awaitMessages((res) => res.author.id === msg.author.id, {
|
||||
max: 1,
|
||||
time: 30000
|
||||
});
|
||||
if (!msgs.size || !['y', 'yes'].includes(msgs.first().content.toLowerCase())) return msg.say('Aborting.');
|
||||
try {
|
||||
await member.user.send(stripIndents`
|
||||
You were warned in ${msg.guild.name}!
|
||||
Reason: ${reason}
|
||||
`);
|
||||
} catch (err) {
|
||||
await msg.say('Failed to Send DM.');
|
||||
}
|
||||
await msg.say(`Successfully warned ${member.user.tag}.`);
|
||||
if (!modlogs || !modlogs.permissionsFor(this.client.user).has('SEND_MESSAGES')) {
|
||||
return msg.say('Could not log the warn to the mod logs.');
|
||||
} else if (modlogs.permissionsFor(this.client.user).has('EMBED_LINKS')) {
|
||||
const embed = new MessageEmbed()
|
||||
.setAuthor(msg.author.tag, msg.author.displayAvatarURL())
|
||||
.setColor(0xFFFF00)
|
||||
.setTimestamp()
|
||||
.setDescription(stripIndents`
|
||||
**Member:** ${member.user.tag} (${member.id})
|
||||
**Action:** Warn
|
||||
**Reason:** ${reason}
|
||||
`);
|
||||
return modlogs.send({ embed });
|
||||
} else {
|
||||
return modlogs.send(stripIndents`
|
||||
**Member:** ${member.user.tag} (${member.id})
|
||||
**Action:** Warn
|
||||
**Reason:** ${reason}
|
||||
**Moderator:** ${msg.author.tag}
|
||||
`);
|
||||
}
|
||||
}
|
||||
async run(msg, args) {
|
||||
const modlogs = msg.guild.channels.filter(c => {
|
||||
const topic = c.topic || '';
|
||||
if (topic.includes('<modlog>')) return true;
|
||||
return false;
|
||||
}).first() || msg.guild.channels.find('name', 'mod-log');
|
||||
const { member, reason } = args;
|
||||
await msg.say(`Are you sure you want to warn ${member.user.tag} (${member.id})?`);
|
||||
const msgs = await msg.channel.awaitMessages(res => res.author.id === msg.author.id, {
|
||||
max: 1,
|
||||
time: 30000
|
||||
});
|
||||
if (!msgs.size || !['y', 'yes'].includes(msgs.first().content.toLowerCase())) return msg.say('Aborting.');
|
||||
try {
|
||||
await member.user.send(stripIndents`
|
||||
You were warned in ${msg.guild.name}!
|
||||
Reason: ${reason}
|
||||
`);
|
||||
} catch (err) {
|
||||
await msg.say('Failed to Send DM.');
|
||||
}
|
||||
await msg.say(`Successfully warned ${member.user.tag}.`);
|
||||
if (!modlogs || !modlogs.permissionsFor(this.client.user).has('SEND_MESSAGES')) {
|
||||
return msg.say('Could not log the warn to the mod logs.');
|
||||
} else if (modlogs.permissionsFor(this.client.user).has('EMBED_LINKS')) {
|
||||
const embed = new MessageEmbed()
|
||||
.setAuthor(msg.author.tag, msg.author.displayAvatarURL())
|
||||
.setColor(0xFFFF00)
|
||||
.setTimestamp()
|
||||
.setDescription(stripIndents`
|
||||
**Member:** ${member.user.tag} (${member.id})
|
||||
**Action:** Warn
|
||||
**Reason:** ${reason}
|
||||
`);
|
||||
return modlogs.send({ embed });
|
||||
} else {
|
||||
return modlogs.send(stripIndents`
|
||||
**Member:** ${member.user.tag} (${member.id})
|
||||
**Action:** Warn
|
||||
**Reason:** ${reason}
|
||||
**Moderator:** ${msg.author.tag}
|
||||
`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -3,52 +3,52 @@ const snekfetch = require('snekfetch');
|
||||
const codes = require('../../assets/json/currency');
|
||||
|
||||
module.exports = class CurrencyCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'currency',
|
||||
group: 'num-edit',
|
||||
memberName: 'currency',
|
||||
description: 'Converts a number from one currency to another.',
|
||||
details: `**Codes:** ${codes.join(', ')}`,
|
||||
args: [
|
||||
{
|
||||
key: 'base',
|
||||
prompt: 'What currency code do you want to use as the base?',
|
||||
type: 'string',
|
||||
validate: (base) => {
|
||||
if (codes.includes(base.toUpperCase())) return true;
|
||||
else return 'Invalid Currency Code. Use `help currency` to view a list of currency codes.';
|
||||
},
|
||||
parse: (base) => base.toUpperCase()
|
||||
},
|
||||
{
|
||||
key: 'to',
|
||||
prompt: 'What currency code do you want to convert to?',
|
||||
type: 'string',
|
||||
validate: (to) => {
|
||||
if (codes.includes(to.toUpperCase())) return true;
|
||||
else return 'Invalid Currency Code. Use `help currency` to view a list of currency codes.';
|
||||
},
|
||||
parse: (to) => to.toUpperCase()
|
||||
},
|
||||
{
|
||||
key: 'amount',
|
||||
prompt: 'How much money should be converted? Do not use symbols.',
|
||||
type: 'integer'
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'currency',
|
||||
group: 'num-edit',
|
||||
memberName: 'currency',
|
||||
description: 'Converts a number from one currency to another.',
|
||||
details: `**Codes:** ${codes.join(', ')}`,
|
||||
args: [
|
||||
{
|
||||
key: 'base',
|
||||
prompt: 'What currency code do you want to use as the base?',
|
||||
type: 'string',
|
||||
validate: base => {
|
||||
if (codes.includes(base.toUpperCase())) return true;
|
||||
return 'Invalid Currency Code. Use `help currency` to view a list of currency codes.';
|
||||
},
|
||||
parse: base => base.toUpperCase()
|
||||
},
|
||||
{
|
||||
key: 'to',
|
||||
prompt: 'What currency code do you want to convert to?',
|
||||
type: 'string',
|
||||
validate: to => {
|
||||
if (codes.includes(to.toUpperCase())) return true;
|
||||
return 'Invalid Currency Code. Use `help currency` to view a list of currency codes.';
|
||||
},
|
||||
parse: to => to.toUpperCase()
|
||||
},
|
||||
{
|
||||
key: 'amount',
|
||||
prompt: 'How much money should be converted? Do not use symbols.',
|
||||
type: 'integer'
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const { base, to, amount } = args;
|
||||
if (base === to) return msg.say(`Converting ${base} to ${to} is the same value, dummy.`);
|
||||
const { body } = await snekfetch
|
||||
.get('http://api.fixer.io/latest')
|
||||
.query({
|
||||
base,
|
||||
symbols: to
|
||||
});
|
||||
return msg.say(`${amount} ${base} is ${amount * body.rates[to]} ${to}.`);
|
||||
}
|
||||
async run(msg, args) {
|
||||
const { base, to, amount } = args;
|
||||
if (base === to) return msg.say(`Converting ${base} to ${to} is the same value, dummy.`);
|
||||
const { body } = await snekfetch
|
||||
.get('http://api.fixer.io/latest')
|
||||
.query({
|
||||
base,
|
||||
symbols: to
|
||||
});
|
||||
return msg.say(`${amount} ${base} is ${amount * body.rates[to]} ${to}.`);
|
||||
}
|
||||
};
|
||||
|
||||
+24
-24
@@ -2,29 +2,29 @@ const Command = require('../../structures/Command');
|
||||
const math = require('mathjs');
|
||||
|
||||
module.exports = class MathCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'math',
|
||||
group: 'num-edit',
|
||||
memberName: 'math',
|
||||
description: 'Evaluates math expressions.',
|
||||
args: [
|
||||
{
|
||||
key: 'expression',
|
||||
prompt: 'What do you want to answer?',
|
||||
type: 'string'
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'math',
|
||||
group: 'num-edit',
|
||||
memberName: 'math',
|
||||
description: 'Evaluates math expressions.',
|
||||
args: [
|
||||
{
|
||||
key: 'expression',
|
||||
prompt: 'What do you want to answer?',
|
||||
type: 'string'
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
run(msg, args) {
|
||||
const { expression } = args;
|
||||
try {
|
||||
const solved = math.eval(expression).toString();
|
||||
return msg.say(solved).catch(() => msg.say('Invalid Statement'));
|
||||
} catch (err) {
|
||||
return msg.say('Invalid Statement');
|
||||
}
|
||||
}
|
||||
run(msg, args) {
|
||||
const { expression } = args;
|
||||
try {
|
||||
const solved = math.eval(expression).toString();
|
||||
return msg.say(solved).catch(() => msg.say('Invalid Statement'));
|
||||
} catch (err) {
|
||||
return msg.say('Invalid Statement');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,55 +1,55 @@
|
||||
const Command = require('../../structures/Command');
|
||||
|
||||
module.exports = class TemperatureCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'temperature',
|
||||
group: 'num-edit',
|
||||
memberName: 'temperature',
|
||||
description: 'Converts temperatures to/from Celsius, Fahrenheit, or Kelvin.',
|
||||
args: [
|
||||
{
|
||||
key: 'base',
|
||||
prompt: 'What temperature unit do you want to use as the base?',
|
||||
type: 'string',
|
||||
validate: (base) => {
|
||||
if (['celsius', 'fahrenheit', 'kelvin'].includes(base.toLowerCase())) return true;
|
||||
else return 'Please enter either celsius, fahrenheit, or kelvin.';
|
||||
},
|
||||
parse: (base) => base.toLowerCase()
|
||||
},
|
||||
{
|
||||
key: 'to',
|
||||
prompt: 'What temperature unit do you want to convert to?',
|
||||
type: 'string',
|
||||
validate: (to) => {
|
||||
if (['celsius', 'fahrenheit', 'kelvin'].includes(to.toLowerCase())) return true;
|
||||
else return 'Please enter either celsius, fahrenheit, or kelvin.';
|
||||
},
|
||||
parse: (to) => to.toLowerCase()
|
||||
},
|
||||
{
|
||||
key: 'amount',
|
||||
prompt: 'What temperature should be converted?',
|
||||
type: 'integer'
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'temperature',
|
||||
group: 'num-edit',
|
||||
memberName: 'temperature',
|
||||
description: 'Converts temperatures to/from Celsius, Fahrenheit, or Kelvin.',
|
||||
args: [
|
||||
{
|
||||
key: 'base',
|
||||
prompt: 'What temperature unit do you want to use as the base?',
|
||||
type: 'string',
|
||||
validate: base => {
|
||||
if (['celsius', 'fahrenheit', 'kelvin'].includes(base.toLowerCase())) return true;
|
||||
return 'Please enter either celsius, fahrenheit, or kelvin.';
|
||||
},
|
||||
parse: base => base.toLowerCase()
|
||||
},
|
||||
{
|
||||
key: 'to',
|
||||
prompt: 'What temperature unit do you want to convert to?',
|
||||
type: 'string',
|
||||
validate: to => {
|
||||
if (['celsius', 'fahrenheit', 'kelvin'].includes(to.toLowerCase())) return true;
|
||||
return 'Please enter either celsius, fahrenheit, or kelvin.';
|
||||
},
|
||||
parse: to => to.toLowerCase()
|
||||
},
|
||||
{
|
||||
key: 'amount',
|
||||
prompt: 'What temperature should be converted?',
|
||||
type: 'integer'
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
run(msg, args) { // eslint-disable-line consistent-return
|
||||
const { base, to, amount } = args;
|
||||
if (base === to) {
|
||||
return msg.say(`Converting ${base} to ${to} is the same value, dummy.`);
|
||||
} else if (base === 'celsius') {
|
||||
if (to === 'fahrenheit') return msg.say(`${amount}°C is ${(amount * 1.8) + 32}°F.`);
|
||||
else if (to === 'kelvin') return msg.say(`${amount}°C is ${amount + 273.15}°K.`);
|
||||
} else if (base === 'fahrenheit') {
|
||||
if (to === 'celsius') return msg.say(`${amount}°F is ${(amount - 32) / 1.8}°C.`);
|
||||
else if (to === 'kelvin') return msg.say(`${amount}°F is ${(amount + 459.67) * (5 / 9)}°K.`);
|
||||
} else if (base === 'kelvin') {
|
||||
if (to === 'celsius') return msg.say(`${amount}°K is ${amount - 273.15}°C.`);
|
||||
else if (to === 'fahrenheit') return msg.say(`${amount}°K is ${(amount * 1.8) - 459.67}°F.`);
|
||||
}
|
||||
}
|
||||
run(msg, args) { // eslint-disable-line consistent-return
|
||||
const { base, to, amount } = args;
|
||||
if (base === to) {
|
||||
return msg.say(`Converting ${base} to ${to} is the same value, dummy.`);
|
||||
} else if (base === 'celsius') {
|
||||
if (to === 'fahrenheit') return msg.say(`${amount}°C is ${(amount * 1.8) + 32}°F.`);
|
||||
else if (to === 'kelvin') return msg.say(`${amount}°C is ${amount + 273.15}°K.`);
|
||||
} else if (base === 'fahrenheit') {
|
||||
if (to === 'celsius') return msg.say(`${amount}°F is ${(amount - 32) / 1.8}°C.`);
|
||||
else if (to === 'kelvin') return msg.say(`${amount}°F is ${(amount + 459.67) * (5 / 9)}°K.`);
|
||||
} else if (base === 'kelvin') {
|
||||
if (to === 'celsius') return msg.say(`${amount}°K is ${amount - 273.15}°C.`);
|
||||
else if (to === 'fahrenheit') return msg.say(`${amount}°K is ${(amount * 1.8) - 459.67}°F.`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
+14
-14
@@ -2,19 +2,19 @@ const Command = require('../../structures/Command');
|
||||
const snekfetch = require('snekfetch');
|
||||
|
||||
module.exports = class CatCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'cat',
|
||||
aliases: ['neko'],
|
||||
group: 'random-img',
|
||||
memberName: 'cat',
|
||||
description: 'Responds with a random cat image.'
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'cat',
|
||||
aliases: ['neko'],
|
||||
group: 'random-img',
|
||||
memberName: 'cat',
|
||||
description: 'Responds with a random cat image.'
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg) {
|
||||
const { body } = await snekfetch
|
||||
.get('http://random.cat/meow');
|
||||
return msg.say(body.file);
|
||||
}
|
||||
async run(msg) {
|
||||
const { body } = await snekfetch
|
||||
.get('http://random.cat/meow');
|
||||
return msg.say(body.file);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -3,36 +3,36 @@ const { stripIndents } = require('common-tags');
|
||||
const snekfetch = require('snekfetch');
|
||||
|
||||
module.exports = class DanbooruCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'danbooru',
|
||||
group: 'random-img',
|
||||
memberName: 'danbooru',
|
||||
description: 'Searches Danbooru with optional query.',
|
||||
nsfw: true,
|
||||
args: [
|
||||
{
|
||||
key: 'query',
|
||||
prompt: 'What would you like to search for?',
|
||||
type: 'string',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'danbooru',
|
||||
group: 'random-img',
|
||||
memberName: 'danbooru',
|
||||
description: 'Searches Danbooru with optional query.',
|
||||
nsfw: true,
|
||||
args: [
|
||||
{
|
||||
key: 'query',
|
||||
prompt: 'What would you like to search for?',
|
||||
type: 'string',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const { query } = args;
|
||||
const { body } = await snekfetch
|
||||
.get('https://danbooru.donmai.us/posts.json')
|
||||
.query({
|
||||
tags: `${query ? `${query} ` : ''}order:random`,
|
||||
limit: 1
|
||||
});
|
||||
if (!body.length || !body[0].file_url) return msg.say('No Results');
|
||||
return msg.say(stripIndents`
|
||||
${query ? `Result for ${query}:` : 'Random Image:'}
|
||||
https://danbooru.donmai.us${body[0].file_url}
|
||||
`);
|
||||
}
|
||||
async run(msg, args) {
|
||||
const { query } = args;
|
||||
const { body } = await snekfetch
|
||||
.get('https://danbooru.donmai.us/posts.json')
|
||||
.query({
|
||||
tags: `${query ? `${query} ` : ''}order:random`,
|
||||
limit: 1
|
||||
});
|
||||
if (!body.length || !body[0].file_url) return msg.say('No Results');
|
||||
return msg.say(stripIndents`
|
||||
${query ? `Result for ${query}:` : 'Random Image:'}
|
||||
https://danbooru.donmai.us${body[0].file_url}
|
||||
`);
|
||||
}
|
||||
};
|
||||
|
||||
+13
-13
@@ -2,18 +2,18 @@ const Command = require('../../structures/Command');
|
||||
const snekfetch = require('snekfetch');
|
||||
|
||||
module.exports = class DogCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'dog',
|
||||
group: 'random-img',
|
||||
memberName: 'dog',
|
||||
description: 'Responds with a random dog image.'
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'dog',
|
||||
group: 'random-img',
|
||||
memberName: 'dog',
|
||||
description: 'Responds with a random dog image.'
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg) {
|
||||
const { body } = await snekfetch
|
||||
.get('https://random.dog/woof.json');
|
||||
return msg.say(body.url);
|
||||
}
|
||||
async run(msg) {
|
||||
const { body } = await snekfetch
|
||||
.get('https://random.dog/woof.json');
|
||||
return msg.say(body.url);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -5,40 +5,40 @@ const { promisifyAll } = require('tsubaki');
|
||||
const xml = promisifyAll(require('xml2js'));
|
||||
|
||||
module.exports = class GelbooruCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'gelbooru',
|
||||
group: 'random-img',
|
||||
memberName: 'gelbooru',
|
||||
description: 'Searches Gelbooru with optional query.',
|
||||
nsfw: true,
|
||||
args: [
|
||||
{
|
||||
key: 'query',
|
||||
prompt: 'What would you like to search for?',
|
||||
type: 'string',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'gelbooru',
|
||||
group: 'random-img',
|
||||
memberName: 'gelbooru',
|
||||
description: 'Searches Gelbooru with optional query.',
|
||||
nsfw: true,
|
||||
args: [
|
||||
{
|
||||
key: 'query',
|
||||
prompt: 'What would you like to search for?',
|
||||
type: 'string',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const { query } = args;
|
||||
const { text } = await snekfetch
|
||||
.get('https://gelbooru.com/index.php')
|
||||
.query({
|
||||
page: 'dapi',
|
||||
s: 'post',
|
||||
q: 'index',
|
||||
tags: query,
|
||||
limit: 200
|
||||
});
|
||||
const { posts } = await xml.parseStringAsync(text);
|
||||
if (posts.$.count === '0') return msg.say('No Results.');
|
||||
return msg.say(stripIndents`
|
||||
${query ? `Result for ${query}:` : 'Random Image:'}
|
||||
https:${posts.post[Math.floor(Math.random() * posts.post.length)].$.file_url}
|
||||
`);
|
||||
}
|
||||
async run(msg, args) {
|
||||
const { query } = args;
|
||||
const { text } = await snekfetch
|
||||
.get('https://gelbooru.com/index.php')
|
||||
.query({
|
||||
page: 'dapi',
|
||||
s: 'post',
|
||||
q: 'index',
|
||||
tags: query,
|
||||
limit: 200
|
||||
});
|
||||
const { posts } = await xml.parseStringAsync(text);
|
||||
if (posts.$.count === '0') return msg.say('No Results.');
|
||||
return msg.say(stripIndents`
|
||||
${query ? `Result for ${query}:` : 'Random Image:'}
|
||||
https:${posts.post[Math.floor(Math.random() * posts.post.length)].$.file_url}
|
||||
`);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -3,36 +3,36 @@ const { stripIndents } = require('common-tags');
|
||||
const snekfetch = require('snekfetch');
|
||||
|
||||
module.exports = class KonachanCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'konachan',
|
||||
group: 'random-img',
|
||||
memberName: 'konachan',
|
||||
description: 'Searches Konachan with optional query.',
|
||||
nsfw: true,
|
||||
args: [
|
||||
{
|
||||
key: 'query',
|
||||
prompt: 'What would you like to search for?',
|
||||
type: 'string',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'konachan',
|
||||
group: 'random-img',
|
||||
memberName: 'konachan',
|
||||
description: 'Searches Konachan with optional query.',
|
||||
nsfw: true,
|
||||
args: [
|
||||
{
|
||||
key: 'query',
|
||||
prompt: 'What would you like to search for?',
|
||||
type: 'string',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const { query } = args;
|
||||
const { body } = await snekfetch
|
||||
.get('https://konachan.net/post.json')
|
||||
.query({
|
||||
tags: `${query ? `${query} ` : ''}order:random`,
|
||||
limit: 1
|
||||
});
|
||||
if (!body.length) return msg.say('No Results.');
|
||||
return msg.say(stripIndents`
|
||||
${query ? `Result for ${query}:` : 'Random Image:'}
|
||||
https:${body[0].file_url}
|
||||
`);
|
||||
}
|
||||
async run(msg, args) {
|
||||
const { query } = args;
|
||||
const { body } = await snekfetch
|
||||
.get('https://konachan.net/post.json')
|
||||
.query({
|
||||
tags: `${query ? `${query} ` : ''}order:random`,
|
||||
limit: 1
|
||||
});
|
||||
if (!body.length) return msg.say('No Results.');
|
||||
return msg.say(stripIndents`
|
||||
${query ? `Result for ${query}:` : 'Random Image:'}
|
||||
https:${body[0].file_url}
|
||||
`);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -5,40 +5,40 @@ const { promisifyAll } = require('tsubaki');
|
||||
const xml = promisifyAll(require('xml2js'));
|
||||
|
||||
module.exports = class Rule34Command extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'rule34',
|
||||
group: 'random-img',
|
||||
memberName: 'rule34',
|
||||
description: 'Searches Rule34 with optional query.',
|
||||
nsfw: true,
|
||||
args: [
|
||||
{
|
||||
key: 'query',
|
||||
prompt: 'What would you like to search for?',
|
||||
type: 'string',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'rule34',
|
||||
group: 'random-img',
|
||||
memberName: 'rule34',
|
||||
description: 'Searches Rule34 with optional query.',
|
||||
nsfw: true,
|
||||
args: [
|
||||
{
|
||||
key: 'query',
|
||||
prompt: 'What would you like to search for?',
|
||||
type: 'string',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const { query } = args;
|
||||
const { text } = await snekfetch
|
||||
.get('https://rule34.xxx/index.php')
|
||||
.query({
|
||||
page: 'dapi',
|
||||
s: 'post',
|
||||
q: 'index',
|
||||
tags: query,
|
||||
limit: 200
|
||||
});
|
||||
const { posts } = await xml.parseStringAsync(text);
|
||||
if (posts.$.count === '0') return msg.say('No Results.');
|
||||
return msg.say(stripIndents`
|
||||
${query ? `Result for ${query}:` : 'Random Image:'}
|
||||
https:${posts.post[Math.floor(Math.random() * posts.post.length)].$.file_url}
|
||||
`);
|
||||
}
|
||||
async run(msg, args) {
|
||||
const { query } = args;
|
||||
const { text } = await snekfetch
|
||||
.get('https://rule34.xxx/index.php')
|
||||
.query({
|
||||
page: 'dapi',
|
||||
s: 'post',
|
||||
q: 'index',
|
||||
tags: query,
|
||||
limit: 200
|
||||
});
|
||||
const { posts } = await xml.parseStringAsync(text);
|
||||
if (posts.$.count === '0') return msg.say('No Results.');
|
||||
return msg.say(stripIndents`
|
||||
${query ? `Result for ${query}:` : 'Random Image:'}
|
||||
https:${posts.post[Math.floor(Math.random() * posts.post.length)].$.file_url}
|
||||
`);
|
||||
}
|
||||
};
|
||||
|
||||
+14
-14
@@ -2,19 +2,19 @@ const Command = require('../../structures/Command');
|
||||
const xiaos = require('../../assets/json/xiao');
|
||||
|
||||
module.exports = class XiaoCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'xiao',
|
||||
aliases: ['xiao-pai', 'iao'],
|
||||
group: 'random-img',
|
||||
memberName: 'xiao',
|
||||
description: 'Responds with a random image of Xiao Pai.',
|
||||
clientPermissions: ['ATTACH_FILES']
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'xiao',
|
||||
aliases: ['xiao-pai', 'iao'],
|
||||
group: 'random-img',
|
||||
memberName: 'xiao',
|
||||
description: 'Responds with a random image of Xiao Pai.',
|
||||
clientPermissions: ['ATTACH_FILES']
|
||||
});
|
||||
}
|
||||
|
||||
run(msg) {
|
||||
const xiao = xiaos[Math.floor(Math.random() * xiaos.length)];
|
||||
return msg.say({ files: [xiao] });
|
||||
}
|
||||
run(msg) {
|
||||
const xiao = xiaos[Math.floor(Math.random() * xiaos.length)];
|
||||
return msg.say({ files: [xiao] });
|
||||
}
|
||||
};
|
||||
|
||||
@@ -3,28 +3,28 @@ const { stripIndents } = require('common-tags');
|
||||
const answers = require('../../assets/json/8-ball');
|
||||
|
||||
module.exports = class MagicBallCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: '8-ball',
|
||||
group: 'random-res',
|
||||
memberName: '8-ball',
|
||||
description: 'Asks your question to the Magic 8 Ball.',
|
||||
args: [
|
||||
{
|
||||
key: 'question',
|
||||
prompt: 'What do you want to ask the 8 ball?',
|
||||
type: 'string'
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: '8-ball',
|
||||
group: 'random-res',
|
||||
memberName: '8-ball',
|
||||
description: 'Asks your question to the Magic 8 Ball.',
|
||||
args: [
|
||||
{
|
||||
key: 'question',
|
||||
prompt: 'What do you want to ask the 8 ball?',
|
||||
type: 'string'
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
run(msg, args) {
|
||||
const { question } = args;
|
||||
const answer = answers[Math.floor(Math.random() * answers.length)];
|
||||
return msg.say(stripIndents`
|
||||
Question: ${question}
|
||||
:8ball: ${answer} :8ball:
|
||||
`);
|
||||
}
|
||||
run(msg, args) {
|
||||
const { question } = args;
|
||||
const answer = answers[Math.floor(Math.random() * answers.length)];
|
||||
return msg.say(stripIndents`
|
||||
Question: ${question}
|
||||
:8ball: ${answer} :8ball:
|
||||
`);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
const Command = require('../../structures/Command');
|
||||
|
||||
module.exports = class ChooseCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'choose',
|
||||
group: 'random-res',
|
||||
memberName: 'choose',
|
||||
description: 'Chooses between options you provide.',
|
||||
args: [
|
||||
{
|
||||
key: 'choices',
|
||||
prompt: 'What choices do you want me pick from?',
|
||||
type: 'string',
|
||||
infinite: true
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'choose',
|
||||
group: 'random-res',
|
||||
memberName: 'choose',
|
||||
description: 'Chooses between options you provide.',
|
||||
args: [
|
||||
{
|
||||
key: 'choices',
|
||||
prompt: 'What choices do you want me pick from?',
|
||||
type: 'string',
|
||||
infinite: true
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
run(msg, args) {
|
||||
const { choices } = args;
|
||||
const choice = choices[Math.floor(Math.random() * choices.length)];
|
||||
return msg.say(`I choose ${choice}!`);
|
||||
}
|
||||
run(msg, args) {
|
||||
const { choices } = args;
|
||||
const choice = choices[Math.floor(Math.random() * choices.length)];
|
||||
return msg.say(`I choose ${choice}!`);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2,32 +2,32 @@ const Command = require('../../structures/Command');
|
||||
const snekfetch = require('snekfetch');
|
||||
|
||||
module.exports = class ChuckNorrisCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'chuck-norris',
|
||||
aliases: ['chuck', 'norris'],
|
||||
group: 'random-res',
|
||||
memberName: 'chuck-norris',
|
||||
description: 'Responds with a Chuck Norris quote.',
|
||||
args: [
|
||||
{
|
||||
key: 'name',
|
||||
prompt: 'What would you like the name to be?',
|
||||
type: 'string',
|
||||
default: 'Chuck'
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'chuck-norris',
|
||||
aliases: ['chuck', 'norris'],
|
||||
group: 'random-res',
|
||||
memberName: 'chuck-norris',
|
||||
description: 'Responds with a Chuck Norris quote.',
|
||||
args: [
|
||||
{
|
||||
key: 'name',
|
||||
prompt: 'What would you like the name to be?',
|
||||
type: 'string',
|
||||
default: 'Chuck'
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const { name } = args;
|
||||
const { body } = await snekfetch
|
||||
.get('http://api.icndb.com/jokes/random')
|
||||
.query({
|
||||
escape: 'javascript',
|
||||
firstName: name
|
||||
});
|
||||
return msg.say(body.value.joke);
|
||||
}
|
||||
async run(msg, args) {
|
||||
const { name } = args;
|
||||
const { body } = await snekfetch
|
||||
.get('http://api.icndb.com/jokes/random')
|
||||
.query({
|
||||
escape: 'javascript',
|
||||
firstName: name
|
||||
});
|
||||
return msg.say(body.value.joke);
|
||||
}
|
||||
};
|
||||
|
||||
+13
-13
@@ -2,18 +2,18 @@ const Command = require('../../structures/Command');
|
||||
const sides = ['heads', 'tails'];
|
||||
|
||||
module.exports = class CoinFlipCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'coin',
|
||||
aliases: ['coin-flip', 'flip'],
|
||||
group: 'random-res',
|
||||
memberName: 'coin',
|
||||
description: 'Flips a coin.'
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'coin',
|
||||
aliases: ['coin-flip', 'flip'],
|
||||
group: 'random-res',
|
||||
memberName: 'coin',
|
||||
description: 'Flips a coin.'
|
||||
});
|
||||
}
|
||||
|
||||
run(msg) {
|
||||
const side = sides[Math.floor(Math.random() * sides.length)];
|
||||
return msg.say(`It landed on ${side}!`);
|
||||
}
|
||||
run(msg) {
|
||||
const side = sides[Math.floor(Math.random() * sides.length)];
|
||||
return msg.say(`It landed on ${side}!`);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2,26 +2,26 @@ const Command = require('../../structures/Command');
|
||||
const compliments = require('../../assets/json/compliment');
|
||||
|
||||
module.exports = class ComplimentCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'compliment',
|
||||
group: 'random-res',
|
||||
memberName: 'compliment',
|
||||
description: 'Compliments a user.',
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'What user do you want to compliment?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'compliment',
|
||||
group: 'random-res',
|
||||
memberName: 'compliment',
|
||||
description: 'Compliments a user.',
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'What user do you want to compliment?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const compliment = compliments[Math.floor(Math.random() * compliments.length)];
|
||||
return msg.say(`${user.username}, ${compliment}`);
|
||||
}
|
||||
run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const compliment = compliments[Math.floor(Math.random() * compliments.length)];
|
||||
return msg.say(`${user.username}, ${compliment}`);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2,17 +2,17 @@ const Command = require('../../structures/Command');
|
||||
const facts = require('../../assets/json/fact-core');
|
||||
|
||||
module.exports = class FactCoreCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'fact-core',
|
||||
group: 'random-res',
|
||||
memberName: 'fact-core',
|
||||
description: 'Responds with a random Fact Core quote.'
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'fact-core',
|
||||
group: 'random-res',
|
||||
memberName: 'fact-core',
|
||||
description: 'Responds with a random Fact Core quote.'
|
||||
});
|
||||
}
|
||||
|
||||
run(msg) {
|
||||
const fact = facts[Math.floor(Math.random() * facts.length)];
|
||||
return msg.say(fact);
|
||||
}
|
||||
run(msg) {
|
||||
const fact = facts[Math.floor(Math.random() * facts.length)];
|
||||
return msg.say(fact);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2,18 +2,18 @@ const Command = require('../../structures/Command');
|
||||
const fortunes = require('../../assets/json/fortune');
|
||||
|
||||
module.exports = class FortuneCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'fortune',
|
||||
aliases: ['fortune-cookie'],
|
||||
group: 'random-res',
|
||||
memberName: 'fortune',
|
||||
description: 'Responds with a random fortune.'
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'fortune',
|
||||
aliases: ['fortune-cookie'],
|
||||
group: 'random-res',
|
||||
memberName: 'fortune',
|
||||
description: 'Responds with a random fortune.'
|
||||
});
|
||||
}
|
||||
|
||||
run(msg) {
|
||||
const fortune = fortunes[Math.floor(Math.random() * fortunes.length)];
|
||||
return msg.say(fortune);
|
||||
}
|
||||
run(msg) {
|
||||
const fortune = fortunes[Math.floor(Math.random() * fortunes.length)];
|
||||
return msg.say(fortune);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -3,28 +3,28 @@ const { stripIndents } = require('common-tags');
|
||||
const answers = require('../../assets/json/magic-conch');
|
||||
|
||||
module.exports = class MagicConchCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'magic-conch',
|
||||
group: 'random-res',
|
||||
memberName: 'magic-conch',
|
||||
description: 'Asks your question to the Magic Conch.',
|
||||
args: [
|
||||
{
|
||||
key: 'question',
|
||||
prompt: 'What do you want to ask the magic conch?',
|
||||
type: 'string'
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'magic-conch',
|
||||
group: 'random-res',
|
||||
memberName: 'magic-conch',
|
||||
description: 'Asks your question to the Magic Conch.',
|
||||
args: [
|
||||
{
|
||||
key: 'question',
|
||||
prompt: 'What do you want to ask the magic conch?',
|
||||
type: 'string'
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
run(msg, args) {
|
||||
const { question } = args;
|
||||
const answer = answers[Math.floor(Math.random() * answers.length)];
|
||||
return msg.say(stripIndents`
|
||||
Question: ${question}
|
||||
:shell: ${answer} :shell:
|
||||
`);
|
||||
}
|
||||
run(msg, args) {
|
||||
const { question } = args;
|
||||
const answer = answers[Math.floor(Math.random() * answers.length)];
|
||||
return msg.say(stripIndents`
|
||||
Question: ${question}
|
||||
:shell: ${answer} :shell:
|
||||
`);
|
||||
}
|
||||
};
|
||||
|
||||
+42
-42
@@ -2,47 +2,47 @@ const Command = require('../../structures/Command');
|
||||
const { lastNames, maleNames, femaleNames } = require('../../assets/json/name');
|
||||
|
||||
module.exports = class RandomNameCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'name',
|
||||
group: 'random-res',
|
||||
memberName: 'name',
|
||||
description: 'Responds with a random name, with the gender of your choice.',
|
||||
args: [
|
||||
{
|
||||
key: 'gender',
|
||||
prompt: 'Which gender do you want to generate a name for?',
|
||||
type: 'string',
|
||||
default: 'both',
|
||||
validate: (gender) => {
|
||||
if (['male', 'female', 'both'].includes(gender.toLowerCase())) return true;
|
||||
else return 'Please enter either male, female, or both.';
|
||||
},
|
||||
parse: (gender) => gender.toLowerCase()
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'name',
|
||||
group: 'random-res',
|
||||
memberName: 'name',
|
||||
description: 'Responds with a random name, with the gender of your choice.',
|
||||
args: [
|
||||
{
|
||||
key: 'gender',
|
||||
prompt: 'Which gender do you want to generate a name for?',
|
||||
type: 'string',
|
||||
default: 'both',
|
||||
validate: gender => {
|
||||
if (['male', 'female', 'both'].includes(gender.toLowerCase())) return true;
|
||||
return 'Please enter either male, female, or both.';
|
||||
},
|
||||
parse: gender => gender.toLowerCase()
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
run(msg, args) { // eslint-disable-line consistent-return
|
||||
const { gender } = args;
|
||||
const lastName = lastNames[Math.floor(Math.random() * lastNames.length)];
|
||||
if (gender === 'male') {
|
||||
const name = maleNames[Math.floor(Math.random() * maleNames.length)];
|
||||
return msg.say(`${name} ${lastName}`);
|
||||
} else if (gender === 'female') {
|
||||
const name = femaleNames[Math.floor(Math.random() * femaleNames.length)];
|
||||
return msg.say(`${name} ${lastName}`);
|
||||
} else if (gender === 'both') {
|
||||
const genders = ['male', 'female'];
|
||||
const randomGender = genders[Math.floor(Math.random() * genders.length)];
|
||||
if (randomGender === 'male') {
|
||||
const name = maleNames[Math.floor(Math.random() * maleNames.length)];
|
||||
return msg.say(`${name} ${lastName}`);
|
||||
} else if (randomGender === 'female') {
|
||||
const name = femaleNames[Math.floor(Math.random() * femaleNames.length)];
|
||||
return msg.say(`${name} ${lastName}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
run(msg, args) { // eslint-disable-line consistent-return
|
||||
const { gender } = args;
|
||||
const lastName = lastNames[Math.floor(Math.random() * lastNames.length)];
|
||||
if (gender === 'male') {
|
||||
const name = maleNames[Math.floor(Math.random() * maleNames.length)];
|
||||
return msg.say(`${name} ${lastName}`);
|
||||
} else if (gender === 'female') {
|
||||
const name = femaleNames[Math.floor(Math.random() * femaleNames.length)];
|
||||
return msg.say(`${name} ${lastName}`);
|
||||
} else if (gender === 'both') {
|
||||
const genders = ['male', 'female'];
|
||||
const randomGender = genders[Math.floor(Math.random() * genders.length)];
|
||||
if (randomGender === 'male') {
|
||||
const name = maleNames[Math.floor(Math.random() * maleNames.length)];
|
||||
return msg.say(`${name} ${lastName}`);
|
||||
} else if (randomGender === 'female') {
|
||||
const name = femaleNames[Math.floor(Math.random() * femaleNames.length)];
|
||||
return msg.say(`${name} ${lastName}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2,17 +2,17 @@ const Command = require('../../structures/Command');
|
||||
const genders = ['boy', 'girl'];
|
||||
|
||||
module.exports = class OffspringCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'offspring',
|
||||
group: 'random-res',
|
||||
memberName: 'offspring',
|
||||
description: 'Decides if your new child will be a boy or a girl.'
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'offspring',
|
||||
group: 'random-res',
|
||||
memberName: 'offspring',
|
||||
description: 'Decides if your new child will be a boy or a girl.'
|
||||
});
|
||||
}
|
||||
|
||||
run(msg) {
|
||||
const gender = genders[Math.floor(Math.random() * genders.length)];
|
||||
return msg.say(`It's a ${gender}!`);
|
||||
}
|
||||
run(msg) {
|
||||
const gender = genders[Math.floor(Math.random() * genders.length)];
|
||||
return msg.say(`It's a ${gender}!`);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2,18 +2,18 @@ const Command = require('../../structures/Command');
|
||||
const sides = ['on nothing', 'on NaN', 'on 0', 'in the air', 'on null'];
|
||||
|
||||
module.exports = class QuantumCoinCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'quantum-coin',
|
||||
aliases: ['q-coin'],
|
||||
group: 'random-res',
|
||||
memberName: 'quantum-coin',
|
||||
description: 'Flips a coin that lands on some form of nothing.'
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'quantum-coin',
|
||||
aliases: ['q-coin'],
|
||||
group: 'random-res',
|
||||
memberName: 'quantum-coin',
|
||||
description: 'Flips a coin that lands on some form of nothing.'
|
||||
});
|
||||
}
|
||||
|
||||
run(msg) {
|
||||
const side = sides[Math.floor(Math.random() * sides.length)];
|
||||
return msg.say(`It landed ${side}.`);
|
||||
}
|
||||
run(msg) {
|
||||
const side = sides[Math.floor(Math.random() * sides.length)];
|
||||
return msg.say(`It landed ${side}.`);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -3,23 +3,23 @@ const { MessageEmbed } = require('discord.js');
|
||||
const snekfetch = require('snekfetch');
|
||||
|
||||
module.exports = class QuoteCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'quote',
|
||||
group: 'random-res',
|
||||
memberName: 'quote',
|
||||
description: 'Responds with a random quote.',
|
||||
clientPermissions: ['EMBED_LINKS']
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'quote',
|
||||
group: 'random-res',
|
||||
memberName: 'quote',
|
||||
description: 'Responds with a random quote.',
|
||||
clientPermissions: ['EMBED_LINKS']
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg) {
|
||||
const { body } = await snekfetch
|
||||
.get('https://talaikis.com/api/quotes/random/');
|
||||
const embed = new MessageEmbed()
|
||||
.setColor(0x9797FF)
|
||||
.setAuthor(body.author)
|
||||
.setDescription(body.quote);
|
||||
return msg.embed(embed);
|
||||
}
|
||||
async run(msg) {
|
||||
const { body } = await snekfetch
|
||||
.get('https://talaikis.com/api/quotes/random/');
|
||||
const embed = new MessageEmbed()
|
||||
.setColor(0x9797FF)
|
||||
.setAuthor(body.author)
|
||||
.setDescription(body.quote);
|
||||
return msg.embed(embed);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
const Command = require('../../structures/Command');
|
||||
|
||||
module.exports = class RateWaifuCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'rate-waifu',
|
||||
aliases: ['waifu'],
|
||||
group: 'random-res',
|
||||
memberName: 'rate-waifu',
|
||||
description: 'Rates your waifu.',
|
||||
args: [
|
||||
{
|
||||
key: 'waifu',
|
||||
prompt: 'Who do you want to rate?',
|
||||
type: 'string'
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'rate-waifu',
|
||||
aliases: ['waifu'],
|
||||
group: 'random-res',
|
||||
memberName: 'rate-waifu',
|
||||
description: 'Rates your waifu.',
|
||||
args: [
|
||||
{
|
||||
key: 'waifu',
|
||||
prompt: 'Who do you want to rate?',
|
||||
type: 'string'
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
run(msg, args) {
|
||||
const { waifu } = args;
|
||||
const rating = Math.floor(Math.random() * 10) + 1;
|
||||
return msg.say(`I'd give ${waifu} a ${rating}/10!`);
|
||||
}
|
||||
run(msg, args) {
|
||||
const { waifu } = args;
|
||||
const rating = Math.floor(Math.random() * 10) + 1;
|
||||
return msg.say(`I'd give ${waifu} a ${rating}/10!`);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2,26 +2,26 @@ const Command = require('../../structures/Command');
|
||||
const roasts = require('../../assets/json/roast');
|
||||
|
||||
module.exports = class RoastCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'roast',
|
||||
group: 'random-res',
|
||||
memberName: 'roast',
|
||||
description: 'Roasts a user.',
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'What user do you want to roast?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'roast',
|
||||
group: 'random-res',
|
||||
memberName: 'roast',
|
||||
description: 'Roasts a user.',
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
prompt: 'What user do you want to roast?',
|
||||
type: 'user',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const roast = roasts[Math.floor(Math.random() * roasts.length)];
|
||||
return msg.say(`${user.username}, ${roast}`);
|
||||
}
|
||||
run(msg, args) {
|
||||
const user = args.user || msg.author;
|
||||
const roast = roasts[Math.floor(Math.random() * roasts.length)];
|
||||
return msg.say(`${user.username}, ${roast}`);
|
||||
}
|
||||
};
|
||||
|
||||
+23
-23
@@ -1,28 +1,28 @@
|
||||
const Command = require('../../structures/Command');
|
||||
|
||||
module.exports = class RollCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'roll',
|
||||
aliases: ['dice'],
|
||||
group: 'random-res',
|
||||
memberName: 'roll',
|
||||
description: 'Rolls a dice with a maximum value of your choice.',
|
||||
args: [
|
||||
{
|
||||
key: 'value',
|
||||
label: 'maximum number',
|
||||
prompt: 'What is the maximum number you wish to appear?',
|
||||
type: 'integer',
|
||||
default: 6
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'roll',
|
||||
aliases: ['dice'],
|
||||
group: 'random-res',
|
||||
memberName: 'roll',
|
||||
description: 'Rolls a dice with a maximum value of your choice.',
|
||||
args: [
|
||||
{
|
||||
key: 'value',
|
||||
label: 'maximum number',
|
||||
prompt: 'What is the maximum number you wish to appear?',
|
||||
type: 'integer',
|
||||
default: 6
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
run(msg, args) {
|
||||
const { value } = args;
|
||||
const roll = Math.floor(Math.random() * value) + 1;
|
||||
return msg.say(`You rolled a ${roll}.`);
|
||||
}
|
||||
run(msg, args) {
|
||||
const { value } = args;
|
||||
const roll = Math.floor(Math.random() * value) + 1;
|
||||
return msg.say(`You rolled a ${roll}.`);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
const Command = require('../../structures/Command');
|
||||
|
||||
module.exports = class RouletteCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'roulette',
|
||||
group: 'random-res',
|
||||
memberName: 'roulette',
|
||||
description: 'Chooses a random member of the server.',
|
||||
guildOnly: true
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'roulette',
|
||||
group: 'random-res',
|
||||
memberName: 'roulette',
|
||||
description: 'Chooses a random member of the server.',
|
||||
guildOnly: true
|
||||
});
|
||||
}
|
||||
|
||||
run(msg) {
|
||||
return msg.say(`I choose ${msg.guild.members.random().displayName}!`);
|
||||
}
|
||||
run(msg) {
|
||||
return msg.say(`I choose ${msg.guild.members.random().displayName}!`);
|
||||
}
|
||||
};
|
||||
|
||||
+22
-22
@@ -1,27 +1,27 @@
|
||||
const Command = require('../../structures/Command');
|
||||
|
||||
module.exports = class ShipCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'ship',
|
||||
group: 'random-res',
|
||||
memberName: 'ship',
|
||||
description: 'Ships things/people together.',
|
||||
args: [
|
||||
{
|
||||
key: 'things',
|
||||
prompt: 'What do you want to ship together?',
|
||||
type: 'string',
|
||||
infinite: true
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'ship',
|
||||
group: 'random-res',
|
||||
memberName: 'ship',
|
||||
description: 'Ships things/people together.',
|
||||
args: [
|
||||
{
|
||||
key: 'things',
|
||||
prompt: 'What do you want to ship together?',
|
||||
type: 'string',
|
||||
infinite: true
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
run(msg, args) {
|
||||
const { things } = args;
|
||||
const rating = Math.floor(Math.random() * 100) + 1;
|
||||
const list = `${things.slice(0, -1).join(', ')}${things.length > 1 ? ' and ' : ''}${things.slice(-1)}`;
|
||||
return msg.say(`I'd give ${list} a ${rating}%!`);
|
||||
}
|
||||
run(msg, args) {
|
||||
const { things } = args;
|
||||
const rating = Math.floor(Math.random() * 100) + 1;
|
||||
const list = `${things.slice(0, -1).join(', ')}${things.length > 1 ? ' and ' : ''}${things.slice(-1)}`;
|
||||
return msg.say(`I'd give ${list} a ${rating}%!`);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -3,56 +3,56 @@ const { MessageEmbed } = require('discord.js');
|
||||
const snekfetch = require('snekfetch');
|
||||
|
||||
module.exports = class TodayCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'today',
|
||||
aliases: ['event', 'history'],
|
||||
group: 'random-res',
|
||||
memberName: 'today',
|
||||
description: 'Responds with an event that occurred today in history, or on a specific day.',
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
{
|
||||
key: 'month',
|
||||
prompt: 'Which month do you want events for?',
|
||||
type: 'integer',
|
||||
default: '',
|
||||
validate: (month) => {
|
||||
if (month < 13 && month > 0) return true;
|
||||
else return 'Please enter a valid month.';
|
||||
}
|
||||
},
|
||||
{
|
||||
key: 'day',
|
||||
prompt: 'Which day do you want events for?',
|
||||
type: 'integer',
|
||||
default: '',
|
||||
validate: (day) => {
|
||||
if (day < 32 && day > 0) return true;
|
||||
else return 'Please enter a valid day.';
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'today',
|
||||
aliases: ['event', 'history'],
|
||||
group: 'random-res',
|
||||
memberName: 'today',
|
||||
description: 'Responds with an event that occurred today in history, or on a specific day.',
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
{
|
||||
key: 'month',
|
||||
prompt: 'Which month do you want events for?',
|
||||
type: 'integer',
|
||||
default: '',
|
||||
validate: month => {
|
||||
if (month < 13 && month > 0) return true;
|
||||
return 'Please enter a valid month.';
|
||||
}
|
||||
},
|
||||
{
|
||||
key: 'day',
|
||||
prompt: 'Which day do you want events for?',
|
||||
type: 'integer',
|
||||
default: '',
|
||||
validate: day => {
|
||||
if (day < 32 && day > 0) return true;
|
||||
return 'Please enter a valid day.';
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const { month, day } = args;
|
||||
try {
|
||||
const { text } = await snekfetch
|
||||
.get(`http://history.muffinlabs.com/date${month && day ? `/${month}/${day}` : ''}`);
|
||||
const body = JSON.parse(text);
|
||||
const events = body.data.Events;
|
||||
const event = events[Math.floor(Math.random() * events.length)];
|
||||
const embed = new MessageEmbed()
|
||||
.setColor(0x9797FF)
|
||||
.setURL(body.url)
|
||||
.setTitle(`On this day (${body.date})...`)
|
||||
.setTimestamp()
|
||||
.setDescription(`${event.year}: ${event.text}`);
|
||||
return msg.embed(embed);
|
||||
} catch (err) {
|
||||
return msg.say(`An error occurred: \`${err.message}\`. You likely entered an invalid date.`);
|
||||
}
|
||||
}
|
||||
async run(msg, args) {
|
||||
const { month, day } = args;
|
||||
try {
|
||||
const { text } = await snekfetch
|
||||
.get(`http://history.muffinlabs.com/date${month && day ? `/${month}/${day}` : ''}`);
|
||||
const body = JSON.parse(text);
|
||||
const events = body.data.Events;
|
||||
const event = events[Math.floor(Math.random() * events.length)];
|
||||
const embed = new MessageEmbed()
|
||||
.setColor(0x9797FF)
|
||||
.setURL(body.url)
|
||||
.setTitle(`On this day (${body.date})...`)
|
||||
.setTimestamp()
|
||||
.setDescription(`${event.year}: ${event.text}`);
|
||||
return msg.embed(embed);
|
||||
} catch (err) {
|
||||
return msg.say(`An error occurred: \`${err.message}\`. You likely entered an invalid date.`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2,17 +2,17 @@ const Command = require('../../structures/Command');
|
||||
const songs = require('../../assets/json/vocaloid');
|
||||
|
||||
module.exports = class VocaloidCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'vocaloid',
|
||||
group: 'random-res',
|
||||
memberName: 'vocaloid',
|
||||
description: 'Responds with a random VOCALOID song.'
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'vocaloid',
|
||||
group: 'random-res',
|
||||
memberName: 'vocaloid',
|
||||
description: 'Responds with a random VOCALOID song.'
|
||||
});
|
||||
}
|
||||
|
||||
run(msg) {
|
||||
const song = songs[Math.floor(Math.random() * songs.length)];
|
||||
return msg.say(song);
|
||||
}
|
||||
run(msg) {
|
||||
const song = songs[Math.floor(Math.random() * songs.length)];
|
||||
return msg.say(song);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -3,25 +3,25 @@ const { MessageEmbed } = require('discord.js');
|
||||
const snekfetch = require('snekfetch');
|
||||
|
||||
module.exports = class WouldYouRatherCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'would-you-rather',
|
||||
aliases: ['wy-rather'],
|
||||
group: 'random-res',
|
||||
memberName: 'would-you-rather',
|
||||
description: 'Responds with a random would you rather question.',
|
||||
clientPermissions: ['EMBED_LINKS']
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'would-you-rather',
|
||||
aliases: ['wy-rather'],
|
||||
group: 'random-res',
|
||||
memberName: 'would-you-rather',
|
||||
description: 'Responds with a random would you rather question.',
|
||||
clientPermissions: ['EMBED_LINKS']
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg) {
|
||||
const { body } = await snekfetch
|
||||
.get('http://www.rrrather.com/botapi');
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle(`${body.title}...`)
|
||||
.setURL(body.link)
|
||||
.setColor(0x9797FF)
|
||||
.setDescription(`${body.choicea} OR ${body.choiceb}?`);
|
||||
return msg.embed(embed);
|
||||
}
|
||||
async run(msg) {
|
||||
const { body } = await snekfetch
|
||||
.get('http://www.rrrather.com/botapi');
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle(`${body.title}...`)
|
||||
.setURL(body.link)
|
||||
.setColor(0x9797FF)
|
||||
.setDescription(`${body.choicea} OR ${body.choiceb}?`);
|
||||
return msg.embed(embed);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2,30 +2,30 @@ const Command = require('../../structures/Command');
|
||||
const eastereggs = require('../../assets/json/easter-egg');
|
||||
|
||||
module.exports = class EasterEggCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'easter-egg',
|
||||
aliases: ['tag'],
|
||||
group: 'random',
|
||||
memberName: 'easter-egg',
|
||||
description: 'Can you discover all the easter eggs?',
|
||||
args: [
|
||||
{
|
||||
key: 'tag',
|
||||
prompt: 'What easter egg do you want to view?',
|
||||
type: 'string',
|
||||
validate: (tag) => {
|
||||
if (eastereggs[tag.toLowerCase()]) return true;
|
||||
else return 'Nope, that\'s not a valid easter egg. Try again!';
|
||||
},
|
||||
parse: (tag) => tag.toLowerCase()
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'easter-egg',
|
||||
aliases: ['tag'],
|
||||
group: 'random',
|
||||
memberName: 'easter-egg',
|
||||
description: 'Can you discover all the easter eggs?',
|
||||
args: [
|
||||
{
|
||||
key: 'tag',
|
||||
prompt: 'What easter egg do you want to view?',
|
||||
type: 'string',
|
||||
validate: tag => {
|
||||
if (eastereggs[tag.toLowerCase()]) return true;
|
||||
return 'Nope, that\'s not a valid easter egg. Try again!';
|
||||
},
|
||||
parse: tag => tag.toLowerCase()
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
run(msg, args) {
|
||||
const { tag } = args;
|
||||
return msg.say(eastereggs[tag]);
|
||||
}
|
||||
run(msg, args) {
|
||||
const { tag } = args;
|
||||
return msg.say(eastereggs[tag]);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
const Command = require('../../structures/Command');
|
||||
|
||||
module.exports = class GiveFlowerCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'give-flower',
|
||||
group: 'random',
|
||||
memberName: 'give-flower',
|
||||
description: 'Gives Xiao Pai a flower.'
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'give-flower',
|
||||
group: 'random',
|
||||
memberName: 'give-flower',
|
||||
description: 'Gives Xiao Pai a flower.'
|
||||
});
|
||||
}
|
||||
|
||||
run(msg) {
|
||||
return msg.say('Ooh, what a pretty flower. What, I may have it? Thanks! I like flowers, yes? ♪');
|
||||
}
|
||||
run(msg) {
|
||||
return msg.say('Ooh, what a pretty flower. What, I may have it? Thanks! I like flowers, yes? ♪');
|
||||
}
|
||||
};
|
||||
|
||||
@@ -4,45 +4,45 @@ const snekfetch = require('snekfetch');
|
||||
const signs = require('../../assets/json/horoscope');
|
||||
|
||||
module.exports = class HoroscopeCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'horoscope',
|
||||
group: 'random',
|
||||
memberName: 'horoscope',
|
||||
description: 'Responds with today\'s horoscope for a particular sign.',
|
||||
details: `**Signs:** ${signs.join(', ')}`,
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
{
|
||||
key: 'sign',
|
||||
prompt: 'Which sign would you like to get the horoscope for?',
|
||||
type: 'string',
|
||||
validate: (sign) => {
|
||||
if (signs.includes(sign.toLowerCase())) return true;
|
||||
else return 'Invalid sign. Use `help horoscope` for a list of signs.';
|
||||
},
|
||||
parse: (sign) => sign.toLowerCase()
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'horoscope',
|
||||
group: 'random',
|
||||
memberName: 'horoscope',
|
||||
description: 'Responds with today\'s horoscope for a particular sign.',
|
||||
details: `**Signs:** ${signs.join(', ')}`,
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
{
|
||||
key: 'sign',
|
||||
prompt: 'Which sign would you like to get the horoscope for?',
|
||||
type: 'string',
|
||||
validate: sign => {
|
||||
if (signs.includes(sign.toLowerCase())) return true;
|
||||
return 'Invalid sign. Use `help horoscope` for a list of signs.';
|
||||
},
|
||||
parse: sign => sign.toLowerCase()
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, args) {
|
||||
const { sign } = args;
|
||||
const { text } = await snekfetch
|
||||
.get(`http://sandipbgt.com/theastrologer/api/horoscope/${sign}/today`);
|
||||
const body = JSON.parse(text);
|
||||
const embed = new MessageEmbed()
|
||||
.setColor(0x9797FF)
|
||||
.setTitle(`Horoscope for ${body.sunsign}...`)
|
||||
.setTimestamp()
|
||||
.setDescription(body.horoscope)
|
||||
.addField('Mood',
|
||||
body.meta.mood, true)
|
||||
.addField('Intensity',
|
||||
body.meta.intensity, true)
|
||||
.addField('Date',
|
||||
body.date, true);
|
||||
return msg.embed(embed);
|
||||
}
|
||||
async run(msg, args) {
|
||||
const { sign } = args;
|
||||
const { text } = await snekfetch
|
||||
.get(`http://sandipbgt.com/theastrologer/api/horoscope/${sign}/today`);
|
||||
const body = JSON.parse(text);
|
||||
const embed = new MessageEmbed()
|
||||
.setColor(0x9797FF)
|
||||
.setTitle(`Horoscope for ${body.sunsign}...`)
|
||||
.setTimestamp()
|
||||
.setDescription(body.horoscope)
|
||||
.addField('Mood',
|
||||
body.meta.mood, true)
|
||||
.addField('Intensity',
|
||||
body.meta.intensity, true)
|
||||
.addField('Date',
|
||||
body.date, true);
|
||||
return msg.embed(embed);
|
||||
}
|
||||
};
|
||||
|
||||
+11
-11
@@ -1,16 +1,16 @@
|
||||
const Command = require('../../structures/Command');
|
||||
|
||||
module.exports = class LennyCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'lenny',
|
||||
group: 'random',
|
||||
memberName: 'lenny',
|
||||
description: 'Responds with the lenny face.'
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'lenny',
|
||||
group: 'random',
|
||||
memberName: 'lenny',
|
||||
description: 'Responds with the lenny face.'
|
||||
});
|
||||
}
|
||||
|
||||
run(msg) {
|
||||
return msg.say('( ͡° ͜ʖ ͡°)');
|
||||
}
|
||||
run(msg) {
|
||||
return msg.say('( ͡° ͜ʖ ͡°)');
|
||||
}
|
||||
};
|
||||
|
||||
+20
-20
@@ -1,25 +1,25 @@
|
||||
const Command = require('../../structures/Command');
|
||||
|
||||
module.exports = class LMGTFYCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'lmgtfy',
|
||||
group: 'random',
|
||||
memberName: 'lmgtfy',
|
||||
description: 'Creates a LMGTFY link with the query you provide.',
|
||||
args: [
|
||||
{
|
||||
key: 'query',
|
||||
prompt: 'What would you like the link to search for?',
|
||||
type: 'string',
|
||||
parse: (query) => encodeURIComponent(query)
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'lmgtfy',
|
||||
group: 'random',
|
||||
memberName: 'lmgtfy',
|
||||
description: 'Creates a LMGTFY link with the query you provide.',
|
||||
args: [
|
||||
{
|
||||
key: 'query',
|
||||
prompt: 'What would you like the link to search for?',
|
||||
type: 'string',
|
||||
parse: query => encodeURIComponent(query)
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
run(msg, args) {
|
||||
const { query } = args;
|
||||
return msg.say(`http://lmgtfy.com/?iie=1&q=${query}`);
|
||||
}
|
||||
run(msg, args) {
|
||||
const { query } = args;
|
||||
return msg.say(`http://lmgtfy.com/?iie=1&q=${query}`);
|
||||
}
|
||||
};
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user