eslint config aqua

This commit is contained in:
Daniel Odendahl Jr
2017-07-27 21:00:54 +00:00
parent 93fd5f6caa
commit 53e1d6a8ff
176 changed files with 6713 additions and 7642 deletions
-142
View File
@@ -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"
}
}
-3
View File
@@ -1,6 +1,3 @@
# Packages
node_modules/
# Log Files
logs/
*.log
+100 -100
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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"
]
+6 -6
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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"
]
}
+28 -28
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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"
}
+46 -46
View File
@@ -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 wasnt 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. Its 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 wasnt 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. Its really not as bad as it sounds."
],
"difficulties": [
"easy",
"medium",
"hard",
"extreme",
"impossible"
],
"times": {
"easy": 25000,
"medium": 20000,
"hard": 15000,
"extreme": 10000,
"impossible": 5000
}
}
+52 -52
View File
@@ -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",
",": "'",
".": "˙",
"'": ",",
"\"": ",,",
"_": "‾",
"&": "⅋",
"!": "¡",
"?": "¿",
"`": ","
}
+4 -4
View File
@@ -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
View File
@@ -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
View File
@@ -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"
]
+41 -41
View File
@@ -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!`);
}
}
};
+41 -41
View File
@@ -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!`);
}
}
};
+42 -42
View File
@@ -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!`);
}
}
};
+45 -45
View File
@@ -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!`);
}
}
};
+63 -63
View File
@@ -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!`);
}
}
};
+42 -42
View File
@@ -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!`);
}
}
};
+42 -42
View File
@@ -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!`);
}
}
};
+48 -48
View File
@@ -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!`);
}
}
};
+46 -46
View File
@@ -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!`);
}
}
};
+41 -41
View File
@@ -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
View File
@@ -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!`);
}
}
};
+42 -42
View File
@@ -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!`);
}
}
};
+45 -45
View File
@@ -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!`);
}
}
};
+49 -49
View File
@@ -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!`);
}
}
};
+46 -46
View File
@@ -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!`);
}
}
};
+40 -40
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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!');
}
};
+36 -36
View File
@@ -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
View File
@@ -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?
`);
}
}
};
+36 -36
View File
@@ -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!');
}
};
+14 -14
View File
@@ -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(''));
}
};
+41 -38
View File
@@ -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);
}
};
+33 -33
View File
@@ -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);
}
};
+31 -31
View File
@@ -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
View File
@@ -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`] });
}
};
+35 -35
View File
@@ -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
View File
@@ -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
View File
@@ -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}
`);
}
}
};
+37 -37
View File
@@ -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.');
}
}
};
+37 -37
View File
@@ -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.');
}
}
};
+78 -78
View File
@@ -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}
`);
}
}
};
+68 -68
View File
@@ -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
View File
@@ -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}
`);
}
}
};
+47 -47
View File
@@ -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
View File
@@ -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');
}
}
};
+50 -50
View File
@@ -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
View File
@@ -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);
}
};
+31 -31
View 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
View File
@@ -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);
}
};
+35 -35
View File
@@ -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}
`);
}
};
+31 -31
View File
@@ -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}
`);
}
};
+35 -35
View File
@@ -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
View File
@@ -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] });
}
};
+23 -23
View File
@@ -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:
`);
}
};
+21 -21
View File
@@ -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}!`);
}
};
+27 -27
View File
@@ -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
View File
@@ -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}!`);
}
};
+21 -21
View File
@@ -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}`);
}
};
+12 -12
View File
@@ -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);
}
};
+13 -13
View File
@@ -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);
}
};
+23 -23
View File
@@ -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
View File
@@ -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}`);
}
}
}
};
+12 -12
View File
@@ -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}!`);
}
};
+13 -13
View File
@@ -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}.`);
}
};
+18 -18
View File
@@ -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);
}
};
+21 -21
View File
@@ -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!`);
}
};
+21 -21
View File
@@ -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
View File
@@ -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}.`);
}
};
+12 -12
View File
@@ -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
View File
@@ -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}%!`);
}
};
+51 -51
View File
@@ -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.`);
}
}
};
+12 -12
View File
@@ -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);
}
};
+20 -20
View File
@@ -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);
}
};
+25 -25
View File
@@ -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]);
}
};
+11 -11
View File
@@ -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? ♪');
}
};
+40 -40
View File
@@ -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
View File
@@ -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
View File
@@ -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