mirror of
https://github.com/arthur-pbty/xiao.git
synced 2026-06-09 01:04:16 +02:00
Updates
This commit is contained in:
@@ -9,7 +9,7 @@ module.exports = class ContrastCommand extends Command {
|
||||
name: 'contrast',
|
||||
group: 'avatar-edit',
|
||||
memberName: 'contrast',
|
||||
description: 'Draws a user\'s avatar, but with contrast.',
|
||||
description: 'Draws a user\'s avatar but with contrast.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 15
|
||||
|
||||
@@ -9,7 +9,7 @@ module.exports = class DexterCommand extends Command {
|
||||
name: 'dexter',
|
||||
group: 'avatar-edit',
|
||||
memberName: 'dexter',
|
||||
description: 'Draws a user\'s avatar over Dexter from Pokémon\'s screen.',
|
||||
description: 'Draws a user\'s avatar over the screen of Dexter from Pokémon.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 15
|
||||
|
||||
@@ -9,7 +9,7 @@ module.exports = class InvertCommand extends Command {
|
||||
name: 'invert',
|
||||
group: 'avatar-edit',
|
||||
memberName: 'invert',
|
||||
description: 'Draws a user\'s avatar inverted.',
|
||||
description: 'Draws a user\'s avatar but inverted.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 15
|
||||
|
||||
@@ -10,7 +10,7 @@ module.exports = class LookWhatKarenHaveCommand extends Command {
|
||||
aliases: ['look-at-what-karen-has', 'look-what-karen-has'],
|
||||
group: 'avatar-edit',
|
||||
memberName: 'look-what-karen-have',
|
||||
description: 'Draws a user\'s avatar over Karen\'s photo.',
|
||||
description: 'Draws a user\'s avatar over Karen\'s piece of paper.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 15
|
||||
|
||||
@@ -8,7 +8,7 @@ module.exports = class PixelizeCommand extends Command {
|
||||
name: 'pixelize',
|
||||
group: 'avatar-edit',
|
||||
memberName: 'pixelize',
|
||||
description: 'Draws a user\'s avatar pixelized.',
|
||||
description: 'Draws a user\'s avatar but pixelized.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 15
|
||||
|
||||
@@ -10,7 +10,7 @@ module.exports = class SteamCardCommand extends Command {
|
||||
aliases: ['valve-card'],
|
||||
group: 'avatar-edit',
|
||||
memberName: 'steam-card',
|
||||
description: 'Draws a user\'s avatar over a Steam Trading Card.',
|
||||
description: 'Draws a user\'s avatar on a Steam Trading Card.',
|
||||
guildOnly: true,
|
||||
throttling: {
|
||||
usages: 1,
|
||||
|
||||
@@ -10,7 +10,7 @@ module.exports = class TriggeredCommand extends Command {
|
||||
name: 'triggered',
|
||||
group: 'avatar-edit',
|
||||
memberName: 'triggered',
|
||||
description: 'Draws a user\'s avatar over a Triggered meme.',
|
||||
description: 'Draws a user\'s avatar over the "Triggered" meme.',
|
||||
throttling: {
|
||||
usages: 1,
|
||||
duration: 15
|
||||
|
||||
@@ -7,7 +7,7 @@ module.exports = class DaysUntilCommand extends Command {
|
||||
aliases: ['days-until-christmas'],
|
||||
group: 'events',
|
||||
memberName: 'days-until',
|
||||
description: 'Responds with how many days until a certain date this year.',
|
||||
description: 'Responds with how many days there are until a certain date.',
|
||||
args: [
|
||||
{
|
||||
key: 'date',
|
||||
|
||||
@@ -7,7 +7,7 @@ module.exports = class GoogleDoodleCommand extends Command {
|
||||
name: 'google-doodle',
|
||||
group: 'events',
|
||||
memberName: 'google-doodle',
|
||||
description: 'Responds with a Google doodle, either the latest or a random one from a specific month/year.',
|
||||
description: 'Responds with a Google Doodle, either the latest one or a random one from the past.',
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
|
||||
@@ -10,7 +10,7 @@ module.exports = class HoroscopeCommand extends Command {
|
||||
name: 'horoscope',
|
||||
group: 'events',
|
||||
memberName: 'horoscope',
|
||||
description: 'Responds with today\'s horoscope for a particular sign.',
|
||||
description: 'Responds with today\'s horoscope for a specific Zodiac sign.',
|
||||
details: `**Signs**: ${signs.join(', ')}`,
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
|
||||
@@ -9,22 +9,14 @@ module.exports = class TodayInHistoryCommand extends Command {
|
||||
aliases: ['event', 'today', 'history'],
|
||||
group: 'events',
|
||||
memberName: 'today-in-history',
|
||||
description: 'Responds with an event that occurred today in history, or on a specific day.',
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
{
|
||||
key: 'date',
|
||||
prompt: 'What date do you want events for? Month/Day format.',
|
||||
type: 'string',
|
||||
default: ''
|
||||
}
|
||||
]
|
||||
description: 'Responds with an event that occurred today in history.',
|
||||
clientPermissions: ['EMBED_LINKS']
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, { date }) {
|
||||
async run(msg) {
|
||||
try {
|
||||
const { text } = await snekfetch.get(`http://history.muffinlabs.com/date${date ? `/${date}` : ''}`);
|
||||
const { text } = await snekfetch.get('http://history.muffinlabs.com/date');
|
||||
const body = JSON.parse(text);
|
||||
const events = body.data.Events;
|
||||
const event = events[Math.floor(Math.random() * events.length)];
|
||||
@@ -38,7 +30,6 @@ module.exports = class TodayInHistoryCommand extends Command {
|
||||
event.links.map(link => `[${link.title}](${link.link.replace(/\)/g, '%29')})`).join(', '));
|
||||
return msg.embed(embed);
|
||||
} catch (err) {
|
||||
if (err.status === 404 || err.status === 500) return msg.say('Could not find any results.');
|
||||
return msg.reply(`Oh no, an error occurred: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ module.exports = class WordOfTheDayCommand extends Command {
|
||||
aliases: ['wordnik-word-of-the-day'],
|
||||
group: 'events',
|
||||
memberName: 'word-of-the-day',
|
||||
description: 'Gets the word of the day.'
|
||||
description: 'Responds with today\'s word of the day.'
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -9,24 +9,24 @@ module.exports = class XKCDCommand extends Command {
|
||||
aliases: ['kcd'],
|
||||
group: 'events',
|
||||
memberName: 'xkcd',
|
||||
description: 'Gets an XKCD Comic, optionally opting for today\'s or a specific number.',
|
||||
description: 'Responds with an XKCD comic, either today\'s, a random one, or a specific one.',
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
{
|
||||
key: 'type',
|
||||
key: 'query',
|
||||
prompt: 'Please enter either a specific comic number, today, or random.',
|
||||
type: 'string',
|
||||
default: 'today',
|
||||
parse: type => type.toLowerCase()
|
||||
parse: query => query.toLowerCase()
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, { type }) {
|
||||
async run(msg, { query }) {
|
||||
try {
|
||||
const current = await snekfetch.get('https://xkcd.com/info.0.json');
|
||||
if (type === 'today') {
|
||||
if (query === 'today') {
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle(`${current.body.num} - ${current.body.title}`)
|
||||
.setColor(0x9797FF)
|
||||
@@ -35,7 +35,7 @@ module.exports = class XKCDCommand extends Command {
|
||||
.setFooter(current.body.alt);
|
||||
return msg.embed(embed);
|
||||
}
|
||||
if (type === 'random') {
|
||||
if (query === 'random') {
|
||||
const random = Math.floor(Math.random() * current.body.num) + 1;
|
||||
const { body } = await snekfetch.get(`https://xkcd.com/${random}/info.0.json`);
|
||||
const embed = new MessageEmbed()
|
||||
@@ -46,7 +46,7 @@ module.exports = class XKCDCommand extends Command {
|
||||
.setFooter(body.alt);
|
||||
return msg.embed(embed);
|
||||
}
|
||||
const choice = parseInt(type, 10);
|
||||
const choice = parseInt(query, 10);
|
||||
if (isNaN(choice) || current.body.num < choice || choice < 1) return msg.say('Could not find any results.');
|
||||
const { body } = await snekfetch.get(`https://xkcd.com/${choice}/info.0.json`);
|
||||
const embed = new MessageEmbed()
|
||||
|
||||
@@ -11,7 +11,7 @@ module.exports = class AkinatorCommand extends Command {
|
||||
aliases: ['the-web-genie', 'web-genie'],
|
||||
group: 'games',
|
||||
memberName: 'akinator',
|
||||
description: 'Play a game of Akinator.',
|
||||
description: 'Think about a real or fictional character, I will try to guess who it is.',
|
||||
clientPermissions: ['EMBED_LINKS']
|
||||
});
|
||||
|
||||
@@ -22,7 +22,7 @@ module.exports = class AkinatorCommand extends Command {
|
||||
if (this.sessions.has(msg.channel.id)) return msg.reply('Only one game may be occuring per channel.');
|
||||
try {
|
||||
let ans = null;
|
||||
this.sessions.set(msg.channel.id, { progress: null });
|
||||
this.sessions.set(msg.channel.id, { progress: 0 });
|
||||
while (this.sessions.get(msg.channel.id).progress < 99) {
|
||||
const data = ans === null ? await this.createSession(msg.channel) : await this.progress(msg.channel, ans);
|
||||
if (!data || this.sessions.get(msg.channel.id).step >= 80) break;
|
||||
@@ -30,7 +30,7 @@ module.exports = class AkinatorCommand extends Command {
|
||||
answers.push('end');
|
||||
await msg.say(stripIndents`
|
||||
**${++data.step}.** ${data.question}
|
||||
${data.answers.map(answer => answer.answer).join(' | ')}
|
||||
${data.answers.map(answer => answer.answer).join(' | ')} | End
|
||||
`);
|
||||
const filter = res => res.author.id === msg.author.id && answers.includes(res.content.toLowerCase());
|
||||
const msgs = await msg.channel.awaitMessages(filter, {
|
||||
@@ -48,9 +48,7 @@ module.exports = class AkinatorCommand extends Command {
|
||||
const embed = new MessageEmbed()
|
||||
.setColor(0xF78B26)
|
||||
.setTitle(`I'm ${Math.round(guess.proba * 100)}% sure it's...`)
|
||||
.setDescription(stripIndents`
|
||||
${guess.name}${guess.description ? `\n_${guess.description}_` : ''}
|
||||
`)
|
||||
.setDescription(`${guess.name}${guess.description ? `\n_${guess.description}_` : ''}`)
|
||||
.setThumbnail(guess.absolute_picture_path);
|
||||
await msg.embed(embed);
|
||||
const verification = await verify(msg.channel, msg.author);
|
||||
|
||||
@@ -10,7 +10,7 @@ module.exports = class ApplesToApplesCommand extends Command {
|
||||
name: 'apples-to-apples',
|
||||
group: 'games',
|
||||
memberName: 'apples-to-apples',
|
||||
description: 'Play a game of Apples to Apples.',
|
||||
description: 'Compete to see who can come up with the best card to match an adjective.',
|
||||
guildOnly: true,
|
||||
args: [
|
||||
{
|
||||
@@ -31,8 +31,8 @@ module.exports = class ApplesToApplesCommand extends Command {
|
||||
if (this.playing.has(msg.channel.id)) return msg.reply('Only one game may be occurring per channel.');
|
||||
this.playing.add(msg.channel.id);
|
||||
try {
|
||||
await msg.say('You will need at least 2 more players, at maximum 20. To join, type `join game`.');
|
||||
const awaitedPlayers = await awaitPlayers(msg, 20, 3);
|
||||
await msg.say('You will need at least 2 more players, at maximum 10. To join, type `join game`.');
|
||||
const awaitedPlayers = await awaitPlayers(msg, 10, 3);
|
||||
if (!awaitedPlayers) {
|
||||
this.playing.delete(msg.channel.id);
|
||||
return msg.say('Game could not be started...');
|
||||
@@ -86,7 +86,24 @@ module.exports = class ApplesToApplesCommand extends Command {
|
||||
await player.user.send('Skipping your turn...');
|
||||
continue;
|
||||
}
|
||||
player.hand.delete(chosen);
|
||||
if (chosen === '<Blank>') {
|
||||
await player.user.send(stripIndents`
|
||||
What do you want the blank card to say?
|
||||
Only answers under 100 characters will be counted.
|
||||
`);
|
||||
const blank = await player.user.dmChannel.awaitMessages(res => res.content.length < 100, {
|
||||
max: 1,
|
||||
time: 120000
|
||||
});
|
||||
if (!blank.size) { // eslint-disable-line max-depth
|
||||
await player.user.send('Skipping your turn...');
|
||||
continue;
|
||||
}
|
||||
player.hand.delete('<Blank>');
|
||||
chosen = blank.first().content;
|
||||
} else {
|
||||
player.hand.delete(chosen);
|
||||
}
|
||||
chosenCards.push({
|
||||
id: player.id,
|
||||
card: chosen
|
||||
|
||||
@@ -11,7 +11,7 @@ module.exports = class CardsAgainstHumanityCommand extends Command {
|
||||
aliases: ['crude-cards', 'pretend-youre-xyzzy', 'cah'],
|
||||
group: 'games',
|
||||
memberName: 'cards-against-humanity',
|
||||
description: 'Play a game of Cards Against Humanity.',
|
||||
description: 'Compete to see who can come up with the best card to fill in the blank.',
|
||||
guildOnly: true,
|
||||
args: [
|
||||
{
|
||||
@@ -32,8 +32,8 @@ module.exports = class CardsAgainstHumanityCommand extends Command {
|
||||
if (this.playing.has(msg.channel.id)) return msg.reply('Only one game may be occurring per channel.');
|
||||
this.playing.add(msg.channel.id);
|
||||
try {
|
||||
await msg.say('You will need at least 2 more players, at maximum 20. To join, type `join game`.');
|
||||
const awaitedPlayers = await awaitPlayers(msg, 20, 3);
|
||||
await msg.say('You will need at least 2 more players, at maximum 10. To join, type `join game`.');
|
||||
const awaitedPlayers = await awaitPlayers(msg, 10, 3);
|
||||
if (!awaitedPlayers) {
|
||||
this.playing.delete(msg.channel.id);
|
||||
return msg.say('Game could not be started...');
|
||||
@@ -88,6 +88,22 @@ module.exports = class CardsAgainstHumanityCommand extends Command {
|
||||
await player.user.send('Skipping your turn...');
|
||||
continue;
|
||||
}
|
||||
if (chosen.includes('<Blank>')) {
|
||||
await player.user.send(stripIndents`
|
||||
What do you want the blank card to say?
|
||||
Only answers under 100 characters will be counted.
|
||||
`);
|
||||
const blank = await player.user.dmChannel.awaitMessages(res => res.content.length < 100, {
|
||||
max: 1,
|
||||
time: 120000
|
||||
});
|
||||
if (!blank.size) { // eslint-disable-line max-depth
|
||||
await player.user.send('Skipping your turn...');
|
||||
continue;
|
||||
}
|
||||
player.hand.delete('<Blank>');
|
||||
chosen[chosen.indexOf('<Blank>')] = blank.first().content;
|
||||
}
|
||||
for (const card of chosen) player.hand.delete(card);
|
||||
chosenCards.push({
|
||||
id: player.id,
|
||||
|
||||
@@ -10,7 +10,7 @@ module.exports = class EmojiEmojiRevolutionCommand extends Command {
|
||||
aliases: ['eer'],
|
||||
group: 'games',
|
||||
memberName: 'emoji-emoji-revolution',
|
||||
description: 'Play a game of Emoji Emoji Revolution.',
|
||||
description: 'Can you type arrow emoji faster than anyone else has ever typed them before?',
|
||||
guildOnly: true,
|
||||
args: [
|
||||
{
|
||||
|
||||
@@ -9,7 +9,7 @@ module.exports = class GunfightCommand extends Command {
|
||||
aliases: ['western-gunfight'],
|
||||
group: 'games',
|
||||
memberName: 'gunfight',
|
||||
description: 'Engage in a western gunfight against another user.',
|
||||
description: 'Engage in a western gunfight against another user. High noon.',
|
||||
guildOnly: true,
|
||||
args: [
|
||||
{
|
||||
|
||||
@@ -9,7 +9,7 @@ module.exports = class HangmanCommand extends Command {
|
||||
name: 'hangman',
|
||||
group: 'games',
|
||||
memberName: 'hangman',
|
||||
description: 'Play a game of hangman.'
|
||||
description: 'Prevent a man from being hanged by guessing a word as fast as you can.'
|
||||
});
|
||||
|
||||
this.playing = new Set();
|
||||
|
||||
@@ -10,7 +10,7 @@ module.exports = class HungerGamesCommand extends Command {
|
||||
aliases: ['hunger-games-simulator', 'brant-steele'],
|
||||
group: 'games',
|
||||
memberName: 'hunger-games',
|
||||
description: 'Simulate a Hunger Games match.',
|
||||
description: 'Simulate a Hunger Games match with up to 24 tributes.',
|
||||
args: [
|
||||
{
|
||||
key: 'tributes',
|
||||
|
||||
@@ -6,12 +6,12 @@ module.exports = class LotteryCommand extends Command {
|
||||
name: 'lottery',
|
||||
group: 'games',
|
||||
memberName: 'lottery',
|
||||
description: 'Attempt to win the lottery, with a 1 in 100 chance of winning.'
|
||||
description: 'Attempt to win the lottery, with a 1 in 1000 chance of winning.'
|
||||
});
|
||||
}
|
||||
|
||||
run(msg) {
|
||||
const lottery = Math.floor(Math.random() * 100) + 1;
|
||||
const lottery = Math.floor(Math.random() * 1000) + 1;
|
||||
if (lottery === 1) return msg.reply('Nice job! 10/10! You deserve some cake!');
|
||||
return msg.reply('Nope, sorry, you lost.');
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ module.exports = class MathGameCommand extends Command {
|
||||
name: 'math-game',
|
||||
aliases: ['math-quiz', 'math-test'],
|
||||
group: 'games',
|
||||
memberName: 'math-game',
|
||||
memberName: 'math',
|
||||
description: 'See how fast you can answer a math problem in a given time limit.',
|
||||
args: [
|
||||
{
|
||||
@@ -8,7 +8,7 @@ module.exports = class TicTacToeCommand extends Command {
|
||||
name: 'tic-tac-toe',
|
||||
group: 'games',
|
||||
memberName: 'tic-tac-toe',
|
||||
description: 'Play a game of tic-tac-toe.',
|
||||
description: 'Play a game of tic-tac-toe with another user.',
|
||||
args: [
|
||||
{
|
||||
key: 'opponent',
|
||||
|
||||
@@ -17,7 +17,7 @@ module.exports = class TypingGameCommand extends Command {
|
||||
name: 'typing-game',
|
||||
aliases: ['typing-quiz', 'typing-test'],
|
||||
group: 'games',
|
||||
memberName: 'typing-game',
|
||||
memberName: 'typing',
|
||||
description: 'See how fast you can type a sentence in a given time limit.',
|
||||
args: [
|
||||
{
|
||||
@@ -21,8 +21,8 @@ module.exports = class WizardConventionCommand extends Command {
|
||||
if (this.playing.has(msg.channel.id)) return msg.reply('Only one game may be occurring per channel.');
|
||||
this.playing.add(msg.channel.id);
|
||||
try {
|
||||
await msg.say('You will need at least 2 more players, at maximum 15. To join, type `join game`.');
|
||||
const awaitedPlayers = await awaitPlayers(msg, 15, 3);
|
||||
await msg.say('You will need at least 2 more players, at maximum 10. To join, type `join game`.');
|
||||
const awaitedPlayers = await awaitPlayers(msg, 10, 3);
|
||||
if (!awaitedPlayers) {
|
||||
this.playing.delete(msg.channel.id);
|
||||
return msg.say('Game could not be started...');
|
||||
|
||||
@@ -5,7 +5,7 @@ const types = {
|
||||
group: 'Group DM',
|
||||
text: 'Text Channel',
|
||||
voice: 'Voice Channel',
|
||||
category: 'Channel Category',
|
||||
category: 'Category',
|
||||
unknown: 'Unknown'
|
||||
};
|
||||
|
||||
@@ -15,7 +15,7 @@ module.exports = class ChannelInfoCommand extends Command {
|
||||
name: 'channel-info',
|
||||
aliases: ['channel'],
|
||||
group: 'info',
|
||||
memberName: 'channel-info',
|
||||
memberName: 'channel',
|
||||
description: 'Responds with detailed information on a channel.',
|
||||
guildOnly: true,
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
|
||||
@@ -12,6 +12,7 @@ module.exports = class DiscriminatorCommand extends Command {
|
||||
args: [
|
||||
{
|
||||
key: 'discrim',
|
||||
label: 'discriminator',
|
||||
prompt: 'Which discriminator would you like to search for?',
|
||||
type: 'string',
|
||||
default: '',
|
||||
|
||||
@@ -7,7 +7,7 @@ module.exports = class EmojiInfoCommand extends Command {
|
||||
name: 'emoji-info',
|
||||
aliases: ['emoji'],
|
||||
group: 'info',
|
||||
memberName: 'emoji-info',
|
||||
memberName: 'emoji',
|
||||
description: 'Responds with detailed information on an emoji.',
|
||||
guildOnly: true,
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
|
||||
@@ -8,7 +8,7 @@ module.exports = class RoleInfoCommand extends Command {
|
||||
name: 'role-info',
|
||||
aliases: ['role'],
|
||||
group: 'info',
|
||||
memberName: 'role-info',
|
||||
memberName: 'role',
|
||||
description: 'Responds with detailed information on a role.',
|
||||
guildOnly: true,
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
|
||||
@@ -9,7 +9,7 @@ module.exports = class ServerInfoCommand extends Command {
|
||||
name: 'server-info',
|
||||
aliases: ['guild', 'server', 'guild-info'],
|
||||
group: 'info',
|
||||
memberName: 'server-info',
|
||||
memberName: 'server',
|
||||
description: 'Responds with detailed information on the server.',
|
||||
guildOnly: true,
|
||||
clientPermissions: ['EMBED_LINKS']
|
||||
|
||||
@@ -7,7 +7,7 @@ module.exports = class UserInfoCommand extends Command {
|
||||
name: 'user-info',
|
||||
aliases: ['user', 'member', 'member-info'],
|
||||
group: 'info',
|
||||
memberName: 'user-info',
|
||||
memberName: 'user',
|
||||
description: 'Responds with detailed information on a user.',
|
||||
guildOnly: true,
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
|
||||
@@ -8,9 +8,9 @@ module.exports = class CurrencyCommand extends Command {
|
||||
super(client, {
|
||||
name: 'currency',
|
||||
aliases: ['currency-convert', 'convert-currency'],
|
||||
group: 'num-edit',
|
||||
group: 'number-edit',
|
||||
memberName: 'currency',
|
||||
description: 'Converts a number from one currency to another.',
|
||||
description: 'Converts money from one currency to another.',
|
||||
details: `**Codes**: ${codes.join(', ')}`,
|
||||
args: [
|
||||
{
|
||||
@@ -6,9 +6,9 @@ module.exports = class MathCommand extends Command {
|
||||
super(client, {
|
||||
name: 'math',
|
||||
aliases: ['calculator', 'calc'],
|
||||
group: 'num-edit',
|
||||
group: 'number-edit',
|
||||
memberName: 'math',
|
||||
description: 'Evaluates math expressions.',
|
||||
description: 'Evaluates a math expression.',
|
||||
args: [
|
||||
{
|
||||
key: 'expression',
|
||||
@@ -7,7 +7,7 @@ module.exports = class TemperatureCommand extends Command {
|
||||
super(client, {
|
||||
name: 'temperature',
|
||||
aliases: ['temperature-convert', 'convert-temperature', 'temp-convert', 'convert-temp'],
|
||||
group: 'num-edit',
|
||||
group: 'number-edit',
|
||||
memberName: 'temperature',
|
||||
description: `Converts temperatures to/from ${list(units, 'or')}.`,
|
||||
args: [
|
||||
@@ -9,7 +9,7 @@ module.exports = class CleverbotCommand extends Command {
|
||||
aliases: ['clevs'],
|
||||
group: 'other',
|
||||
memberName: 'cleverbot',
|
||||
description: 'Talk to Cleverbot!',
|
||||
description: 'Chat with Cleverbot.',
|
||||
ownerOnly: true,
|
||||
args: [
|
||||
{
|
||||
|
||||
@@ -6,7 +6,7 @@ module.exports = class CoolnessCommand extends Command {
|
||||
name: 'coolness',
|
||||
group: 'other',
|
||||
memberName: 'coolness',
|
||||
description: 'Determines your coolness.',
|
||||
description: 'Determines a user\'s coolness.',
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
const { Command } = require('discord.js-commando');
|
||||
const { list } = require('../../util/Util');
|
||||
const path = require('path');
|
||||
const sounds = ['airhorn', 'cat', 'dun-dun-dun', 'laugh track', 'pikachu', 'space'];
|
||||
const sounds = require('../../assets/json/soundboard');
|
||||
|
||||
module.exports = class SoundboardCommand extends Command {
|
||||
constructor(client) {
|
||||
|
||||
@@ -8,7 +8,7 @@ module.exports = class SpoopyLinkCommand extends Command {
|
||||
name: 'spoopy-link',
|
||||
group: 'other',
|
||||
memberName: 'spoopy-link',
|
||||
description: 'Checks if a link is spoopy or not.',
|
||||
description: 'Determines if a link is spoopy or not.',
|
||||
args: [
|
||||
{
|
||||
key: 'site',
|
||||
@@ -25,7 +25,7 @@ module.exports = class SpoopyLinkCommand extends Command {
|
||||
try {
|
||||
const { body } = await snekfetch.get(`https://spoopy.link/api/${site}`);
|
||||
return msg.say(stripIndents`
|
||||
${body.safe ? '✅ Safe!' : '❌ Not safe...'}
|
||||
${body.safe ? 'Safe!' : 'Not safe...'}
|
||||
${body.chain.map(url => `<${url.url}> ${url.safe ? '✅' : `❌ (${url.reasons.join(', ')})`}`).join('\n')}
|
||||
`);
|
||||
} catch (err) {
|
||||
|
||||
@@ -9,7 +9,7 @@ module.exports = class StrawpollCommand extends Command {
|
||||
aliases: ['poll'],
|
||||
group: 'other',
|
||||
memberName: 'strawpoll',
|
||||
description: 'Creates a Strawpoll from the options you provide.',
|
||||
description: 'Generates a Strawpoll with the options you provide.',
|
||||
args: [
|
||||
{
|
||||
key: 'title',
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
const { Command } = require('discord.js-commando');
|
||||
const snekfetch = require('snekfetch');
|
||||
|
||||
module.exports = class QuoteCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'quote',
|
||||
group: 'random-res',
|
||||
memberName: 'quote',
|
||||
description: 'Responds with a random quote.'
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg) {
|
||||
try {
|
||||
const { body } = await snekfetch.get('https://talaikis.com/api/quotes/random/');
|
||||
return msg.say(`${body.quote} - _${body.author}_`);
|
||||
} catch (err) {
|
||||
return msg.reply(`Oh no, an error occurred: \`${err.message}\`. Try again later!`);
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -1,18 +0,0 @@
|
||||
const { Command } = require('discord.js-commando');
|
||||
const crypto = require('crypto');
|
||||
|
||||
module.exports = class SecurityKeyCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'security-key',
|
||||
aliases: ['crypto', 'crypto-key'],
|
||||
group: 'random-res',
|
||||
memberName: 'security-key',
|
||||
description: 'Generates a random security key.'
|
||||
});
|
||||
}
|
||||
|
||||
run(msg) {
|
||||
return msg.say(crypto.randomBytes(15).toString('hex'));
|
||||
}
|
||||
};
|
||||
@@ -7,7 +7,7 @@ module.exports = class EightBallCommand extends Command {
|
||||
super(client, {
|
||||
name: '8-ball',
|
||||
aliases: ['magic-8-ball', 'eight-ball', 'magic-eight-ball'],
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: '8-ball',
|
||||
description: 'Asks your question to the Magic 8 Ball.',
|
||||
args: [
|
||||
@@ -6,9 +6,9 @@ module.exports = class CatFactCommand extends Command {
|
||||
super(client, {
|
||||
name: 'cat-fact',
|
||||
aliases: ['neko-fact', 'kitty-fact'],
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'cat-fact',
|
||||
description: 'Responds with a cat fact.'
|
||||
description: 'Responds with a random cat fact.'
|
||||
});
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ module.exports = class CatCommand extends Command {
|
||||
super(client, {
|
||||
name: 'cat',
|
||||
aliases: ['neko', 'kitty'],
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'cat',
|
||||
description: 'Responds with a random cat image.',
|
||||
clientPermissions: ['ATTACH_FILES']
|
||||
+1
-1
@@ -7,7 +7,7 @@ module.exports = class CharlieCharlieChallengeCommand extends Command {
|
||||
super(client, {
|
||||
name: 'charlie-charlie-challenge',
|
||||
aliases: ['charlie-charlie'],
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'charlie-charlie-challenge',
|
||||
description: 'Asks your question to Charlie.',
|
||||
args: [
|
||||
@@ -5,7 +5,7 @@ module.exports = class ChooseCommand extends Command {
|
||||
super(client, {
|
||||
name: 'choose',
|
||||
aliases: ['pick'],
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'choose',
|
||||
description: 'Chooses between options you provide.',
|
||||
args: [
|
||||
@@ -6,9 +6,9 @@ module.exports = class ChuckNorrisCommand extends Command {
|
||||
super(client, {
|
||||
name: 'chuck-norris',
|
||||
aliases: ['chuck', 'norris'],
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'chuck-norris',
|
||||
description: 'Responds with a Chuck Norris quote.',
|
||||
description: 'Responds with a random Chuck Norris joke.',
|
||||
args: [
|
||||
{
|
||||
key: 'name',
|
||||
@@ -6,7 +6,7 @@ module.exports = class CoinCommand extends Command {
|
||||
super(client, {
|
||||
name: 'coin',
|
||||
aliases: ['coin-flip', 'flip'],
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'coin',
|
||||
description: 'Flips a coin.'
|
||||
});
|
||||
@@ -5,7 +5,7 @@ module.exports = class ComplimentCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'compliment',
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'compliment',
|
||||
description: 'Compliments a user.',
|
||||
args: [
|
||||
@@ -6,9 +6,9 @@ module.exports = class DogFactCommand extends Command {
|
||||
super(client, {
|
||||
name: 'dog-fact',
|
||||
aliases: ['puppy-fact'],
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'dog-fact',
|
||||
description: 'Responds with a dog fact.'
|
||||
description: 'Responds with a random dog fact.'
|
||||
});
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ module.exports = class DogCommand extends Command {
|
||||
super(client, {
|
||||
name: 'dog',
|
||||
aliases: ['puppy'],
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'dog',
|
||||
description: 'Responds with a random dog image.',
|
||||
clientPermissions: ['ATTACH_FILES']
|
||||
@@ -5,7 +5,7 @@ module.exports = class FactCoreCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'fact-core',
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'fact-core',
|
||||
description: 'Responds with a random Fact Core quote.'
|
||||
});
|
||||
@@ -6,7 +6,7 @@ module.exports = class FidgetCommand extends Command {
|
||||
super(client, {
|
||||
name: 'fidget',
|
||||
aliases: ['nimbat'],
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'fidget',
|
||||
description: 'Responds with a random image of Fidget.',
|
||||
clientPermissions: ['ATTACH_FILES']
|
||||
@@ -7,7 +7,7 @@ module.exports = class FortuneCommand extends Command {
|
||||
super(client, {
|
||||
name: 'fortune',
|
||||
aliases: ['fortune-cookie'],
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'fortune',
|
||||
description: 'Responds with a random fortune.'
|
||||
});
|
||||
@@ -2,19 +2,16 @@ const { Command } = require('discord.js-commando');
|
||||
const { oneLine } = require('common-tags');
|
||||
const { randomRange } = require('../../util/Util');
|
||||
const genders = ['male', 'female'];
|
||||
const eyeColors = ['blue', 'brown', 'hazel', 'green', 'yellow'];
|
||||
const hairColors = ['blonde', 'brown', 'red', 'black', 'grey', 'white'];
|
||||
const hairStyles = ['curly', 'straight', 'wavy', 'long', 'shoulder-length', 'short', 'balding'];
|
||||
const extras = ['freckles', 'glasses', 'dimples', 'contacts', 'loads of acne', 'pretty smile', 'braces'];
|
||||
const { eyeColors, hairColors, hairStyles, extras } = require('../../assets/json/guess-looks');
|
||||
|
||||
module.exports = class GuessMyLooksCommand extends Command {
|
||||
module.exports = class GuessLooksCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'guess-my-looks',
|
||||
aliases: ['guess-looks'],
|
||||
group: 'random-res',
|
||||
memberName: 'guess-my-looks',
|
||||
description: 'Guesses what you look like.',
|
||||
name: 'guess-looks',
|
||||
aliases: ['guess-my-looks'],
|
||||
group: 'random',
|
||||
memberName: 'guess-looks',
|
||||
description: 'Guesses what a user looks like.',
|
||||
args: [
|
||||
{
|
||||
key: 'user',
|
||||
@@ -5,7 +5,7 @@ module.exports = class JokeCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'joke',
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'joke',
|
||||
description: 'Responds with a random joke.'
|
||||
});
|
||||
@@ -6,26 +6,26 @@ module.exports = class KissMarryKillCommand extends Command {
|
||||
super(client, {
|
||||
name: 'kiss-marry-kill',
|
||||
aliases: ['kiss-kill-marry', 'kill-kiss-marry', 'kill-marry-kiss', 'marry-kiss-kill', 'marry-kill-kiss'],
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'kiss-marry-kill',
|
||||
description: 'Decides who to kiss, who to marry, and who to kill.',
|
||||
description: 'Determines who to kiss, who to marry, and who to kill.',
|
||||
args: [
|
||||
{
|
||||
key: 'thing1',
|
||||
key: 'first',
|
||||
label: 'first name',
|
||||
prompt: 'Who is the first person you choose?',
|
||||
type: 'string',
|
||||
max: 500
|
||||
},
|
||||
{
|
||||
key: 'thing2',
|
||||
key: 'second',
|
||||
label: 'second name',
|
||||
prompt: 'Who is the second person you choose?',
|
||||
type: 'string',
|
||||
max: 500
|
||||
},
|
||||
{
|
||||
key: 'thing3',
|
||||
key: 'third',
|
||||
label: 'third name',
|
||||
prompt: 'Who is the third person you choose?',
|
||||
type: 'string',
|
||||
@@ -35,8 +35,8 @@ module.exports = class KissMarryKillCommand extends Command {
|
||||
});
|
||||
}
|
||||
|
||||
run(msg, { thing1, thing2, thing3 }) {
|
||||
const things = shuffle([thing1, thing2, thing3]);
|
||||
run(msg, { first, second, third }) {
|
||||
const things = shuffle([first, second, third]);
|
||||
return msg.say(`I'd kiss ${things[0]}, marry ${things[1]}, and kill ${things[2]}.`);
|
||||
}
|
||||
};
|
||||
@@ -1,13 +1,13 @@
|
||||
const { Command } = require('discord.js-commando');
|
||||
const { stripIndents } = require('common-tags');
|
||||
const answers = ['Maybe someday', 'Nothing', 'Neither', 'I don\'t think so', 'Yes', 'Try asking again'];
|
||||
const answers = require('../../assets/json/magic-conch');
|
||||
|
||||
module.exports = class MagicConchCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'magic-conch',
|
||||
aliases: ['magic-conch-shell'],
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'magic-conch',
|
||||
description: 'Asks your question to the Magic Conch.',
|
||||
args: [
|
||||
@@ -7,7 +7,7 @@ module.exports = class NameCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'name',
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'name',
|
||||
description: 'Responds with a random name, with the gender of your choice.',
|
||||
args: [
|
||||
@@ -5,9 +5,9 @@ module.exports = class NumberFactCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'number-fact',
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'number-fact',
|
||||
description: 'Responds with a random fact about a number.',
|
||||
description: 'Responds with a random fact about a specific number.',
|
||||
args: [
|
||||
{
|
||||
key: 'number',
|
||||
@@ -6,9 +6,9 @@ module.exports = class OffspringCommand extends Command {
|
||||
super(client, {
|
||||
name: 'offspring',
|
||||
aliases: ['sex'],
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'offspring',
|
||||
description: 'Decides if your new child will be a boy or a girl.'
|
||||
description: 'Determines if your new child will be a boy or a girl.'
|
||||
});
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ module.exports = class PikachuCommand extends Command {
|
||||
super(client, {
|
||||
name: 'pikachu',
|
||||
aliases: ['pika'],
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'pikachu',
|
||||
description: 'Responds with a random image of Pikachu.',
|
||||
clientPermissions: ['ATTACH_FILES']
|
||||
@@ -1,18 +1,18 @@
|
||||
const { Command } = require('discord.js-commando');
|
||||
const sides = ['on NaN', 'on 0', 'in the air', 'on null', 'on undefined', 'on \'\''];
|
||||
const sides = [NaN, 0, null, undefined, ''];
|
||||
|
||||
module.exports = class QuantumCoinCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'quantum-coin',
|
||||
aliases: ['q-coin'],
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'quantum-coin',
|
||||
description: 'Flips a coin that lands on some form of nothing.'
|
||||
});
|
||||
}
|
||||
|
||||
run(msg) {
|
||||
return msg.say(`It landed ${sides[Math.floor(Math.random() * sides.length)]}.`);
|
||||
return msg.say(`It landed on ${sides[Math.floor(Math.random() * sides.length)]}.`);
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,18 @@
|
||||
const { Command } = require('discord.js-commando');
|
||||
const quotes = require('../../assets/json/quote');
|
||||
|
||||
module.exports = class QuoteCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'quote',
|
||||
group: 'random',
|
||||
memberName: 'quote',
|
||||
description: 'Responds with a random quote.'
|
||||
});
|
||||
}
|
||||
|
||||
run(msg) {
|
||||
const quote = quotes[Math.floor(Math.random() * quotes.length)];
|
||||
return msg.say(`${quote.quote} - _${quote.author}_`);
|
||||
}
|
||||
};
|
||||
@@ -5,9 +5,9 @@ module.exports = class RateWaifuCommand extends Command {
|
||||
super(client, {
|
||||
name: 'rate-waifu',
|
||||
aliases: ['waifu', 'rate'],
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'rate-waifu',
|
||||
description: 'Rates your waifu.',
|
||||
description: 'Rates a waifu.',
|
||||
args: [
|
||||
{
|
||||
key: 'waifu',
|
||||
@@ -7,9 +7,9 @@ module.exports = class RedditCommand extends Command {
|
||||
super(client, {
|
||||
name: 'reddit',
|
||||
aliases: ['subreddit'],
|
||||
group: 'search',
|
||||
group: 'random',
|
||||
memberName: 'reddit',
|
||||
description: 'Gets a random recent post from a subreddit.',
|
||||
description: 'Responds with a random post from a subreddit.',
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
{
|
||||
@@ -5,7 +5,7 @@ module.exports = class RoastCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'roast',
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'roast',
|
||||
description: 'Roasts a user.',
|
||||
args: [
|
||||
@@ -5,7 +5,7 @@ module.exports = class RollCommand extends Command {
|
||||
super(client, {
|
||||
name: 'roll',
|
||||
aliases: ['dice'],
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'roll',
|
||||
description: 'Rolls a dice with a maximum value of your choice.',
|
||||
args: [
|
||||
@@ -4,9 +4,9 @@ module.exports = class RouletteCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'roulette',
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'roulette',
|
||||
description: 'Chooses a random member of the server.',
|
||||
description: 'Randomly chooses a member of the server.',
|
||||
guildOnly: true
|
||||
});
|
||||
}
|
||||
@@ -4,19 +4,19 @@ module.exports = class ShipCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'ship',
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'ship',
|
||||
description: 'Ships things/people together.',
|
||||
description: 'Ships two people together.',
|
||||
args: [
|
||||
{
|
||||
key: 'thing1',
|
||||
key: 'first',
|
||||
label: 'first name',
|
||||
prompt: 'Who is the first person in the ship?',
|
||||
type: 'string',
|
||||
max: 500
|
||||
},
|
||||
{
|
||||
key: 'thing2',
|
||||
key: 'second',
|
||||
label: 'second name',
|
||||
prompt: 'Who is the second person in the ship?',
|
||||
type: 'string',
|
||||
@@ -26,7 +26,7 @@ module.exports = class ShipCommand extends Command {
|
||||
});
|
||||
}
|
||||
|
||||
run(msg, { thing1, thing2 }) {
|
||||
return msg.say(`I'd give ${thing1} and ${thing2} a ${Math.floor(Math.random() * 100) + 1}%!`);
|
||||
run(msg, { first, second }) {
|
||||
return msg.say(`I'd give ${first} and ${second} a ${Math.floor(Math.random() * 100) + 1}%!`);
|
||||
}
|
||||
};
|
||||
@@ -6,7 +6,7 @@ module.exports = class ShowerThoughtCommand extends Command {
|
||||
super(client, {
|
||||
name: 'shower-thought',
|
||||
aliases: ['shower-thoughts'],
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'shower-thought',
|
||||
description: 'Responds with a random shower thought, directly from r/Showerthoughts.'
|
||||
});
|
||||
@@ -6,9 +6,9 @@ module.exports = class WouldYouRatherCommand extends Command {
|
||||
super(client, {
|
||||
name: 'would-you-rather',
|
||||
aliases: ['wy-rather'],
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'would-you-rather',
|
||||
description: 'Responds with a random would you rather question.'
|
||||
description: 'Responds with a random "Would you rather ...?" question.'
|
||||
});
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ module.exports = class XiaoCommand extends Command {
|
||||
super(client, {
|
||||
name: 'xiao',
|
||||
aliases: ['xiao-pai', 'iao'],
|
||||
group: 'random-res',
|
||||
group: 'random',
|
||||
memberName: 'xiao',
|
||||
description: 'Responds with a random image of Xiao Pai.',
|
||||
clientPermissions: ['ATTACH_FILES']
|
||||
@@ -10,7 +10,7 @@ module.exports = class BotInfoCommand extends Command {
|
||||
aliases: ['discord-bots', 'dbots'],
|
||||
group: 'search',
|
||||
memberName: 'bot-info',
|
||||
description: 'Searches Discord Bots for information on a bot.',
|
||||
description: 'Responds with information on a specific Discord bot.',
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
{
|
||||
|
||||
@@ -44,7 +44,7 @@ module.exports = class BulbapediaCommand extends Command {
|
||||
.setTitle(data.title)
|
||||
.setAuthor('Bulbapedia', 'https://i.imgur.com/ePpoeFA.png')
|
||||
.setThumbnail(data.thumbnail ? data.thumbnail.source : null)
|
||||
.setURL(`https://bulbapedia.bulbagarden.net/wiki/${encodeURIComponent(query.replace(/\)/g, '%29'))}`)
|
||||
.setURL(`https://bulbapedia.bulbagarden.net/wiki/${encodeURIComponent(query).replace(/\)/g, '%29')}`)
|
||||
.setDescription(shorten(data.extract.replace(/\n/g, '\n\n')));
|
||||
return msg.embed(embed);
|
||||
} catch (err) {
|
||||
|
||||
@@ -13,19 +13,19 @@ module.exports = class DictionaryCommand extends Command {
|
||||
description: 'Defines a word.',
|
||||
args: [
|
||||
{
|
||||
key: 'query',
|
||||
key: 'word',
|
||||
prompt: 'What word would you like to look up?',
|
||||
type: 'string',
|
||||
parse: query => encodeURIComponent(query)
|
||||
parse: word => encodeURIComponent(word)
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, { query }) {
|
||||
async run(msg, { word }) {
|
||||
try {
|
||||
const { body } = await snekfetch
|
||||
.get(`http://api.wordnik.com/v4/word.json/${query}/definitions`)
|
||||
.get(`http://api.wordnik.com/v4/word.json/${word}/definitions`)
|
||||
.query({
|
||||
limit: 1,
|
||||
includeRelated: false,
|
||||
|
||||
@@ -11,7 +11,7 @@ module.exports = class GitHubCommand extends Command {
|
||||
aliases: ['github-repository', 'github-repo', 'git-repo'],
|
||||
group: 'search',
|
||||
memberName: 'github',
|
||||
description: 'Searches GitHub for information on a repository.',
|
||||
description: 'Responds with information on a GitHub repository.',
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
{
|
||||
|
||||
@@ -8,7 +8,7 @@ module.exports = class GoogleAutofillCommand extends Command {
|
||||
aliases: ['google-autocomplete', 'autofill', 'autocomplete'],
|
||||
group: 'search',
|
||||
memberName: 'google-autofill',
|
||||
description: 'Gets a list of Google Autofill results for a particular query.',
|
||||
description: 'Responds with a list of the Google Autofill results for a particular query.',
|
||||
args: [
|
||||
{
|
||||
key: 'query',
|
||||
|
||||
@@ -12,7 +12,7 @@ module.exports = class JishoCommand extends Command {
|
||||
description: 'Defines a word, but with Japanese.',
|
||||
args: [
|
||||
{
|
||||
key: 'query',
|
||||
key: 'word',
|
||||
prompt: 'What word would you like to look up?',
|
||||
type: 'string'
|
||||
}
|
||||
@@ -20,11 +20,11 @@ module.exports = class JishoCommand extends Command {
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, { query }) {
|
||||
async run(msg, { word }) {
|
||||
try {
|
||||
const { body } = await snekfetch
|
||||
.get('http://jisho.org/api/v1/search/words')
|
||||
.query({ keyword: query });
|
||||
.query({ keyword: word });
|
||||
if (!body.data.length) return msg.say('Could not find any results.');
|
||||
const data = body.data[0];
|
||||
return msg.say(stripIndents`
|
||||
|
||||
@@ -8,10 +8,10 @@ module.exports = class LeagueOfLegendsChampionCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'league-of-legends-champion',
|
||||
aliases: ['lol-champion', 'champion', 'league-of-legends-champ', 'lol-champ', 'champ'],
|
||||
aliases: ['lol-champion', 'league-of-legends-champ', 'lol-champ'],
|
||||
group: 'search',
|
||||
memberName: 'league-of-legends-champion',
|
||||
description: 'Gets information on a League of Legends champion.',
|
||||
description: 'Responds with information on a League of Legends champion.',
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
{
|
||||
@@ -79,9 +79,9 @@ module.exports = class LeagueOfLegendsChampionCommand extends Command {
|
||||
.addField('❯ Spell Block',
|
||||
`${data.stats.spellblock} (${data.stats.spellblockperlevel}/level)`, true)
|
||||
.addField('❯ Passive',
|
||||
data.passive.name)
|
||||
data.passive.name, true)
|
||||
.addField('❯ Spells',
|
||||
data.spells.map((spell, i) => `${spell.name} (${buttons[i]})`).join('\n'));
|
||||
data.spells.map((spell, i) => `${spell.name} (${buttons[i]})`).join('\n'), true);
|
||||
return msg.say(`Tip: ${tips[Math.floor(Math.random() * tips.length)]}`, { embed });
|
||||
} catch (err) {
|
||||
return msg.reply(`Oh no, an error occurred: \`${err.message}\`. Try again later!`);
|
||||
|
||||
@@ -9,7 +9,7 @@ module.exports = class MapCommand extends Command {
|
||||
aliases: ['google-maps', 'google-map'],
|
||||
group: 'search',
|
||||
memberName: 'map',
|
||||
description: 'Responds with a map based upon your query.',
|
||||
description: 'Responds with a map of a specific location.',
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
@@ -21,7 +21,7 @@ module.exports = class MapCommand extends Command {
|
||||
max: 20
|
||||
},
|
||||
{
|
||||
key: 'query',
|
||||
key: 'location',
|
||||
prompt: 'What location would you like to get a map of?',
|
||||
type: 'string'
|
||||
}
|
||||
@@ -29,17 +29,17 @@ module.exports = class MapCommand extends Command {
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, { zoom, query }) {
|
||||
async run(msg, { zoom, location }) {
|
||||
try {
|
||||
const { body } = await snekfetch
|
||||
.get('https://maps.googleapis.com/maps/api/staticmap')
|
||||
.query({
|
||||
center: query,
|
||||
center: location,
|
||||
zoom,
|
||||
size: '500x500',
|
||||
key: GOOGLE_KEY
|
||||
});
|
||||
const url = `https://www.google.com/maps/search/${encodeURIComponent(query)}`;
|
||||
const url = `https://www.google.com/maps/search/${encodeURIComponent(location)}`;
|
||||
return msg.say(`<${url}>`, { files: [{ attachment: body, name: 'map.png' }] });
|
||||
} catch (err) {
|
||||
return msg.reply(`Oh no, an error occurred: \`${err.message}\`. Try again later!`);
|
||||
|
||||
@@ -9,7 +9,7 @@ module.exports = class NASACommand extends Command {
|
||||
aliases: ['nasa-image'],
|
||||
group: 'search',
|
||||
memberName: 'nasa',
|
||||
description: 'Responds with an image from NASA based upon your query.',
|
||||
description: 'Search NASA\'s image archive for your query.',
|
||||
clientPermissions: ['ATTACH_FILES'],
|
||||
args: [
|
||||
{
|
||||
|
||||
@@ -8,10 +8,10 @@ module.exports = class NeopetCommand extends Command {
|
||||
aliases: ['neopet-image', 'neopet-image-finder'],
|
||||
group: 'search',
|
||||
memberName: 'neopet',
|
||||
description: 'Searches for Neopets with the username of your query.',
|
||||
description: 'Responds with the image of a specific Neopet.',
|
||||
args: [
|
||||
{
|
||||
key: 'query',
|
||||
key: 'pet',
|
||||
prompt: 'What pet would you like to get an image of?',
|
||||
type: 'string'
|
||||
}
|
||||
@@ -19,12 +19,12 @@ module.exports = class NeopetCommand extends Command {
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, { query }) {
|
||||
async run(msg, { pet }) {
|
||||
try {
|
||||
const { text } = await snekfetch
|
||||
.get('http://www.sunnyneo.com/petimagefinder.php')
|
||||
.query({
|
||||
name: query,
|
||||
name: pet,
|
||||
size: 5,
|
||||
mood: 1
|
||||
});
|
||||
|
||||
@@ -11,7 +11,7 @@ module.exports = class NewYorkTimesCommand extends Command {
|
||||
aliases: ['ny-times', 'new-york-times-article', 'ny-times-article'],
|
||||
group: 'search',
|
||||
memberName: 'new-york-times',
|
||||
description: 'Responds with an article from the New York Times.',
|
||||
description: 'Searches the New York Times for your query.',
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
{
|
||||
|
||||
@@ -10,22 +10,23 @@ module.exports = class NPMCommand extends Command {
|
||||
aliases: ['npm-package'],
|
||||
group: 'search',
|
||||
memberName: 'npm',
|
||||
description: 'Gets information on an NPM package.',
|
||||
description: 'Responds with information on an NPM package.',
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
{
|
||||
key: 'query',
|
||||
key: 'pkg',
|
||||
label: 'package',
|
||||
prompt: 'What package would you like to get information on?',
|
||||
type: 'string',
|
||||
parse: query => encodeURIComponent(query.replace(/ /g, '-'))
|
||||
parse: pkg => encodeURIComponent(pkg.replace(/ /g, '-'))
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, { query }) {
|
||||
async run(msg, { pkg }) {
|
||||
try {
|
||||
const { body } = await snekfetch.get(`https://registry.npmjs.com/${query}`);
|
||||
const { body } = await snekfetch.get(`https://registry.npmjs.com/${pkg}`);
|
||||
const version = body.versions[body['dist-tags'].latest];
|
||||
const maintainers = trimArray(body.maintainers.map(user => user.name));
|
||||
const dependencies = version.dependencies ? trimArray(Object.keys(version.dependencies)) : null;
|
||||
@@ -33,7 +34,7 @@ module.exports = class NPMCommand extends Command {
|
||||
.setColor(0xCB0000)
|
||||
.setAuthor('NPM', 'https://i.imgur.com/ErKf5Y0.png')
|
||||
.setTitle(body.name)
|
||||
.setURL(`https://www.npmjs.com/package/${query}`)
|
||||
.setURL(`https://www.npmjs.com/package/${pkg}`)
|
||||
.setDescription(body.description || 'No description.')
|
||||
.addField('❯ Version',
|
||||
body['dist-tags'].latest, true)
|
||||
|
||||
@@ -10,11 +10,11 @@ module.exports = class OsuCommand extends Command {
|
||||
aliases: ['osu-user', 'osu-stats'],
|
||||
group: 'search',
|
||||
memberName: 'osu',
|
||||
description: 'Searches osu! usernames for your query.',
|
||||
description: 'Responds with information on an Osu! user.',
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
{
|
||||
key: 'query',
|
||||
key: 'user',
|
||||
prompt: 'What user would you like to get information on?',
|
||||
type: 'string'
|
||||
}
|
||||
@@ -22,13 +22,13 @@ module.exports = class OsuCommand extends Command {
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, { query }) {
|
||||
async run(msg, { user }) {
|
||||
try {
|
||||
const { body } = await snekfetch
|
||||
.get('https://osu.ppy.sh/api/get_user')
|
||||
.query({
|
||||
k: OSU_KEY,
|
||||
u: query,
|
||||
u: user,
|
||||
type: 'string'
|
||||
});
|
||||
if (!body.length) return msg.say('Could not find any results.');
|
||||
|
||||
@@ -9,7 +9,7 @@ module.exports = class RecipeCommand extends Command {
|
||||
aliases: ['recipe-puppy'],
|
||||
group: 'search',
|
||||
memberName: 'recipe',
|
||||
description: 'Searches for recipes that include your query.',
|
||||
description: 'Searches for recipes based on your query.',
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
{
|
||||
|
||||
@@ -10,12 +10,12 @@ module.exports = class StocksCommand extends Command {
|
||||
aliases: ['stock', 'alpha-vantage'],
|
||||
group: 'search',
|
||||
memberName: 'stocks',
|
||||
description: 'Get the current stocks for a symbol.',
|
||||
description: 'Responds with the current stocks for a specific symbol.',
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
{
|
||||
key: 'symbol',
|
||||
prompt: 'What symbol would you like to get the stocks for?',
|
||||
prompt: 'What symbol would you like to get the stocks of?',
|
||||
type: 'string'
|
||||
}
|
||||
]
|
||||
|
||||
@@ -10,22 +10,22 @@ module.exports = class ThesaurusCommand extends Command {
|
||||
aliases: ['synonym', 'antonym', 'wordnik-thesaurus'],
|
||||
group: 'search',
|
||||
memberName: 'thesaurus',
|
||||
description: 'Gets the synonyms and antonyms of a word.',
|
||||
description: 'Responds with the synonyms and antonyms of a word.',
|
||||
args: [
|
||||
{
|
||||
key: 'query',
|
||||
key: 'word',
|
||||
prompt: 'What word would you like to look up?',
|
||||
type: 'string',
|
||||
parse: query => encodeURIComponent(query)
|
||||
parse: word => encodeURIComponent(word)
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, { query }) {
|
||||
async run(msg, { word }) {
|
||||
try {
|
||||
const { body } = await snekfetch
|
||||
.get(`http://api.wordnik.com/v4/word.json/${query}/relatedWords`)
|
||||
.get(`http://api.wordnik.com/v4/word.json/${word}/relatedWords`)
|
||||
.query({
|
||||
relationshipTypes: 'synonym,antonym',
|
||||
limitPerRelationshipType: 5,
|
||||
@@ -35,7 +35,7 @@ module.exports = class ThesaurusCommand extends Command {
|
||||
const synonyms = body.find(words => words.relationshipType === 'synonym');
|
||||
const antonyms = body.find(words => words.relationshipType === 'antonym');
|
||||
return msg.say(stripIndents`
|
||||
**${query}**
|
||||
**${word}**
|
||||
__Synonyms:__ ${synonyms ? synonyms.words.join(', ') : '???'}
|
||||
__Antonyms:__ ${antonyms ? antonyms.words.join(', ') : '???'}
|
||||
`);
|
||||
|
||||
@@ -10,12 +10,12 @@ module.exports = class TumblrCommand extends Command {
|
||||
aliases: ['tumblr-blog'],
|
||||
group: 'search',
|
||||
memberName: 'tumblr',
|
||||
description: 'Searches Tumblr for information on a blog.',
|
||||
description: 'Responds with information on a Tumblr blog.',
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
{
|
||||
key: 'blog',
|
||||
prompt: 'What is the url of the blog you would like to get information on?',
|
||||
prompt: 'What blog would you like to get information on?',
|
||||
type: 'string',
|
||||
parse: blog => encodeURIComponent(blog)
|
||||
}
|
||||
|
||||
@@ -10,23 +10,23 @@ module.exports = class UrbanDictionaryCommand extends Command {
|
||||
aliases: ['urban', 'define-urban'],
|
||||
group: 'search',
|
||||
memberName: 'urban-dictionary',
|
||||
description: 'Searches Urban Dictionary for your query.',
|
||||
description: 'Defines a word, but with Urban Dictionary.',
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
{
|
||||
key: 'query',
|
||||
prompt: 'What would you like to define?',
|
||||
key: 'word',
|
||||
prompt: 'What word would you like to look up?',
|
||||
type: 'string'
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, { query }) {
|
||||
async run(msg, { word }) {
|
||||
try {
|
||||
const { body } = await snekfetch
|
||||
.get('http://api.urbandictionary.com/v0/define')
|
||||
.query({ term: query });
|
||||
.query({ term: word });
|
||||
if (!body.list.length) return msg.say('Could not find any results.');
|
||||
const data = body.list[Math.floor(Math.random() * body.list.length)];
|
||||
const embed = new MessageEmbed()
|
||||
|
||||
@@ -10,11 +10,11 @@ module.exports = class WeatherCommand extends Command {
|
||||
aliases: ['open-weather-map'],
|
||||
group: 'search',
|
||||
memberName: 'weather',
|
||||
description: 'Responds with weather information for a specified location.',
|
||||
description: 'Responds with weather information for a specific location.',
|
||||
clientPermissions: ['EMBED_LINKS'],
|
||||
args: [
|
||||
{
|
||||
key: 'query',
|
||||
key: 'location',
|
||||
prompt: 'What location would you like to get the weather of?',
|
||||
type: 'string'
|
||||
}
|
||||
@@ -22,12 +22,12 @@ module.exports = class WeatherCommand extends Command {
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, { query }) {
|
||||
async run(msg, { location }) {
|
||||
try {
|
||||
const { body } = await snekfetch
|
||||
.get('http://api.openweathermap.org/data/2.5/weather')
|
||||
.query({
|
||||
q: query,
|
||||
q: location,
|
||||
units: 'metric',
|
||||
appid: OWM_KEY
|
||||
});
|
||||
|
||||
@@ -21,30 +21,24 @@ module.exports = class What3WordsCommand extends Command {
|
||||
max: 20
|
||||
},
|
||||
{
|
||||
key: 'word1',
|
||||
prompt: 'What is the first word you would like to use?',
|
||||
type: 'string'
|
||||
},
|
||||
{
|
||||
key: 'word2',
|
||||
prompt: 'What is the second word you would like to use?',
|
||||
type: 'string'
|
||||
},
|
||||
{
|
||||
key: 'word3',
|
||||
prompt: 'What is the third word you would like to use?',
|
||||
type: 'string'
|
||||
key: 'location',
|
||||
prompt: 'What location would you like to get a map of? Use three nouns, like "cat.dog.parrot".',
|
||||
type: 'string',
|
||||
validate: location => {
|
||||
if (location.split('.').length === 3) return true;
|
||||
return 'Invalid location, please enter a valid location, like "cat.dog.parrot".';
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
async run(msg, { zoom, word1, word2, word3 }) {
|
||||
async run(msg, { zoom, location }) {
|
||||
try {
|
||||
const { body } = await snekfetch
|
||||
.get('https://api.what3words.com/v2/forward')
|
||||
.query({
|
||||
addr: `${word1}.${word2}.${word3}`,
|
||||
addr: location,
|
||||
key: W3W_KEY
|
||||
});
|
||||
if (body.status.code === 300) return msg.say('Could not find any results.');
|
||||
|
||||
@@ -44,7 +44,7 @@ module.exports = class WikipediaCommand extends Command {
|
||||
.setTitle(data.title)
|
||||
.setAuthor('Wikipedia', 'https://i.imgur.com/Z7NJBK2.png')
|
||||
.setThumbnail(data.thumbnail ? data.thumbnail.source : null)
|
||||
.setURL(`https://en.wikipedia.org/wiki/${encodeURIComponent(query.replace(/\)/g, '%29'))}`)
|
||||
.setURL(`https://en.wikipedia.org/wiki/${encodeURIComponent(query).replace(/\)/g, '%29')}`)
|
||||
.setDescription(shorten(data.extract.replace(/\n/g, '\n\n')));
|
||||
return msg.embed(embed);
|
||||
} catch (err) {
|
||||
|
||||
@@ -4,7 +4,7 @@ module.exports = class CanYouNotCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'can-you-not',
|
||||
group: 'single-res',
|
||||
group: 'single',
|
||||
memberName: 'can-you-not',
|
||||
description: 'Can YOU not?'
|
||||
});
|
||||
+1
-1
@@ -5,7 +5,7 @@ module.exports = class DarkThemeLightThemeCommand extends Command {
|
||||
super(client, {
|
||||
name: 'dark-theme-light-theme',
|
||||
aliases: ['light-theme-dark-theme', 'dark-theme', 'light-theme'],
|
||||
group: 'single-res',
|
||||
group: 'single',
|
||||
memberName: 'dark-theme-light-theme',
|
||||
description: 'Determines whether you use dark or light theme.',
|
||||
clientPermissions: ['ATTACH_FILES']
|
||||
@@ -4,9 +4,9 @@ module.exports = class EatPantCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'eat-pant',
|
||||
group: 'single-res',
|
||||
group: 'single',
|
||||
memberName: 'eat-pant',
|
||||
description: 'eat pant',
|
||||
description: 'Eat pant.',
|
||||
clientPermissions: ['ATTACH_FILES']
|
||||
});
|
||||
}
|
||||
@@ -4,7 +4,7 @@ module.exports = class GiveFlowerCommand extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: 'give-flower',
|
||||
group: 'single-res',
|
||||
group: 'single',
|
||||
memberName: 'give-flower',
|
||||
description: 'Gives Xiao Pai a flower.'
|
||||
});
|
||||
@@ -5,7 +5,7 @@ module.exports = class ItsJokeCommand extends Command {
|
||||
super(client, {
|
||||
name: 'isnt-joke',
|
||||
aliases: ['its-not-joke'],
|
||||
group: 'single-res',
|
||||
group: 'single',
|
||||
memberName: 'isnt-joke',
|
||||
description: 'Isn\'t joke...',
|
||||
clientPermissions: ['ATTACH_FILES']
|
||||
@@ -5,7 +5,7 @@ module.exports = class ItsJokeCommand extends Command {
|
||||
super(client, {
|
||||
name: 'its-joke',
|
||||
aliases: ['is-joke'],
|
||||
group: 'single-res',
|
||||
group: 'single',
|
||||
memberName: 'its-joke',
|
||||
description: 'It\'s joke!',
|
||||
clientPermissions: ['ATTACH_FILES']
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user