This commit is contained in:
Daniel Odendahl Jr
2017-06-17 03:26:31 +00:00
parent 5bb78126a9
commit fd4e35533a
129 changed files with 322 additions and 319 deletions
+8 -8
View File
@@ -15,16 +15,16 @@ client.setProvider(new SequelizeProvider(client.database));
client.registry
.registerDefaultTypes()
.registerGroups([
['userinfo', 'User Info'],
['guildinfo', 'Server Info'],
['user-info', 'User Info'],
['guild-info', 'Server Info'],
['moderation', 'Moderation'],
['settings', 'Server Settings'],
['response', 'Random Response'],
['randomimg', 'Random Image'],
['imageedit', 'Image Manipulation'],
['avataredit', 'Avatar Manipulation'],
['textedit', 'Text Manipulation'],
['numedit', 'Number Manipulation'],
['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'],
Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 251 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

+2 -1
View File
@@ -43,5 +43,6 @@
"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"
"yuno gasai": "https://cdn.discordapp.com/attachments/256055608279695360/308658394766508033/ff79c3c19cf7e6fdc00c1c26c204c3f6.jpg",
"why": "https://www.youtube.com/watch?v=sluHwh3hJhI"
}
-1
View File
@@ -19,7 +19,6 @@
"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.amazon.com/Gogatsu-Yamai-feat-Kagamine-Len/dp/B00P1BG27S",
"https://www.youtube.com/watch?v=N1-Z8uslIsI",
"https://www.youtube.com/watch?v=EAgk-t2zzqw",
"https://www.youtube.com/watch?v=uLBC2kWYFo8",
+12
View File
@@ -0,0 +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"
]
@@ -9,10 +9,10 @@ module.exports = class YearsCommand extends Command {
constructor(client) {
super(client, {
name: '3000-years',
aliases: ['az'],
group: 'avataredit',
aliases: ['az', '3ky', '3k-years'],
group: 'avatar-edit',
memberName: '3000-years',
description: 'It\'s been 3000 years...',
description: 'Draws a user\'s avatar over Pokémon\'s "It\'s been 3000 years" meme.',
throttling: {
usages: 1,
duration: 15
@@ -48,6 +48,6 @@ module.exports = class YearsCommand extends Command {
const { body } = await snekfetch.get(avatarURL);
avatar.src = body;
generate();
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'az.png' }] });
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: '3000-years.png' }] });
}
};
@@ -10,9 +10,9 @@ module.exports = class BeautifulCommand extends Command {
super(client, {
name: 'beautiful',
aliases: ['grunkle-stan'],
group: 'avataredit',
group: 'avatar-edit',
memberName: 'beautiful',
description: 'Oh, this? This is beautiful.',
description: 'Draws a user\'s avatar over Gravity Falls\' "Oh, this? This is beautiful." meme.',
throttling: {
usages: 1,
duration: 15
@@ -49,6 +49,6 @@ module.exports = class BeautifulCommand extends Command {
const { body } = await snekfetch.get(avatarURL);
avatar.src = body;
generate();
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'grunkle.png' }] });
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'beautiful.png' }] });
}
};
@@ -10,9 +10,9 @@ module.exports = class BobRossCommand extends Command {
super(client, {
name: 'bob-ross',
aliases: ['ross'],
group: 'avataredit',
group: 'avatar-edit',
memberName: 'bob-ross',
description: 'Make Bob Ross draw an avatar.',
description: 'Draws a user\'s avatar over Bob Ross\' canvas.',
throttling: {
usages: 1,
duration: 15
@@ -52,6 +52,6 @@ module.exports = class BobRossCommand extends Command {
const { body } = await snekfetch.get(avatarURL);
avatar.src = body;
generate();
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'ross.png' }] });
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'bob-ross.png' }] });
}
};
@@ -12,9 +12,9 @@ module.exports = class CardCommand extends Command {
super(client, {
name: 'card',
aliases: ['discord-card'],
group: 'avataredit',
group: 'avatar-edit',
memberName: 'card',
description: 'Creates a Profile Card for the User.',
description: 'Creates a trading card of random rarity based on a user\'s profile.',
guildOnly: true,
throttling: {
usages: 1,
@@ -65,7 +65,7 @@ module.exports = class CardCommand extends Command {
ctx.fillText(rarity, 73, 411);
ctx.fillText(cardID, 60, 457);
ctx.fillText(version.split('.')[0], 68, 502);
ctx.font = '14px Open Sans';
ctx.font = '14px Roboto';
ctx.fillText(member.id, 30, 355);
ctx.fillText(`#${member.user.discriminator}`, 313, 355);
};
@@ -9,9 +9,9 @@ module.exports = class ChallengerCommand extends Command {
constructor(client) {
super(client, {
name: 'challenger',
group: 'avataredit',
group: 'avatar-edit',
memberName: 'challenger',
description: 'A new foe has appeared.',
description: 'Draws a user\'s avatar over Super Smash Bros.\'s "Challenger Approaching" screen.',
throttling: {
usages: 1,
duration: 15
@@ -9,9 +9,9 @@ module.exports = class DexterCommand extends Command {
constructor(client) {
super(client, {
name: 'dexter',
group: 'avataredit',
group: 'avatar-edit',
memberName: 'dexter',
description: 'Who\'s that pokemon?',
description: 'Draws a user\'s avatar over Dexter from Pokémon\'s screen.',
throttling: {
usages: 1,
duration: 15
@@ -7,9 +7,9 @@ module.exports = class GreyscaleCommand extends Command {
super(client, {
name: 'greyscale',
aliases: ['grayscale'],
group: 'avataredit',
group: 'avatar-edit',
memberName: 'greyscale',
description: 'Greyscale a user\'s avatar colors.',
description: 'Draws a user\'s avatar in greyscale.',
throttling: {
usages: 1,
duration: 15
@@ -6,9 +6,9 @@ module.exports = class InvertCommand extends Command {
constructor(client) {
super(client, {
name: 'invert',
group: 'avataredit',
group: 'avatar-edit',
memberName: 'invert',
description: 'Invert a user\'s avatar colors.',
description: 'Draws a user\'s avatar inverted.',
throttling: {
usages: 1,
duration: 15
@@ -10,9 +10,9 @@ module.exports = class RIPCommand extends Command {
super(client, {
name: 'rip',
aliases: ['grave', 'grave-stone'],
group: 'avataredit',
group: 'avatar-edit',
memberName: 'rip',
description: 'Puts a user\'s avatar over a gravestone.',
description: 'Draws a user\'s avatar over a gravestone.',
throttling: {
usages: 1,
duration: 15
@@ -9,9 +9,9 @@ module.exports = class SimbaCommand extends Command {
constructor(client) {
super(client, {
name: 'simba',
group: 'avataredit',
group: 'avatar-edit',
memberName: 'simba',
description: 'Remember who you are...',
description: 'Draws a user\'s avatar over Simba from The Lion King\'s reflection.',
throttling: {
usages: 1,
duration: 15
@@ -9,9 +9,9 @@ module.exports = class SteamCardCommand extends Command {
constructor(client) {
super(client, {
name: 'steam-card',
group: 'avataredit',
group: 'avatar-edit',
memberName: 'steam-card',
description: 'Put an avatar on a Steam Card.',
description: 'Draws a user\'s avatar over a Steam card.',
throttling: {
usages: 1,
duration: 15
@@ -53,6 +53,6 @@ module.exports = class SteamCardCommand extends Command {
const { body } = await snekfetch.get(avatarURL);
avatar.src = body;
generate();
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'steam.png' }] });
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'steam-card.png' }] });
}
};
@@ -9,9 +9,9 @@ module.exports = class TriggeredCommand extends Command {
constructor(client) {
super(client, {
name: 'triggered',
group: 'avataredit',
group: 'avatar-edit',
memberName: 'triggered',
description: 'Put an avatar on a "Triggered" sign.',
description: 'Draws a user\'s avatar over a Triggered meme.',
throttling: {
usages: 1,
duration: 15
@@ -9,9 +9,9 @@ module.exports = class WantedCommand extends Command {
constructor(client) {
super(client, {
name: 'wanted',
group: 'avataredit',
group: 'avatar-edit',
memberName: 'wanted',
description: 'Puts an avatar on a wanted poster.',
description: 'Draws a user\'s avatar over a wanted poster.',
throttling: {
usages: 1,
duration: 15
+13 -13
View File
@@ -8,7 +8,7 @@ module.exports = class BattleCommand extends Command {
aliases: ['fight', 'death-battle'],
group: 'games',
memberName: 'battle',
description: 'Choose another user and fight to the death!',
description: 'Engage in a turn-based battle against another user.',
guildOnly: true,
args: [
{
@@ -24,11 +24,11 @@ module.exports = class BattleCommand extends Command {
async run(msg, args) {
const { opponent } = args;
if (opponent.bot) return msg.say('Bots cannot be fought.');
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);
await msg.say(`**${opponent.username}**, do you accept this challenge? **__Y__es** or **No**?`);
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
@@ -55,10 +55,10 @@ module.exports = class BattleCommand extends Command {
else oppoHP = 0;
};
while (userHP > 0 && oppoHP > 0) { // eslint-disable-line no-unmodified-loop-condition
const username = userTurn ? msg.author.username : opponent.username;
const user = userTurn ? msg.author : opponent;
const id = userTurn ? msg.author.id : opponent.id;
await msg.say(stripIndents`
**${username}**, do you **fight**, **guard**, **special**, or **run**?
${user}, do you **fight**, **guard**, **special**, or **run**?
**${msg.author.username}**: ${userHP}HP
**${opponent.username}**: ${oppoHP}HP
`);
@@ -74,37 +74,37 @@ module.exports = class BattleCommand extends Command {
const choice = turn.first().content.toLowerCase();
if (choice === 'fight') {
const damage = Math.floor(Math.random() * (guard ? 10 : 100)) + 1;
await msg.say(`**${username}** deals **${damage}** damage!`);
await msg.say(`${user} deals **${damage}** damage!`);
dealDamage(damage);
reset();
} else if (choice === 'guard') {
await msg.say(`**${username}** guards!`);
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(`**${username}** deals **${damage}** damage!`);
await msg.say(`${user} deals **${damage}** damage!`);
dealDamage(damage);
reset();
} else {
await msg.say(`**${username}**'s attack missed!`);
await msg.say(`${user}'s attack missed!`);
reset();
}
} else if (choice === 'run') {
await msg.say(`**${username}** flees!`);
await msg.say(`${user} flees!`);
forfeit();
break;
} else {
await msg.say('I do not understand what you want to do.');
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.username} (${userHP})` : `${opponent.username} (${oppoHP})`}
**Loser:** ${userHP > oppoHP ? `${opponent.username} (${oppoHP})` : `${msg.author.username} (${userHP})`}
**Winner:** ${userHP > oppoHP ? `${msg.author} (${userHP}HP)` : `${opponent} (${oppoHP}HP)`}
**Loser:** ${userHP > oppoHP ? `${opponent} (${oppoHP}HP)` : `${msg.author} (${userHP}HP)`}
`);
}
};
+3 -3
View File
@@ -6,13 +6,13 @@ module.exports = class LotteryCommand extends Command {
name: 'lottery',
group: 'games',
memberName: 'lottery',
description: '1 in 100 chance of winning. Winners get... The feeling of winning?'
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.say(`Wow ${msg.author.username}! You actually won! Great job!`);
else return msg.say(`Nope, sorry ${msg.author.username}, you lost.`);
if (lottery === 1) return msg.reply(`Wow! You actually won! Great job!`);
else return msg.reply(`Nope, sorry, you lost.`);
}
};
+2 -3
View File
@@ -29,9 +29,8 @@ module.exports = class MathGameCommand extends Command {
async run(msg, args) {
const { difficulty } = args;
const operation = operations[Math.floor(Math.random() * operations.length)];
const maxValue = maxValues[difficulty];
const value1 = Math.floor(Math.random() * maxValue) + 1;
const value2 = Math.floor(Math.random() * maxValue) + 1;
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 RichEmbed()
+1 -1
View File
@@ -10,7 +10,7 @@ module.exports = class QuizCommand extends Command {
aliases: ['jeopardy'],
group: 'games',
memberName: 'quiz',
description: 'Answer a quiz question.',
description: 'Answer a true/false quiz question.',
clientPermissions: ['EMBED_LINKS']
});
}
+3 -3
View File
@@ -26,15 +26,15 @@ module.exports = class RockPaperScissorsCommand extends Command {
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 return msg.say('Scissors! Aw... I lose...');
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 return msg.say('Scissors! Yes! I win!');
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 return msg.say('Scissors! Aw... A tie...');
else if (response === 'scissors') return msg.say('Scissors! Aw... A tie...');
} else {
return msg.say('I win by default, you little cheater.');
}
+2 -2
View File
@@ -1,6 +1,6 @@
const Command = require('../../structures/Command');
const { stripIndents } = require('common-tags');
const slots = [':grapes:', ':tangerine:', ':pear:', ':cherries:'];
const slots = [':grapes:', ':tangerine:', ':pear:', ':cherries:', ':lemon:'];
module.exports = class SlotsCommand extends Command {
constructor(client) {
@@ -8,7 +8,7 @@ module.exports = class SlotsCommand extends Command {
name: 'slots',
group: 'games',
memberName: 'slots',
description: 'Play slots.'
description: 'Play a game of slots.'
});
}
+1 -2
View File
@@ -37,8 +37,7 @@ module.exports = class TypingGameCommand extends Command {
max: 1,
time
});
if (!msgs.size) return msg.say('Time! Sorry!');
if (msgs.first().content !== sentence) return msg.say('Nope, sorry!');
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!');
}
};
@@ -4,16 +4,16 @@ module.exports = class EmojiCommand extends Command {
constructor(client) {
super(client, {
name: 'emoji',
group: 'guildinfo',
group: 'guild-info',
memberName: 'emoji',
description: 'Gives a list of the server\'s custom emoji.',
description: 'Responds with a list of the server\'s custom emoji.',
guildOnly: true
});
}
run(msg) {
const emojis = msg.guild.emojis;
if (!emojis.size) return msg.say('You have no Custom Emoji.');
return msg.say(emojis.map((emoji) => emoji).join(''));
const emoji = msg.guild.emojis;
if (!emoji.size) return msg.say('You have no custom emoji.');
return msg.say(emoji.map((e) => e).join(''));
}
};
@@ -8,9 +8,9 @@ module.exports = class GuildInfoCommand extends Command {
super(client, {
name: 'server-info',
aliases: ['guild', 'server', 'guild-info'],
group: 'guildinfo',
group: 'guild-info',
memberName: 'server-info',
description: 'Gives some info on the server.',
description: 'Responds with detailed information on the server.',
guildOnly: true,
clientPermissions: ['EMBED_LINKS']
});
@@ -33,7 +33,7 @@ module.exports = class GuildInfoCommand extends Command {
.addField(' Explicit Filter',
filterLevels[msg.guild.explicitContentFilter], true)
.addField(' Owner',
msg.guild.owner, true)
msg.guild.owner.username, true)
.addField(' Members',
msg.guild.memberCount, true);
return msg.embed(embed);
@@ -5,9 +5,9 @@ module.exports = class AchievementCommand extends Command {
constructor(client) {
super(client, {
name: 'achievement',
group: 'imageedit',
group: 'image-edit',
memberName: 'achievement',
description: 'Sends a Minecraft Achievement with the text of your choice.',
description: 'Sends a Minecraft achievement with the text of your choice.',
clientPermissions: ['ATTACH_FILES'],
args: [
{
@@ -5,11 +5,11 @@ module.exports = class MemeCommand extends Command {
constructor(client) {
super(client, {
name: 'meme',
group: 'imageedit',
group: 'image-edit',
memberName: 'meme',
description: 'Sends a Meme with text of your choice, and a background of your choice.',
details: `**Codes:** ${codes.join(', ')}`,
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',
@@ -6,9 +6,9 @@ module.exports = class PokemonFusionCommand extends Command {
super(client, {
name: 'pokemon-fusion',
aliases: ['poke-fusion', 'poke-fuse'],
group: 'imageedit',
group: 'image-edit',
memberName: 'pokemon-fusion',
description: 'Fuses two Generation 1 Pokémon together.',
description: 'Fuses two Generation I Pokémon together.',
args: [
{
key: 'source1',
@@ -16,7 +16,7 @@ module.exports = class PokemonFusionCommand extends Command {
type: 'string',
validate: (source1) => {
if (pokemon[source1.toLowerCase()]) return true;
else return 'Only Pokémon from Generation 1 may be used.';
else return 'Only Pokémon from Generation I may be used.';
},
parse: (source1) => pokemon[source1.toLowerCase()]
},
@@ -26,7 +26,7 @@ module.exports = class PokemonFusionCommand extends Command {
type: 'string',
validate: (source2) => {
if (pokemon[source2.toLowerCase()]) return true;
else return 'Only Pokémon from Generation 1 may be used.';
else return 'Only Pokémon from Generation I may be used.';
},
parse: (source2) => pokemon[source2.toLowerCase()]
}
+8 -8
View File
@@ -57,14 +57,7 @@ module.exports = class BanCommand extends Command {
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')) {
return modlogs.send(stripIndents`
**Member:** ${member.user.tag} (${member.id})
**Action:** Ban
**Reason:** ${reason}
**Moderator:** ${msg.author.tag}
`);
} else {
} else if (modlogs.permissionsFor(this.client.user).has('EMBED_LINKS')) {
const embed = new RichEmbed()
.setAuthor(msg.author.tag, msg.author.displayAvatarURL())
.setColor(0xFF0000)
@@ -75,6 +68,13 @@ module.exports = class BanCommand extends Command {
**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}
`);
}
}
};
+8 -8
View File
@@ -54,14 +54,7 @@ module.exports = class KickCommand extends Command {
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')) {
return modlogs.send(stripIndents`
**Member:** ${member.user.tag} (${member.id})
**Action:** Kick
**Reason:** ${reason}
**Moderator:** ${msg.author.tag}
`);
} else {
} else if (modlogs.permissionsFor(this.client.user).has('EMBED_LINKS')) {
const embed = new RichEmbed()
.setAuthor(msg.author.tag, msg.author.displayAvatarURL())
.setColor(0xFFA500)
@@ -72,6 +65,13 @@ module.exports = class KickCommand extends Command {
**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}
`);
}
}
};
+1 -1
View File
@@ -7,7 +7,7 @@ module.exports = class LockdownCommand extends Command {
name: 'lockdown',
group: 'moderation',
memberName: 'lockdown',
description: 'Locks down the current channel or removes a lockdown.',
description: 'Prevents users from posting in the current channel, or removes a lockdown.',
guildOnly: true,
clientPermissions: ['ADMINISTRATOR'],
userPermissions: ['ADMINISTRATOR'],
+1 -1
View File
@@ -6,7 +6,7 @@ module.exports = class PruneCommand extends Command {
name: 'prune',
group: 'moderation',
memberName: 'prune',
description: 'Deletes messages from the current channel, up to 99.',
description: 'Deletes up to 99 messages from the current channel.',
guildOnly: true,
throttling: {
usages: 1,
+8 -8
View File
@@ -58,14 +58,7 @@ module.exports = class SoftbanCommand extends Command {
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')) {
return modlogs.send(stripIndents`
**Member:** ${member.user.tag} (${member.id})
**Action:** Softban
**Reason:** ${reason}
**Moderator:** ${msg.author.tag}
`);
} else {
} else if (modlogs.permissionsFor(this.client.user).has('EMBED_LINKS')) {
const embed = new RichEmbed()
.setAuthor(msg.author.tag, msg.author.displayAvatarURL())
.setColor(0xFF4500)
@@ -76,6 +69,13 @@ module.exports = class SoftbanCommand extends Command {
**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}
`);
}
}
};
+9 -9
View File
@@ -48,24 +48,24 @@ module.exports = class UnbanCommand extends Command {
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')) {
return modlogs.send(stripIndents`
**Member:** ${member.tag} (${member.id})
**Action:** Unban
**Reason:** ${reason}
**Moderator:** ${msg.author.tag}
`);
} else {
} else if (modlogs.permissionsFor(this.client.user).has('EMBED_LINKS')) {
const embed = new RichEmbed()
.setAuthor(msg.author.tag, msg.author.displayAvatarURL())
.setColor(0x00AE86)
.setTimestamp()
.setDescription(stripIndents`
**Member:** ${member.tag} (${member.id})
**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}
`);
}
}
};
+8 -8
View File
@@ -51,14 +51,7 @@ module.exports = class WarnCommand extends Command {
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')) {
return modlogs.send(stripIndents`
**Member:** ${member.user.tag} (${member.id})
**Action:** Warn
**Reason:** ${reason}
**Moderator:** ${msg.author.tag}
`);
} else {
} else if (modlogs.permissionsFor(this.client.user).has('EMBED_LINKS')) {
const embed = new RichEmbed()
.setAuthor(msg.author.tag, msg.author.displayAvatarURL())
.setColor(0xFFFF00)
@@ -69,6 +62,13 @@ module.exports = class WarnCommand extends Command {
**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}
`);
}
}
};
@@ -6,9 +6,9 @@ module.exports = class CurrencyCommand extends Command {
constructor(client) {
super(client, {
name: 'currency',
group: 'numedit',
group: 'num-edit',
memberName: 'currency',
description: 'Converts from one currency to another.',
description: 'Converts a number from one currency to another.',
details: `**Codes:** ${codes.join(', ')}`,
args: [
{
@@ -5,9 +5,9 @@ module.exports = class MathCommand extends Command {
constructor(client) {
super(client, {
name: 'math',
group: 'numedit',
group: 'num-edit',
memberName: 'math',
description: 'Does math.',
description: 'Evaluates math expressions.',
args: [
{
key: 'expression',
@@ -22,7 +22,7 @@ module.exports = class MathCommand extends Command {
const { expression } = args;
try {
const solved = math.eval(expression).toString();
return msg.say(solved);
return msg.say(solved).catch(() => msg.say('Invalid Statement'));
} catch (err) {
return msg.say('Invalid Statement');
}
@@ -4,7 +4,7 @@ module.exports = class TemperatureCommand extends Command {
constructor(client) {
super(client, {
name: 'temperature',
group: 'numedit',
group: 'num-edit',
memberName: 'temperature',
description: 'Converts temperatures to/from Celsius, Fahrenheit, or Kelvin.',
args: [
@@ -39,16 +39,17 @@ module.exports = class TemperatureCommand extends Command {
run(msg, args) {
const { base, to, amount } = args;
if (base === to) return msg.say(`Converting ${base} to ${to} is the same value, dummy.`);
if (base === 'celsius') {
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 return msg.say(`${amount}°C is ${amount + 273.15}°K.`);
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 return msg.say(`${amount}°F is ${(amount + 459.67) * (5 / 9)}°K.`);
} else {
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 return msg.say(`${amount}°K is ${(amount * 1.8) - 459.67}°F.`);
else if (to === 'fahrenheit') return msg.say(`${amount}°K is ${(amount * 1.8) - 459.67}°F.`);
}
}
};
@@ -6,9 +6,9 @@ module.exports = class CatCommand extends Command {
super(client, {
name: 'cat',
aliases: ['neko'],
group: 'randomimg',
group: 'random-img',
memberName: 'cat',
description: 'Sends a random cat image.'
description: 'Responds with a random cat image.'
});
}
@@ -5,9 +5,9 @@ module.exports = class DogCommand extends Command {
constructor(client) {
super(client, {
name: 'dog',
group: 'randomimg',
group: 'random-img',
memberName: 'dog',
description: 'Sends a random dog image.'
description: 'Responds with a random dog image.'
});
}
@@ -5,9 +5,9 @@ module.exports = class VocaloidCommand extends Command {
constructor(client) {
super(client, {
name: 'vocaloid',
group: 'randomimg',
group: 'random-img',
memberName: 'vocaloid',
description: 'Sends a random VOCALOID song.'
description: 'Responds with a random VOCALOID song.'
});
}
@@ -1,20 +1,20 @@
const Command = require('../../structures/Command');
const path = require('path');
const xiaos = require('../../assets/json/xiao');
module.exports = class XiaoCommand extends Command {
constructor(client) {
super(client, {
name: 'xiao',
aliases: ['xiao-pai'],
group: 'randomimg',
group: 'random-img',
memberName: 'xiao',
description: 'Sends a random image of Xiao Pai.',
description: 'Responds with a random image of Xiao Pai.',
clientPermissions: ['ATTACH_FILES']
});
}
run(msg) {
const xiao = Math.floor(Math.random() * 10) + 1;
return msg.say({ files: [path.join(__dirname, '..', '..', 'assets', 'images', `xiao${xiao}.png`)] });
const xiao = xiaos[Math.floor(Math.random() * xiaos.length)];
return msg.say({ files: [xiao] });
}
};
@@ -6,9 +6,9 @@ module.exports = class MagicBallCommand extends Command {
constructor(client) {
super(client, {
name: '8-ball',
group: 'response',
group: 'random-res',
memberName: '8-ball',
description: 'Predicts your future.',
description: 'Asks your question to the Magic 8 Ball.',
args: [
{
key: 'question',
@@ -4,9 +4,9 @@ module.exports = class ChooseCommand extends Command {
constructor(client) {
super(client, {
name: 'choose',
group: 'response',
group: 'random-res',
memberName: 'choose',
description: 'Chooses between things.',
description: 'Chooses between options you provide.',
args: [
{
key: 'choices',
@@ -6,7 +6,7 @@ module.exports = class CoinFlipCommand extends Command {
super(client, {
name: 'coin',
aliases: ['coin-flip', 'flip'],
group: 'response',
group: 'random-res',
memberName: 'coin',
description: 'Flips a coin.'
});
@@ -5,7 +5,7 @@ module.exports = class ComplimentCommand extends Command {
constructor(client) {
super(client, {
name: 'compliment',
group: 'response',
group: 'random-res',
memberName: 'compliment',
description: 'Compliments a user.',
args: [
@@ -5,9 +5,9 @@ module.exports = class FactCoreCommand extends Command {
constructor(client) {
super(client, {
name: 'fact-core',
group: 'response',
group: 'random-res',
memberName: 'fact-core',
description: 'Says a random Fact Core quote.'
description: 'Responds with a random Fact Core quote.'
});
}
@@ -5,7 +5,7 @@ module.exports = class FishyCommand extends Command {
constructor(client) {
super(client, {
name: 'fishy',
group: 'response',
group: 'random-res',
memberName: 'fishy',
description: 'Catches a fish.'
});
@@ -1,13 +1,14 @@
const Command = require('../../structures/Command');
const fortunes = require('../../assets/json/fortune');
module.exports = class FortuneCookieCommand extends Command {
module.exports = class FortuneCommand extends Command {
constructor(client) {
super(client, {
name: 'fortune',
group: 'response',
aliases: ['fortune-cookie'],
group: 'random-res',
memberName: 'fortune',
description: 'Fortune Cookie.'
description: 'Responds with a random fortune.'
});
}
@@ -6,9 +6,9 @@ module.exports = class MagicConchCommand extends Command {
constructor(client) {
super(client, {
name: 'magic-conch',
group: 'response',
group: 'random-res',
memberName: 'magic-conch',
description: 'Maybe Someday...',
description: 'Asks your question to the Magic Conch.',
args: [
{
key: 'question',
@@ -5,17 +5,18 @@ module.exports = class RandomNameCommand extends Command {
constructor(client) {
super(client, {
name: 'name',
group: 'response',
group: 'random-res',
memberName: 'name',
description: 'Generates a random 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'].includes(gender.toLowerCase())) return true;
else return 'Please enter either `male` or `female`.';
if (['male', 'female', 'both'].includes(gender.toLowerCase())) return true;
else return 'Please enter either `male`, `female`, or `both`.';
},
parse: (gender) => gender.toLowerCase()
}
@@ -29,9 +30,19 @@ module.exports = class RandomNameCommand extends Command {
if (gender === 'male') {
const name = maleNames[Math.floor(Math.random() * maleNames.length)];
return msg.say(`${name} ${lastName}`);
} else {
} 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}`);
}
}
}
};
@@ -5,9 +5,9 @@ module.exports = class OffspringCommand extends Command {
constructor(client) {
super(client, {
name: 'offspring',
group: 'response',
group: 'random-res',
memberName: 'offspring',
description: 'Tells you if your new child is a boy or a girl.'
description: 'Decides if your new child will be a boy or a girl.'
});
}
@@ -6,9 +6,9 @@ module.exports = class QuantumCoinCommand extends Command {
super(client, {
name: 'quantum-coin',
aliases: ['q-coin'],
group: 'response',
group: 'random-res',
memberName: 'quantum-coin',
description: 'Flips a coin that lands on nothing.'
description: 'Flips a coin that lands on some form of nothing.'
});
}
@@ -5,9 +5,9 @@ module.exports = class RateWaifuCommand extends Command {
super(client, {
name: 'rate-waifu',
aliases: ['waifu'],
group: 'response',
group: 'random-res',
memberName: 'rate-waifu',
description: 'Rates your Waifu.',
description: 'Rates your waifu.',
args: [
{
key: 'waifu',
@@ -5,7 +5,7 @@ module.exports = class RoastCommand extends Command {
constructor(client) {
super(client, {
name: 'roast',
group: 'response',
group: 'random-res',
memberName: 'roast',
description: 'Roasts a user.',
args: [
@@ -5,9 +5,9 @@ module.exports = class RollCommand extends Command {
super(client, {
name: 'roll',
aliases: ['dice'],
group: 'response',
group: 'random-res',
memberName: 'roll',
description: 'Rolls a dice with a maximum value you specify.',
description: 'Rolls a dice with a maximum value of your choice.',
args: [
{
key: 'value',
@@ -4,9 +4,9 @@ module.exports = class RouletteCommand extends Command {
constructor(client) {
super(client, {
name: 'roulette',
group: 'response',
group: 'random-res',
memberName: 'roulette',
description: 'Chooses a random member in the server.',
description: 'Chooses a random member of the server.',
guildOnly: true
});
}
@@ -5,14 +5,15 @@ module.exports = class ShipCommand extends Command {
super(client, {
name: 'ship',
aliases: ['rate'],
group: 'response',
group: 'random-res',
memberName: 'ship',
description: 'Ships things/people together.',
args: [
{
key: 'things',
prompt: 'What do you want to ship together?',
type: 'string'
type: 'string',
infinite: true
}
]
});
@@ -21,6 +22,6 @@ module.exports = class ShipCommand extends Command {
run(msg, args) {
const { things } = args;
const rating = Math.floor(Math.random() * 100) + 1;
return msg.say(`I'd give ${things} a ${rating}%!`);
return msg.say(`I'd give ${things.join(' and ')} a ${rating}%!`);
}
};
+1 -1
View File
@@ -9,7 +9,7 @@ module.exports = class CleverbotCommand extends Command {
aliases: ['clevs', 'chat'],
group: 'random',
memberName: 'cleverbot',
description: 'Talk to Cleverbot!',
description: 'Talk to Cleverbot.',
args: [
{
key: 'text',
+1 -1
View File
@@ -9,7 +9,7 @@ module.exports = class HoroscopeCommand extends Command {
name: 'horoscope',
group: 'random',
memberName: 'horoscope',
description: 'Gives the horoscope for today for a particular sign.',
description: 'Responds with today\'s horoscope for a particular sign.',
details: `**Signs:** ${signs.join(', ')}`,
clientPermissions: ['EMBED_LINKS'],
args: [
@@ -4,13 +4,13 @@ module.exports = class LMGTFYCommand extends Command {
constructor(client) {
super(client, {
name: 'lmgtfy',
group: 'search',
group: 'random',
memberName: 'lmgtfy',
description: 'Responds with a LMGTFY link.',
description: 'Creates a LMGTFY link with the query you provide.',
args: [
{
key: 'query',
prompt: 'What would you like to the link to search for?',
prompt: 'What would you like the link to search for?',
type: 'string',
parse: (query) => encodeURIComponent(query)
}
-28
View File
@@ -1,28 +0,0 @@
const Command = require('../../structures/Command');
const { RichEmbed } = require('discord.js');
const { stripIndents } = require('common-tags');
module.exports = class NitroCommand extends Command {
constructor(client) {
super(client, {
name: 'nitro',
group: 'random',
memberName: 'nitro',
description: 'Sends a "This Message Can Only be viewed by Nitro Members" message.',
clientPermissions: ['EMBED_LINKS']
});
}
run(msg) {
const embed = new RichEmbed()
.setAuthor('Discord Nitro')
.setThumbnail('https://i.imgur.com/wzhMMnl.jpg')
.setColor(0x748BD9)
.setURL('https://discordapp.com/nitro')
.setDescription(stripIndents`
This Message can only be viewed by members with Discord Nitro.
[More Information](https://discordapp.com/nitro)
`);
return msg.embed(embed);
}
};
+8 -4
View File
@@ -38,16 +38,20 @@ module.exports = class SoundboardCommand extends Command {
if (!voiceChannel.permissionsFor(this.client.user).has(['CONNECT', 'SPEAK'])) {
return msg.say('Missing the `CONNECT` or `SPEAK` Permission for the Voice Channel.');
}
if (!voiceChannel.joinable) return msg.say('This Voice Channel is not joinable.');
if (this.client.voiceConnections.get(voiceChannel.guild.id)) return msg.say('I am already playing a sound.');
if (!voiceChannel.joinable) return msg.say('Your Voice Channel is not joinable.');
if (this.client.voiceConnections.has(voiceChannel.guild.id)) return msg.say('I am already playing a sound.');
const { sound } = args;
const connection = await voiceChannel.join();
msg.react('🔊');
await msg.react('🔊');
const dispatcher = connection.playFile(path.join(__dirname, '..', '..', 'assets', 'sounds', paths[sound]));
dispatcher.on('end', () => {
dispatcher.once('end', () => {
voiceChannel.leave();
msg.react('✅');
});
dispatcher.once('error', () => {
voiceChannel.leave();
msg.react('⚠');
});
return null;
}
};
+2 -2
View File
@@ -6,12 +6,12 @@ module.exports = class SpamCommand extends Command {
name: 'spam',
group: 'random',
memberName: 'spam',
description: 'Puts a picture of Spam.',
description: 'Responds with a picture of Spam.',
clientPermissions: ['ATTACH_FILES']
});
}
run(msg) {
return msg.say('https://i.imgur.com/arx7GJV.jpg');
return msg.say({ files: ['https://i.imgur.com/arx7GJV.jpg'] });
}
};
+13 -13
View File
@@ -9,7 +9,7 @@ module.exports = class StarCommand extends Command {
name: 'star',
group: 'random',
memberName: 'star',
description: 'Stars a message.',
description: 'Stars a message, sending it to the starboard.',
args: [
{
key: 'id',
@@ -25,20 +25,13 @@ module.exports = class StarCommand extends Command {
async run(msg, args, reaction) {
const { id } = args;
const channel = msg.guild.channels.get(msg.guild.settings.get('starboard'));
if (!channel ||
!channel.permissionsFor(this.client.user).has('SEND_MESSAGES') ||
this.starred.includes(id)) return null;
if (!channel || this.starred.includes(id)) return null;
const message = await msg.channel.fetchMessage(id);
if (!reaction && msg.author.id === message.author.id) return msg.reply('You cannot star your own messages, baka.'); // eslint-disable-line max-len
if (!reaction && msg.author.id === message.author.id) return msg.reply('You cannot star your own messages.');
this.starred.push(id);
if (!channel.permissionsFor(this.client.user).has('EMBED_LINKS')) {
return msg.say(stripIndents`
**Author:** ${message.author.tag}
**Content:** ${message.content}
**Date:** ${moment(message.createdTimestamp).format('MMMM Do YYYY h:mm:ss A')}
${message.attachments.first() ? `**Image:** ${message.attachments.first().url}` : ''}
`);
} else {
if (!channel.permissionsFor(this.client.user).has('SEND_MESSAGES')) {
return msg.say('Could not send the message to the starboard.');
} else if (channel.permissionsFor(this.client.user).has('EMBED_LINKS')) {
const embed = new RichEmbed()
.setColor(0xFFFF00)
.setAuthor(message.author.tag, message.author.displayAvatarURL)
@@ -46,6 +39,13 @@ module.exports = class StarCommand extends Command {
.setImage(message.attachments.first() ? message.attachments.first().url : null)
.setFooter(moment(message.createdTimestamp).format('MMMM Do YYYY h:mm:ss A'));
return channel.send({ embed });
} else {
return msg.say(stripIndents`
**Author:** ${message.author.tag}
**Content:** ${message.content}
**Date:** ${moment(message.createdTimestamp).format('MMMM Do YYYY h:mm:ss A')}
${message.attachments.first() ? `**Image:** ${message.attachments.first().url}` : ''}
`);
}
}
};
+3 -3
View File
@@ -8,7 +8,7 @@ module.exports = class StrawpollCommand extends Command {
name: 'strawpoll',
group: 'random',
memberName: 'strawpoll',
description: 'Creates a Strawpoll with your options.',
description: 'Creates a Strawpoll from the options you provide.',
args: [
{
key: 'title',
@@ -21,11 +21,11 @@ module.exports = class StrawpollCommand extends Command {
},
{
key: 'options',
prompt: 'What options do you want me pick from? Maximum of 31.',
prompt: 'What options do you want to be able to pick from? Maximum of 30.',
type: 'string',
infinite: true,
validate: (choice) => {
if (choice.length < 160) return true;
if (choice.length < 140) return true;
else return 'Choices must be under 140 characters each.';
}
}
+1 -1
View File
@@ -8,7 +8,7 @@ module.exports = class TodayCommand extends Command {
name: 'today',
group: 'random',
memberName: 'today',
description: 'Tells you what happened today in history.',
description: 'Responds with a random event that occurred today sometime in history.',
clientPermissions: ['EMBED_LINKS']
});
}
+2 -2
View File
@@ -6,10 +6,10 @@ module.exports = class WouldYouRatherCommand extends Command {
constructor(client) {
super(client, {
name: 'would-you-rather',
aliases: ['wyrather'],
aliases: ['wy-rather'],
group: 'random',
memberName: 'would-you-rather',
description: 'Gets a random would you rather question.',
description: 'Responds with a random would you rather question.',
clientPermissions: ['EMBED_LINKS']
});
}
+2 -2
View File
@@ -7,7 +7,7 @@ module.exports = class HighFivesCommand extends Command {
name: 'high-five',
group: 'roleplay',
memberName: 'high-five',
description: 'High Fives something/someone.',
description: 'High Fives a user.',
args: [
{
key: 'user',
@@ -22,7 +22,7 @@ module.exports = class HighFivesCommand extends Command {
const { user } = args;
return msg.say(stripIndents`
**${msg.author.username}** *high-fives* **${user.username}**
https://i.imgur.com/7BJ6gfM.gif
https://i.imgur.com/BDW5xnu.gif
`);
}
};
+1 -1
View File
@@ -12,7 +12,7 @@ module.exports = class AnimeCommand extends Command {
name: 'anime',
group: 'search',
memberName: 'anime',
description: 'Searches My Anime List for a specified anime.',
description: 'Searches My Anime List for your query, getting anime results.',
clientPermissions: ['EMBED_LINKS'],
args: [
{
+1 -1
View File
@@ -9,7 +9,7 @@ module.exports = class BulbapediaCommand extends Command {
aliases: ['bulbagarden'],
group: 'search',
memberName: 'bulbapedia',
description: 'Searches Bulbapedia for something.',
description: 'Searches Bulbapedia for your query.',
clientPermissions: ['EMBED_LINKS'],
args: [
{
+1 -1
View File
@@ -8,7 +8,7 @@ module.exports = class DanbooruCommand extends Command {
name: 'danbooru',
group: 'search',
memberName: 'danbooru',
description: 'Sends an image from Danbooru, with optional query.',
description: 'Searches Danbooru with optional query.',
nsfw: true,
args: [
{
+8 -8
View File
@@ -9,7 +9,7 @@ module.exports = class ForecastCommand extends Command {
name: 'forecast',
group: 'search',
memberName: 'forecast',
description: 'Gets the seven-day forecast for a specified location.',
description: 'Responds with the seven-day forecast for a specified location.',
clientPermissions: ['EMBED_LINKS'],
args: [
{
@@ -41,43 +41,43 @@ module.exports = class ForecastCommand extends Command {
**High:** ${forecasts[0].high}°F
**Low:** ${forecasts[0].low}°F
**Condition:** ${forecasts[0].text}
`, true)
`)
.addField(` ${forecasts[1].day} - ${forecasts[1].date}`,
stripIndents`
**High:** ${forecasts[1].high}°F
**Low:** ${forecasts[1].low}°F
**Condition:** ${forecasts[1].text}
`, true)
`)
.addField(` ${forecasts[2].day} - ${forecasts[2].date}`,
stripIndents`
**High:** ${forecasts[2].high}°F
**Low:** ${forecasts[2].low}°F
**Condition:** ${forecasts[2].text}
`, true)
`)
.addField(` ${forecasts[3].day} - ${forecasts[3].date}`,
stripIndents`
**High:** ${forecasts[3].high}°F
**Low:** ${forecasts[3].low}°F
**Condition:** ${forecasts[3].text}
`, true)
`)
.addField(` ${forecasts[4].day} - ${forecasts[4].date}`,
stripIndents`
**High:** ${forecasts[4].high}°F
**Low:** ${forecasts[4].low}°F
**Condition:** ${forecasts[4].text}
`, true)
`)
.addField(` ${forecasts[5].day} - ${forecasts[5].date}`,
stripIndents`
**High:** ${forecasts[5].high}°F
**Low:** ${forecasts[5].low}°F
**Condition:** ${forecasts[5].text}
`, true)
`)
.addField(` ${forecasts[6].day} - ${forecasts[6].date}`,
stripIndents`
**High:** ${forecasts[6].high}°F
**Low:** ${forecasts[6].low}°F
**Condition:** ${forecasts[6].text}
`, true);
`);
return msg.embed(embed);
}
};
+1 -1
View File
@@ -10,7 +10,7 @@ module.exports = class GelbooruCommand extends Command {
name: 'gelbooru',
group: 'search',
memberName: 'gelbooru',
description: 'Sends an image from Gelbooru, with query.',
description: 'Searches Gelbooru for your query.',
nsfw: true,
args: [
{
+1 -1
View File
@@ -8,7 +8,7 @@ module.exports = class GiphyCommand extends Command {
name: 'giphy',
group: 'search',
memberName: 'giphy',
description: 'Searches for GIFs with Giphy.',
description: 'Searches Giphy for your query.',
args: [
{
key: 'query',
+1 -1
View File
@@ -10,7 +10,7 @@ module.exports = class GithubCommand extends Command {
name: 'github',
group: 'search',
memberName: 'github',
description: 'Gets repo information from GitHub.',
description: 'Responds with repo information from a GitHub repository.',
clientPermissions: ['EMBED_LINKS'],
args: [
{
+13 -9
View File
@@ -9,7 +9,7 @@ module.exports = class GoogleCommand extends Command {
name: 'google',
group: 'search',
memberName: 'google',
description: 'Searches Google.',
description: 'Searches Google for your query.',
args: [
{
key: 'query',
@@ -23,13 +23,17 @@ module.exports = class GoogleCommand extends Command {
async run(msg, args) {
const { query } = args;
const message = await msg.say('Searching...');
const { text } = await snekfetch
.get('https://www.google.com/search')
.query({ q: query });
const $ = cheerio.load(text);
let href = $('.r').first().find('a').first().attr('href');
if (!href) return message.edit('No Results.');
href = querystring.parse(href.replace('/url?', ''));
return message.edit(href.q);
try {
const { text } = await snekfetch
.get('https://www.google.com/search')
.query({ q: query });
const $ = cheerio.load(text);
let href = $('.r').first().find('a').first().attr('href');
if (!href) throw new Error('No Results');
href = querystring.parse(href.replace('/url?', ''));
return message.edit(href.q);
} catch (err) {
return message.edit(err.message);
}
}
};
+1 -1
View File
@@ -8,7 +8,7 @@ module.exports = class KonachanCommand extends Command {
name: 'konachan',
group: 'search',
memberName: 'konachan',
description: 'Sends an image from Konachan, with optional query.',
description: 'Searches Konachan with optional query.',
nsfw: true,
args: [
{
+1 -1
View File
@@ -12,7 +12,7 @@ module.exports = class MangaCommand extends Command {
name: 'manga',
group: 'search',
memberName: 'manga',
description: 'Searches My Anime List for a specified manga.',
description: 'Searches My Anime List for your query, getting manga results.',
clientPermissions: ['EMBED_LINKS'],
args: [
{
+1 -1
View File
@@ -8,7 +8,7 @@ module.exports = class MapCommand extends Command {
name: 'map',
group: 'search',
memberName: 'map',
description: 'Gets a map image for the location you define with the zoom level you define (1-20).',
description: 'Responds with a map based upon your query.',
clientPermissions: ['ATTACH_FILES'],
args: [
{
+1 -1
View File
@@ -8,7 +8,7 @@ module.exports = class NeopetCommand extends Command {
name: 'neopet',
group: 'search',
memberName: 'neopet',
description: 'Gives a Neopet\'s image, searchable by name.',
description: 'Searches for Neopets with the username of your query.',
args: [
{
key: 'query',
+1 -1
View File
@@ -9,7 +9,7 @@ module.exports = class OsuCommand extends Command {
name: 'osu',
group: 'search',
memberName: 'osu',
description: 'Searches Osu! user data.',
description: 'Searches osu! usernames for your query.',
clientPermissions: ['EMBED_LINKS'],
args: [
{
+1 -1
View File
@@ -10,7 +10,7 @@ module.exports = class Rule34Command extends Command {
name: 'rule34',
group: 'search',
memberName: 'rule34',
description: 'Sends an image from Rule34, with query.',
description: 'Searches Rule34 for your query.',
nsfw: true,
args: [
{
+1 -1
View File
@@ -9,7 +9,7 @@ module.exports = class SoundCloudCommand extends Command {
name: 'soundcloud',
group: 'search',
memberName: 'soundcloud',
description: 'Searches SoundCloud for a song.',
description: 'Searches SoundCloud for your query.',
clientPermissions: ['EMBED_LINKS'],
args: [
{
+1 -1
View File
@@ -8,7 +8,7 @@ module.exports = class UrbanCommand extends Command {
name: 'urban',
group: 'search',
memberName: 'urban',
description: 'Searches Urban Dictionary for a word.',
description: 'Searches Urban Dictionary for your query.',
clientPermissions: ['EMBED_LINKS'],
args: [
{
+1 -1
View File
@@ -10,7 +10,7 @@ module.exports = class WattpadCommand extends Command {
name: 'wattpad',
group: 'search',
memberName: 'wattpad',
description: 'Searches Wattpad for a book.',
description: 'Searches Wattpad for your query.',
clientPermissions: ['EMBED_LINKS'],
args: [
{
+1 -1
View File
@@ -8,7 +8,7 @@ module.exports = class WeatherCommand extends Command {
name: 'weather',
group: 'search',
memberName: 'weather',
description: 'Gets weather information for a specified location.',
description: 'Responds with weather information for a specified location.',
clientPermissions: ['EMBED_LINKS'],
args: [
{
+1 -1
View File
@@ -8,7 +8,7 @@ module.exports = class WikipediaCommand extends Command {
name: 'wikipedia',
group: 'search',
memberName: 'wikipedia',
description: 'Searches Wikipedia for something.',
description: 'Searches Wikipedia for your query.',
clientPermissions: ['EMBED_LINKS'],
args: [
{
+1 -1
View File
@@ -9,7 +9,7 @@ module.exports = class XKCDCommand extends Command {
aliases: ['kcd'],
group: 'search',
memberName: 'xkcd',
description: 'Gets an XKCD Comic, optionally opting for today\'s or random.',
description: 'Gets an XKCD Comic, optionally opting for today\'s or a specific number.',
clientPermissions: ['EMBED_LINKS'],
args: [
{

Some files were not shown because too many files have changed in this diff Show More