finishing off the fun commands
This commit is contained in:
parent
d69a7d971a
commit
3865dd9059
11 changed files with 520 additions and 0 deletions
32
commands/Fun/fliptext.js
Normal file
32
commands/Fun/fliptext.js
Normal file
|
@ -0,0 +1,32 @@
|
|||
const mapping = '¡"#$%⅋,)(*+\'-˙/0ƖᄅƐㄣϛ9ㄥ86:;<=>?@∀qƆpƎℲפHIſʞ˥WNOԀQɹS┴∩ΛMX⅄Z[/]^_`ɐqɔpǝɟƃɥᴉɾʞlɯuodbɹsʇnʌʍxʎz{|}~';
|
||||
const OFFSET = '!'.charCodeAt(0);
|
||||
|
||||
exports.run = async (client, message, args, level) => {
|
||||
if (args.length < 1) {
|
||||
message.delete();
|
||||
message.reply("you didn't specify any text for me to flip!").delete(5000);
|
||||
}
|
||||
|
||||
message.delete();
|
||||
|
||||
message.channel.send(
|
||||
args.join(' ').split('')
|
||||
.map(c => c.charCodeAt(0) - OFFSET)
|
||||
.map(c => mapping[c] || ' ')
|
||||
.reverse().join('')
|
||||
);
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: ["flip"],
|
||||
permLevel: "User"
|
||||
};
|
||||
|
||||
exports.help = {
|
||||
name: "fliptext",
|
||||
category: "Fun",
|
||||
description: "Flips text upside down!",
|
||||
usage: "fliptext <text>"
|
||||
};
|
22
commands/Fun/initial.js
Normal file
22
commands/Fun/initial.js
Normal file
|
@ -0,0 +1,22 @@
|
|||
exports.run = async (client, message, args, level) => {
|
||||
if (!args[0]) {
|
||||
message.delete();
|
||||
return (await message.reply("you must input some text to be transformed.")).delete(5000);
|
||||
}
|
||||
message.delete();
|
||||
message.channel.send(args.map(arg => arg[0].toUpperCase() + arg.slice(1).toLowerCase()).join(' '));
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: [],
|
||||
permLevel: "User"
|
||||
};
|
||||
|
||||
exports.help = {
|
||||
name: "initial",
|
||||
category: "Fun",
|
||||
description: "Transforms the text you insert into Initial Caps.",
|
||||
usage: "initial <text>"
|
||||
};
|
46
commands/Fun/jumbo.js
Normal file
46
commands/Fun/jumbo.js
Normal file
|
@ -0,0 +1,46 @@
|
|||
exports.run = async (client, message, args, level) => {
|
||||
if (args.length < 1) {
|
||||
message.delete();
|
||||
return (await message.reply("you didn't provide an emoji to enlarge.")).delete(5000);
|
||||
}
|
||||
|
||||
if (args[0].charCodeAt(0) >= 55296) {
|
||||
message.delete();
|
||||
return (await message.reply("I can't enlarge Discord's built-in emoji.")).delete(5000);
|
||||
}
|
||||
|
||||
const match = args[0].match(/<:[a-zA-Z0-9_-]+:(\d{18})>/);
|
||||
|
||||
if (!match || !match[1]) {
|
||||
message.delete();
|
||||
return (await message.reply("please provide a valid emoji.")).delete(5000);
|
||||
}
|
||||
|
||||
const emoji = client.emojis.get(match[1]);
|
||||
|
||||
if (!emoji) {
|
||||
message.delete();
|
||||
return (await message.reply("I couldn't identify that emoji.")).delete(5000);
|
||||
}
|
||||
|
||||
message.delete();
|
||||
message.channel.send({
|
||||
files: [
|
||||
emoji.url
|
||||
]
|
||||
});
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: [],
|
||||
permLevel: "User"
|
||||
};
|
||||
|
||||
exports.help = {
|
||||
name: "jumbo",
|
||||
category: "Fun",
|
||||
description: "Enlarges an emoji.",
|
||||
usage: "jumbo <emoji>"
|
||||
};
|
100
commands/Fun/leet.js
Normal file
100
commands/Fun/leet.js
Normal file
|
@ -0,0 +1,100 @@
|
|||
let _inverseReplacementsCached = null;
|
||||
const getInverseReplacements = replacements => {
|
||||
if (_inverseReplacementsCached) {
|
||||
return _inverseReplacementsCached;
|
||||
}
|
||||
const inverseReplacements = new Map();
|
||||
Object.keys(replacements)
|
||||
.map(letter => {
|
||||
replacements[letter].forEach(replacement => {
|
||||
inverseReplacements.set(new RegExp(global.utils.quoteRegex(replacement), 'gi'), letter);
|
||||
});
|
||||
});
|
||||
|
||||
_inverseReplacementsCached = inverseReplacements;
|
||||
|
||||
return inverseReplacements;
|
||||
};
|
||||
|
||||
exports.run = async (client, message, args, level) => {
|
||||
const parsedArgs = client.parseArgs(args, ['e', 't']);
|
||||
|
||||
if (parsedArgs.leftover.length < 1) {
|
||||
message.delete();
|
||||
return (await message.reply("please provide some text to convert.")).delete(5000);
|
||||
}
|
||||
|
||||
let parsed;
|
||||
|
||||
if (parsedArgs.options.e) {
|
||||
const extendedLeetReplacements = {
|
||||
'a': ['4', '@', '/-\\', 'Д'],
|
||||
'b': ['ß'],
|
||||
'c': ['¢', '©'],
|
||||
'e': ['3', '€'],
|
||||
'f': ['ph', 'ƒ'],
|
||||
'g': ['6'],
|
||||
'i': ['1', '!'],
|
||||
'l': ['7'],
|
||||
'n': ['И', 'ท'],
|
||||
'q': ['Ø'],
|
||||
'r': ['®', 'Я'],
|
||||
's': ['5', '$', '§'],
|
||||
't': ['†'],
|
||||
'u': ['|_|', 'µ', 'บ'],
|
||||
'v': ['\\/'],
|
||||
'w': ['\\/\\/', 'VV', 'Ш', 'พ'],
|
||||
'x': ['Ж', '×'],
|
||||
'y': ['¥']
|
||||
};
|
||||
|
||||
const inverseReplacements = getInverseReplacements(extendedLeetReplacements);
|
||||
if (parsedArgs.options.t) {
|
||||
parsed = parsedArgs.leftover.join(' ');
|
||||
|
||||
for (let [replacement, origValue] of inverseReplacements) {
|
||||
parsed = parsed.replace(replacement, origValue);
|
||||
}
|
||||
} else {
|
||||
parsed = parsedArgs.leftover
|
||||
.join(' ')
|
||||
.replace(/[a-z]/gi, str => {
|
||||
let selection = client.randomSelection(extendedLeetReplacements[str.toLowerCase()] || [str]);
|
||||
selection = client.quoteRegex(selection);
|
||||
return selection;
|
||||
});
|
||||
}
|
||||
} else {
|
||||
const simpleLeetReplacements = '4BCD3F6H1JKLMN0PQR57';
|
||||
if (parsedArgs.options.t) {
|
||||
parsed = parsedArgs.leftover.join(' ').replace(/[a-z0-9]/g, function (a) {
|
||||
let foundInReplacements = simpleLeetReplacements.indexOf(a);
|
||||
if (foundInReplacements === -1) {
|
||||
return a;
|
||||
}
|
||||
return String.fromCharCode(97 + foundInReplacements);
|
||||
});
|
||||
} else {
|
||||
parsed = parsedArgs.leftover.join(' ').replace(/[a-z]/g, function f(a) {
|
||||
return simpleLeetReplacements[parseInt(a, 36) - 10] || a.replace(/[a-t]/gi, f);
|
||||
}).toLowerCase();
|
||||
}
|
||||
}
|
||||
|
||||
message.delete();
|
||||
message.channel.send(parsed);
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: [],
|
||||
permLevel: "User"
|
||||
};
|
||||
|
||||
exports.help = {
|
||||
name: "leet",
|
||||
category: "Fun",
|
||||
description: "Talk like a true gamer.",
|
||||
usage: "leet <text>"
|
||||
};
|
22
commands/Fun/reverse.js
Normal file
22
commands/Fun/reverse.js
Normal file
|
@ -0,0 +1,22 @@
|
|||
exports.run = async (client, message, args, level) => {
|
||||
if (args.length < 1) {
|
||||
message.delete();
|
||||
return (await message.reply("text")).delete(5000);
|
||||
}
|
||||
message.delete();
|
||||
message.channel.send(args.join(' ').split('').reverse().join(''));
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: [],
|
||||
permLevel: "User"
|
||||
};
|
||||
|
||||
exports.help = {
|
||||
name: "reverse",
|
||||
category: "Fun",
|
||||
description: "Reverses the text you insert.",
|
||||
usage: "reverse <text>"
|
||||
};
|
49
commands/Fun/roll.js
Normal file
49
commands/Fun/roll.js
Normal file
|
@ -0,0 +1,49 @@
|
|||
const Roll = require('roll');
|
||||
const roller = new Roll();
|
||||
|
||||
exports.run = async (client, message, args, level) => {
|
||||
if (!args[0]) {
|
||||
message.delete();
|
||||
return (await message.reply("you must specify in dice notation (XdY).")).delete(5000);
|
||||
}
|
||||
|
||||
let reason = '';
|
||||
let footer = '';
|
||||
|
||||
footer += `:game_die: **${args[0]}**`;
|
||||
if (args.length > 1) {
|
||||
reason = args.splice(1).join(' ');
|
||||
footer += ` | ${reason}`;
|
||||
}
|
||||
|
||||
let results = roller.roll(args[0]);
|
||||
|
||||
message.delete();
|
||||
|
||||
let embed = client.embed(
|
||||
`Total: ${results.result}`,
|
||||
`${[].concat.apply([], results.rolled).join(', ').substr(0, 1800)}`,
|
||||
[
|
||||
{
|
||||
name: '\u200b',
|
||||
value: footer
|
||||
}
|
||||
]
|
||||
);
|
||||
|
||||
message.channel.send({ embed });
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: [],
|
||||
permLevel: "User"
|
||||
};
|
||||
|
||||
exports.help = {
|
||||
name: "roll",
|
||||
category: "Fun",
|
||||
description: "Rolls X dice with Y sides. Supports standard dice notation.",
|
||||
usage: "roll <XdY> [reason]"
|
||||
};
|
60
commands/Fun/shoot.js
Normal file
60
commands/Fun/shoot.js
Normal file
|
@ -0,0 +1,60 @@
|
|||
const responses = [
|
||||
'is on a killing spree!',
|
||||
'just shot someone!',
|
||||
'murdered an innocent! Grab the sherrif!',
|
||||
'got a bullseye.',
|
||||
'wrangled a person!',
|
||||
'made someone get got!',
|
||||
'brought a gun to a knife fight.',
|
||||
'earned someone a closed-casket funeral.',
|
||||
'shot a weeb!',
|
||||
'pumped up some kicks!'
|
||||
];
|
||||
|
||||
const critResponses = [
|
||||
'GOT A HEADSHOT!!',
|
||||
'HIT A 360 NOSCOPE!!!!',
|
||||
'EXPLODED A CORPSE WITH A BULLET!!',
|
||||
'HAS LUCK ON THEIR SIDE!!',
|
||||
'SENT SOMEONE FLYING HOME!!!!'
|
||||
];
|
||||
|
||||
function randomItem(array) {
|
||||
return array[Math.floor(Math.random() * array.length)];
|
||||
}
|
||||
|
||||
exports.run = async (client, message, args, level) => {
|
||||
if (message.mentions.users.size < 1) {
|
||||
message.delete();
|
||||
return (await message.reply("gotta mention those people you wanna shoot, ya know.")).delete(5000);
|
||||
}
|
||||
|
||||
let response = randomItem(responses);
|
||||
|
||||
let crit = Math.floor(Math.random() * 10);
|
||||
// console.log(`crit is ${crit}`)
|
||||
if(crit === 1) {
|
||||
response = randomItem(critResponses);
|
||||
}
|
||||
|
||||
let output = message.mentions.users.map(m => `**${m}** ${crit === 1 ? ':skull:' : ''}:boom::gun: **${message.author}**`).join('\n');
|
||||
|
||||
message.delete();
|
||||
message.channel.send({
|
||||
embed: client.embed(`${crit === 1 ? message.author.username.toUpperCase() : message.author.username} ${response}`, output)
|
||||
});
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: [],
|
||||
permLevel: "User"
|
||||
};
|
||||
|
||||
exports.help = {
|
||||
name: "shoot",
|
||||
category: "Fun",
|
||||
description: "Shoots yer friendz!",
|
||||
usage: "shoot <mention>"
|
||||
};
|
33
commands/Fun/sigh.js
Normal file
33
commands/Fun/sigh.js
Normal file
|
@ -0,0 +1,33 @@
|
|||
const ascii = `
|
||||
\`\`\`
|
||||
_______ _________ _________ , ,
|
||||
/ | / | |
|
||||
| | | | |
|
||||
| | | | |
|
||||
\\_____, | | _______, |________|
|
||||
\\ | | | | |
|
||||
| | | | | |
|
||||
| | | | | |
|
||||
______/ ____|____ \\________| | |
|
||||
\u200b
|
||||
\`\`\`
|
||||
`;
|
||||
|
||||
exports.run = async (client, message, args, level) => {
|
||||
message.delete();
|
||||
message.channel.send(ascii);
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: [],
|
||||
permLevel: "User"
|
||||
};
|
||||
|
||||
exports.help = {
|
||||
name: "sigh",
|
||||
category: "Fun",
|
||||
description: "Siiiiggggghhh...",
|
||||
usage: "sigh"
|
||||
};
|
32
commands/Fun/space.js
Normal file
32
commands/Fun/space.js
Normal file
|
@ -0,0 +1,32 @@
|
|||
exports.run = async (client, message, args, level) => {
|
||||
if(!args[0]) {
|
||||
message.delete();
|
||||
return (await message.reply("you didn't provide any text to space out!")).delete(5000);
|
||||
}
|
||||
|
||||
let amount = 2;
|
||||
|
||||
if(!isNaN(args[0])) {
|
||||
amount = parseInt(args[0]);
|
||||
(amount < 1) && (amount = 1);
|
||||
(amount > 15) && (amount = 15);
|
||||
args = args.slice(1);
|
||||
}
|
||||
|
||||
message.delete();
|
||||
message.channel.send(args.join(' '.repeat(amount / 2)).split('').join(' '.repeat(amount)));
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: [],
|
||||
permLevel: "User"
|
||||
};
|
||||
|
||||
exports.help = {
|
||||
name: "space",
|
||||
category: "Fun",
|
||||
description: "Spaces out text to look all dramatic n' stuff.",
|
||||
usage: "space [amount] <text>"
|
||||
};
|
66
commands/Fun/tiny.js
Normal file
66
commands/Fun/tiny.js
Normal file
|
@ -0,0 +1,66 @@
|
|||
const mappings = (function (object) {
|
||||
let output = [];
|
||||
|
||||
for (let key in object) {
|
||||
output.push({
|
||||
regex: new RegExp(key, 'ig'),
|
||||
replacement: object[key]
|
||||
});
|
||||
}
|
||||
|
||||
return output;
|
||||
})({
|
||||
a: '\u1D00',
|
||||
b: '\u0299',
|
||||
c: '\u1D04',
|
||||
d: '\u1D05',
|
||||
e: '\u1D07',
|
||||
f: '\uA730',
|
||||
g: '\u0262',
|
||||
h: '\u029C',
|
||||
i: '\u026A',
|
||||
j: '\u1D0A',
|
||||
k: '\u1D0B',
|
||||
l: '\u029F',
|
||||
m: '\u1D0D',
|
||||
n: '\u0274',
|
||||
o: '\u1D0F',
|
||||
p: '\u1D18',
|
||||
q: '\u0071',
|
||||
r: '\u0280',
|
||||
s: '\uA731',
|
||||
t: '\u1D1B',
|
||||
u: '\u1D1C',
|
||||
v: '\u1D20',
|
||||
w: '\u1D21',
|
||||
x: '\u0078',
|
||||
y: '\u028F',
|
||||
z: '\u1D22'
|
||||
});
|
||||
|
||||
exports.run = async (client, message, args, level) => {
|
||||
if (!args[0]) {
|
||||
message.delete();
|
||||
return (await message.reply("you must provide some text to shrink!")).delete(5000);
|
||||
}
|
||||
|
||||
let output = args.join(' ');
|
||||
mappings.forEach(replacer => output = output.replace(replacer.regex, replacer.replacement));
|
||||
|
||||
message.delete();
|
||||
message.channel.send(output);
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: [],
|
||||
permLevel: "User"
|
||||
};
|
||||
|
||||
exports.help = {
|
||||
name: "tiny",
|
||||
category: "Fun",
|
||||
description: "Super tiny text!",
|
||||
usage: "tiny <text>"
|
||||
};
|
58
commands/Fun/xkcd.js
Normal file
58
commands/Fun/xkcd.js
Normal file
|
@ -0,0 +1,58 @@
|
|||
const got = require('got');
|
||||
|
||||
async function getInfo(id) {
|
||||
return (await got(`http://xkcd.com/${id}/info.0.json`, { json: true })).body;
|
||||
}
|
||||
|
||||
async function getLatest() {
|
||||
return (await got('http://xkcd.com/info.0.json', { json: true })).body;
|
||||
}
|
||||
|
||||
async function getRandom() {
|
||||
const latest = await getLatest();
|
||||
const max = latest.num;
|
||||
|
||||
return Math.floor(Math.random() * max);
|
||||
}
|
||||
|
||||
exports.run = async (client, message, args, level) => {
|
||||
let id;
|
||||
|
||||
if (args[0] === 'latest') {
|
||||
id = (await getLatest()).num;
|
||||
} else {
|
||||
id = parseInt(args[0]);
|
||||
if (isNaN(id)) {
|
||||
id = await getRandom();
|
||||
}
|
||||
}
|
||||
|
||||
while (id === 404) {
|
||||
id = await getRandom();
|
||||
}
|
||||
|
||||
const info = await getInfo(id);
|
||||
|
||||
message.delete();
|
||||
message.channel.send({
|
||||
embed: client.embed(`[${id}] ${info.title}`, '', [], {
|
||||
image: info.img,
|
||||
color: [150, 168, 199],
|
||||
url: `http://xkcd.com/${id}`
|
||||
}).setFooter(info.alt)
|
||||
});
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: [],
|
||||
permLevel: "User"
|
||||
};
|
||||
|
||||
exports.help = {
|
||||
name: "xkcd",
|
||||
category: "Fun",
|
||||
description: "Fetches random or specific XKCD comics.",
|
||||
usage: "xkcd [latest|<id>]"
|
||||
};
|
Loading…
Reference in a new issue