23
@@ -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'],
|
||||
|
||||
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 251 KiB |
|
Before Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 191 KiB |
|
Before Width: | Height: | Size: 54 KiB |
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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
|
||||
@@ -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)`}
|
||||
`);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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.`);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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']
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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.');
|
||||
}
|
||||
|
||||
@@ -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.'
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -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()]
|
||||
}
|
||||
@@ -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}
|
||||
`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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}
|
||||
`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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'],
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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}
|
||||
`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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}
|
||||
`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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}%!`);
|
||||
}
|
||||
};
|
||||
@@ -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',
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
};
|
||||
@@ -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;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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'] });
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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}` : ''}
|
||||
`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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.';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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']
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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']
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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
|
||||
`);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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: [
|
||||
{
|
||||
|
||||
@@ -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: [
|
||||
{
|
||||
|
||||
@@ -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: [
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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: [
|
||||
{
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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: [
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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: [
|
||||
{
|
||||
|
||||
@@ -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: [
|
||||
{
|
||||
|
||||
@@ -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: [
|
||||
{
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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: [
|
||||
{
|
||||
|
||||
@@ -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: [
|
||||
{
|
||||
|
||||
@@ -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: [
|
||||
{
|
||||
|
||||
@@ -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: [
|
||||
{
|
||||
|
||||
@@ -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: [
|
||||
{
|
||||
|
||||
@@ -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: [
|
||||
{
|
||||
|
||||
@@ -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: [
|
||||
{
|
||||
|
||||
@@ -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: [
|
||||
{
|
||||
|
||||