something about a merge

This commit is contained in:
TheCakeChicken 2020-03-26 14:07:56 +00:00
commit 456b89af6e
61 changed files with 1747 additions and 325 deletions

View file

@ -26,9 +26,9 @@ exports.run = (client, message) => {
}
embed = new Discord.MessageEmbed();
embed.setTitle(`Woomy`);
embed.setColor(client.embedColour(message));
embed.setThumbnail(client.user.avatarURL({format: "png", dynamic: true, size: 2048}))
embed.setTitle("About Woomy")
embed.addField(
"General:", `• users: \`${client.users.cache.size}\`\n• channels: \`${client.channels.cache.size}\`\n• servers: \`${client.guilds.cache.size}\`\n• commands: \`${client.commands.size}\`\n• uptime: \`${duration}\``,true
);
@ -45,7 +45,7 @@ exports.run = (client, message) => {
exports.conf = {
enabled: true,
guildOnly: false,
aliases: ["stats"],
aliases: ["stats", "botinfo"],
permLevel: "User",
requiredPerms: []
};

View file

@ -29,14 +29,14 @@ exports.run = (client, message, args) => {
exports.conf = {
enabled: true,
guildOnly: false,
aliases: ["calculate", "calc"],
aliases: ["calc", "math"],
permLevel: "User",
requiredPerms: []
};
exports.help = {
name: "math",
name: "calculate",
category: "Utility",
description: "Solves basic mathematical equations.",
usage: "math [equation]"
usage: "calculate [equation]"
};

30
src/commands/cat.js Normal file
View file

@ -0,0 +1,30 @@
const API = require('nekos.life');
const {sfw} = new API();
exports.run = async (client, message) => {
message.channel.startTyping();
try {
sfw.meow().then((json) => {
message.channel.send(json.url)
message.channel.stopTyping();
});
} catch (err) {
client.logger.error("cat.js: " + err);
message.channel.send(`<:error:466995152976871434> An error has occurred: ${err}`)
message.channel.stopTyping();
};
};
exports.conf = {
enabled: true,
guildOnly: false,
aliases: [],
permLevel: "User",
requiredPerms: ["EMBED_LINKS"]
};
exports.help = {
name: "cat",
category: "Image",
description: "Sends you cat pics.",
usage: "cat"
};

View file

@ -1,14 +1,12 @@
const request = require("request");
const fetch = require("node-fetch")
exports.run = async (bot, message, args) => {
message.channel.startTyping();
try{
request({ uri: "https://catfact.ninja/facts", json: true }, (error, response, body) => {
message.channel.send(`**Did you know?**\n ${body.data[0].fact}`);
message.channel.startTyping();
});
fetch('https://catfact.ninja/facts')
.then(res => res.json())
.then(json => message.channel.send(`__**Did you know?**__\n${json.data[0].fact}`))
} catch(err) {
message.channel.send(`<:error:466995152976871434> API error: ${err}`);
message.channel.send(`<:error:466995152976871434> An error has occurred: ${err}`);
};
message.channel.stopTyping();
};

View file

@ -22,14 +22,14 @@ exports.run = (client, message, args) => {
exports.conf = {
enabled: true,
guildOnly: false,
aliases: [],
aliases: ["flip"],
permLevel: "User",
requiredPerms: []
};
exports.help = {
name: "flip",
name: "coinflip",
category: "Fun",
description: "Flips a coin!",
usage: "flip [heads/tails]"
usage: "coinflip [heads/tails]"
};

View file

@ -1,6 +1,6 @@
exports.run = async (client, message, args) => {
message.channel.send(
`**Credits:**\n\`mudkipscience#8904\` and \`FLGX#9896\`for developing the bot\n\`An Idiots Guide\` for the Guidebot bot base\n\`dellannie#6057\` for helping with the music commands\n\`TheCakeChicken#9088\` and \`Tina the Cyclops girl#0064\` for helping me not suck at coding\n\`AirVentTrent\` for the icon, find him on Instagram`
`__**Credits:**__\n\`mudkipscience#8904\`, \`FLGX#9896\` and \`TheCakeChicken#9088\` for developing the bot\n\`An Idiots Guide\` for the Guidebot bot base\n\`Tina the Cyclops girl#0064\` for helping me not suck at coding\n\`AirVentTrent\` for the icon, find him on Instagram\n\`Terryiscool160\` for contributing to Woomy.`
);
};
@ -14,7 +14,7 @@ exports.conf = {
exports.help = {
name: "credits",
category: "Miscellaneous",
category: "Utility",
description: "Cool people",
usage: "credits"
};

69
src/commands/cuddle.js Normal file
View file

@ -0,0 +1,69 @@
const API = require('nekos.life');
const {sfw} = new API();
exports.run = async (client, message, args) => {
if(!args[0]) {
return message.channel.send(`<:error:466995152976871434> You didn't say who you wanted to cuddle! Usage: \`${client.commands.get(`cuddle`).help.usage}\``)
};
var people = "";
for (var i = 0; i < args.length; i++) {
var user = client.getUserFromMention(args[i])
if (user) {
user = message.guild.members.cache.get(user.id).displayName;
} else {
users = client.searchForMembers(message.guild, args[i]);
if (users.length > 1)
return message.channel.send(
"<:error:466995152976871434> Found multiple users for `" + args[i] + "`, Please be more specific or mention the user instead."
);
else if (users.length == 0)
return message.channel.send(
"<:error:466995152976871434> That user doesn't seem to exist. Try again!"
);
user = users[0].displayName;
};
if(i+1 == args.length && args.length > 1) {
people += `**and** ${user}!`
} else if(args.length < 2) {
people += `${user}!`;
} else if(args.length == 2 && i == 0) {
people += `${user} `;
} else {
people += `${user}, `;
};
};
message.channel.startTyping();
try {
sfw.cuddle().then((json) => {
embed = new Discord.MessageEmbed();
embed.setImage(json.url)
embed.setColor(client.embedColour(message));
embed.setDescription(`**${message.guild.members.cache.get(message.author.id).displayName}** cuddled **${people}**`)
message.channel.send(embed)
message.channel.stopTyping();
});
} catch (err) {
client.logger.error("cuddle.js: " + err);
message.channel.send(`<:error:466995152976871434> An error has occurred: ${err}`)
message.channel.stopTyping();
};
};
exports.conf = {
enabled: true,
guildOnly: true,
aliases: [],
permLevel: "User",
requiredPerms: ["EMBED_LINKS"]
};
exports.help = {
name: "cuddle",
category: "Action",
description: "cuddle someone!",
usage: "cuddle [@user/user] (you can cuddle as many people as you want!)"
};

View file

@ -1,27 +1,27 @@
exports.run = async (bot, message, args) => {
if (args.length === 0) {
message.channel.send(`🎲 You rolled a ${Array.from(Array(6).keys()).random() + 1}!`);
} else {
if (args[0].match(/^\d+$/)) {
message.channel.send(`🎲 You rolled a ${Array.from(Array(parseInt(args[0])).keys()).random() + 1}!`);
} else {
message.channel.send(`🎲 You rolled a ${Array.from(Array(6).keys()).random() + 1}!`);
}
}
};
exports.conf = {
enabled: true,
guildOnly: false,
aliases: ["diceroll"],
permLevel: "User",
requiredPerms: []
};
exports.help = {
name: "dice",
category: "Fun",
description: "Rolls a dice.",
usage: "dice"
};
exports.run = async (bot, message, args) => {
if (args.length === 0) {
message.channel.send(`🎲 You rolled a ${Array.from(Array(6).keys()).random() + 1}!`);
} else {
if (args[0].match(/^\d+$/)) {
message.channel.send(`🎲 You rolled a ${Array.from(Array(parseInt(args[0])).keys()).random() + 1}!`);
} else {
message.channel.send(`🎲 You rolled a ${Array.from(Array(6).keys()).random() + 1}!`);
}
}
};
exports.conf = {
enabled: true,
guildOnly: false,
aliases: ["diceroll", "roll"],
permLevel: "User",
requiredPerms: []
};
exports.help = {
name: "dice",
category: "Fun",
description: "Rolls a dice.",
usage: "dice <faces>"
};

30
src/commands/dog.js Normal file
View file

@ -0,0 +1,30 @@
const API = require('nekos.life');
const {sfw} = new API();
exports.run = async (client, message) => {
message.channel.startTyping();
try {
sfw.woof().then((json) => {
message.channel.send(json.url)
message.channel.stopTyping();
});
} catch (err) {
client.logger.error("dog.js: " + err);
message.channel.send(`<:error:466995152976871434> An error has occurred: ${err}`)
message.channel.stopTyping();
};
};
exports.conf = {
enabled: true,
guildOnly: false,
aliases: [],
permLevel: "User",
requiredPerms: ["EMBED_LINKS"]
};
exports.help = {
name: "dog",
category: "Image",
description: "Sends you dog pics.",
usage: "dog"
};

View file

@ -1,13 +1,12 @@
const request = require("request");
const fetch = require("node-fetch");
exports.run = async (bot, message, args) => {
message.channel.startTyping();
try{
request({ uri: "https://dog-api.kinduff.com/api/facts", json: true }, (error, response, body) => {
message.channel.send(`**Did you know?**\n ${body.facts[0]}`);
});
fetch('https://dog-api.kinduff.com/api/facts')
.then(res => res.json())
.then(json => message.channel.send(`__**Did you know?**__\n ${json.facts[0]}`));
} catch(err) {
message.channel.send(`<:error:466995152976871434> API error: ${err}`);
message.channel.send(`<:error:466995152976871434> An error has occurred: ${err}`);
};
message.channel.stopTyping();
};

View file

@ -11,7 +11,6 @@ exports.run = async (client, message, args) => {
format = ".gif"
};
console.log(string.length)
if(string.length > 18) {
ID = string.slice(string.length - 18);
} else {

View file

@ -34,7 +34,7 @@ exports.run = (client, message, args) => {
if(emojified.length > 2000) {
return message.channel.send("<:error:466995152976871434> The emojified message exceeds 2000 characters.")
}
};
message.channel.send(emojified);
};

30
src/commands/fact.js Normal file
View file

@ -0,0 +1,30 @@
const API = require('nekos.life');
const {sfw} = new API();
exports.run = async (client, message) => {
message.channel.startTyping();
try {
sfw.fact().then((json) => {
message.channel.send("__**Did you know?**__\n" + json.fact + ".");
message.channel.stopTyping();
});
} catch (err) {
client.logger.error("fact.js: " + err);
message.channel.send(`<:error:466995152976871434> An error has occurred: ${err}`)
message.channel.stopTyping();
};
};
exports.conf = {
enabled: true,
guildOnly: false,
aliases: ["randomfact"],
permLevel: "User",
requiredPerms: []
};
exports.help = {
name: "fact",
category: "Fun",
description: "Sends you a random fact.",
usage: "fact"
};

69
src/commands/feed.js Normal file
View file

@ -0,0 +1,69 @@
const API = require('nekos.life');
const {sfw} = new API();
exports.run = async (client, message, args) => {
if(!args[0]) {
return message.channel.send(`<:error:466995152976871434> You didn't say who you wanted to feed! Usage: \`${client.commands.get(`feed`).help.usage}\``)
};
var people = "";
for (var i = 0; i < args.length; i++) {
var user = client.getUserFromMention(args[i])
if (user) {
user = message.guild.members.cache.get(user.id).displayName;
} else {
users = client.searchForMembers(message.guild, args[i]);
if (users.length > 1)
return message.channel.send(
"<:error:466995152976871434> Found multiple users for `" + args[i] + "`, Please be more specific or mention the user instead."
);
else if (users.length == 0)
return message.channel.send(
"<:error:466995152976871434> That user doesn't seem to exist. Try again!"
);
user = users[0].displayName;
};
if(i+1 == args.length && args.length > 1) {
people += `**and** ${user}!`
} else if(args.length < 2) {
people += `${user}!`;
} else if(args.length == 2 && i == 0) {
people += `${user} `;
} else {
people += `${user}, `;
};
};
message.channel.startTyping();
try {
sfw.feed().then((json) => {
embed = new Discord.MessageEmbed();
embed.setImage(json.url)
embed.setColor(client.embedColour(message));
embed.setDescription(`**${message.guild.members.cache.get(message.author.id).displayName}** fed **${people}**`)
message.channel.send(embed)
message.channel.stopTyping();
});
} catch (err) {
client.logger.error("feed.js: " + err);
message.channel.send(`<:error:466995152976871434> An error has occurred: ${err}`)
message.channel.stopTyping();
};
};
exports.conf = {
enabled: true,
guildOnly: true,
aliases: [],
permLevel: "User",
requiredPerms: ["EMBED_LINKS"]
};
exports.help = {
name: "feed",
category: "Action",
description: "feed someone!",
usage: "feed [@user/user] (you can feed as many people as you want!)"
};

View file

@ -22,7 +22,7 @@ exports.conf = {
exports.help = {
name: "feedback",
category: "Miscellaneous",
category: "Utility",
description: "Send feedback to my developer.",
usage: "feedback [message]"
};

30
src/commands/foxgirl.js Normal file
View file

@ -0,0 +1,30 @@
const API = require('nekos.life');
const {sfw} = new API();
exports.run = async (client, message) => {
message.channel.startTyping();
try {
sfw.foxGirl().then((json) => {
message.channel.send(json.url)
message.channel.stopTyping();
});
} catch (err) {
client.logger.error("foxgirl.js: " + err);
message.channel.send(`<:error:466995152976871434> An error has occurred: ${err}`)
message.channel.stopTyping();
};
};
exports.conf = {
enabled: true,
guildOnly: false,
aliases: [],
permLevel: "User",
requiredPerms: ["EMBED_LINKS"]
};
exports.help = {
name: "foxgirl",
category: "Image",
description: "Sends you pictures of fox girls.",
usage: "foxgirl"
};

View file

@ -15,7 +15,7 @@ exports.run = (client, message, args, level) => {
};
if(!args[0]) {
embed.setTitle(`Commands [${client.commands.size}]`);
embed.setTitle(`Command list`);
embed.setDescription(`For more information on a specific command use \`${prefix}help <command>\`\nFor the full command list use \`${prefix}help all\`\n`);
const myCommands = message.guild ? client.commands.filter(
@ -35,21 +35,21 @@ exports.run = (client, message, args, level) => {
);
sorted.forEach( c => {
const cat = c.help.category.toProperCase();
const cat = c.help.category;
if (currentCategory !== cat) {
if(ran == true) {
embed.addField(currentCategory + ` [${commands}]`, output.slice(0, -2))
embed.addField(currentCategory + ` [${commands}]`, output)
output = "";
commands = 0;
}
currentCategory = cat;
ran = true
}
output += `\`${prefix}${c.help.name}\`, `;
output += `\`${c.help.name}\` `;
commands = commands + 1;
});
embed.addField(currentCategory + ` [${commands}]`, output.slice(0, -2));
embed.addField(currentCategory + ` [${commands}]`, output);
embed.addField(
"Invite me",
@ -68,7 +68,7 @@ exports.run = (client, message, args, level) => {
};
if(args[0].toLowerCase() == "all") {
embed.setTitle(`Commands [${client.commands.size}]`);
embed.setTitle(`Command list`);
embed.setDescription(`For more information on a specific command use \`${prefix}help <command>\`\nFor the full command list use \`${prefix}help all\`\n`);
const myCommands = client.commands
@ -84,21 +84,22 @@ exports.run = (client, message, args, level) => {
);
sorted.forEach( c => {
const cat = c.help.category.toProperCase();
const cat = c.help.category;
if (currentCategory !== cat) {
if(ran == true) {
embed.addField(currentCategory + ` [${commands}]`, output.slice(0, -2))
embed.addField(currentCategory + ` [${commands}]`, output)
output = "";
commands = 0;
}
currentCategory = cat;
ran = true
}
output += `\`${prefix}${c.help.name}\`, `;
output += `\`${c.help.name}\` `;
commands = commands + 1;
});
embed.addField(currentCategory + ` [${commands}]`, output.slice(0, -2));
embed.addField(currentCategory + ` [${commands}]`, output);
embed.addField(
"Invite me",

69
src/commands/hug.js Normal file
View file

@ -0,0 +1,69 @@
const API = require('nekos.life');
const {sfw} = new API();
exports.run = async (client, message, args) => {
if(!args[0]) {
return message.channel.send(`<:error:466995152976871434> You didn't say who you wanted to hug! Usage: \`${client.commands.get(`hug`).help.usage}\``)
};
var people = "";
for (var i = 0; i < args.length; i++) {
var user = client.getUserFromMention(args[i])
if (user) {
user = message.guild.members.cache.get(user.id).displayName;
} else {
users = client.searchForMembers(message.guild, args[i]);
if (users.length > 1)
return message.channel.send(
"<:error:466995152976871434> Found multiple users for `" + args[i] + "`, Please be more specific or mention the user instead."
);
else if (users.length == 0)
return message.channel.send(
"<:error:466995152976871434> That user doesn't seem to exist. Try again!"
);
user = users[0].displayName;
};
if(i+1 == args.length && args.length > 1) {
people += `**and** ${user}!`
} else if(args.length < 2) {
people += `${user}!`;
} else if(args.length == 2 && i == 0) {
people += `${user} `;
} else {
people += `${user}, `;
};
};
message.channel.startTyping();
try {
sfw.hug().then((json) => {
embed = new Discord.MessageEmbed();
embed.setImage(json.url)
embed.setColor(client.embedColour(message));
embed.setDescription(`**${message.guild.members.cache.get(message.author.id).displayName}** hugged **${people}**`)
message.channel.send(embed)
message.channel.stopTyping();
});
} catch (err) {
client.logger.error("hug.js: " + err);
message.channel.send(`<:error:466995152976871434> An error has occurred: ${err}`)
message.channel.stopTyping();
};
};
exports.conf = {
enabled: true,
guildOnly: true,
aliases: [],
permLevel: "User",
requiredPerms: ["EMBED_LINKS"]
};
exports.help = {
name: "hug",
category: "Action",
description: "Hug someone!",
usage: "hug [@user/user] (you can hug as many people as you want!)"
};

36
src/commands/identity.js Normal file
View file

@ -0,0 +1,36 @@
const identities = require ("../../resources/other/identities.json");
exports.run = async (client, message, args) => {
var output = "";
if(!args[0]) {
for (var key of Object.keys(identities)) {
output += `${key}, `
};
return message.channel.send(`__**Identities**__\n${output.slice(0, -2)}`);
} else {
if(args.join(" ").toLowerCase() == "attack helicopter" || args.join(" ").toLowerCase() == "apache attack helicopter" || args.join(" ").toLowerCase() == "apache") {
return message.channel.send({
files: [new Discord.MessageAttachment("./resources/images/attackhelicopter.jpg")]
});
}
output = identities[args.join(" ").toLowerCase()];
if(!output) {
return message.channel.send("<:error:466995152976871434> No results for that query.");
};
return message.channel.send(`__**${output.name.toProperCase()}**__\n${output.description}`);
};
};
exports.conf = {
enabled: true,
guildOnly: false,
aliases: ["identities"],
permLevel: "User",
requiredPerms: []
};
exports.help = {
name: "identity",
category: "Fun",
description: "Gives you information about the specified identity.",
usage: "identity [identity]"
};

View file

@ -1,20 +1,15 @@
const request = require('request')
const fetch = require("node-fetch")
exports.run = async (client, message) => {
message.channel.startTyping();
request({
url: "http://inspirobot.me/api?generate=true"
},
function(error, res, body) {
if(body.length > 0) {
message.channel.send({
files: [new Discord.MessageAttachment(body)]
});
message.channel.stopTyping();
} else {
message.channel.send('<:error:466995152976871434> API error, please retry.')
message.channel.stopTyping();
};
});
try {
fetch('http://inspirobot.me/api?generate=true')
.then(res => res.text())
.then(body => message.channel.send({files: [new Discord.MessageAttachment(body)]}));
message.channel.stopTyping();
} catch (err) {
message.channel.send(`<:error:466995152976871434> An error has occurred: ${err}`)
message.channel.stopTyping();
};
};
exports.conf = {

View file

@ -0,0 +1,30 @@
const API = require('nekos.life');
const {sfw} = new API();
exports.run = async (client, message) => {
message.channel.startTyping();
try {
sfw.kemonomimi().then((json) => {
message.channel.send(json.url)
message.channel.stopTyping();
});
} catch (err) {
client.logger.error("kemonomimi.js: " + err);
message.channel.send(`<:error:466995152976871434> An error has occurred: ${err}`)
message.channel.stopTyping();
};
};
exports.conf = {
enabled: true,
guildOnly: false,
aliases: [],
permLevel: "User",
requiredPerms: ["EMBED_LINKS"]
};
exports.help = {
name: "kemonomimi",
category: "Image",
description: "Sends you pictures of people with animal characteristics.",
usage: "kemonomimi"
};

69
src/commands/kiss.js Normal file
View file

@ -0,0 +1,69 @@
const API = require('nekos.life');
const {sfw} = new API();
exports.run = async (client, message, args) => {
if(!args[0]) {
return message.channel.send(`<:error:466995152976871434> You didn't say who you wanted to kiss! Usage: \`${client.commands.get(`kiss`).help.usage}\``)
};
var people = "";
for (var i = 0; i < args.length; i++) {
var user = client.getUserFromMention(args[i])
if (user) {
user = message.guild.members.cache.get(user.id).displayName;
} else {
users = client.searchForMembers(message.guild, args[i]);
if (users.length > 1)
return message.channel.send(
"<:error:466995152976871434> Found multiple users for `" + args[i] + "`, Please be more specific or mention the user instead."
);
else if (users.length == 0)
return message.channel.send(
"<:error:466995152976871434> That user doesn't seem to exist. Try again!"
);
user = users[0].displayName;
};
if(i+1 == args.length && args.length > 1) {
people += `**and** ${user}!`
} else if(args.length < 2) {
people += `${user}!`;
} else if(args.length == 2 && i == 0) {
people += `${user} `;
} else {
people += `${user}, `;
};
};
message.channel.startTyping();
try {
sfw.kiss().then((json) => {
embed = new Discord.MessageEmbed();
embed.setImage(json.url)
embed.setColor(client.embedColour(message));
embed.setDescription(`**${message.guild.members.cache.get(message.author.id).displayName}** kissed **${people}**`)
message.channel.send(embed)
message.channel.stopTyping();
});
} catch (err) {
client.logger.error("kiss.js: " + err);
message.channel.send(`<:error:466995152976871434> An error has occurred: ${err}`)
message.channel.stopTyping();
};
};
exports.conf = {
enabled: true,
guildOnly: true,
aliases: [],
permLevel: "User",
requiredPerms: ["EMBED_LINKS"]
};
exports.help = {
name: "kiss",
category: "Action",
description: "Kiss someone!",
usage: "kiss [@user/user] (you can kiss as many people as you want!)"
};

30
src/commands/lizard.js Normal file
View file

@ -0,0 +1,30 @@
const API = require('nekos.life');
const {sfw} = new API();
exports.run = async (client, message) => {
message.channel.startTyping();
try {
sfw.lizard().then((json) => {
message.channel.send(json.url)
message.channel.stopTyping();
});
} catch (err) {
client.logger.error("lizard.js: " + err);
message.channel.send(`<:error:466995152976871434> An error has occurred: ${err}`)
message.channel.stopTyping();
};
};
exports.conf = {
enabled: true,
guildOnly: true,
aliases: [],
permLevel: "User",
requiredPerms: ["EMBED_LINKS"]
};
exports.help = {
name: "lizard",
category: "Image",
description: "Sends pictures of lizards.",
usage: "lizard"
};

View file

@ -85,7 +85,7 @@ exports.run = async (client, message, [args, ...reason], level) => {
if (channel) {
let embed = new Discord.MessageEmbed();
embed.setColor("#a652bb");
embed.setAuthor("User muted!", user.user.avatarURL({format: "png", dynamic: true}));
embed.setAuthor("User muted!", user.user.avatarURL({format: "png", dynamic: true, size: 2048}));
embed.setDescription(
`• User: ${user} (${user.user.id})\n• Mod: ${message.author} (${message.author.id})\n• Reason: ${muteReason}`
);

30
src/commands/neko.js Normal file
View file

@ -0,0 +1,30 @@
const API = require('nekos.life');
const {sfw} = new API();
exports.run = async (client, message) => {
message.channel.startTyping();
try {
sfw.neko().then((json) => {
message.channel.send(json.url);
message.channel.stopTyping();
});
} catch (err) {
client.logger.error("neko.js: " + err);
message.channel.send(`<:error:466995152976871434> An error has occurred: ${err}`)
message.channel.stopTyping();
};
};
exports.conf = {
enabled: true,
guildOnly: false,
aliases: ["catgirl"],
permLevel: "User",
requiredPerms: ["EMBED_LINKS"]
};
exports.help = {
name: "neko",
category: "Image",
description: "Sends you pictures of catgirls.",
usage: "neko"
};

30
src/commands/nekogif.js Normal file
View file

@ -0,0 +1,30 @@
const API = require('nekos.life');
const {sfw} = new API();
exports.run = async (client, message) => {
message.channel.startTyping();
try {
sfw.nekoGif().then((json) => {
message.channel.send(json.url);
message.channel.stopTyping();
});
} catch (err) {
client.logger.error("nekogif.js: " + err);
message.channel.send(`<:error:466995152976871434> An error has occurred: ${err}`)
message.channel.stopTyping();
};
};
exports.conf = {
enabled: true,
guildOnly: false,
aliases: ["catgirlgif"],
permLevel: "User",
requiredPerms: ["EMBED_LINKS"]
};
exports.help = {
name: "nekogif",
category: "Image",
description: "Sends you gifs of catgirls.",
usage: "nekogif"
};

View file

@ -13,8 +13,8 @@ exports.run = (client, message, args) => {
owoified = owoified.replace(/!+/g, ' ' + faces[~~(Math.random() * faces.length)] + ' ')
if(owoified.length > 2000) {
return message.channel.send("<:error:466995152976871434> The owoified message exceeds 2000 characters.")
}
owoified = owoified.slice(0, -Math.abs(owoified.length - 2000))
};
message.channel.send(owoified)
};

69
src/commands/pat.js Normal file
View file

@ -0,0 +1,69 @@
const API = require('nekos.life');
const {sfw} = new API();
exports.run = async (client, message, args) => {
if(!args[0]) {
return message.channel.send(`<:error:466995152976871434> You didn't say who you wanted to pat! Usage: \`${client.commands.get(`pat`).help.usage}\``)
};
var people = "";
for (var i = 0; i < args.length; i++) {
var user = client.getUserFromMention(args[i])
if (user) {
user = message.guild.members.cache.get(user.id).displayName;
} else {
users = client.searchForMembers(message.guild, args[i]);
if (users.length > 1)
return message.channel.send(
"<:error:466995152976871434> Found multiple users for `" + args[i] + "`, Please be more specific or mention the user instead."
);
else if (users.length == 0)
return message.channel.send(
"<:error:466995152976871434> That user doesn't seem to exist. Try again!"
);
user = users[0].displayName;
};
if(i+1 == args.length && args.length > 1) {
people += `**and** ${user}!`
} else if(args.length < 2) {
people += `${user}!`;
} else if(args.length == 2 && i == 0) {
people += `${user} `;
} else {
people += `${user}, `;
};
};
message.channel.startTyping();
try {
sfw.pat().then((json) => {
embed = new Discord.MessageEmbed();
embed.setImage(json.url)
embed.setColor(client.embedColour(message));
embed.setDescription(`**${message.guild.members.cache.get(message.author.id).displayName}** patted **${people}**`)
message.channel.send(embed)
message.channel.stopTyping();
});
} catch (err) {
client.logger.error("pat.js: " + err);
message.channel.send(`<:error:466995152976871434> An error has occurred: ${err}`)
message.channel.stopTyping();
};
};
exports.conf = {
enabled: true,
guildOnly: true,
aliases: ["headpat"],
permLevel: "User",
requiredPerms: ["EMBED_LINKS"]
};
exports.help = {
name: "pat",
category: "Action",
description: "pat someone!",
usage: "pat [@user/user] (you can pat as many people as you want!)"
};

69
src/commands/poke.js Normal file
View file

@ -0,0 +1,69 @@
const API = require('nekos.life');
const {sfw} = new API();
exports.run = async (client, message, args) => {
if(!args[0]) {
return message.channel.send(`<:error:466995152976871434> You didn't say who you wanted to poke! Usage: \`${client.commands.get(`poke`).help.usage}\``)
};
var people = "";
for (var i = 0; i < args.length; i++) {
var user = client.getUserFromMention(args[i])
if (user) {
user = message.guild.members.cache.get(user.id).displayName;
} else {
users = client.searchForMembers(message.guild, args[i]);
if (users.length > 1)
return message.channel.send(
"<:error:466995152976871434> Found multiple users for `" + args[i] + "`, Please be more specific or mention the user instead."
);
else if (users.length == 0)
return message.channel.send(
"<:error:466995152976871434> That user doesn't seem to exist. Try again!"
);
user = users[0].displayName;
};
if(i+1 == args.length && args.length > 1) {
people += `**and** ${user}!`
} else if(args.length < 2) {
people += `${user}!`;
} else if(args.length == 2 && i == 0) {
people += `${user} `;
} else {
people += `${user}, `;
};
};
message.channel.startTyping();
try {
sfw.poke().then((json) => {
embed = new Discord.MessageEmbed();
embed.setImage(json.url)
embed.setColor(client.embedColour(message));
embed.setDescription(`**${message.guild.members.cache.get(message.author.id).displayName}** poked **${people}**`)
message.channel.send(embed)
message.channel.stopTyping();
});
} catch (err) {
client.logger.error("poke.js: " + err);
message.channel.send(`<:error:466995152976871434> An error has occurred: ${err}`)
message.channel.stopTyping();
};
};
exports.conf = {
enabled: true,
guildOnly: true,
aliases: [],
permLevel: "User",
requiredPerms: ["EMBED_LINKS"]
};
exports.help = {
name: "poke",
category: "Action",
description: "poke someone!",
usage: "poke [@user/user] (you can poke as many people as you want!)"
};

View file

@ -1,10 +1,4 @@
exports.run = async (client, message, args) => {
if(client.devmode === true) {
return message.channel.send(
"<:error:466995152976871434> This command has been disabled because Woomy is in development mode."
);
};
const settings = message.settings;
if (!client.settings.has(message.guild.id)) client.settings.set(message.guild.id, {});

36
src/commands/pronoun.js Normal file
View file

@ -0,0 +1,36 @@
const pronouns = require ("../../resources/other/pronouns.json");
exports.run = async (client, message, args) => {
var output = "";
if(!args[0]) {
for (var key of Object.keys(pronouns)) {
output += `${key}, `
};
return message.channel.send(`__**Pronouns:**__\n${output.slice(0, -2)}`);
} else {
if(args.join(" ").toLowerCase() == "attack helicopter" || args.join(" ").toLowerCase() == "apache attack helicopter" || args.join(" ").toLowerCase() == "apache") {
return message.channel.send({
files: [new Discord.MessageAttachment("./resources/images/attackhelicopter.jpg")]
});
};
output = pronouns[args.join(" ").toLowerCase()];
if(!output) {
return message.channel.send("<:error:466995152976871434> No results for that query.");
};
return message.channel.send(`__**Example sentences using ${output.name}:**__\n${output.examples}`);
};
};
exports.conf = {
enabled: true,
guildOnly: false,
aliases: ["pronouns"],
permLevel: "User",
requiredPerms: []
};
exports.help = {
name: "pronoun",
category: "Fun",
description: "Gives you information on how to use the specified pronoun.",
usage: "pronoun [pronoun]"
};

View file

@ -43,7 +43,7 @@ exports.run = async (client, message, args, level) => {
if (channel) {
let embed = new Discord.MessageEmbed();
embed.setColor(embColour);
embed.setAuthor(raidToggle, message.author.avatarURL({dynamic: true}));
embed.setAuthor(raidToggle, message.author.avatarURL({format: "png", dynamic: true, size: 2048}));
embed.setDescription(`• Mod: ${message.author} (${message.author.id})`)
try {
channel.send({ embed });

View file

@ -15,17 +15,47 @@ exports.run = async (client, message, args, level) => {
return message.channel.send(`<:error:466995152976871434> Role not found.`)
}
if(role.hoist === true) {
var hoist = `Yes`
} else {
var hoist = `No`
}
var permissions = "```";
if(role.permissions.has("ADMINISTRATOR")) permissions += "ADMINISTRATOR, ";
if(role.permissions.has("CREATE_INSTANT_INVITE")) permissions += "CREATE_INSTANT_INVITE, ";
if(role.permissions.has("KICK_MEMBERS")) permissions += "KICK_MEMBERS, ";
if(role.permissions.has("BAN_MEMBERS")) permissions += "BAN_MEMBERS, ";
if(role.permissions.has("MANAGE_CHANNELS")) permissions += "MANAGE_CHANNELS, ";
if(role.permissions.has("MANAGE_GUILD")) permissions += "MANAGE_GUILD, ";
if(role.permissions.has("ADD_REACTIONS")) permissions += "ADD_REACTIONS, ";
if(role.permissions.has("VIEW_AUDIT_LOG")) permissions += "VIEW_AUDIT_LOG, ";
if(role.permissions.has("PRIORITY_SPEAKER")) permissions += "PRIORITY_SPEAKER, ";
if(role.permissions.has("STREAM")) permissions += "STREAM, ";
if(role.permissions.has("VIEW_CHANNEL")) permissions += "VIEW_CHANNEL, ";
if(role.permissions.has("SEND_MESSAGES")) permissions += "SEND_MESSAGES, ";
if(role.permissions.has("SEND_TTS_MESSAGES")) permissions += "SEND_TTS_MESSAGES, ";
if(role.permissions.has("MANAGE_MESSAGES")) permissions += "MANAGE_MESSAGES, ";
if(role.permissions.has("EMBED_LINKS")) permissions += "EMBED_LINKS, ";
if(role.permissions.has("ATTACH_FILES")) permissions += "ATTACH_FILES, ";
if(role.permissions.has("READ_MESSAGE_HISTORY")) permissions += "READ_MESSAGE_HISTORY, ";
if(role.permissions.has("MENTION_EVERYONE")) permissions += "MENTION_EVERYONE, ";
if(role.permissions.has("USE_EXTERNAL_EMOJIS")) permissions += "USE_EXTERNAL_EMOJIS, ";
if(role.permissions.has("CONNECT")) permissions += "CONNECT, ";
if(role.permissions.has("SPEAK")) permissions += "SPEAK, ";
if(role.permissions.has("MUTE_MEMBERS")) permissions += "MUTE_MEMBERS, ";
if(role.permissions.has("DEAFEN_MEMBERS")) permissions += "DEAFEN_MEMBERS, ";
if(role.permissions.has("MOVE_MEMBERS")) permissions += "MOVE_MEMBERS, ";
if(role.permissions.has("USE_VAD")) permissions += "USE_VAD, ";
if(role.permissions.has("CHANGE_NICKNAME")) permissions += "CHANGE_NICKNAME, ";
if(role.permissions.has("MANAGE_NICKNAMES")) permissions += "MANAGE_NICKNAMES, ";
if(role.permissions.has("MANAGE_ROLES")) permissions += "MANAGE_ROLES, ";
if(role.permissions.has("MANAGE_WEBHOOKS")) permissions += "MANAGE_WEBHOOKS, ";
if(role.permissions.has("MANAGE_EMOJIS")) permissions += "MANAGE_EMOJIS, ";
permissions = permissions.slice(0, -2);
permissions += "```";
var embed = new Discord.MessageEmbed();
embed.setColor(role.color)
embed.setColor(role.color);
embed.setTitle(role.name);
embed.setDescription(
`• **Name:** ${role.name}\n• **ID:** ${role.id}\n• **Hex:** ${role.hexColor}\n• **Members:** ${role.members.size}\n• **Position:** ${role.position}\n• **Hoisted:** ${hoist}`
` **ID:** ${role.id}\n• **Hex:** ${role.hexColor}\n• **Members:** ${role.members.size}\n• **Position:** ${role.position}\n• **Hoisted:** ${role.hoist}`
);
embed.addField(`**Permissions:**`, permissions)
message.channel.send(embed)
};

36
src/commands/sexuality.js Normal file
View file

@ -0,0 +1,36 @@
const sexualities = require ("../../resources/other/sexualities.json");
exports.run = async (client, message, args) => {
var output = "";
if(!args[0]) {
for (var key of Object.keys(sexualities)) {
output += `${key}, `
};
return message.channel.send(`__**Sexualities:**__\n${output.slice(0, -2)}`);
} else {
if(args.join(" ").toLowerCase() == "attack helicopter" || args.join(" ").toLowerCase() == "apache attack helicopter" || args.join(" ").toLowerCase() == "apache") {
return message.channel.send({
files: [new Discord.MessageAttachment("./resources/images/attackhelicopter.jpg")]
});
}
output = sexualities[args.join(" ").toLowerCase()];
if(!output) {
return message.channel.send("<:error:466995152976871434> No results for that query.");
};
return message.channel.send(`__**${output.name.toProperCase()}:**__\n${output.description}`);
};
};
exports.conf = {
enabled: true,
guildOnly: false,
aliases: ["sexualities"],
permLevel: "User",
requiredPerms: []
};
exports.help = {
name: "sexuality",
category: "Fun",
description: "Gives you information about the specified sexuality.",
usage: "sexuality [sexuality]"
};

View file

@ -1,23 +1,39 @@
const request = require('request')
exports.run = async (client, message, args) => {
message.channel.startTyping();
var user = client.getUserFromMention(args[0])
var user2 = client.getUserFromMention(args[1])
var name, name1;
var rating = Math.floor(Math.random() * 100) + 1;
var hearts = [
"❤️",
"🧡",
"💛",
"💚",
"💙",
"💜"
];
var secondLength = Math.floor(user2.username.length / 2);
if(args.length < 2) {
return message.channel.send(`<:error:466995152976871434> Please include two names/users.`)
}
var first = user.username.substr(0, user.username.length / 2)
var second = user2.username.substr(secondLength, user2.username.length / 2)
try {
var attachment = new Discord.MessageAttachment(`https://api.alexflipnote.dev/ship?user=${user.avatarURL({format: "png"})}&user2=${user2.avatarURL({format: "png"})}`)
message.channel.send(`Your ship name is **${first+second}!**`, attachment)
message.channel.stopTyping();
} catch(err) {
message.channel.send(`<:error:466995152976871434> API error: ${err}`);
message.channel.stopTyping();
if(message.guild && message.mentions.members && message.mentions.members.size > 0) {
name = message.mentions.members.first().displayName;
};
if(message.guild && message.mentions.members && message.mentions.members.size > 1) {
name1 = message.mentions.members.last().displayName;
};
if(!name) {
name = args[0];
};
if(!name1) {
name1 = args[1];
};
shipName = name.substr(0, client.intBetween(1,name.length))+name1.substr(client.intBetween(0,name1.length));
message.channel.send(`__**Ship Generator:**__\n${hearts.random()} Ship Name: \`${shipName}\`\n${hearts.random()} Compatibility rating: \`${rating}%\``)
};
exports.conf = {
@ -32,6 +48,6 @@ exports.help = {
name: "ship",
category: "Fun",
description: "Ship two people together <3",
usage: "ship name name2"
usage: "ship [name/user] [name/user]"
};

69
src/commands/slap.js Normal file
View file

@ -0,0 +1,69 @@
const API = require('nekos.life');
const {sfw} = new API();
exports.run = async (client, message, args) => {
if(!args[0]) {
return message.channel.send(`<:error:466995152976871434> You didn't say who you wanted to slap! Usage: \`${client.commands.get(`kiss`).help.usage}\``)
};
var people = "";
for (var i = 0; i < args.length; i++) {
var user = client.getUserFromMention(args[i])
if (user) {
user = message.guild.members.cache.get(user.id).displayName;
} else {
users = client.searchForMembers(message.guild, args[i]);
if (users.length > 1)
return message.channel.send(
"<:error:466995152976871434> Found multiple users for `" + args[i] + "`, Please be more specific or mention the user instead."
);
else if (users.length == 0)
return message.channel.send(
"<:error:466995152976871434> That user doesn't seem to exist. Try again!"
);
user = users[0].displayName;
};
if(i+1 == args.length && args.length > 1) {
people += `**and** ${user}!`
} else if(args.length < 2) {
people += `${user}!`;
} else if(args.length == 2 && i == 0) {
people += `${user} `;
} else {
people += `${user}, `;
};
};
message.channel.startTyping();
try {
sfw.slap().then((json) => {
embed = new Discord.MessageEmbed();
embed.setImage(json.url)
embed.setColor(client.embedColour(message));
embed.setDescription(`**${message.guild.members.cache.get(message.author.id).displayName}** slapped **${people}**`)
message.channel.send(embed)
message.channel.stopTyping();
});
} catch (err) {
client.logger.error("slap.js: " + err);
message.channel.send(`<:error:466995152976871434> An error has occurred: ${err}`)
message.channel.stopTyping();
};
};
exports.conf = {
enabled: true,
guildOnly: true,
aliases: [],
permLevel: "User",
requiredPerms: ["EMBED_LINKS"]
};
exports.help = {
name: "slap",
category: "Action",
description: "Slap someone >:3",
usage: "slap [@user/user] (you can slap as many people as you want!)"
};

33
src/commands/smug.js Normal file
View file

@ -0,0 +1,33 @@
const API = require('nekos.life');
const {sfw} = new API();
exports.run = async (client, message) => {
message.channel.startTyping();
try {
sfw.smug().then((json) => {
embed = new Discord.MessageEmbed();
embed.setImage(json.url)
embed.setColor(client.embedColour(message));
message.channel.send(embed)
message.channel.stopTyping();
});
} catch (err) {
client.logger.error("smug.js: " + err);
message.channel.send(`<:error:466995152976871434> An error has occurred: ${err}`)
message.channel.stopTyping();
};
};
exports.conf = {
enabled: true,
guildOnly: true,
aliases: [],
permLevel: "User",
requiredPerms: ["EMBED_LINKS"]
};
exports.help = {
name: "smug",
category: "Action",
description: "Sends a smug gif.",
usage: "smug"
};

View file

@ -0,0 +1,28 @@
exports.run = async (client, message, args) => {
if(!args[0]) {
return message.channel.send(`<:error:466995152976871434> You didn't provide any text! Usage: \`${client.commands.get(`spoiler`).help.usage}\``)
};
var output = `||${[...message.cleanContent.substring(9)].join("||||")}||`;
if(output.length > 2000) {
output = output.slice(0, -Math.abs(output.length - 2000))
};
message.channel.send(output)
};
exports.conf = {
enabled: true,
guildOnly: false,
aliases: ["spoilerize", "spoiler"],
permLevel: "User",
requiredPerms: []
};
exports.help = {
name: "spoilerise",
category: "Fun",
description: "Spoilers every letter in the provided text.",
usage: "spoiler [text]"
};

View file

@ -12,7 +12,7 @@ exports.conf = {
exports.help = {
name: "support",
category: "utility",
category: "Utility",
description: "Sends a link to Woomy's support/development server.",
usage: "support"
};

69
src/commands/tickle.js Normal file
View file

@ -0,0 +1,69 @@
const API = require('nekos.life');
const {sfw} = new API();
exports.run = async (client, message, args) => {
if(!args[0]) {
return message.channel.send(`<:error:466995152976871434> You didn't say who you wanted to tickle! Usage: \`${client.commands.get(`tickle`).help.usage}\``)
};
var people = "";
for (var i = 0; i < args.length; i++) {
var user = client.getUserFromMention(args[i])
if (user) {
user = message.guild.members.cache.get(user.id).displayName;
} else {
users = client.searchForMembers(message.guild, args[i]);
if (users.length > 1)
return message.channel.send(
"<:error:466995152976871434> Found multiple users for `" + args[i] + "`, Please be more specific or mention the user instead."
);
else if (users.length == 0)
return message.channel.send(
"<:error:466995152976871434> That user doesn't seem to exist. Try again!"
);
user = users[0].displayName;
};
if(i+1 == args.length && args.length > 1) {
people += `**and** ${user}!`
} else if(args.length < 2) {
people += `${user}!`;
} else if(args.length == 2 && i == 0) {
people += `${user} `;
} else {
people += `${user}, `;
};
};
message.channel.startTyping();
try {
sfw.tickle().then((json) => {
embed = new Discord.MessageEmbed();
embed.setImage(json.url)
embed.setColor(client.embedColour(message));
embed.setDescription(`**${message.guild.members.cache.get(message.author.id).displayName}** tickled **${people}**`)
message.channel.send(embed)
message.channel.stopTyping();
});
} catch (err) {
client.logger.error("tickle.js: " + err);
message.channel.send(`<:error:466995152976871434> An error has occurred: ${err}`)
message.channel.stopTyping();
};
};
exports.conf = {
enabled: true,
guildOnly: true,
aliases: [],
permLevel: "User",
requiredPerms: ["EMBED_LINKS"]
};
exports.help = {
name: "tickle",
category: "Action",
description: "Tickle someone!",
usage: "tickle [@user/user] (you can tickle as many people as you want!)"
};

View file

@ -63,7 +63,7 @@ exports.run = async (client, message, args, level) => {
if (channel) {
let embed = new Discord.MessageEmbed();
embed.setColor("#7a2f8f");
embed.setAuthor("User unmuted!", user.user.avatarURL({format: "png", dynamic: true}));
embed.setAuthor("User unmuted!", user.user.avatarURL({format: "png", dynamic: true, size: 2048}));
embed.setDescription(`• User: ${user} (${user.user.id})\n• Mod: ${message.author} (${message.author.id})`)
try {
channel.send({ embed });

View file

@ -1,18 +1,10 @@
const Discord = require("discord.js");
const coolPeople = require('../../resources/other/coolpeople.json')
exports.run = (client, message, args) => {
var user;
var guild;
var nick = "";
var roles = "";
var presence = "";
var badges = "";
var status;
var createdAt;
var avurl;
var tag;
var id;
var bot;
var user, guild, status, createdAt, avurl, tag, id;
var nick, roles, presence, badges = "";
var coolPerson = false;
var friendos = coolPeople.coolPeople;
if(message.guild) {
user = message.mentions.members.first();
@ -39,6 +31,15 @@ exports.run = (client, message, args) => {
nick = `\n• **Nickname:** ${user.nickname}`;
};
for (var i = 0; i < friendos.length; i++) {
if (user.user.id == friendos[i])
coolPerson = true;
};
if(coolPerson == true) {
badges += "🌟"
}
if(user.user.id == message.guild.ownerID) {
badges += "<:owner:685703193694306331>"
}
@ -46,6 +47,7 @@ exports.run = (client, message, args) => {
if(user.user.bot) {
badges += "<:bot:686489601678114859>"
}
if(badges.length > 0) {
badges += "\n"

View file

@ -5,46 +5,47 @@ exports.run = async (client, message, args, error) => {
`<:error:466995152976871434> You didn't give me a location. Usage: \`${client.commands.get(`weather`).help.usage}\``
);
};
if(args.join(" ").toLowerCase() == "antarctica") {
return;
}
message.channel.startTyping();
weather.find({search: args.join(" "), degreeType: 'C'}, function(err, result) {
if(err) client.logger.log(`weather.js error: ${JSON.stringify(error)}`, "error")
if(result.length < 2 || !result) {
try {
weather.find({search: args.join(" "), degreeType: 'C'}, function(err, result) {
if(err) return message.channel.send(`<:error:466995152976871434> API error: \`${error}\``)
if(result.length < 2 || !result) {
message.channel.stopTyping();
return message.channel.send("<:error:466995152976871434> City not found!");
};
var location = result[0].location;
var current = result[0].current;
var warning = (`${location.alert}` || "No warnings");
var embedColour;
if (current.temperature < 0) {
embedColour = "#addeff";
}else if (current.temperature < 20) {
embedColour = "#4fb8ff";
}else if (current.temperature < 26) {
embedColour = "#ffea4f";
}else if (current.temperature < 31) {
embedColour = "#ffa14f"
} else {
embedColour = "#ff614f"
};
embed = new Discord.MessageEmbed();
embed.setAuthor(`Weather for ${location.name}:`)
embed.setDescription(`• **Condition:** ${current.skytext}\n• **Temperature:** ${current.temperature}°C\n• **Feels like:** ${current.feelslike}°C\n• **Humidity:** ${current.humidity}%\n• **Wind:** ${current.winddisplay}\n• **Warnings:** ${warning}`)
embed.setThumbnail(current.imageUrl)
embed.setFooter(`Last updated at ${current.observationtime} ${current.date}`)
embed.setColor(embedColour)
message.channel.stopTyping();
return message.channel.send("<:error:466995152976871434> City not found!");
};
var location = result[0].location;
var current = result[0].current;
var warning = (`${location.alert}` || "No warnings");
var embedColour;
if (current.temperature < 0) {
embedColour = "#addeff";
}else if (current.temperature < 20) {
embedColour = "#4fb8ff";
}else if (current.temperature < 26) {
embedColour = "#ffea4f";
}else if (current.temperature < 31) {
embedColour = "#ffa14f"
} else {
embedColour = "#ff614f"
};
embed = new Discord.MessageEmbed();
embed.addField(`Weather for ${location.name}:`, `**Condition:** ${current.skytext}\n**Temperature:** ${current.temperature}\n**Feels like:** ${current.feelslike}\n**Humidity:** ${current.humidity}%\n**Wind:** ${current.winddisplay}\n**Warnings:** ${warning}`)
embed.setThumbnail(current.imageUrl)
embed.setFooter(`Last updated at ${current.observationtime} ${current.date}`)
embed.setColor(embedColour)
message.channel.stopTyping();
message.channel.send(embed)
});
message.channel.send(embed)
});
} catch(err) {
return message.channel.send(`<:error:466995152976871434> API error: \`${err}\``)
};
};
exports.conf = {

View file

@ -1,32 +1,33 @@
const request = require('request')
const fetch = require("node-fetch")
exports.run = async (client, message, args) => {
const speech = args.join(' ');
if (!args[0]) {
return message.channel.send(`<:error:466995152976871434> Please include text for me to convert to yodish. Yes.`)
}
try {
const { text } = request({ uri: `http://yoda-api.appspot.com/api/v1/yodish?text=${encodeURIComponent(speech.toLowerCase())}`, json: true }, (error, response, body) => {
message.channel.send(JSON.parse(text).yodish)
});
} catch(err) {
message.channel.send(`<:error:466995152976871434> API error: ${err}`);
message.channel.stopTyping();
}
}
const speech = args.join(' ');
if (!speech) {
return message.channel.send(`<:error:466995152976871434> Please include text for me to convert to yodish. Yes.`)
};
message.channel.startTyping();
try{
fetch(`http://yoda-api.appspot.com/api/v1/yodish?text=${encodeURIComponent(speech.toLowerCase())}`)
.then(res => res.json())
.then(json => message.channel.send(json.yodish));
message.channel.stopTyping();
} catch(err) {
message.channel.send(`<:error:466995152976871434> An error has occurred: ${err}`);
message.channel.stopTyping();
};
};
exports.conf = {
enabled: true,
guildOnly: false,
aliases: ["yoda","yodasay"],
permLevel: "User",
requiredPerms: []
};
enabled: true,
guildOnly: false,
aliases: [],
permLevel: "User",
requiredPerms: []
};
exports.help = {
name: "yodish",
category: "Fun",
description: "Turns any text you input into yodish. Yes.",
usage: "yodish <text>"
};
name: "yoda",
category: "Fun",
description: "Turns any text you input into yodish. Yes.",
usage: "yoda <text>"
};

30
src/commands/zalgo.js Normal file
View file

@ -0,0 +1,30 @@
const zalgo = require("to-zalgo")
exports.run = async (client, message, args) => {
if(!args[0]) {
return message.channel.send(`<:error:466995152976871434> You didn't provide any text! Usage: \`${client.commands.get(`zalgo`).help.usage}\``)
};
var output = zalgo(args.join(" "))
if(output.length > 2000) {
output = output.slice(0, -Math.abs(output.length - 2000))
};
message.channel.send(output)
};
exports.conf = {
enabled: false,
guildOnly: false,
aliases: [],
permLevel: "User",
requiredPerms: []
};
exports.help = {
name: "zalgo",
category: "Fun",
description: "Spoilers every letter in the provided text.",
usage: "zalgo [text]"
};

View file

@ -1,4 +1,4 @@
const commandRanRecently = new Set();
const cooldown = new Set();
module.exports = async (client, message) => {
if (message.author.bot) return;
@ -131,11 +131,17 @@ module.exports = async (client, message) => {
};
};
const prefixMention = new RegExp(`^<@!?${client.user.id}>( |)$`);
if (message.content.match(prefixMention)) {
return message.channel.send(`Current prefix: \`${prefix}\``);
}
//const prefixMention = new RegExp(`^<@!?${client.user.id}>( |)$`);
const myMention = `<@&${client.user.id}>`;
const myMention2 = `<@!${client.user.id}>`;
if (message.content.startsWith(myMention) || message.content.startsWith(myMention2)) {
if(message.content.length > myMention.length + 1 && (message.content.substr(0, myMention.length + 1) == myMention + ' ' || message.content.substr(0, myMention2.length + 1) == myMention2 + ' ')) {
prefix = message.content.substr(0, myMention.length) + ' ';
} else {
return message.channel.send(`Current prefix: \`${prefix}\``);
};
};
if (message.content.indexOf(prefix) !== 0) return;
@ -145,14 +151,15 @@ module.exports = async (client, message) => {
if (!cmd) return;
if (commandRanRecently.has(message.author.id)) {
if (cooldown.has(message.author.id)) {
return message.channel.send(
`⏱️ You are being ratelimited. Please try again in 2 seconds.`
)
.then(m => m.delete(2000));
`⏱️ You are being ratelimited. Please try again in 2 seconds.`
).then(msg => {
msg.delete({timeout: 2000});
});
};
if (!perms.has('SEND_MESSAGES')) {
if (message.guild && !perms.has('SEND_MESSAGES')) {
return message.author.send(`<:error:466995152976871434> I don't have permission to speak in **#${message.channel.name}**, Please ask a moderator to give me the send messages permission!`);
};
@ -216,12 +223,13 @@ module.exports = async (client, message) => {
message.flags.push(args.shift().slice(1));
};
commandRanRecently.add(message.author.id);
cooldown.add(message.author.id);
setTimeout(() => {
commandRanRecently.delete(message.author.id);
}, {timeout: 2000});
cooldown.delete(message.author.id);
}, 2000);
client.logger.cmd(`${client.config.permLevels.find(l => l.level === level).name} ${message.author.username} (${message.author.id}) ran command ${cmd.help.name}`);
cmd.run(client, message, args, level);
};
};

View file

@ -6,28 +6,55 @@ module.exports = client => {
client.lockActivity = false;
client.logger.log(`Connected to Discord as ${client.user.tag} | v${client.version.number}`, 'ready');
let guild, channel, channel1;
let channel;
let channel1;
if(client.config.loggingServer.length > 0) {
try {
guild = client.guilds.cache.get(client.config.loggingServer)
} catch(err) {
client.logger.error("Could not find loggingServer server (is the ID valid?):\n" + err);
process.exit(1);
};
try { channel = client.guilds.cache.get('410990517841690625').channels.cache.get('570963998342643732'); } catch(err) {};
try { channel1 = client.guilds.cache.get('410990517841690625').channels.cache.get('570963481189154822'); } catch(err) {};
if(client.config.consoleLogs.length > 0) {
try {
channel1 = guild.channels.cache.get(client.config.consoleLogs)
} catch(err) {
client.logger.error("Could not find consoleLogs channel (is the ID valid?):\n" + err);
process.exit(1);
};
};
if(client.config.startupLogs.length > 0) {
try {
channel = guild.channels.cache.get(client.config.startupLogs)
} catch(err) {
client.logger.error("Could not find startupLogs channel (is the ID valid?):\n" + err);
process.exit(1);
};
};
};
if(client.devmode == true) {
client.logger.warn("Running in development mode.")
prefix = client.config.defaultSettings.devprefix;
} else {
prefix = client.config.defaultSettings.prefix;
channel.send(`\`${timestamp}\`: Ready event fired! Connected to ${client.users.cache.size} users in ${client.guilds.cache.size} guilds.`);
channel1.send(`\`${timestamp}\`: **Ready event fired**`);
}
if(channel) {
channel.send(`Bot started at \`${timestamp}\``);
};
};
let randomActivity = activityArray.random();
client.user.setActivity(`${prefix + randomActivity} | v${client.version.number}`, {type: "PLAYING"});
setInterval(() => {
randomActivity = activityArray.random();
if(client.lockActivity == false) client.user.setActivity(`${prefix + randomActivity} | v${client.version.number}`, {type: "PLAYING"});
if(client.lockActivity == false) {
client.user.setActivity(`${prefix + randomActivity} | v${client.version.number}`, {type: "PLAYING"});
};
}, 30000);
client.logger.log(`Connected to Discord as ${client.user.tag} | v${client.version.number}`, 'ready');
};

View file

@ -2,17 +2,25 @@ const chalk = require("chalk");
const moment = require("moment");
exports.log = (content, type = "log") => {
const timestamp = chalk.grey(`[${moment().format("YYYY-MM-DD HH:mm:ss")}]`);
const timestamp = `[${moment().format("YYYY-MM-DD HH:mm:ss")}]`;
let channel;
try {
channel = client.guilds.cache.get(client.config.loggingServer).channels.cache.get(client.config.consoleLogs);
} catch(err) {};
try { channel = client.guilds.cache.get('410990517841690625').channels.cache.get('570963481189154822'); } catch(err) {}
var logToServer = false;
if(client.devmode === false && channel && client.guilds.cache.get(client.config.loggingServer).available) {
logToServer = true;
};
switch (type) {
case "info": {
try {
if (client.devmode == false) {
channel.send(`\`${timestamp}\`: ` + content);
if (logToServer == true) {
channel.send(`\`${timestamp}\` \`[${type.toUpperCase()}]\` ` + content);
};
} catch(err) {};
return console.log(`${timestamp} ${chalk.cyanBright(`[${type.toUpperCase()}]`)} ${content} `);
@ -20,8 +28,8 @@ exports.log = (content, type = "log") => {
case "warn": {
try {
if (client.devmode == false) {
channel.send(`\`${timestamp}\`: ` + content);
if (logToServer == true) {
channel.send(`\`${timestamp}\` \`[${type.toUpperCase()}]\` ` + content);
};
} catch(err) {};
return console.log(`${timestamp} ${chalk.yellowBright(`[${type.toUpperCase()}]`)} ${content} `);
@ -29,8 +37,8 @@ exports.log = (content, type = "log") => {
case "error": {
try {
if (client.devmode == false) {
channel.send(`\`${timestamp}\`: ` + content);
if (logToServer == true) {
channel.send(`\`${timestamp}\` \`[${type.toUpperCase()}]\` ` + content);
};
} catch(err) {}
return console.log(`${timestamp} ${chalk.redBright(`[${type.toUpperCase()}]`)} ${content} `);
@ -38,8 +46,8 @@ exports.log = (content, type = "log") => {
case "debug": {
try {
if (client.devmode == false) {
channel.send(`\`${timestamp}\`: ` + content);
if (logToServer == true) {
channel.send(`\`${timestamp}\` \`[${type.toUpperCase()}]\` ` + content);
};
} catch(err) {};
return console.log(`${timestamp} ${chalk.magentaBright(`[${type.toUpperCase()}]`)} ${content} `);
@ -47,14 +55,19 @@ exports.log = (content, type = "log") => {
case "cmd": {
try {
if (client.devmode == false) {
channel.send(`\`${timestamp}\` ` + content);
if (logToServer == true) {
channel.send(`\`${timestamp}\` \`[${type.toUpperCase()}]\` ` + content);
};
} catch(err) {};
return console.log(`${timestamp} ${chalk.whiteBright(`[${type.toUpperCase()}]`)} ${content}`);
};
case "ready": {
try {
if (logToServer == true) {
channel.send(`\`${timestamp}\` \`[${type.toUpperCase()}]\` ` + content);
};
} catch(err) {};
return console.log(`${timestamp} ${chalk.greenBright (`[${type.toUpperCase()}]`)} ${content}`);
};

View file

@ -1,7 +1,7 @@
const ytdl = require('ytdl-core-discord');
const youtubeInfo = require('youtube-info');
const getYoutubeId = require('get-youtube-id');
const request = require('request');
const fetch = require('node-fetch');
module.exports = client => {
// Permission level function
@ -160,14 +160,17 @@ module.exports = client => {
{
return new Promise(function(resolve, reject)
{
request("https://www.googleapis.com/youtube/v3/search?part=id&type=video&q=" + encodeURIComponent(query) + "&key=" + client.config.ytkey, function(error, response, body)
{
if(error) throw error;
var json = JSON.parse(body);
try{
fetch("https://www.googleapis.com/youtube/v3/search?part=id&type=video&q=" + encodeURIComponent(query) + "&key=" + client.config.ytkey)
.then(res => res.json())
.then(json => {
if(!json.items) { reject(); return; }
resolve(json.items[0]);
});
});
} catch (err) {
client.logger.error("Music search err: ", err);
throw err;
};
});
}
@ -340,6 +343,12 @@ module.exports = client => {
};
};
// FIND RANDOM INT BETWEEN TWO INTEGERS
client.intBetween = function(min, max){
return Math.round((Math.random() * (max - min))+min);
};
// <String>.toPropercase() returns a proper-cased string
Object.defineProperty(String.prototype, "toProperCase", {
value: function() {