forked from embee/woomy
Updated to 1.1.0
This commit is contained in:
parent
95639872bd
commit
0874cbc450
80 changed files with 1067 additions and 6381 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,3 +1,4 @@
|
|||
node_modules
|
||||
data
|
||||
config.js
|
||||
package-lock.json
|
|
@ -8,7 +8,7 @@ Self hosting is generally not recommended, but instructions are provided below i
|
|||
|
||||
# Requirements
|
||||
- git
|
||||
- node.js v8.0.0 or higher
|
||||
- node.js v12.0.0 or higher
|
||||
- node-gyp build tools
|
||||
- ffmpeg
|
||||
|
||||
|
|
5623
package-lock.json
generated
5623
package-lock.json
generated
File diff suppressed because it is too large
Load diff
71
package.json
71
package.json
|
@ -1,49 +1,42 @@
|
|||
{
|
||||
"name": "woomy",
|
||||
"version": "0.5.0",
|
||||
"description": "Discord bot made with <3 by mudkipscience#0001",
|
||||
"main": "woomy.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1",
|
||||
"start": "node woomy.js"
|
||||
"version": "1.1.0",
|
||||
"description": "Woomy is a all-purpose discord bot built off the guidebot base and coded in node.js using discord.js.",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"better-sqlite3": "^5.4.1",
|
||||
"chalk": "^3.0.0",
|
||||
"dblapi.js": "^2.3.1",
|
||||
"discord.js": "^12.0.1",
|
||||
"enmap": "^5.2.4",
|
||||
"garfield": "^1.1.2",
|
||||
"get-youtube-id": "^1.0.1",
|
||||
"hastebin-gen": "^2.0.5",
|
||||
"moment": "^2.24.0",
|
||||
"moment-duration-format": "^2.3.2",
|
||||
"prism-media": "^1.2.1",
|
||||
"randomcolor": "^0.5.4",
|
||||
"request": "^2.88.2",
|
||||
"relevant-urban": "^2.0.0",
|
||||
"urban": "^0.3.2",
|
||||
"url-unshort": "^5.0.0",
|
||||
"url-unshorten": "^1.0.6",
|
||||
"weather-js": "^2.0.0",
|
||||
"youtube-info": "^1.3.2",
|
||||
"ytdl-core-discord": "^1.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
"devDependencies": {},
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/mudkipscience/woomy.git"
|
||||
},
|
||||
"author": "mudkipscience",
|
||||
"dependencies": {
|
||||
"better-sqlite-pool": "^0.2.2",
|
||||
"chalk": "^2.4.2",
|
||||
"cpu-stats": "^1.0.0",
|
||||
"dblapi.js": "^2.3.0",
|
||||
"discord.js": "^11.5.1",
|
||||
"enmap": "^4.8.1",
|
||||
"ffmpeg": "0.0.4",
|
||||
"ffmpeg-static": "^2.5.0",
|
||||
"garfield": "^1.1.2",
|
||||
"get-youtube-id": "^1.0.1",
|
||||
"moment": "^2.24.0",
|
||||
"moment-duration-format": "^2.2.2",
|
||||
"node-opus": "^0.3.2",
|
||||
"nodemon": "^2.0.2",
|
||||
"npm": "^6.13.4",
|
||||
"openweather-apis": "^4.0.0",
|
||||
"opusscript": "0.0.7",
|
||||
"prism-media": "^1.2.0",
|
||||
"randomcolor": "^0.5.4",
|
||||
"regex": "^0.1.1",
|
||||
"relevant-urban": "^2.0.0",
|
||||
"request": "^2.88.0",
|
||||
"splat2api": "^1.4.0",
|
||||
"urban": "^0.3.2",
|
||||
"weather-js": "^2.0.0",
|
||||
"youtube-info": "^1.3.2",
|
||||
"yt-search": "^0.4.1",
|
||||
"ytdl-core": "^0.29.1",
|
||||
"ytdl-core-discord": "github:amishshah/ytdl-core-discord"
|
||||
}
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/mudkipscience/woomy/issues"
|
||||
},
|
||||
"homepage": "https://github.com/mudkipscience/woomy#readme"
|
||||
}
|
||||
|
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
4
resources/other/genders.json
Normal file
4
resources/other/genders.json
Normal file
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"cisgender": "Someone who identifies with their assigned gender at birth.",
|
||||
"transgender": "Someone who identifies with a gender that is not their assigned gender at birth."
|
||||
}
|
122
resources/other/lyrics.json
Normal file
122
resources/other/lyrics.json
Normal file
|
@ -0,0 +1,122 @@
|
|||
{
|
||||
"bohemian_rhapsody": [
|
||||
"Is this the real life?",
|
||||
"Is this just fantasy?",
|
||||
"Caught in a landslide, no escape from reality",
|
||||
"Open your eyes, look up to the skies and see",
|
||||
"I'm just a poor boy, I need no sympathy",
|
||||
"Because I'm easy come, easy go, little high, little low",
|
||||
"Any way the wind blows doesn't really matter to me, to me",
|
||||
"Mama, just killed a man",
|
||||
"Put a gun against his head, pulled my trigger, now he's dead",
|
||||
"Mama, life had just begun",
|
||||
"But now I've gone and thrown it all away",
|
||||
"Mama, ooh, didn't mean to make you cry",
|
||||
"If I'm not back again this time tomorrow",
|
||||
"Carry on, carry on as if nothing really matters",
|
||||
"Too late, my time has come",
|
||||
"sends shivers down my spine, body's aching all the time",
|
||||
"Goodbye, everybody, I've got to go",
|
||||
"Gotta leave you all behind and face the truth",
|
||||
"Mama, ooh, (Anyway the wind blows)",
|
||||
"I don't wanna die",
|
||||
"I sometimes wish I'd never been born at all",
|
||||
"i see a little silhouetto of a man",
|
||||
"Scaramouche! Scaramouche! will you do the Fandango?",
|
||||
"Thunderbolt and lightning, very, very fright'ning me",
|
||||
"(Galileo) Galileo, (Galileo) Galileo, Galileo Figaro magnifico",
|
||||
"I'm just a poor boy, nobody loves me",
|
||||
"He's just a poor boy from a poor family",
|
||||
"spare him his life from this monstrosity",
|
||||
"Easy come, easy go, will you not let me go?",
|
||||
"Bismillah! No, we will not let you go",
|
||||
"(Let him go!) Bismillah! We will not let you go",
|
||||
"(Let him go!) Bismillah! We will not let you go",
|
||||
"(Let me go) Will not let you go",
|
||||
"(Let me go) Will not let you go",
|
||||
"(Let me go) Ah",
|
||||
"no, no, no, no, no, no, no",
|
||||
"(Oh mamma mia, mamma mia) Mamma mia, let me go",
|
||||
"Beelzebub has the devil put aside for me, for me, for me!",
|
||||
"So you think you can stone me and spit in my eye?",
|
||||
"so you think you can love me and leave me to die?",
|
||||
"Oh baby, can't do this to me, baby!",
|
||||
"Just gotta get out, just gotta get right outta here!",
|
||||
"Nothing really matters, anyone can see",
|
||||
"nothing really matters",
|
||||
"Nothing really matters, to me",
|
||||
"any way the wind blows"
|
||||
],
|
||||
|
||||
"creeper": [
|
||||
"Aw man",
|
||||
"So we back in the mine",
|
||||
"Got our pickaxe swinging from side to side",
|
||||
"Side side to side",
|
||||
"This task a grueling one",
|
||||
"Hope to find some diamonds tonight night night",
|
||||
"Diamonds tonight",
|
||||
"Heads up",
|
||||
"You hear a sound turn around and look up",
|
||||
"Total shock fills your body",
|
||||
"Oh no it's you again",
|
||||
"I can never forget those eyes eyes eyes",
|
||||
"Eyes-eye-eyes",
|
||||
"Cause baby tonight",
|
||||
"The creeper's tryna steal all our stuff again",
|
||||
"Cause baby tonight",
|
||||
"You grab your pick, shovel and bolt again",
|
||||
"And run run until it's done done",
|
||||
"Until the sun comes up in the morn",
|
||||
"Cause baby tonight",
|
||||
"The creeper's tryna steal all our stuff again",
|
||||
"Just when you think you're safe",
|
||||
"Overhear some hissing from right behind",
|
||||
"Right right behind",
|
||||
"That's a nice life you have",
|
||||
"Shame it's gotta end at this time time time",
|
||||
"Time-time-time-time",
|
||||
"Blows up",
|
||||
"Then your health bar drops and you could use a one up",
|
||||
"Get inside, don't be tardy",
|
||||
"So now you're stuck in there",
|
||||
"Half a heart is left, but don't die die die",
|
||||
"Die-die-die",
|
||||
"Cause baby tonight",
|
||||
"The creeper's tryna steal all our stuff again",
|
||||
"Cause baby tonight",
|
||||
"You grab your pick shovel and bolt again",
|
||||
"And run run until it's done done",
|
||||
"Until the sun comes up in the morn",
|
||||
"Cause baby tonight?",
|
||||
"The creeper's tryna steal all our stuff again",
|
||||
"Dig up diamonds and craft those diamonds",
|
||||
"And make some armor, get it baby",
|
||||
"Go and forge that like you so MLG pro",
|
||||
"The sword's made of diamonds, so come at me bro, huh",
|
||||
"Training in your room under the torchlight",
|
||||
"Hone that form to get you ready for the big fight",
|
||||
"Every single day and the whole night",
|
||||
"Creeper's out prowlin', hoo, alright",
|
||||
"Look at me, look at you",
|
||||
"Take my revenge, that's what I'm gonna do",
|
||||
"I'm a warrior baby, what else is new",
|
||||
"And my blade's gonna tear through you, bring it",
|
||||
"Cause baby tonight",
|
||||
"The creeper's tryna steal all our stuff again",
|
||||
"(Gather your stuff, yeah, let's take back the world)",
|
||||
"Yeah baby tonight",
|
||||
"Grab your sword armor and go",
|
||||
"Take your revenge",
|
||||
"So fight fight like it's the last last night",
|
||||
"Of your life life show them your bite",
|
||||
"Cause baby tonight",
|
||||
"The creeper's tryna steal all our stuff again",
|
||||
"Cause baby tonight",
|
||||
"You grab your pick shovel and bolt again",
|
||||
"And run run until it's done done",
|
||||
"Until the sun comes up in the morn",
|
||||
"Cause baby tonight",
|
||||
"The creeper's tryna steal all our stuff again"
|
||||
]
|
||||
}
|
3
resources/other/pronouns.json
Normal file
3
resources/other/pronouns.json
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
|
||||
}
|
3
resources/other/sexualities.json
Normal file
3
resources/other/sexualities.json
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
|
||||
}
|
|
@ -19,13 +19,6 @@ exports.run = async (client, message, args) => {
|
|||
];
|
||||
|
||||
let mess = ball.random();
|
||||
var msg = message.content.toLowerCase();
|
||||
|
||||
if (msg.includes("is donald trump a good president".toLowerCase())) {
|
||||
return message.channel.send(
|
||||
":8ball: Stupid question. You should be ashamed of yourself for even asking."
|
||||
);
|
||||
};
|
||||
message.channel.send(":8ball: " + mess);
|
||||
};
|
||||
|
||||
|
|
|
@ -8,8 +8,8 @@ exports.run = (client, message) => {
|
|||
.duration(client.uptime)
|
||||
.format(" D [days], H [hrs], m [mins], s [secs]");
|
||||
|
||||
var mud = client.users.get(client.config.owners[0]).tag;
|
||||
var flgx = client.users.get(client.config.owners[1]).tag;
|
||||
var mud = client.users.cache.get(client.config.owners[0]).tag;
|
||||
var flgx = client.users.cache.get(client.config.owners[1]).tag;
|
||||
var build;
|
||||
var prefix;
|
||||
|
||||
|
@ -25,21 +25,18 @@ exports.run = (client, message) => {
|
|||
build = "production"
|
||||
}
|
||||
|
||||
embed = new Discord.RichEmbed();
|
||||
embed = new Discord.MessageEmbed();
|
||||
embed.setTitle(`Woomy`);
|
||||
embed.setColor(client.embedColour(message));
|
||||
embed.setDescription(
|
||||
`Woomy is a multipurpose bot developed by ${mud} and ${flgx}. You can suggest new features by joining my support server,
|
||||
or using \`${prefix}feedback\``
|
||||
embed.setThumbnail(client.user.avatarURL({format: "png", dynamic: true}))
|
||||
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
|
||||
);
|
||||
embed.addField(
|
||||
"General", `users: \`${client.users.size}\`\nchannels: \`${client.channels.size}\`\nservers: \`${client.guilds.size}\`\ncommands: \`${client.commands.size}\`\nuptime: \`${duration}\``,true
|
||||
`Technical:`, `• RAM Usage: \`${(process.memoryUsage().heapUsed / 1024 / 1024).toFixed(2)} MB\`\n• OS: \`${require("os").type}\`\n• bot version: \`${client.version.number} (${build})\`\n• discord.js version: \`v${version}\`\n• node.js version: \`${process.version}\``,true
|
||||
);
|
||||
embed.addField(
|
||||
`Technical`, `RAM Usage: \`${(process.memoryUsage().heapUsed / 1024 / 1024).toFixed(2)} MB\`\nOS: \`${require("os").type}\`\nbot version: \`${client.update.version} (${build})\`\ndiscord.js version: \`v${version}\`\nnode.js version: \`${process.version}\``,true
|
||||
);
|
||||
embed.addField(
|
||||
"Links", "[Support](https://discord.gg/HCF8mdv) | [GitHub](https://github.com/mudkipscience/woomy) | [db.org](https://discordbots.org/bot/435961704145485835/vote) | [BFD](https://botsfordiscord.com/bots/435961704145485835/vote) | [top.gg](https://discordbotlist.com/bots/435961704145485835) | [discord.js](https://discord.js.org/#/) | [guidebot](https://github.com/AnIdiotsGuide/guidebot/)"
|
||||
"Links:", "[Support](https://discord.gg/HCF8mdv) | [GitHub](https://github.com/mudkipscience/woomy) | [db.org](https://discordbots.org/bot/435961704145485835/vote) | [BFD](https://botsfordiscord.com/bots/435961704145485835/vote) | [top.gg](https://discordbotlist.com/bots/435961704145485835) | [discord.js](https://discord.js.org/#/) | [guidebot](https://github.com/AnIdiotsGuide/guidebot/)"
|
||||
);
|
||||
|
||||
message.channel.send(embed);
|
||||
|
|
|
@ -13,10 +13,16 @@ exports.run = (client, message, args) => {
|
|||
message.channel.startTyping();
|
||||
let params = "h=Achievement+Get%21&i=1&t=" + encodeURIComponent(text);
|
||||
|
||||
message.channel.send({
|
||||
files: [new Discord.Attachment(url + "?" + params, "achievement.png")]
|
||||
});
|
||||
message.channel.stopTyping();
|
||||
try {
|
||||
message.channel.stopTyping();
|
||||
message.channel.send({
|
||||
files: [new Discord.MessageAttachment(url + "?" + params, "achievement.png")]
|
||||
});
|
||||
|
||||
} catch(err) {
|
||||
message.channel.stopTyping();
|
||||
message.channel.send(`<:error:466995152976871434> Error when generating image: \`${err}\``)
|
||||
}
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
|
|
|
@ -6,7 +6,7 @@ exports.run = async (client, message, args) => {
|
|||
client.settings.set(message.guild.id, {});
|
||||
}
|
||||
|
||||
var adminRole = message.guild.roles.get(settings.adminRole)
|
||||
var adminRole = message.guild.roles.cache.get(settings.adminRole)
|
||||
|
||||
if (!args[0]) {
|
||||
if(!adminRole) {
|
||||
|
@ -31,17 +31,16 @@ exports.run = async (client, message, args) => {
|
|||
);
|
||||
};
|
||||
|
||||
let roleExists = message.guild.roles.find(r => r.name === args.join(" "));
|
||||
if (!roleExists) {
|
||||
return message.channel.send(
|
||||
"<:error:466995152976871434> The specified role does not exist."
|
||||
);
|
||||
}
|
||||
let role = client.findRole(joinedValue, message);
|
||||
|
||||
client.settings.set(message.guild.id, roleExists.id, "adminRole");
|
||||
if (!role) {
|
||||
return message.channel.send(`<:error:466995152976871434> That role doesn't seem to exist. Try again!`);
|
||||
};
|
||||
|
||||
client.settings.set(message.guild.id, role.id, "adminRole");
|
||||
|
||||
message.channel.send(
|
||||
`<:success:466995111885144095> The admin role has been set to \`${joinedValue}\`
|
||||
`<:success:466995111885144095> The admin role has been set to \`${role.name}\`
|
||||
`);
|
||||
};
|
||||
};
|
||||
|
|
|
@ -6,11 +6,7 @@ exports.run = async (client, message, args) => {
|
|||
client.settings.set(message.guild.id, {});
|
||||
}
|
||||
|
||||
if(!message.channel.permissionsFor(client.user).has("MANAGE_ROLES")) {
|
||||
return message.channel.send("<:error:466995152976871434> This command requires the `manage roles` permission to work.")
|
||||
}
|
||||
|
||||
var autorole = message.guild.roles.get(settings.autorole)
|
||||
var autorole = message.guild.roles.cache.get(settings.autorole)
|
||||
|
||||
if (!args[0]) {
|
||||
if(!autorole) {
|
||||
|
@ -21,7 +17,15 @@ exports.run = async (client, message, args) => {
|
|||
message.channel.send(`Users recieve this role upon joining: \`${autorole.name}\``)
|
||||
}
|
||||
|
||||
} else if(args.join(" ").toLowerCase() == "off") {
|
||||
if(settings.autorole == "off") {
|
||||
return message.channel.send("<:error:466995152976871434> Autoroling has not been enabled.")
|
||||
}
|
||||
|
||||
client.settings.set(message.guild.id, "off", "autorole");
|
||||
return message.channel.send("<:success:466995111885144095> Autoroling has been disabled.")
|
||||
} else {
|
||||
|
||||
const joinedValue = args.join(" ");
|
||||
if (joinedValue.length < 1) {
|
||||
return message.channel.send(
|
||||
|
@ -35,17 +39,16 @@ exports.run = async (client, message, args) => {
|
|||
);
|
||||
};
|
||||
|
||||
let roleExists = message.guild.roles.find(r => r.name === args.join(" "));
|
||||
if (!roleExists) {
|
||||
return message.channel.send(
|
||||
"<:error:466995152976871434> The specified role does not exist."
|
||||
);
|
||||
}
|
||||
role = client.findRole(joinedValue, message);
|
||||
|
||||
client.settings.set(message.guild.id, roleExists.id, "autorole");
|
||||
if (!role) {
|
||||
return message.channel.send(`<:error:466995152976871434> That role doesn't seem to exist. Try again!`);
|
||||
};
|
||||
|
||||
client.settings.set(message.guild.id, role.id, "autorole");
|
||||
|
||||
message.channel.send(
|
||||
`<:success:466995111885144095> The autorole has been set to \`${joinedValue}\`
|
||||
`<:success:466995111885144095> The autorole has been set to \`${role.name}\`
|
||||
`);
|
||||
};
|
||||
};
|
||||
|
@ -55,7 +58,7 @@ exports.conf = {
|
|||
guildOnly: true,
|
||||
aliases: [],
|
||||
permLevel: "Administrator",
|
||||
requiredPerms: []
|
||||
requiredPerms: ["MANAGE_ROLES"]
|
||||
};
|
||||
|
||||
exports.help = {
|
||||
|
|
|
@ -19,7 +19,7 @@ exports.run = (client, message, args) => {
|
|||
user = users[0];
|
||||
user = user.user;
|
||||
}
|
||||
message.channel.send(`**${user.tag}'s** avatar is: ${user.avatarURL}`);
|
||||
message.channel.send(`**${user.tag}'s** avatar is: ${user.avatarURL({format: "png", dynamic: true})}`);
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
|
|
|
@ -7,36 +7,34 @@ exports.run = async (client, message, args) => {
|
|||
);
|
||||
};
|
||||
|
||||
let user = message.mentions.members.first();
|
||||
let user = message.mentions.members.first();
|
||||
|
||||
if (!user) {
|
||||
let users;
|
||||
users = client.searchForMembers(message.guild, args[0]);
|
||||
if (users.length > 1)
|
||||
return message.channel.send(
|
||||
"<:error:466995152976871434> Found multiple users! 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];
|
||||
};
|
||||
if (user.user.id === client.user.id) {
|
||||
return message.channel.send("lol no")
|
||||
if (!user) {
|
||||
let users;
|
||||
users = client.searchForMembers(message.guild, args[0]);
|
||||
if (users.length > 1)
|
||||
return message.channel.send(
|
||||
"<:error:466995152976871434> Found multiple users! 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];
|
||||
};
|
||||
|
||||
if (user.user.id === message.guild.owner.id) {
|
||||
return message.channel.send("<:error:466995152976871434> You can't ban the owner!")
|
||||
};
|
||||
let moderator = message.guild.member(message.author)
|
||||
if (user.highestRole.position >= moderator.highestRole.position && moderator.user.id !== message.guild.ownerID) {
|
||||
if (user.roles.highest.position >= moderator.roles.highest.position && moderator.user.id !== message.guild.ownerID) {
|
||||
return message.channel.send(
|
||||
`<:error:466995152976871434> You can't ban people higher ranked than yourself!`
|
||||
);
|
||||
};
|
||||
|
||||
let bot = message.guild.member(client.user)
|
||||
if (user.highestRole.position >= bot.highestRole.position) {
|
||||
if (user.roles.highest.position >= bot.roles.highest.position) {
|
||||
return message.channel.send(
|
||||
`<:error:466995152976871434> I can't ban people who are higher ranked than me!`
|
||||
);
|
||||
|
@ -49,22 +47,23 @@ exports.run = async (client, message, args) => {
|
|||
|
||||
let reason = args.slice(1).join(" ");
|
||||
if (!reason) reason = `Banned by ${message.author.tag}`;
|
||||
await user.ban(reason).catch(console.error);
|
||||
await message.guild.members.ban(user, {reason: reason}).catch(console.error);
|
||||
message.channel.send(`<:success:466995111885144095> Banned \`${user.user.tag}\``);
|
||||
|
||||
if (settings.modlogsChannel !== "off") {
|
||||
const channel = message.guild.channels.find(
|
||||
const channel = message.guild.channels.cache.find(
|
||||
channel => channel.name === settings.modlogsChannel
|
||||
);
|
||||
|
||||
if (channel) {
|
||||
let embed = new Discord.RichEmbed();
|
||||
let embed = new Discord.MessageEmbed();
|
||||
embed.setColor("#BC0057");
|
||||
embed.setAuthor("User banned!", user.user.avatarURL);
|
||||
embed.setDescription(`❯ User: ${user.user.tag} (${user.user.id})\n❯ Mod: ${message.author} (${message.author.id})\n
|
||||
❯ Reason: ${reason}`)
|
||||
embed.setAuthor("User banned!", user.user.avatarURL({format: "png", dynamic: true}));
|
||||
embed.setDescription(
|
||||
`• User: ${user.user.tag} (${user.user.id})\n• Mod: ${message.author} (${message.author.id})\n• Reason: ${reason}`
|
||||
);
|
||||
try {
|
||||
channel.send({ embed });
|
||||
channel.send(embed);
|
||||
} catch (err) {
|
||||
// probably no permissions to send messages/embeds there
|
||||
};
|
||||
|
|
|
@ -45,7 +45,7 @@ exports.run = async (client, message, [action, ...member]) => {
|
|||
};
|
||||
|
||||
let admin = message.guild.member(message.author)
|
||||
if (user.highestRole.position >= admin.highestRole.position && admin.user.id !== message.guild.ownerID) {
|
||||
if (user.roles.highest.position >= admin.roles.highest.position && admin.user.id !== message.guild.ownerID) {
|
||||
return message.channel.send(
|
||||
`<:error:466995152976871434> You can't blacklist people higher ranked than yourself!`
|
||||
);
|
||||
|
|
|
@ -1,61 +1,13 @@
|
|||
const Discord = require("discord.js");
|
||||
const lyric = require('../../resources/other/lyrics.json')
|
||||
exports.run = async (client, message, args, level) => {
|
||||
const lyrics = [
|
||||
"Is this the real life?",
|
||||
"i this just fantasy?",
|
||||
"Caught in a landslide, no escape from reality",
|
||||
"open your eyes, look up to the skies and see",
|
||||
"I'm just a poor boy, I need no sympathy",
|
||||
"because I'm easy come, easy go, little high, little low",
|
||||
"Any way the wind blows doesn't really matter to me, to me",
|
||||
"mama, just killed a man",
|
||||
"Put a gun against his head, pulled my trigger, now he's dead",
|
||||
"mama, life had just begun",
|
||||
"But now I've gone and thrown it all away",
|
||||
"mama, ooh, didn't mean to make you cry",
|
||||
"If I'm not back again this time tomorrow",
|
||||
"carry on, carry on as if nothing really matters",
|
||||
"Too late, my time has come",
|
||||
"sends shivers down my spine, body's aching all the time",
|
||||
"Goodbye, everybody, I've got to go",
|
||||
"gotta leave you all behind and face the truth",
|
||||
"Mama, ooh, (Anyway the wind blows)",
|
||||
"i don't wanna die",
|
||||
"I sometimes wish I'd never been born at all",
|
||||
"i see a little silhouetto of a man",
|
||||
"Scaramouche! Scaramouche! will you do the Fandango?",
|
||||
"thunderbolt and lightning, very, very fright'ning me",
|
||||
"(Galileo) Galileo, (Galileo) Galileo, Galileo Figaro magnifico",
|
||||
"i'm just a poor boy, nobody loves me",
|
||||
"He's just a poor boy from a poor family",
|
||||
"spare him his life from this monstrosity",
|
||||
"Easy come, easy go, will you not let me go?",
|
||||
"bismillah! No, we will not let you go",
|
||||
"(Let him go!) Bismillah! We will not let you go",
|
||||
"(let him go!) Bismillah! We will not let you go",
|
||||
"(Let me go) Will not let you go",
|
||||
"(let me go) Will not let you go",
|
||||
"(Let me go) Ah",
|
||||
"no, no, no, no, no, no, no",
|
||||
"(Oh mamma mia, mamma mia) Mamma mia, let me go",
|
||||
"beelzebub has the devil put aside for me, for me, for me!",
|
||||
"So you think you can stone me and spit in my eye?",
|
||||
"so you think you can love me and leave me to die?",
|
||||
"Oh baby, can't do this to me, baby!",
|
||||
"just gotta get out, just gotta get right outta here!",
|
||||
"Nothing really matters, anyone can see",
|
||||
"nothing really matters",
|
||||
"Nothing really matters, to me",
|
||||
"any way the wind blows"
|
||||
];
|
||||
|
||||
const lyrics = lyric.bohemian_rhapsody;
|
||||
var runtop = true;
|
||||
var runbottom = false;
|
||||
for(var br = 0; br < lyrics.length; br++) {
|
||||
{
|
||||
if (runtop === true) {
|
||||
var response = await client.awaitReply(message, lyrics[br]);
|
||||
response = response.toLowerCase();
|
||||
runbottom = false;
|
||||
};
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
exports.run = (client, message) => {
|
||||
message.channel.send(client.update.changelog)
|
||||
message.channel.send(client.version.changelog)
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
|
|
|
@ -1,29 +1,46 @@
|
|||
const randomColour = require("randomcolor");
|
||||
exports.run = async (client, message, args, level) => {
|
||||
var colour;
|
||||
if(!args[0]) {
|
||||
var colour = randomColour();
|
||||
}
|
||||
colour = randomColour();
|
||||
} else if(isHex(args.join(" ")) != true) {
|
||||
colour = stringToHex(args.join(" "));
|
||||
} else {
|
||||
colour = args[0]
|
||||
}
|
||||
|
||||
if(args[0]) {
|
||||
if(args[0].startsWith('#')) {
|
||||
colour = args[0];
|
||||
} else {
|
||||
colour = `#${args[0]}`;
|
||||
}
|
||||
if(colour.length > 7) return message.channel.send(
|
||||
`<:error:466995152976871434> Has to be a hex code! Usage: \`${client.commands.get(`colour`).help.usage}\``
|
||||
);
|
||||
if(colour.length < 7) return message.channel.send(
|
||||
`<:error:466995152976871434> Has to be a hex code! Usage: \`${client.commands.get(`colour`).help.usage}\``
|
||||
);
|
||||
};
|
||||
|
||||
embed = new Discord.RichEmbed();
|
||||
embed = new Discord.MessageEmbed();
|
||||
embed.setTitle(colour)
|
||||
embed.setColor(colour);
|
||||
embed.setDescription(colour)
|
||||
embed.setImage("https://api.alexflipnote.xyz/colour/image/" + colour.replace("#", ""));
|
||||
message.channel.send(embed)
|
||||
};
|
||||
|
||||
function isHex(string) {
|
||||
var str = string;
|
||||
if(str.charAt(0) == "#") {
|
||||
str = str.slice(1)
|
||||
};
|
||||
|
||||
return typeof str === 'string'
|
||||
&& str.length === 6
|
||||
&& !isNaN(Number('0x' + str))
|
||||
}
|
||||
|
||||
function stringToHex(string) {
|
||||
var hash = 0;
|
||||
for (var i = 0; i < string.length; i++) {
|
||||
hash = string.charCodeAt(i) + ((hash << 5) - hash);
|
||||
}
|
||||
var colour = '#';
|
||||
for (var i = 0; i < 3; i++) {
|
||||
var value = (hash >> (i * 8)) & 0xFF;
|
||||
colour += ('00' + value.toString(16)).substr(-2);
|
||||
}
|
||||
return colour;
|
||||
};
|
||||
|
||||
|
||||
exports.conf = {
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
|
@ -36,5 +53,5 @@ exports.help = {
|
|||
name: "colour",
|
||||
category: "Utility",
|
||||
description: "Gives you a random colour",
|
||||
usage: "colour <hex>"
|
||||
usage: "colour <hex> **OR** colour <text>"
|
||||
};
|
|
@ -1,6 +1,6 @@
|
|||
exports.run = async (client, message, args) => {
|
||||
message.channel.send(
|
||||
`**Credits:**\n❯ \`mudkipscience#3739\` 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\` 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`
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -1,75 +1,7 @@
|
|||
|
||||
const lyric = require('../../resources/other/lyrics.json')
|
||||
exports.run = async (client, message, args, level) => {
|
||||
const lyrics = [
|
||||
"Aw man",
|
||||
"so we back in the mine",
|
||||
"Got our pickaxe swinging from side to side",
|
||||
"side side to side",
|
||||
"This task a grueling one",
|
||||
"hope to find some diamonds tonight night night",
|
||||
"Diamonds tonight",
|
||||
"heads up",
|
||||
"You hear a sound turn around and look up",
|
||||
"total shock fills your body",
|
||||
"Oh no it's you again",
|
||||
"i can never forget those eyes eyes eyes",
|
||||
"Eyes-eye-eyes",
|
||||
"cause baby tonight",
|
||||
"The creeper's tryna steal all our stuff again",
|
||||
"cause baby tonight",
|
||||
"You grab your pick, shovel and bolt again",
|
||||
"and run run until it's done done",
|
||||
"Until the sun comes up in the morn",
|
||||
"cause baby tonight",
|
||||
"The creeper's tryna steal all our stuff again",
|
||||
"just when you think you're safe",
|
||||
"Overhear some hissing from right behind",
|
||||
"right right behind",
|
||||
"That's a nice life you have",
|
||||
"shame it's gotta end at this time time time",
|
||||
"Time-time-time-time",
|
||||
"blows up",
|
||||
"Then your health bar drops and you could use a one up",
|
||||
"get inside, don't be tardy",
|
||||
"So now you're stuck in there",
|
||||
"half a heart is left, but don't die die die",
|
||||
"Die-die-die",
|
||||
"cause baby tonight",
|
||||
"The creeper's tryna steal all our stuff again",
|
||||
"cause baby tonight",
|
||||
"You grab your pick shovel and bolt again",
|
||||
"and run run until it's done done",
|
||||
"Until the sun comes up in the morn",
|
||||
"cause baby tonight?",
|
||||
"The creeper's tryna steal all our stuff again",
|
||||
"dig up diamonds and craft those diamonds",
|
||||
"And make some armor, get it baby",
|
||||
"go and forge that like you so MLG pro",
|
||||
"The sword's made of diamonds, so come at me bro, huh",
|
||||
"training in your room under the torchlight",
|
||||
"Hone that form to get you ready for the big fight",
|
||||
"every single day and the whole night",
|
||||
"Creeper's out prowlin', hoo, alright",
|
||||
"look at me, look at you",
|
||||
"Take my revenge, that's what I'm gonna do",
|
||||
"i'm a warrior baby, what else is new",
|
||||
"And my blade's gonna tear through you, bring it",
|
||||
"cause baby tonight",
|
||||
"The creeper's tryna steal all our stuff again",
|
||||
"(gather your stuff, yeah, let's take back the world)",
|
||||
"Yeah baby tonight",
|
||||
"grab your sword armor and go",
|
||||
"Take your revenge",
|
||||
"so fight fight like it's the last last night",
|
||||
"Of your life life show them your bite",
|
||||
"cause baby tonight",
|
||||
"The creeper's tryna steal all our stuff again",
|
||||
"cause baby tonight",
|
||||
"You grab your pick shovel and bolt again",
|
||||
"and run run until it's done done",
|
||||
"Until the sun comes up in the morn",
|
||||
"cause baby tonight",
|
||||
"The creeper's tryna steal all our stuff again"
|
||||
];
|
||||
var lyrics = lyric.creeper;
|
||||
|
||||
var runtop = true;
|
||||
var runbottom = false;
|
||||
|
@ -77,7 +9,6 @@ exports.run = async (client, message, args, level) => {
|
|||
{
|
||||
if (runtop === true) {
|
||||
var response = await client.awaitReply(message, lyrics[br]);
|
||||
response = response.toLowerCase();
|
||||
runbottom = false;
|
||||
};
|
||||
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
exports.run = (client, message, args, level) => {
|
||||
if(!args[0]) {
|
||||
return message.channel.send(
|
||||
`<:error:466995152976871434> No message provided.
|
||||
Usage: \`${client.commands.get(`echo`).help.usage}\``
|
||||
);
|
||||
};
|
||||
if (message.content.includes("@everyone")) return message.channel.send(message.author);
|
||||
const sayMessage = args.join(" ");
|
||||
message.delete().catch(O_o => {});
|
||||
message.channel.send(sayMessage);
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: ["say"],
|
||||
permLevel: "User",
|
||||
requiredPerms: []
|
||||
};
|
||||
|
||||
exports.help = {
|
||||
name: "echo",
|
||||
category: "Fun",
|
||||
description: "Makes Woomy copy what the user says.",
|
||||
usage: "echo [message]"
|
||||
};
|
43
src/commands/emoji.js
Normal file
43
src/commands/emoji.js
Normal file
|
@ -0,0 +1,43 @@
|
|||
exports.run = async (client, message, args) => {
|
||||
if(!args[0]) {
|
||||
return message.channel.send(`You need to specify a custom emoji. Usage: \`${client.commands.get(`emoji`).help.usage}\``)
|
||||
};
|
||||
|
||||
var ID;
|
||||
var format = ".png"
|
||||
var string = args[0].replace(/\D/g,'');
|
||||
|
||||
if(args[0].charAt(1) == "a" && args[0].charAt(2) == ":") {
|
||||
format = ".gif"
|
||||
};
|
||||
|
||||
console.log(string.length)
|
||||
if(string.length > 18) {
|
||||
ID = string.slice(string.length - 18);
|
||||
} else {
|
||||
ID = string;
|
||||
};
|
||||
|
||||
if(!ID) {
|
||||
return message.channel.send(`<:error:466995152976871434> Invalid emoji. This command only works with custom emojis.`)
|
||||
};
|
||||
|
||||
|
||||
|
||||
message.channel.send("https://cdn.discordapp.com/emojis/" + ID + format)
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: [],
|
||||
permLevel: "User",
|
||||
requiredPerms: []
|
||||
};
|
||||
|
||||
exports.help = {
|
||||
name: "emoji",
|
||||
category: "Utility",
|
||||
description: "Enlarges and links an custom emoji",
|
||||
usage: "emoji [emoji]"
|
||||
};
|
|
@ -30,7 +30,12 @@ exports.run = (client, message, args) => {
|
|||
return `${specialChars[letter]} `
|
||||
};
|
||||
return letter
|
||||
}).join('');
|
||||
}).join('');
|
||||
|
||||
if(emojified.length > 2000) {
|
||||
return message.channel.send("<:error:466995152976871434> The emojified message exceeds 2000 characters.")
|
||||
}
|
||||
|
||||
message.channel.send(emojified);
|
||||
};
|
||||
|
||||
|
|
|
@ -1,11 +1,32 @@
|
|||
const hastebin = require('hastebin-gen');
|
||||
exports.run = async (client, message, args) => {
|
||||
const code = args.join(" ");
|
||||
try {
|
||||
const evaled = eval(code);
|
||||
const clean = await client.clean(client, evaled);
|
||||
|
||||
if(clean.length > 2000) {
|
||||
hastebin(clean, { extension: "txt" }).then(haste => {
|
||||
return message.channel.send('`OUTPUT`\n' + haste);
|
||||
}).catch(error => {
|
||||
client.logger.err(error);
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
message.channel.send(`\`OUTPUT\` \`\`\`js\n${await clean}\n\`\`\``);
|
||||
} catch (err) {
|
||||
message.channel.send(`\`ERROR\` \`\`\`xl\n${await client.clean(client, err)}\n\`\`\``);
|
||||
const errclean = await client.clean(client, err);
|
||||
if(errclean.length > 2000) {
|
||||
hastebin(errclean, { extension: "txt" }).then(haste => {
|
||||
return message.channel.send('`ERROR`\n' + haste);
|
||||
}).catch(error => {
|
||||
client.logger.err(error);
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
message.channel.send(`\`ERROR\` \`\`\`xl\n${await errclean}\n\`\`\``);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
exports.run = (client, message, args, level) => {
|
||||
if(!args[0]) return message.channel.send(`<:error:466995152976871434> You didn't give me any feedback! Usage: \`${client.commands.get(`feedback`).help.usage}\``)
|
||||
const feedback = args.join(" ")
|
||||
let guild = client.guilds.get("410990517841690625")
|
||||
let channel = guild.channels.get("438825830949453824")
|
||||
let embed = new Discord.RichEmbed()
|
||||
let guild = client.guilds.cache.get("410990517841690625")
|
||||
let channel = guild.channels.cache.get("438825830949453824")
|
||||
let embed = new Discord.MessageEmbed()
|
||||
.setTitle(`Feedback:`)
|
||||
.setColor(client.embedColour(message))
|
||||
.addField("User:",message.author.tag)
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
exports.run = (client, message, args) => {
|
||||
if(!args[0]) {
|
||||
return message.channel.send(
|
||||
`<:error:466995152976871434> Invalid choice. Usage: \`${client.commands.get(`emojify`).help.usage}\``
|
||||
`<:error:466995152976871434> Invalid choice. Usage: \`${client.commands.get(`flip`).help.usage}\``
|
||||
);
|
||||
};
|
||||
|
||||
if(args[0].toLowerCase() != "heads" || args[0].toLowerCase() != "tails") {
|
||||
if(args[0].toLowerCase() != "heads" && args[0].toLowerCase() != "tails") {
|
||||
return message.channel.send(
|
||||
`<:error:466995152976871434> Invalid choice. Usage: \`${client.commands.get(`emojify`).help.usage}\``
|
||||
`<:error:466995152976871434> Invalid choice. Usage: \`${client.commands.get(`flip`).help.usage}\``
|
||||
);
|
||||
};
|
||||
var coin = [
|
||||
|
|
|
@ -18,48 +18,49 @@ exports.run = async (client, message, [member, ...role2add], query) => {
|
|||
);
|
||||
user = users[0];
|
||||
}
|
||||
let role = role2add.join(" ");
|
||||
let joinedValue = role2add.join(" ");
|
||||
|
||||
let gRole = client.findRole(joinedValue, message);
|
||||
|
||||
let gRole = message.guild.roles.find(r => r.name === role);
|
||||
if (!gRole) {
|
||||
return message.channel.send(`<:error:466995152976871434> That role doesn't seem to exist. Try again!`);
|
||||
}
|
||||
};
|
||||
|
||||
let moderator = message.guild.member(message.author)
|
||||
if (gRole.position >= moderator.highestRole.position) {
|
||||
if (gRole.position >= moderator.roles.highest.position) {
|
||||
return message.channel.send(
|
||||
"<:error:466995152976871434> You cannot give roles higher than your own!"
|
||||
);
|
||||
}
|
||||
|
||||
var bot = message.guild.members.get(client.user.id)
|
||||
if (gRole.position >= bot.highestRole.position) {
|
||||
var bot = message.guild.members.cache.get(client.user.id)
|
||||
if (gRole.position >= bot.roles.highest.position) {
|
||||
return message.channel.send(
|
||||
`<:error:466995152976871434> I cannot give roles higher than my own!`
|
||||
);
|
||||
}
|
||||
|
||||
if (user.roles.has(gRole.id)) {
|
||||
if (user.roles.cache.has(gRole.id)) {
|
||||
return message.channel.send(
|
||||
"<:error:466995152976871434> They already have that role!"
|
||||
);
|
||||
}
|
||||
|
||||
await user.addRole(gRole.id);
|
||||
await user.roles.add(gRole.id);
|
||||
message.channel.send(
|
||||
`<:success:466995111885144095> Gave \`${user.user.tag}\` the \`${gRole.name}\` role.`
|
||||
);
|
||||
|
||||
if (client.getSettings(message.guild.id).modlogsChannel !== "off") {
|
||||
const channel = message.guild.channels.find(
|
||||
const channel = message.guild.channels.cache.find(
|
||||
channel => channel.name === client.getSettings(message.guild.id).modlogsChannel
|
||||
);
|
||||
|
||||
if (channel) {
|
||||
let embed = new Discord.RichEmbed();
|
||||
let embed = new Discord.MessageEmbed();
|
||||
embed.setColor("#00c09a");
|
||||
embed.setAuthor("Role given:", user.user.avatarURL);
|
||||
embed.setDescription(`❯ User: ${user} (${user.user.id})\n❯ Mod: ${message.author} (${message.author.id})\n❯ Role: ${gRole}`)
|
||||
embed.setAuthor("Role given:", user.user.avatarURL({format: "png", dynamic: true}));
|
||||
embed.setDescription(`• User: ${user} (${user.user.id})\n• Mod: ${message.author} (${message.author.id})\n• Role: ${gRole}`)
|
||||
try {
|
||||
channel.send({ embed });
|
||||
} catch (err) {
|
||||
|
|
|
@ -7,7 +7,7 @@ exports.run = async (client, message, args) => {
|
|||
);
|
||||
};
|
||||
|
||||
user = client.users.get(args[0])
|
||||
user = client.users.cache.get(args[0])
|
||||
if(!user) {
|
||||
return message.channel.send("<:error:466995152976871434> Invalid ID")
|
||||
}
|
||||
|
@ -20,25 +20,27 @@ exports.run = async (client, message, args) => {
|
|||
|
||||
let reason = args.slice(1).join(" ");
|
||||
if (!reason) reason = `Banned by ${message.author.tag}`;
|
||||
await message.guild.ban(args[0], reason).catch(console.error);
|
||||
await message.guild.members.ban(args[0], {reason: reason}).catch(console.error);
|
||||
message.channel.send(`<:success:466995111885144095> Hackbanned \`${user.tag}\``);
|
||||
|
||||
if (settings.modlogsChannel !== "off") {
|
||||
const channel = message.guild.channels.find(
|
||||
const channel = message.guild.channels.cache.find(
|
||||
channel => channel.name === settings.modlogsChannel
|
||||
);
|
||||
|
||||
if (channel) {
|
||||
let embed = new Discord.RichEmbed();
|
||||
embed.setColor("#7c0136");
|
||||
embed.setAuthor("User preemptively banned!", user.avatarURL);
|
||||
embed.setDescription(`❯ User: ${user.tag} (${user.id})\n❯ Mod: ${message.author} (${message.author.id})\n❯ Reason: ${reason}`)
|
||||
let embed = new Discord.MessageEmbed();
|
||||
embed.setColor("#BC0057");
|
||||
embed.setAuthor("User banned!", user.avatarURL({format: "png", dynamic: true}));
|
||||
embed.setDescription(
|
||||
`• User: ${user.tag} (${user.id})\n• Mod: ${message.author} (${message.author.id})\n• Reason: ${reason}`
|
||||
);
|
||||
try {
|
||||
channel.send({ embed });
|
||||
channel.send(embed);
|
||||
} catch (err) {
|
||||
// probably no permissions to send messages/embeds there
|
||||
};
|
||||
};
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
exports.run = (client, message, args, level) => {
|
||||
embed = new Discord.RichEmbed();
|
||||
embed = new Discord.MessageEmbed();
|
||||
embed.setColor(client.embedColour(message));
|
||||
|
||||
var ran = false;
|
||||
|
@ -141,7 +141,7 @@ exports.run = (client, message, args, level) => {
|
|||
|
||||
embed.setTitle(prefix + command.help.name);
|
||||
embed.setDescription(
|
||||
`❯ **Description:** ${command.help.description}\n❯ **Usage:** ${prefix + command.help.usage}\n❯ **Permission Level:** ${cmd.conf.permLevel} \n❯ **Guild Only:** ${cmd.conf.guildOnly}\n❯ **Aliases:** ${aliases}\n❯ **Required perms:** ${requiredPerms}`
|
||||
`• **Description:** ${command.help.description}\n• **Usage:** ${prefix + command.help.usage}\n• **Permission Level:** ${cmd.conf.permLevel} \n• **Guild Only:** ${cmd.conf.guildOnly}\n• **Aliases:** ${aliases}\n• **Required perms:** ${requiredPerms}`
|
||||
);
|
||||
embed.setFooter("Arguments in [] are required, <> are optional.");
|
||||
|
||||
|
|
33
src/commands/inspirobot.js
Normal file
33
src/commands/inspirobot.js
Normal file
|
@ -0,0 +1,33 @@
|
|||
const request = require('request')
|
||||
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();
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: [],
|
||||
permLevel: "User",
|
||||
requiredPerms: []
|
||||
};
|
||||
|
||||
exports.help = {
|
||||
name: "inspirobot",
|
||||
category: "Fun",
|
||||
description: "Returns an inspirational message generated by inspirobot.",
|
||||
usage: "inspirobot"
|
||||
};
|
|
@ -27,14 +27,14 @@ if (user.user.id === message.guild.owner.id) {
|
|||
return message.channel.send("<:error:466995152976871434> You can't kick the owner!")
|
||||
}
|
||||
let moderator = message.guild.member(message.author)
|
||||
if (user.highestRole.position >= moderator.highestRole.position && moderator.user.id !== message.guild.ownerID) {
|
||||
if (user.roles.highest.position >= moderator.roles.highest.position && moderator.user.id !== message.guild.ownerID) {
|
||||
return message.channel.send(
|
||||
`<:error:466995152976871434> You can't kick people higher ranked than yourself!`
|
||||
);
|
||||
}
|
||||
|
||||
let bot = message.guild.member(client.user)
|
||||
if (user.highestRole.position >= bot.highestRole.position) {
|
||||
if (user.roles.highest.position >= bot.roles.highest.position) {
|
||||
return message.channel.send(
|
||||
`<:error:466995152976871434> I can't kick people who are higher ranked than me!`
|
||||
);
|
||||
|
@ -51,16 +51,16 @@ await user.kick(reason).catch(console.error);
|
|||
message.channel.send(`<:success:466995111885144095> Kicked \`${user.user.tag}\``);
|
||||
|
||||
if (settings.modlogsChannel !== "off") {
|
||||
const channel = message.guild.channels.find(
|
||||
const channel = message.guild.channels.cache.find(
|
||||
channel => channel.name === settings.modlogsChannel
|
||||
);
|
||||
|
||||
if (channel) {
|
||||
let embed = new Discord.RichEmbed();
|
||||
let embed = new Discord.MessageEmbed();
|
||||
embed.setColor("#fd0061");
|
||||
embed.setAuthor("User kicked!", user.user.avatarURL);
|
||||
embed.setAuthor("User kicked!", user.user.avatarURL({format: "png", dynamic: true}));
|
||||
embed.setDescription(
|
||||
`❯ User: ${user.user.tag} (${user.user.id})\n❯ Mod: ${message.author} (${message.author.id})\n❯ Reason: ${reason}`
|
||||
`• User: ${user.user.tag} (${user.user.id})\n• Mod: ${message.author} (${message.author.id})\n• Reason: ${reason}`
|
||||
);
|
||||
try {
|
||||
channel.send({ embed });
|
||||
|
|
|
@ -22,17 +22,14 @@ exports.run = (client, message, args) => {
|
|||
}
|
||||
|
||||
let result = (new Function( 'return ' + exercise )());
|
||||
if (exercise === "9+10" || exercise === "9 + 10") {
|
||||
result = "21"
|
||||
}
|
||||
|
||||
message.channel.send(`\`RESULTS:\`\n\`\`\`${result}\`\`\``);
|
||||
message.channel.send(`\`RESULT:\`\n\`\`\`${result}\`\`\``);
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: ["calculate"],
|
||||
aliases: ["calculate", "calc"],
|
||||
permLevel: "User",
|
||||
requiredPerms: []
|
||||
};
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
exports.run = async (client, message) => {
|
||||
|
||||
const settings = message.settings;
|
||||
|
||||
if (!client.settings.has(message.guild.id)) client.settings.set(message.guild.id, {});
|
||||
|
|
|
@ -6,7 +6,7 @@ exports.run = async (client, message, args) => {
|
|||
client.settings.set(message.guild.id, {});
|
||||
}
|
||||
|
||||
var modRole = message.guild.roles.get(settings.modRole)
|
||||
var modRole = message.guild.roles.cache.get(settings.modRole)
|
||||
|
||||
if (!args[0]) {
|
||||
if(!modRole) {
|
||||
|
@ -31,17 +31,16 @@ exports.run = async (client, message, args) => {
|
|||
);
|
||||
};
|
||||
|
||||
let roleExists = message.guild.roles.find(r => r.name === args.join(" "));
|
||||
if (!roleExists) {
|
||||
return message.channel.send(
|
||||
"<:error:466995152976871434> The specified role does not exist."
|
||||
);
|
||||
}
|
||||
let role = client.findRole(joinedValue, message);
|
||||
|
||||
client.settings.set(message.guild.id, roleExists.id, "modRole");
|
||||
if (!role) {
|
||||
return message.channel.send(`<:error:466995152976871434> That role doesn't seem to exist. Try again!`);
|
||||
};
|
||||
|
||||
client.settings.set(message.guild.id, role.id, "modRole");
|
||||
|
||||
message.channel.send(
|
||||
`<:success:466995111885144095> The mod role has been set to \`${joinedValue}\`
|
||||
`<:success:466995111885144095> The mod role has been set to \`${role.name}\`
|
||||
`);
|
||||
};
|
||||
};
|
||||
|
|
|
@ -24,12 +24,12 @@ exports.run = async (client, message, [args, ...reason], level) => {
|
|||
};
|
||||
|
||||
let moderator = message.guild.member(message.author)
|
||||
if (message.settings.mutedRole.position >= moderator.highestRole.position && level < 2) {
|
||||
if (message.settings.mutedRole.position >= moderator.roles.highest.position && level < 2) {
|
||||
return message.channel.send(
|
||||
"<:error:466995152976871434> The muted role is positioned above the moderator role! Please move the muted role below the moderator role."
|
||||
);
|
||||
};
|
||||
if (user.highestRole.position >= moderator.highestRole.position && moderator.user.id !== message.guild.ownerID) {
|
||||
if (user.roles.highest.position >= moderator.roles.highest.position && moderator.user.id !== message.guild.ownerID) {
|
||||
return message.channel.send(
|
||||
`<:error:466995152976871434> You can't mute people who have a higher role than you!`
|
||||
);
|
||||
|
@ -37,56 +37,38 @@ exports.run = async (client, message, [args, ...reason], level) => {
|
|||
|
||||
let bot = message.guild.member(client.user)
|
||||
|
||||
if (user.highestRole.position >= bot.highestRole.position) {
|
||||
if (user.roles.highest.position >= bot.roles.highest.position) {
|
||||
return message.channel.send(
|
||||
`<:error:466995152976871434> I can't mute people who have a higher role than me!`
|
||||
);
|
||||
}
|
||||
|
||||
var role = message.guild.roles.get(settings.mutedRole);
|
||||
var modrole = message.guild.roles.get(settings.modRole);
|
||||
var role = message.guild.roles.cache.get(settings.mutedRole);
|
||||
|
||||
if(!role) {
|
||||
if (!modrole.id) {
|
||||
return message.channel.send(
|
||||
"<:error:466995152976871434> There is no mod role set for this server. Please set one using `" + message.settings.prefix + "modrole <role>` before using this command."
|
||||
);
|
||||
};
|
||||
let rolepos = (modrole.position)
|
||||
rolepos = rolepos-1
|
||||
try {
|
||||
role = await message.guild.createRole({
|
||||
name: "Muted",
|
||||
color: "#707fa5",
|
||||
permissions: [],
|
||||
position: rolepos
|
||||
});
|
||||
|
||||
} catch(e) {
|
||||
client.logger.log(`Mute command error: \n${e}`, "error")
|
||||
};
|
||||
client.settings.set(message.guild.id, role.id, "mutedRole");
|
||||
message.channel.send("Created a `Muted` role, since your server didn't have one.")
|
||||
if (!role) {
|
||||
return message.channel.send(
|
||||
"<:error:466995152976871434> There is no muted role set for this server. Please set one using `" + message.settings.prefix + "mutedrole <role>` before using this command."
|
||||
);
|
||||
};
|
||||
|
||||
if (bot.highestRole.position <= role.position) {
|
||||
if (bot.roles.highest.position <= role.position) {
|
||||
return message.channel.send(
|
||||
"<:error:466995152976871434> The muted role is above my highest role! Please move the muted role below my highest role."
|
||||
);
|
||||
};
|
||||
|
||||
message.guild.channels.forEach(async (channel, id) => {
|
||||
await channel.overwritePermissions(role, {
|
||||
message.guild.channels.cache.forEach(async (channel, id) => {
|
||||
await channel.updateOverwrite(role, {
|
||||
SEND_MESSAGES: false,
|
||||
ADD_REACTIONS: false
|
||||
});
|
||||
});
|
||||
|
||||
if (user.roles.has(role.id)) {
|
||||
if (user.roles.cache.has(role.id)) {
|
||||
return message.channel.send("<:error:466995152976871434> They're already muted!")
|
||||
}
|
||||
|
||||
await user.addRole(role.id);
|
||||
await user.roles.add(role.id);
|
||||
message.channel.send(`<:success:466995111885144095> Muted \`${user.user.tag}\``)
|
||||
|
||||
var muteReason = reason.join(" ");
|
||||
|
@ -96,20 +78,19 @@ exports.run = async (client, message, [args, ...reason], level) => {
|
|||
}
|
||||
|
||||
if (settings.modlogsChannel !== "off") {
|
||||
const channel = message.guild.channels.find(
|
||||
const channel = message.guild.channels.cache.find(
|
||||
channel => channel.name === settings.modlogsChannel
|
||||
);
|
||||
|
||||
if (channel) {
|
||||
let embed = new Discord.RichEmbed();
|
||||
let embed = new Discord.MessageEmbed();
|
||||
embed.setColor("#a652bb");
|
||||
embed.setAuthor("User muted!", user.user.avatarURL);
|
||||
embed.setAuthor("User muted!", user.user.avatarURL({format: "png", dynamic: true}));
|
||||
embed.setDescription(
|
||||
`❯ User: ${user} (${user.user.id})\n❯ Mod: ${message.author} (${message.author.id})\n
|
||||
❯ Reason: ${muteReason}`
|
||||
`• User: ${user} (${user.user.id})\n• Mod: ${message.author} (${message.author.id})\n• Reason: ${muteReason}`
|
||||
);
|
||||
try {
|
||||
channel.send({ embed });
|
||||
channel.send(embed);
|
||||
} catch (err) {
|
||||
// probably no permissions to send messages/embeds there
|
||||
}
|
||||
|
@ -120,7 +101,7 @@ exports.run = async (client, message, [args, ...reason], level) => {
|
|||
exports.conf = {
|
||||
enabled: true,
|
||||
guildOnly: true,
|
||||
aliases: ["stfu"],
|
||||
aliases: [],
|
||||
permLevel: "Moderator",
|
||||
requiredPerms: ["MANAGE_ROLES", "MANAGE_CHANNELS"]
|
||||
};
|
||||
|
|
|
@ -6,7 +6,7 @@ exports.run = async (client, message, args) => {
|
|||
client.settings.set(message.guild.id, {});
|
||||
}
|
||||
|
||||
var mutedRole = message.guild.roles.get(settings.mutedRole)
|
||||
var mutedRole = message.guild.roles.cache.get(settings.mutedRole)
|
||||
|
||||
if (!args[0]) {
|
||||
if(!mutedRole) {
|
||||
|
@ -21,7 +21,7 @@ exports.run = async (client, message, args) => {
|
|||
const joinedValue = args.join(" ");
|
||||
if (joinedValue.length < 1) {
|
||||
return message.channel.send(
|
||||
`<:error:466995152976871434> You didn't specify a role. Usage: \`${client.commands.get(`mutedRole`).help.usage}\``
|
||||
`<:error:466995152976871434> You didn't specify a role. Usage: \`${client.commands.get(`mutedrole`).help.usage}\``
|
||||
);
|
||||
};
|
||||
|
||||
|
@ -31,17 +31,16 @@ exports.run = async (client, message, args) => {
|
|||
);
|
||||
};
|
||||
|
||||
let roleExists = message.guild.roles.find(r => r.name === args.join(" "));
|
||||
if (!roleExists) {
|
||||
return message.channel.send(
|
||||
"<:error:466995152976871434> The specified role does not exist."
|
||||
);
|
||||
}
|
||||
let role = client.findRole(joinedValue, message);
|
||||
|
||||
client.settings.set(message.guild.id, roleExists.id, "mutedRole");
|
||||
if (!role) {
|
||||
return message.channel.send(`<:error:466995152976871434> That role doesn't seem to exist. Try again!`);
|
||||
};
|
||||
|
||||
client.settings.set(message.guild.id, role.id, "mutedRole");
|
||||
|
||||
message.channel.send(
|
||||
`<:success:466995111885144095> The muted role has been set to \`${joinedValue}\`
|
||||
`<:success:466995111885144095> The muted role has been set to \`${role.name}\`
|
||||
`);
|
||||
};
|
||||
};
|
||||
|
|
|
@ -7,7 +7,7 @@ exports.run = async (client, message) => {
|
|||
}
|
||||
|
||||
var song = guild.queue[0];
|
||||
var elapsedTime = client.createTimestamp(guild.dispatcher.time / 1000);
|
||||
var elapsedTime = client.createTimestamp(guild.dispatcher.streamTime / 1000);
|
||||
var timestamp;
|
||||
|
||||
if(song.duration == 0) {
|
||||
|
@ -16,14 +16,14 @@ exports.run = async (client, message) => {
|
|||
timestamp = `\`[${elapsedTime + "/" + client.createTimestamp(song.duration)}]\``;
|
||||
};
|
||||
|
||||
embed = new Discord.RichEmbed();
|
||||
embed = new Discord.MessageEmbed();
|
||||
embed.setTitle("Now playing:")
|
||||
embed.setThumbnail(song.thumbnail)
|
||||
embed.setColor(client.embedColour(message));
|
||||
embed.setDescription(`**[${song.title}](https://www.youtube.com/watch?v=${song.id})**`)
|
||||
embed.addField("Channel:", song.author, true)
|
||||
embed.addField("Time:", timestamp, true)
|
||||
embed.setFooter("Requested by " + song.requestedBy.tag, song.requestedBy.avatarURL)
|
||||
embed.setFooter("Requested by " + song.requestedBy.tag, song.requestedBy.avatarURL({format: "png", dynamic: true}))
|
||||
|
||||
message.channel.send(embed)
|
||||
};
|
||||
|
|
|
@ -12,6 +12,10 @@ exports.run = (client, message, args) => {
|
|||
owoified = owoified.replace(/ove/g, 'uv')
|
||||
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.")
|
||||
}
|
||||
|
||||
message.channel.send(owoified)
|
||||
};
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
exports.run = async (client, message) => { // eslint-disable-line no-unused-vars
|
||||
const msg = await message.channel.send("<:wait:467115775849922570> Please wait...");
|
||||
exports.run = async (client, message) => {
|
||||
const msg = await message.channel.send("⏱️ Please wait...");
|
||||
msg.edit(
|
||||
`:ping_pong: Pong! Latency is ${msg.createdTimestamp - message.createdTimestamp}ms, API Latency is ${Math.round(client.ping)}ms`
|
||||
);
|
||||
`:ping_pong: Pong! Latency is ${msg.createdTimestamp - message.createdTimestamp}ms, API Latency is ${Math.round(client.ws.ping)}ms`
|
||||
);
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
|
|
|
@ -9,7 +9,7 @@ module.exports.run = (client, message, args, level) =>{
|
|||
return;
|
||||
}
|
||||
|
||||
let voiceChannel = message.member.voiceChannel;
|
||||
let voiceChannel = message.member.voice.channel;
|
||||
if(!voiceChannel) return message.channel.send('<:error:466995152976871434> You need to be in a voice channel to use this command!');
|
||||
|
||||
message.channel.send(`🔎 searching YouTube for \`${args.join(" ")}\``);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
exports.run = (client, message, args, level) => {
|
||||
exports.run = async (client, message, args, level) => {
|
||||
const settings = message.settings;
|
||||
|
||||
if(message.channel.name === settings.chatlogsChannel) {
|
||||
|
@ -13,36 +13,35 @@ exports.run = (client, message, args, level) => {
|
|||
return message.channel.send("<:error:466995152976871434> Can only purge a maximum of 100 messages!")
|
||||
}
|
||||
|
||||
if (!amount) return message.channel.send(
|
||||
'<:error:466995152976871434> You didn\'t tell me how many messages to purge. Usage: \`' + client.commands.get(`purge`).help.usage + "`"
|
||||
);
|
||||
|
||||
message.delete().catch(O_o => {});
|
||||
if (!amount) return message.channel.send(
|
||||
'<:error:466995152976871434> You didn\'t tell me how many messages to purge. Usage: \`' + client.commands.get(`purge`).help.usage + "`"
|
||||
);
|
||||
|
||||
message.channel.fetchMessages({
|
||||
limit: amount,
|
||||
}).then((messages) => {
|
||||
message.channel.bulkDelete(messages, true).catch(console.error);
|
||||
message.channel.send(`<:success:466995111885144095> Purged ${amount} messages!`).then(m => m.delete(5000));
|
||||
});
|
||||
await message.delete().catch(O_o => {});
|
||||
|
||||
if (settings.modlogsChannel !== "off") {
|
||||
const channel = message.guild.channels.find(
|
||||
channel => channel.name === settings.modlogsChannel
|
||||
);
|
||||
message.channel.messages.fetch({
|
||||
limit: amount,
|
||||
}).then((messages) => {
|
||||
message.channel.bulkDelete(messages, true).catch(console.error);
|
||||
message.channel.send(`<:success:466995111885144095> Purged ${amount} messages!`).then(m => m.delete({timeout: 5000}));
|
||||
});
|
||||
|
||||
if (settings.modlogsChannel !== "off") {
|
||||
const channel = message.guild.channels.cache.find(
|
||||
channel => channel.name === settings.modlogsChannel
|
||||
);
|
||||
|
||||
if (channel) {
|
||||
let embed = new Discord.RichEmbed();
|
||||
embed.setColor("#a62019");
|
||||
embed.setAuthor(`${amount} messages purged!`, message.author.avatarURL);
|
||||
embed.setDescription(`❯ Mod: ${message.author} (${message.author.id})`)
|
||||
try {
|
||||
channel.send({ embed });
|
||||
} catch (err) {
|
||||
// probably no permissions to send messages/embeds there
|
||||
};
|
||||
if (channel) {
|
||||
let embed = new Discord.MessageEmbed();
|
||||
embed.setColor("#a62019");
|
||||
embed.setAuthor(`${amount} messages purged!`, message.author.avatarURL({format: "png", dynamic: true}));
|
||||
embed.setDescription(`• Channel: ${message.channel.name} (${message.channel.id})\n• Mod: ${message.author} (${message.author.id})\n• Amount: \`${amount}\``)
|
||||
try {
|
||||
channel.send({ embed });
|
||||
} catch (err) {
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
|
|
|
@ -60,11 +60,11 @@ exports.run = (client, message, args) => {
|
|||
return false;
|
||||
}
|
||||
|
||||
var embed = new Discord.RichEmbed();
|
||||
var embed = new Discord.MessageEmbed();
|
||||
embed.setTitle(`Queue for: ${message.guild.name}`);
|
||||
embed.setColor(client.embedColour(message));
|
||||
|
||||
var elapsedTime = client.music.getGuild(message.guild.id).dispatcher.time / 1000
|
||||
var elapsedTime = client.music.getGuild(message.guild.id).dispatcher.streamTime / 1000
|
||||
var totalDuration = queue[0].duration - elapsedTime;
|
||||
|
||||
let timeRemaining = "";
|
||||
|
|
|
@ -8,7 +8,7 @@ exports.run = async (client, message, args, level) => {
|
|||
|
||||
var raidToggle;
|
||||
var embColour;
|
||||
var mutedRole = message.guild.roles.get(settings.mutedRole)
|
||||
var mutedRole = message.guild.roles.cache.get(settings.mutedRole)
|
||||
|
||||
if(!mutedRole) {
|
||||
return message.channel.send(
|
||||
|
@ -36,15 +36,15 @@ exports.run = async (client, message, args, level) => {
|
|||
};
|
||||
};
|
||||
if (settings.modlogsChannel !== "off") {
|
||||
const channel = message.guild.channels.find(
|
||||
const channel = message.guild.channels.cache.find(
|
||||
channel => channel.name === settings.modlogsChannel
|
||||
);
|
||||
|
||||
if (channel) {
|
||||
let embed = new Discord.RichEmbed();
|
||||
let embed = new Discord.MessageEmbed();
|
||||
embed.setColor(embColour);
|
||||
embed.setAuthor(raidToggle, message.author.avatarURL);
|
||||
embed.setDescription(`Mod: ${message.author} (${message.author.id})`)
|
||||
embed.setAuthor(raidToggle, message.author.avatarURL({dynamic: true}));
|
||||
embed.setDescription(`• Mod: ${message.author} (${message.author.id})`)
|
||||
try {
|
||||
channel.send({ embed });
|
||||
} catch (err) {
|
||||
|
|
|
@ -11,7 +11,7 @@ exports.run = (client, message) => {
|
|||
"<:error:466995152976871434> Example cannot exceed 2000 characters!"
|
||||
);
|
||||
|
||||
embed = new Discord.RichEmbed()
|
||||
embed = new Discord.MessageEmbed()
|
||||
.setTitle(json.word)
|
||||
.setURL(json.permalink)
|
||||
.setColor("#EFFF00")
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
exports.run = async (client, message) => {// eslint-disable-line no-unused-vars
|
||||
|
||||
// This actually shuts down the bot, you'll need to use something like pm2 to get it to restart
|
||||
|
||||
await message.channel.send("<:reboot:467216876938985482> Restarting...");
|
||||
|
||||
client.commands.forEach( async cmd => {
|
||||
await client.unloadCommand(cmd);
|
||||
});
|
||||
process.exit(1);
|
||||
|
||||
process.exit();
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
exports.run = async (client, message, [colour, ...givenRole], query) => {
|
||||
let role = givenRole.join(" ");
|
||||
|
||||
let gRole = message.guild.roles.find(r => r.name === role);
|
||||
let gRole = client.findRole(role, message);
|
||||
|
||||
if (!gRole) {
|
||||
return message.channel.send(
|
||||
`<:error:466995152976871434> That role doesn't seem to exist. Usage: \`${client.commands.get(`rolecolour`).help.usage}\``
|
||||
);
|
||||
}
|
||||
return message.channel.send(`<:error:466995152976871434> That role doesn't seem to exist. Try again!`);
|
||||
};
|
||||
|
||||
if(!colour.startsWith('#')) {
|
||||
colour = `#`+colour;
|
||||
|
@ -19,14 +18,14 @@ exports.run = async (client, message, [colour, ...givenRole], query) => {
|
|||
);
|
||||
|
||||
let moderator = message.guild.member(message.author)
|
||||
if (gRole.position >= moderator.highestRole.position) {
|
||||
if (gRole.position >= moderator.roles.highest.position) {
|
||||
return message.channel.send(
|
||||
"<:error:466995152976871434> You cannot modify roles higher than your own!"
|
||||
);
|
||||
}
|
||||
|
||||
var bot = message.guild.members.get(client.user.id)
|
||||
if (gRole.position >= bot.highestRole.position) {
|
||||
var bot = message.guild.members.cache.get(client.user.id)
|
||||
if (gRole.position >= bot.roles.highest.position) {
|
||||
return message.channel.send(
|
||||
`<:error:466995152976871434> I cannot modify roles higher than my own!`
|
||||
);
|
||||
|
@ -34,7 +33,7 @@ exports.run = async (client, message, [colour, ...givenRole], query) => {
|
|||
|
||||
await gRole.edit({color: colour})
|
||||
message.channel.send(
|
||||
`<:success:466995111885144095> Role colour changed to \`${colour}\``);
|
||||
`<:success:466995111885144095> The colour of the role \`${gRole.name}\` has been set to \`${colour}\``);
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
|
|
|
@ -5,10 +5,11 @@ exports.run = async (client, message, args, level) => {
|
|||
`<:error:466995152976871434> You didn't provide me with a role name or ID! Usage: \`${client.commands.get(`roleinfo`).help.usage}\``
|
||||
);
|
||||
|
||||
var role = message.guild.roles.get(args[0])
|
||||
if(!role) {
|
||||
role = message.guild.roles.find(r => r.name === args.join(" "));
|
||||
}
|
||||
let role = client.findRole(args.join(" "), message);
|
||||
|
||||
if (!role) {
|
||||
return message.channel.send(`<:error:466995152976871434> That role doesn't seem to exist. Try again!`);
|
||||
};
|
||||
|
||||
if(!role) {
|
||||
return message.channel.send(`<:error:466995152976871434> Role not found.`)
|
||||
|
@ -20,11 +21,10 @@ exports.run = async (client, message, args, level) => {
|
|||
var hoist = `No`
|
||||
}
|
||||
|
||||
var embed = new Discord.RichEmbed();
|
||||
var embed = new Discord.MessageEmbed();
|
||||
embed.setColor(role.color)
|
||||
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}`
|
||||
`• **Name:** ${role.name}\n• **ID:** ${role.id}\n• **Hex:** ${role.hexColor}\n• **Members:** ${role.members.size}\n• **Position:** ${role.position}\n• **Hoisted:** ${hoist}`
|
||||
);
|
||||
message.channel.send(embed)
|
||||
};
|
||||
|
|
|
@ -1,16 +1,23 @@
|
|||
const url = "https://demirramon.com/gen/undertale_text_box.png";
|
||||
exports.run = (client, message, args) => {
|
||||
let text = args.join(" ");
|
||||
|
||||
if (!text) {
|
||||
return message.channel.send(
|
||||
`<:error:466995152976871434> No message provided. Usage: \`${client.commands.get(`sans`).help.usage}\``
|
||||
);
|
||||
}
|
||||
|
||||
message.channel.startTyping();
|
||||
|
||||
let params = "box=undertale&boxcolor=white&character=undertale-sans&expression=default&charcolor=white&font=determination&asterisk=true&mode=regular&text=" + encodeURIComponent(text);
|
||||
|
||||
message.channel.send({files: [new Discord.Attachment(url + "?" + params, "undertale.png")]});
|
||||
try {
|
||||
message.channel.stopTyping();
|
||||
message.channel.send({files: [new Discord.MessageAttachment(url + "?" + params, "undertale.png")]});
|
||||
} catch(err) {
|
||||
message.channel.stopTyping();
|
||||
message.channel.send(`<:error:466995152976871434> Error when generating image: \`${err}\``)
|
||||
}
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
|
|
28
src/commands/say.js
Normal file
28
src/commands/say.js
Normal file
|
@ -0,0 +1,28 @@
|
|||
exports.run = (client, message, args, level) => {
|
||||
if(!args[0]) {
|
||||
return message.channel.send(
|
||||
`<:error:466995152976871434> No message provided. Usage: \`${client.commands.get(`echo`).help.usage}\``
|
||||
);
|
||||
};
|
||||
if (message.content.includes("@everyone")) {
|
||||
return message.channel.send(`<@${message.author.id}>`);
|
||||
};
|
||||
|
||||
message.delete().catch(O_o => {});
|
||||
message.channel.send(args.join(" "));
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: ["echo"],
|
||||
permLevel: "User",
|
||||
requiredPerms: ["MANAGE_MESSAGES"]
|
||||
};
|
||||
|
||||
exports.help = {
|
||||
name: "say",
|
||||
category: "Fun",
|
||||
description: "Makes Woomy copy what the user says.",
|
||||
usage: "echo <-hide> [message]"
|
||||
};
|
|
@ -1,5 +1,5 @@
|
|||
exports.run = (client, message) => {
|
||||
message.channel.send(`**${message.guild}'s** icon is:\n${message.guild.iconURL}`)
|
||||
message.channel.send(`**${message.guild}'s** icon is:\n${message.guild.iconURL({format: "png", dynamic: true})}`)
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
|
|
|
@ -1,40 +1,84 @@
|
|||
exports.run = (client, message) => {
|
||||
|
||||
let guild = message.guild
|
||||
|
||||
var roleCount = 0;
|
||||
let roles = guild.roles
|
||||
roles.forEach((role) => { roleCount = roleCount + 1; });
|
||||
var guild = message.guild
|
||||
var badges = "";
|
||||
var members = `${guild.memberCount} (${guild.memberCount-guild.members.cache.filter(member => member.user.bot).size} users | ${guild.members.cache.filter(member => member.user.bot).size} bots)`;
|
||||
|
||||
var chanCount = 0;
|
||||
let channels = guild.channels
|
||||
channels.forEach((channel) => { chanCount = chanCount + 1; });
|
||||
var roles = 0;
|
||||
guild.roles.cache.forEach((role) => {
|
||||
roles = roles + 1;
|
||||
});
|
||||
|
||||
var emojiList = "";
|
||||
let emojis = guild.emojis;
|
||||
emojis.forEach((emoji) => { emojiList = emojiList + emoji; });
|
||||
eListOutput = `\n**Emojis:** ${emojiList}`;
|
||||
if(emojiList === "") eListOutput = "";
|
||||
var channels = 0;
|
||||
var categories = 0;
|
||||
var text = 0;
|
||||
var voice = 0;
|
||||
|
||||
let vlvl = guild.verificationLevel;
|
||||
if(vlvl === 0) vlvl = "None";
|
||||
if(vlvl === 1) vlvl = "Low";
|
||||
if(vlvl === 2) vlvl = "Medium";
|
||||
if(vlvl === 3) vlvl = "(╯°□°)╯︵ ┻━┻"
|
||||
if(vlvl === 4) vlvl = "┻━┻彡 ヽ(ಠ益ಠ)ノ彡┻━┻"
|
||||
guild.channels.cache.forEach((channel) => {
|
||||
if(channel.type == "category") {
|
||||
categories = categories + 1;
|
||||
} else {
|
||||
if(channel.type == "text") {
|
||||
text = text + 1;
|
||||
};
|
||||
|
||||
content = `**ID:** ${guild.id}\n**Owner:** ${guild.owner}\n**Region:** ${guild.region}\n**Verification Level:** ${vlvl}\n**Members:** ${guild.memberCount}\n**Roles:** ${roleCount}\n**Channels:** ${chanCount}\n**Created:** ${guild.createdAt}${eListOutput}`;
|
||||
if (content.length > 2048) {
|
||||
eListOutput = "";
|
||||
if(channel.type == "voice") {
|
||||
voice = voice + 1;
|
||||
};
|
||||
|
||||
content = `**ID:** ${guild.id}\n**Owner:** ${guild.owner}\n**Region:** ${guild.region}\n**Verification Level:** ${vlvl}\n**Members:** ${guild.memberCount}\n**Roles:** ${roleCount}\n**Channels:** ${chanCount}\n**Created:** ${guild.createdAt}`;
|
||||
channels = channels + 1;
|
||||
};
|
||||
});
|
||||
|
||||
var channelString = `${channels} (${text} text | ${voice} voice | ${categories} categories)`
|
||||
|
||||
if(guild.premiumTier > 0) {
|
||||
badges = badges += "<:boosted:685704824175853624> "
|
||||
}
|
||||
|
||||
let embed = new Discord.RichEmbed()
|
||||
if(guild.partnered == true) {
|
||||
badges = badges += "<:partnered:685704834779054107> "
|
||||
}
|
||||
|
||||
if(guild.verified == true) {
|
||||
badges = badges += "<:verified:685704812435734569>"
|
||||
}
|
||||
|
||||
if(badges.length > 0) {
|
||||
badges = badges += "\n"
|
||||
}
|
||||
|
||||
var boosts;
|
||||
if(guild.premiumTier == 1) {
|
||||
boosts = `${guild.premiumSubscriptionCount} (level 1)`
|
||||
} else if(guild.premiumTier == 2) {
|
||||
boosts = `${guild.premiumSubscriptionCount} (level 2)`
|
||||
} else if(guild.premiumTier == 3) {
|
||||
boosts = `${guild.premiumSubscriptionCount} (level 3)`
|
||||
} else {
|
||||
boosts = guild.premiumSubscriptionCount;
|
||||
};
|
||||
|
||||
var emojis = 0;
|
||||
var static = 0;
|
||||
var animated = 0;
|
||||
|
||||
guild.emojis.cache.forEach((emoji) => {
|
||||
if(emoji.animated == true) {
|
||||
animated = animated + 1;
|
||||
} else {
|
||||
static = static + 1;
|
||||
};
|
||||
emojis = emojis + 1;
|
||||
});
|
||||
|
||||
emojiString = `${emojis} (${static} static | ${animated} animated)`
|
||||
|
||||
let embed = new Discord.MessageEmbed()
|
||||
.setColor(message.guild.member(client.user).displayHexColor)
|
||||
.setAuthor(guild.name)
|
||||
.setDescription(content)
|
||||
.setThumbnail(message.guild.iconURL);
|
||||
.setTitle(guild.name)
|
||||
.setDescription(`${badges}• **ID:** ${guild.id}\n• **Owner:** ${guild.owner}\n• **Region:** ${guild.region.toProperCase()}\n• **Boosts:** ${boosts}\n• **Members:** ${members}\n• **Channels:** ${channelString}\n• **Roles:** ${roles}\n• **Emojis:** ${emojiString}\n• **Creation date:** ${guild.createdAt}`)
|
||||
.setThumbnail(message.guild.iconURL({format: "png", dynamic: true}));
|
||||
|
||||
message.channel.send(embed);
|
||||
};
|
||||
|
|
|
@ -3,9 +3,9 @@ exports.run = async (client, message, args) => {
|
|||
const settings = message.settings;
|
||||
if (!client.settings.has(message.guild.id)) client.settings.set(message.guild.id, {});
|
||||
|
||||
modChan = message.guild.channels.find(channel => channel.name === settings.modlogsChannel) || "__Disabled__";
|
||||
chatChan = message.guild.channels.find(channel => channel.name === settings.chatlogsChannel) || "__Disabled__"
|
||||
greetChan = message.guild.channels.get(settings.welcomeChannel) || "__Disabled__";
|
||||
modChan = message.guild.channels.cache.find(channel => channel.name === settings.modlogsChannel) || "__Disabled__";
|
||||
chatChan = message.guild.channels.cache.find(channel => channel.name === settings.chatlogsChannel) || "__Disabled__"
|
||||
greetChan = message.guild.channels.cache.get(settings.welcomeChannel) || "__Disabled__";
|
||||
prefix = settings.prefix;
|
||||
|
||||
var raidMode;
|
||||
|
@ -23,10 +23,10 @@ exports.run = async (client, message, args) => {
|
|||
raidMode += "`"
|
||||
}
|
||||
|
||||
var modRole = message.guild.roles.get(settings.modRole);
|
||||
var adminRole = message.guild.roles.get(settings.adminRole);
|
||||
var autorole = message.guild.roles.get(settings.autorole);
|
||||
var mutedRole = message.guild.roles.get(settings.mutedRole);
|
||||
var modRole = message.guild.roles.cache.get(settings.modRole);
|
||||
var adminRole = message.guild.roles.cache.get(settings.adminRole);
|
||||
var autorole = message.guild.roles.cache.get(settings.autorole);
|
||||
var mutedRole = message.guild.roles.cache.get(settings.mutedRole);
|
||||
var blacklist = "";
|
||||
|
||||
if(settings.modRole == "off" || !modRole) {
|
||||
|
@ -70,18 +70,17 @@ exports.run = async (client, message, args) => {
|
|||
} else {
|
||||
if(settings.blacklisted.length > 0) {
|
||||
settings.blacklisted.forEach(function(user) {
|
||||
blacklist += "`" + (client.users.get(user).tag || user.tag) + "`, "
|
||||
blacklist += "`" + (client.users.cache.get(user).tag || user.tag) + "`, "
|
||||
});
|
||||
blacklist = blacklist.substring(0, blacklist.length - 2);
|
||||
};
|
||||
};
|
||||
|
||||
embed = new Discord.RichEmbed()
|
||||
embed.setAuthor("Settings for: " + message.guild.name, message.guild.iconURL)
|
||||
embed = new Discord.MessageEmbed()
|
||||
embed.setAuthor("Settings for: " + message.guild.name, message.guild.iconURL({dynamic: true}))
|
||||
embed.setColor(message.guild.member(client.user).displayHexColor)
|
||||
embed.setDescription("You can edit these settings using the commands in the 'configure' section of the help command.")
|
||||
embed.addField("General:", `Prefix: \`${prefix}\`\nChat logging: ${chatChan}\nMod logging: ${modChan}\nRaid mode: ${raidMode}\nJoin/leave channel: ${greetChan}\nWelcome message: ${welcomeMessage}\nLeave message: ${leaveMessage}`, true)
|
||||
embed.addField("Roles:", `Moderator: ${modRole}\nAdministrator: ${adminRole}\nMuted: ${mutedRole}\nBlacklisted: ${blacklist}\nAutorole: ${autorole}`, true);
|
||||
embed.addFields({ name: "General:", value: `Prefix: \`${prefix}\`\nChat logging: ${chatChan}\nMod logging: ${modChan}\nRaid mode: ${raidMode}\nJoin/leave channel: ${greetChan}\nWelcome message: ${welcomeMessage}\nLeave message: ${leaveMessage}`, inline: true}, {name: "Roles:", value: `Moderator: ${modRole}\nAdministrator: ${adminRole}\nMuted: ${mutedRole}\nBlacklisted: ${blacklist}\nAutorole: ${autorole}`, inline: true})
|
||||
message.channel.send(embed)
|
||||
|
||||
};
|
||||
|
|
|
@ -6,7 +6,7 @@ exports.run = (client, message, args, level) => {
|
|||
"<:error:466995152976871434> Nothing is playing."
|
||||
);
|
||||
|
||||
let vc = message.guild.members.get(client.user.id).voiceChannel;
|
||||
let vc = message.guild.members.cache.get(client.user.id).voiceChannel;
|
||||
|
||||
if(vc != message.member.voiceChannel) return message.channel.send(
|
||||
'<:error:466995152976871434> You need to be in my voice channel to use this command!'
|
||||
|
|
99
src/commands/softban.js
Normal file
99
src/commands/softban.js
Normal file
|
@ -0,0 +1,99 @@
|
|||
exports.run = async (client, message, args) => {
|
||||
const settings = (message.settings = client.getSettings(message.guild.id));
|
||||
|
||||
if(!args[0]) {
|
||||
return message.channel.send(
|
||||
`<:error:466995152976871434> No username provided. Usage: \`${client.commands.get(`ban`).help.usage}\``
|
||||
);
|
||||
};
|
||||
|
||||
let user = message.mentions.members.first();
|
||||
|
||||
if (!user) {
|
||||
let users;
|
||||
users = client.searchForMembers(message.guild, args[0]);
|
||||
if (users.length > 1)
|
||||
return message.channel.send(
|
||||
"<:error:466995152976871434> Found multiple users! 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];
|
||||
};
|
||||
|
||||
if(!user.bannable) {
|
||||
return message.channel.send(`<:error:466995152976871434> Specified user is not bannable.`)
|
||||
};
|
||||
|
||||
let mod = message.guild.member(message.author);
|
||||
let bot = message.guild.member(client.user);
|
||||
|
||||
if (user.roles.highest.position >= mod.roles.highest.position) {
|
||||
return message.channel.send(
|
||||
`<:error:466995152976871434> You can't softban people who are higher ranked than you are!`
|
||||
);
|
||||
};
|
||||
|
||||
if (user.roles.highest.position >= bot.roles.highest.position) {
|
||||
return message.channel.send(
|
||||
`<:error:466995152976871434> I can't softban people who are higher ranked than you myself!`
|
||||
);
|
||||
};
|
||||
|
||||
if(!user.bannable) {
|
||||
return message.channel.send(`<:error:466995152976871434> Specified user is not bannable.`)
|
||||
};
|
||||
|
||||
var days = args[args.length - 1]
|
||||
try {
|
||||
days = Number(days);
|
||||
} catch(err) {};
|
||||
|
||||
console.log(typeof days)
|
||||
console.log(days)
|
||||
|
||||
if(isNaN(days)) {
|
||||
return message.channel.send(`<:error:466995152976871434> Invalid number. Did you forget to specify how many days worth of messages to clear? Usage: \`${client.commands.get(`softban`).help.usage}\``)
|
||||
} else if (days < 1 || days > 7) {
|
||||
return message.channel.send(`<:error:466995152976871434> Number too large/small. The max amount of days I can clear is 7.`)
|
||||
} else {
|
||||
await message.guild.members.ban(user, {reason: `Softbanned by ${message.author.tag}`, days: days});
|
||||
await message.guild.members.unban(user);
|
||||
message.channel.send(`<:success:466995111885144095> Softbanned \`${user.user.tag}\``);
|
||||
|
||||
if (settings.modlogsChannel !== "off") {
|
||||
const channel = message.guild.channels.cache.find(
|
||||
channel => channel.name === settings.modlogsChannel
|
||||
);
|
||||
|
||||
if (channel) {
|
||||
let embed = new Discord.MessageEmbed();
|
||||
embed.setColor("#F38159");
|
||||
embed.setAuthor("User softbanned!", user.user.avatarURL({format: "png", dynamic: true}));
|
||||
embed.setDescription(
|
||||
`• User: ${user.user.tag} (${user.user.id})\n• Mod: ${message.author} (${message.author.id})\n• Days cleared: ${days}`
|
||||
);
|
||||
try {
|
||||
channel.send(embed);
|
||||
} catch (err) {};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
exports.conf = {
|
||||
enabled: true,
|
||||
guildOnly: true,
|
||||
aliases: [],
|
||||
permLevel: "Moderator",
|
||||
requiredPerms: ["BAN_MEMBERS"]
|
||||
};
|
||||
|
||||
exports.help = {
|
||||
name: "softban",
|
||||
category: "Moderation",
|
||||
description: "Bans then unbans a user, clearing their messages.",
|
||||
usage: "softban [user] [days]"
|
||||
};
|
|
@ -4,7 +4,7 @@ exports.run = async (client, message) => {
|
|||
let guild = client.music.getGuild(message.guild.id);
|
||||
|
||||
if(guild.queue.length < 1 || !guild.playing || !guild.dispatcher) return message.channel.send("<:error:466995152976871434> Nothing is playing.");
|
||||
if(!message.member.voiceChannel) return message.channel.send('<:error:466995152976871434> You need to be in voice channel to use this command!');
|
||||
if(!message.member.voice.channel) return message.channel.send('<:error:466995152976871434> You need to be in voice channel to use this command!');
|
||||
|
||||
guild.playing = false;
|
||||
guild.paused = false;
|
||||
|
|
|
@ -20,30 +20,31 @@ exports.run = async (client, message, [member, ...role2add], query) => {
|
|||
}
|
||||
let role = role2add.join(" ");
|
||||
|
||||
let gRole = message.guild.roles.find(r => r.name === role);
|
||||
gRole = client.findRole(role, message);
|
||||
|
||||
if (!gRole) {
|
||||
return message.channel.send(`<:error:466995152976871434> That role doesn't seem to exist. Try again!`);
|
||||
}
|
||||
};
|
||||
|
||||
let moderator = message.guild.member(message.author)
|
||||
if (gRole.position >= moderator.highestRole.position) {
|
||||
if (gRole.position >= moderator.roles.highest.position) {
|
||||
return message.channel.send(
|
||||
"<:error:466995152976871434> You cannot take roles higher than your own!"
|
||||
);
|
||||
}
|
||||
|
||||
var bot = message.guild.members.get(client.user.id)
|
||||
if (gRole.position >= bot.highestRole.position) {
|
||||
var bot = message.guild.members.cache.get(client.user.id)
|
||||
if (gRole.position >= bot.roles.highest.position) {
|
||||
return message.channel.send(
|
||||
`<:error:466995152976871434> I can't take roles higher than my own!`
|
||||
);
|
||||
}
|
||||
if (!user.roles.has(gRole.id)) {
|
||||
if (!user.roles.cache.has(gRole.id)) {
|
||||
return message.channel.send(
|
||||
"<:error:466995152976871434> They don't have that role!"
|
||||
);
|
||||
}
|
||||
await user.removeRole(gRole.id);
|
||||
await user.roles.remove(gRole.id);
|
||||
message.channel.send(
|
||||
`<:success:466995111885144095> Took the \`${gRole.name}\` role from \`${
|
||||
user.user.tag
|
||||
|
@ -51,15 +52,15 @@ exports.run = async (client, message, [member, ...role2add], query) => {
|
|||
);
|
||||
|
||||
if (client.getSettings(message.guild.id).modlogsChannel !== "off") {
|
||||
const channel = message.guild.channels.find(
|
||||
const channel = message.guild.channels.cache.find(
|
||||
channel => channel.name === client.getSettings(message.guild.id).modlogsChannel
|
||||
);
|
||||
|
||||
if (channel) {
|
||||
let embed = new Discord.RichEmbed();
|
||||
let embed = new Discord.MessageEmbed();
|
||||
embed.setColor("#008369");
|
||||
embed.setAuthor("Role taken:", user.user.avatarURL);
|
||||
embed.setDescription(`❯ User: ${user} (${user.user.id})\n❯ Mod: ${message.author} (${message.author.id})\n❯ Role: ${gRole}`)
|
||||
embed.setAuthor("Role taken:", user.user.avatarURL({format: "png", dynamic: true}));
|
||||
embed.setDescription(`• User: ${user} (${user.user.id})\n• Mod: ${message.author} (${message.author.id})\n• Role: ${gRole}`)
|
||||
try {
|
||||
channel.send({ embed });
|
||||
} catch (err) {
|
||||
|
|
|
@ -21,53 +21,50 @@ exports.run = async (client, message, args, level) => {
|
|||
if (user.user.id === client.user.id) {
|
||||
return message.channel.send("lol no")
|
||||
}
|
||||
if (user.user.id === message.guild.owner.id) {
|
||||
return message.channel.send("<:error:466995152976871434> You can't unmute the owner!")
|
||||
}
|
||||
|
||||
let moderator = message.guild.member(message.author)
|
||||
if (message.settings.mutedRole.position >= moderator.highestRole.position && level < 2) {
|
||||
if (message.settings.mutedRole.position >= moderator.roles.highest.position && level < 2) {
|
||||
return message.channel.send(
|
||||
"<:error:466995152976871434> The muted role is positioned above the moderator role! Please move the muted role below the moderator role."
|
||||
);
|
||||
}
|
||||
if (user.highestRole.position >= moderator.highestRole.position && moderator.user.id !== message.guild.ownerID) {
|
||||
if (user.roles.highest.position >= moderator.roles.highest.position && moderator.user.id !== message.guild.ownerID) {
|
||||
return message.channel.send(
|
||||
`<:error:466995152976871434> You can't unmute people who have a higher role than you!`
|
||||
);
|
||||
};
|
||||
let bot = message.guild.member(client.user)
|
||||
if (user.highestRole.position >= bot.highestRole.position) {
|
||||
if (user.roles.highest.position >= bot.roles.highest.position) {
|
||||
return message.channel.send(
|
||||
`<:error:466995152976871434> I can't unmute people who have a higher role than me!`
|
||||
);
|
||||
}
|
||||
|
||||
let role = message.guild.roles.get(settings.mutedRole)
|
||||
let role = message.guild.roles.cache.get(settings.mutedRole)
|
||||
if(!role) {
|
||||
return message.channel.send(
|
||||
"<:error:466995152976871434> Mute role not found! Please set one using `~settings edit mutedRole <role>`"
|
||||
);
|
||||
}
|
||||
|
||||
if (!user.roles.has(role.id)) {
|
||||
if (!user.roles.cache.has(role.id)) {
|
||||
return message.channel.send("<:error:466995152976871434> They aren't muted!")
|
||||
}
|
||||
|
||||
await user.removeRole(role.id);
|
||||
await user.roles.remove(role.id);
|
||||
message.channel.send(`<:success:466995111885144095> Unmuted \`${user.user.tag}\``)
|
||||
|
||||
|
||||
if (settings.modlogsChannel !== "off") {
|
||||
const channel = message.guild.channels.find(
|
||||
const channel = message.guild.channels.cache.find(
|
||||
channel => channel.name === settings.modlogsChannel
|
||||
);
|
||||
|
||||
if (channel) {
|
||||
let embed = new Discord.RichEmbed();
|
||||
let embed = new Discord.MessageEmbed();
|
||||
embed.setColor("#7a2f8f");
|
||||
embed.setAuthor("User unmuted!", user.user.avatarURL);
|
||||
embed.setDescription(`❯ User: ${user} (${user.user.id})\n❯ Mod: ${message.author} (${message.author.id})`)
|
||||
embed.setAuthor("User unmuted!", user.user.avatarURL({format: "png", dynamic: true}));
|
||||
embed.setDescription(`• User: ${user} (${user.user.id})\n• Mod: ${message.author} (${message.author.id})`)
|
||||
try {
|
||||
channel.send({ embed });
|
||||
} catch (err) {
|
||||
|
|
|
@ -19,14 +19,14 @@ exports.run = async (client, message, args) => {
|
|||
"<:error:466995152976871434> Example cannot exceed 2000 characters!"
|
||||
);
|
||||
|
||||
embed = new Discord.RichEmbed()
|
||||
embed = new Discord.MessageEmbed()
|
||||
.setTitle(output.word)
|
||||
.setURL(output.urbanURL)
|
||||
.setColor("#EFFF00")
|
||||
.setDescription(output.definition || "None")
|
||||
.addField("Example", output.example || "None")
|
||||
.addField("Upvotes", output.thumbsUp, true)
|
||||
.addField("Downvotes", output.thumbsDown, true)
|
||||
.addFields(
|
||||
{name: "Example", value: output.example || "None"}, {name: "Upvotes", value: output.thumbsUp, inline: true}, {name: "Downvotes", value: output.thumbsDown, inline: true}
|
||||
)
|
||||
.setFooter(`Submitted by ${output.author}`)
|
||||
message.channel.send(embed);
|
||||
|
||||
|
|
|
@ -1,24 +1,26 @@
|
|||
const Discord = require("discord.js");
|
||||
|
||||
exports.run = (client, message, args) => {
|
||||
|
||||
var user;
|
||||
var nickString = "";
|
||||
var guildString = "";
|
||||
var guild;
|
||||
var nick = "";
|
||||
var roles = "";
|
||||
var presence = "";
|
||||
var badges = "";
|
||||
var status;
|
||||
var createdAt;
|
||||
var avurl;
|
||||
var tag;
|
||||
var id;
|
||||
var createdAt;
|
||||
var colour;
|
||||
var avatarURL;
|
||||
var bot;
|
||||
|
||||
if(message.guild) {
|
||||
|
||||
user = message.mentions.members.first();
|
||||
|
||||
if(!args[0]) {
|
||||
user = message.guild.members.get(message.author.id)
|
||||
}
|
||||
|
||||
user = message.guild.members.cache.get(message.author.id)
|
||||
};
|
||||
|
||||
if (!user) {
|
||||
var users;
|
||||
users = client.searchForMembers(message.guild, args[0]);
|
||||
|
@ -33,56 +35,78 @@ exports.run = (client, message, args) => {
|
|||
user = users[0];
|
||||
};
|
||||
|
||||
if (!user.nickname) {
|
||||
nickString = "";
|
||||
} else {
|
||||
nickString = `**Nickname:** ${user.nickname}\n`;
|
||||
if(user.nickname) {
|
||||
nick = `\n• **Nickname:** ${user.nickname}`;
|
||||
};
|
||||
|
||||
var roleList = "`";
|
||||
let roles = user.roles;
|
||||
roles.forEach((role) => { roleList = roleList + role.name + "`, `"; });
|
||||
roleList = roleList.substring(0, roleList.length - 4);
|
||||
roleList += "`";
|
||||
|
||||
guildString = `\n **Roles:** ${roleList}\n**Guild Join Date:** ${user.joinedAt}`
|
||||
if(user.user.id == message.guild.ownerID) {
|
||||
badges = "<:owner:685703193694306331>\n"
|
||||
}
|
||||
|
||||
tag = user.user.tag;
|
||||
createdTimestamp = user.user.createdTimestamp;
|
||||
var date = new Date(createdTimestamp * 1000);
|
||||
var hours = date.getHours();
|
||||
var minutes = "0" + date.getMinutes();
|
||||
var seconds = "o" + date.getSeconds();
|
||||
console.log(date)
|
||||
|
||||
user.roles.cache.forEach((role) => {
|
||||
roles = roles + role.name + "`, `"
|
||||
});
|
||||
|
||||
roles = roles.substr(0, roles.length -4);
|
||||
|
||||
guild = `\n• **Roles:** \`${roles}\`\n• **Server join date:** ${user.joinedAt}`;
|
||||
|
||||
id = user.user.id;
|
||||
tag = user.user.tag;
|
||||
colour = user.displayHexColor;
|
||||
avurl = user.user.avatarURL({format: "png", dynamic: true});
|
||||
createdAt = user.user.createdAt;
|
||||
colour = user.displayHexColor
|
||||
avatarURL = user.user.avatarURL
|
||||
} else {
|
||||
user = message.author;
|
||||
|
||||
tag = user.tag;
|
||||
id = user.id;
|
||||
createdAt = user.createdAt;
|
||||
tag = user.tag;
|
||||
colour = ["#ff9d68", "#ff97cb", "#d789ff", "#74FFFF"].random();
|
||||
avatarURL = user.avatarURL;
|
||||
avurl = user.avatarURL({format: "png", dynamic: true});
|
||||
createdAt = user.createdAt;
|
||||
};
|
||||
|
||||
let isBot = user.bot;
|
||||
|
||||
if (isBot === true) {
|
||||
isBot = "Yes";
|
||||
} else {
|
||||
isBot = "No";
|
||||
if(user.presence.status == "online") {
|
||||
status = `online <:status_online:685462758023626762>`
|
||||
};
|
||||
|
||||
if (!user.presence.game) {
|
||||
gameString = "";
|
||||
} else {
|
||||
gameString = `\n**Playing:** ${user.presence.game}`;
|
||||
if(user.presence.status == "idle") {
|
||||
status = `idle <:status_idle:685462771529154561>`
|
||||
};
|
||||
|
||||
embed = new (require("discord.js")).RichEmbed();
|
||||
embed.setTitle(tag)
|
||||
embed.setDescription(
|
||||
`${nickString}**ID:** ${id}\n**Bot:** ${isBot}\n**Status:** ${user.presence.status}${gameString}${guildString}\n**Discord Join Date:** ${createdAt}`
|
||||
);
|
||||
if(user.presence.status == "dnd") {
|
||||
status = `do not disturb <:status_dnd:685462782963220495>`
|
||||
};
|
||||
|
||||
if(user.presence.status == "offline") {
|
||||
status = `offline <:status_offline:685462758229016633>`
|
||||
};
|
||||
|
||||
if(user.presence.activities[0]) {
|
||||
presence = "\n• **Presence:** ";
|
||||
if(user.presence.activities[0].type == "PLAYING") {
|
||||
presence += `Playing ${user.presence.activities[0].name}`;
|
||||
};
|
||||
|
||||
if(user.presence.activities[0].type == "STREAMING") {
|
||||
presence += `Streaming ${user.presence.activities[0].name}`;
|
||||
};
|
||||
|
||||
if(user.presence.activities[0].type == "CUSTOM_STATUS") {
|
||||
presence += `${user.presence.activities[0].state}`;
|
||||
};
|
||||
};
|
||||
|
||||
embed = new Discord.MessageEmbed();
|
||||
embed.setTitle(tag);
|
||||
embed.setThumbnail(avurl);
|
||||
embed.setDescription(`${badges}• **ID:** ${id}${nick}\n• **Status:** ${status}${presence}${guild}\n• **Account created:** ${createdAt}`)
|
||||
embed.setColor(colour);
|
||||
embed.setThumbnail(avatarURL);
|
||||
message.channel.send(embed);
|
||||
};
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
const weather = require("weather-js");
|
||||
exports.run = async (client, message, args, error) => {
|
||||
if(!args[0]) {
|
||||
message.channel.send(
|
||||
return message.channel.send(
|
||||
`<:error:466995152976871434> You didn't give me a location. Usage: \`${client.commands.get(`weather`).help.usage}\``
|
||||
);
|
||||
};
|
||||
|
@ -9,10 +9,13 @@ exports.run = async (client, message, args, error) => {
|
|||
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) {
|
||||
message.channel.stopTyping();
|
||||
return message.channel.send("<:error:466995152976871434> City not found!");
|
||||
};
|
||||
|
||||
|
@ -34,11 +37,12 @@ exports.run = async (client, message, args, error) => {
|
|||
embedColour = "#ff614f"
|
||||
};
|
||||
|
||||
embed = new Discord.RichEmbed();
|
||||
embed = new Discord.MessageEmbed();
|
||||
embed.addField(`Weather for ${location.name}:`, `**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)
|
||||
embed.setColor(embedColour)
|
||||
message.channel.stopTyping();
|
||||
message.channel.send(embed)
|
||||
});
|
||||
};
|
||||
|
|
|
@ -2,17 +2,18 @@ const Discord = require("discord.js")
|
|||
exports.run = async (client, message) =>{
|
||||
message.channel.send("Woomy!")
|
||||
|
||||
const voiceChannel = message.member.voiceChannel;
|
||||
const voiceChannel = message.member.voice.channel;
|
||||
|
||||
if (!voiceChannel) return;
|
||||
const permissions = voiceChannel.permissionsFor(message.client.user);
|
||||
if (!permissions.has('CONNECT')) return;
|
||||
if (!permissions.has('SPEAK')) return;
|
||||
if (client.music.getGuild(message.guild.id).playing == true) return;
|
||||
if (!voiceChannel.permissionsFor(message.client.user).has('CONNECT')) return;
|
||||
if (!voiceChannel.permissionsFor(message.client.user).has('SPEAK')) return;
|
||||
|
||||
if (client.music.getGuild(message.guild.id).playing == true || !client.music.getGuild(message.guild.id).queue[0]) return;
|
||||
|
||||
voiceChannel.join()
|
||||
.then(connection => {
|
||||
const dispatcher = connection.playFile(`/home/container/media/sounds/WOOMY.MP3`);
|
||||
dispatcher.on("end", end => {voiceChannel.leave()});
|
||||
const dispatcher = connection.play(`/home/container/resources/audio/WOOMY.MP3`);
|
||||
dispatcher.on("finish", end => {voiceChannel.leave()});
|
||||
})
|
||||
};
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
module.exports = async (client, error) => {
|
||||
client.logger.log(`Discord.js error: \n${JSON.stringify(error)}`, "error");
|
||||
client.logger.log(`d.js err: \n${JSON.stringify(error.stack)}`, "error");
|
||||
};
|
||||
|
|
|
@ -1,17 +1,15 @@
|
|||
const Discord = require("discord.js");
|
||||
const chalk = require("chalk");
|
||||
module.exports = (client, guild) => {
|
||||
client.logger.log(`Guild joined.`, "info");
|
||||
|
||||
client.settings.ensure(guild.id, client.config.defaultSettings);
|
||||
|
||||
if(client.devmode === true) return;
|
||||
channel = client.channels.get("458896120639127552");
|
||||
|
||||
let embed = new Discord.RichEmbed();
|
||||
if(client.devmode == false) {
|
||||
channel = client.channels.cache.get("458896120639127552");
|
||||
embed = new Discord.MessageEmbed();
|
||||
embed.setColor("#F38159");
|
||||
embed.setAuthor("Joined a new server:")
|
||||
embed.setDescription(`❯ Name: \`${guild.name}\`\n❯ Size: \`${guild.members.size}\``)
|
||||
embed.setFooter(`I'm now in ${client.guilds.size} servers!`)
|
||||
channel.send(embed);
|
||||
embed.setDescription(`Joined a new server with \`${guild.members.cache.size}\` members! I'm now in \`${client.guilds.cache.size}\` servers.`)
|
||||
channel.send(embed)
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -1,24 +1,20 @@
|
|||
const Discord = require("discord.js");
|
||||
const chalk = require('chalk');
|
||||
const Discord = require('discord.js');
|
||||
module.exports = (client, guild) => {
|
||||
client.logger.log(chalk.redBright(`Guild left.`), "cmd");
|
||||
client.logger.log(`Guild left.`, "info");
|
||||
|
||||
if(client.devmode === true) return;
|
||||
|
||||
if(!guild) {
|
||||
if(!guild.available) {
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
||||
channel = client.channels.get("458896120639127552");
|
||||
|
||||
let embed = new Discord.RichEmbed();
|
||||
embed.setColor("#9494FF");
|
||||
embed.setAuthor("Left a server:")
|
||||
embed.setDescription(`❯ Name: \`${guild.name}\``)
|
||||
embed.setFooter(`I'm now in ${client.guilds.size} servers.`)
|
||||
channel.send(embed);
|
||||
channel = client.channels.cache.get("458896120639127552");
|
||||
embed = new Discord.MessageEmbed();
|
||||
embed.setColor("#9494FF");
|
||||
embed.setDescription(`Left a server. I'm now in \`${client.guilds.cache.size}\` servers.`)
|
||||
channel.send(embed)
|
||||
|
||||
if (client.settings.has(guild.id)) {
|
||||
client.settings.delete(guild.id);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
|
|
@ -2,7 +2,7 @@ module.exports = async (client, member) => {
|
|||
const settings = client.getSettings(member.guild.id);
|
||||
|
||||
if (settings.welcomeMessage !== "off") {
|
||||
let chanExists = member.guild.channels.get(settings.welcomeChannel)
|
||||
let chanExists = member.guild.channels.cache.get(settings.welcomeChannel)
|
||||
if (!chanExists) {
|
||||
return;
|
||||
};
|
||||
|
@ -11,17 +11,17 @@ module.exports = async (client, member) => {
|
|||
welcomeMessage = welcomeMessage.replace("[[members]]", member.guild.memberCount);
|
||||
|
||||
member.guild.channels
|
||||
.get(settings.welcomeChannel)
|
||||
.cache.get(settings.welcomeChannel)
|
||||
.send(welcomeMessage)
|
||||
.catch(console.error);
|
||||
}
|
||||
|
||||
if (settings.autorole !== "off") {
|
||||
let aRole = member.guild.roles.get(settings.autorole)
|
||||
let aRole = member.guild.roles.cache.get(settings.autorole)
|
||||
if (!aRole) {
|
||||
return;
|
||||
};
|
||||
await member.addRole(aRole.id).catch(console.error);
|
||||
await member.roles.add(aRole.id).catch(console.error);
|
||||
};
|
||||
|
||||
if(settings.raidMode !== "off") {
|
||||
|
@ -29,18 +29,18 @@ module.exports = async (client, member) => {
|
|||
member.kick("User bounced.")
|
||||
|
||||
if (settings.chatlogsChannel !== "off") {
|
||||
const channel = member.guild.channels.find(
|
||||
const channel = member.guild.channels.cache.find(
|
||||
channel => channel.name === settings.chatlogsChannel
|
||||
);
|
||||
|
||||
if (channel) {
|
||||
let embed = new Discord.RichEmbed();
|
||||
let embed = new Discord.MessageEmbed();
|
||||
embed.setColor("#1f1f1f");
|
||||
embed.setAuthor("User bounced:", member.user.avatarURL);
|
||||
embed.setAuthor("User bounced:", member.user.avatarURL({dynamic: true}));
|
||||
embed.setDescription(`❯ User: ${member} (${member.user.id})`, true);
|
||||
embed.setFooter(`New users are being automatically kicked because raidmode is enabled.`)
|
||||
try {
|
||||
channel.send({ embed });
|
||||
channel.send(embed);
|
||||
} catch (err) {
|
||||
// probably no permissions to send messages/embeds there
|
||||
};
|
||||
|
@ -48,24 +48,24 @@ module.exports = async (client, member) => {
|
|||
return;
|
||||
}
|
||||
}
|
||||
let mRole = member.guild.roles.get(settings.mutedRole)
|
||||
let mRole = member.guild.roles.cache.get(settings.mutedRole)
|
||||
if (!mRole) {
|
||||
return;
|
||||
};
|
||||
await member.addRole(mRole.id).catch(console.error);
|
||||
await member.roles.add(mRole.id).catch(console.error);
|
||||
if (settings.chatlogsChannel !== "off") {
|
||||
const channel = member.guild.channels.find(
|
||||
const channel = member.guild.channels.cache.find(
|
||||
channel => channel.name === settings.chatlogsChannel
|
||||
);
|
||||
|
||||
if (channel) {
|
||||
let embed = new Discord.RichEmbed();
|
||||
let embed = new Discord.MessageEmbed();
|
||||
embed.setColor("#1f1f1f");
|
||||
embed.setAuthor("User automatically muted:", member.user.avatarURL);
|
||||
embed.setAuthor("User automatically muted:", member.user.avatarURL({dynamic: true}));
|
||||
embed.setDescription(`❯ User: ${member} (${member.user.id})`, true);
|
||||
embed.setFooter(`New users are being automatically muted because raidmode is enabled.`)
|
||||
try {
|
||||
channel.send({ embed });
|
||||
channel.send(embed);
|
||||
} catch (err) {
|
||||
// probably no permissions to send messages/embeds there
|
||||
};
|
||||
|
@ -74,14 +74,14 @@ module.exports = async (client, member) => {
|
|||
};
|
||||
|
||||
if (settings.chatlogsChannel !== "off") {
|
||||
const channel = member.guild.channels.find(
|
||||
const channel = member.guild.channels.cache.find(
|
||||
channel => channel.name === settings.chatlogsChannel
|
||||
);
|
||||
|
||||
if (channel) {
|
||||
let embed = new Discord.RichEmbed();
|
||||
let embed = new Discord.MessageEmbed();
|
||||
embed.setColor("#0099e1");
|
||||
embed.setAuthor("User joined:", member.user.avatarURL);
|
||||
embed.setAuthor("User joined:", member.user.avatarURL({dynamic: true}));
|
||||
embed.setDescription(`❯ User: ${member} (${member.user.id})`, true);
|
||||
try {
|
||||
channel.send({ embed });
|
||||
|
|
|
@ -2,7 +2,7 @@ module.exports = async (client, member) => {
|
|||
const settings = client.getSettings(member.guild.id);
|
||||
|
||||
if (settings.leaveMessage !== "off") {
|
||||
let chanExists = member.guild.channels.get(settings.welcomeChannel)
|
||||
let chanExists = member.guild.channels.cache.get(settings.welcomeChannel)
|
||||
if (!chanExists) {
|
||||
return;
|
||||
};
|
||||
|
@ -11,20 +11,20 @@ module.exports = async (client, member) => {
|
|||
leaveMessage = leaveMessage.replace("[[members]]", member.guild.memberCount);
|
||||
|
||||
member.guild.channels
|
||||
.get(settings.welcomeChannel)
|
||||
.cache.get(settings.welcomeChannel)
|
||||
.send(leaveMessage)
|
||||
.catch(console.error);
|
||||
};
|
||||
|
||||
if (settings.chatlogsChannel !== "off") {
|
||||
const channel = member.guild.channels.find(
|
||||
const channel = member.guild.channels.cache.find(
|
||||
channel => channel.name === settings.chatlogsChannel
|
||||
);
|
||||
|
||||
if (channel) {
|
||||
let embed = new Discord.RichEmbed();
|
||||
let embed = new Discord.MessageEmbed();
|
||||
embed.setColor("#006798");
|
||||
embed.setAuthor("User left:", member.user.avatarURL);
|
||||
embed.setAuthor("User left:", member.user.avatarURL({dynamic: true}));
|
||||
embed.setDescription(`❯ ${member.user.tag} (${member.user.id})`, true);
|
||||
try {
|
||||
channel.send({ embed });
|
||||
|
|
|
@ -22,11 +22,11 @@ module.exports = async (client, message) => {
|
|||
|
||||
perms = message.channel.permissionsFor(client.user);
|
||||
|
||||
var modRole = message.guild.roles.get(settings.modRole);
|
||||
var adminRole = message.guild.roles.get(settings.adminRole);
|
||||
var autorole = message.guild.roles.get(settings.autorole);
|
||||
var mutedRole = message.guild.roles.get(settings.mutedRole);
|
||||
var welcomeChannel = message.guild.channels.get(settings.welcomeChannel);
|
||||
var modRole = message.guild.roles.cache.get(settings.modRole);
|
||||
var adminRole = message.guild.roles.cache.get(settings.adminRole);
|
||||
var autorole = message.guild.roles.cache.get(settings.autorole);
|
||||
var mutedRole = message.guild.roles.cache.get(settings.mutedRole);
|
||||
var welcomeChannel = message.guild.channels.cache.get(settings.welcomeChannel);
|
||||
|
||||
if(!welcomeChannel && settings.welcomeChannel != "off" || !adminRole && settings.adminRole != "None set" || !modRole && settings.modRole != "None set" || !mutedRole && settings.mutedRole != "None set" || !autorole && settings.autorole != "off") {
|
||||
|
||||
|
@ -37,7 +37,7 @@ module.exports = async (client, message) => {
|
|||
var welcomeReset = false;
|
||||
|
||||
if(!adminRole && settings.adminRole != "None set") {
|
||||
var role = message.guild.roles.find(r => r.name === settings.adminRole);
|
||||
var role = message.guild.roles.cache.find(r => r.name === settings.adminRole);
|
||||
if(!role) {
|
||||
adminReset = true;
|
||||
client.settings.set(message.guild.id, client.config.defaultSettings.adminRole, "adminRole");
|
||||
|
@ -47,7 +47,7 @@ module.exports = async (client, message) => {
|
|||
};
|
||||
|
||||
if(!mutedRole && settings.mutedRole != "None set") {
|
||||
var role = message.guild.roles.find(r => r.name === settings.mutedRole);
|
||||
var role = message.guild.roles.cache.find(r => r.name === settings.mutedRole);
|
||||
if(!role) {
|
||||
mutedReset = true;
|
||||
client.settings.set(message.guild.id, client.config.defaultSettings.mutedRole, "mutedRole");
|
||||
|
@ -57,7 +57,7 @@ module.exports = async (client, message) => {
|
|||
};
|
||||
|
||||
if(!modRole && settings.modRole != "None set") {
|
||||
var role = message.guild.roles.find(r => r.name === settings.modRole);
|
||||
var role = message.guild.roles.cache.find(r => r.name === settings.modRole);
|
||||
if(!role) {
|
||||
modReset = true;
|
||||
client.settings.set(message.guild.id, client.config.defaultSettings.modRole, "modRole");
|
||||
|
@ -67,7 +67,7 @@ module.exports = async (client, message) => {
|
|||
};
|
||||
|
||||
if(!autorole && settings.autorole != "off") {
|
||||
var role = message.guild.roles.find(r => r.name === settings.autorole);
|
||||
var role = message.guild.roles.cache.find(r => r.name === settings.autorole);
|
||||
if(!role) {
|
||||
autoReset = true;
|
||||
client.settings.set(message.guild.id, client.config.defaultSettings.autorole, "autorole");
|
||||
|
@ -77,7 +77,7 @@ module.exports = async (client, message) => {
|
|||
};
|
||||
|
||||
if(!welcomeChannel && settings.welcomeChannel != "off") {
|
||||
var channel = message.guild.channels.find(c => c.name === settings.welcomeChannel);
|
||||
var channel = message.guild.channels.cache.find(c => c.name === settings.welcomeChannel);
|
||||
if(!channel) {
|
||||
welcomeReset = true;
|
||||
client.settings.set(message.guild.id, client.config.defaultSettings.welcomeChannel, "welcomeChannel");
|
||||
|
@ -119,7 +119,7 @@ module.exports = async (client, message) => {
|
|||
};
|
||||
|
||||
if (!message.member) {
|
||||
await message.guild.fetchMember(message.author);
|
||||
await message.guild.members.fetch(message.author);
|
||||
};
|
||||
|
||||
if(message.settings.blacklisted != "ARRAY" && settings.blacklisted.length > 0) {
|
||||
|
@ -144,10 +144,10 @@ module.exports = async (client, message) => {
|
|||
const cmd = client.commands.get(command) || client.commands.get(client.aliases.get(command));
|
||||
|
||||
if (!cmd) return;
|
||||
|
||||
|
||||
if (commandRanRecently.has(message.author.id)) {
|
||||
return message.channel.send(
|
||||
`<:wait:467115775849922570> You are being ratelimited. Please try again in 2 seconds.`
|
||||
`⏱️ You are being ratelimited. Please try again in 2 seconds.`
|
||||
)
|
||||
.then(m => m.delete(2000));
|
||||
};
|
||||
|
@ -219,9 +219,9 @@ module.exports = async (client, message) => {
|
|||
commandRanRecently.add(message.author.id);
|
||||
setTimeout(() => {
|
||||
commandRanRecently.delete(message.author.id);
|
||||
}, 2000);
|
||||
}, {timeout: 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);
|
||||
};
|
||||
};
|
|
@ -6,7 +6,7 @@ module.exports = (client, message) => {
|
|||
const settings = (message.settings = client.getSettings(message.guild.id));
|
||||
|
||||
if (settings.chatlogsChannel !== "off") {
|
||||
const channel = message.guild.channels.find(
|
||||
const channel = message.guild.channels.cache.find(
|
||||
channel => channel.name === settings.chatlogsChannel
|
||||
)
|
||||
|
||||
|
@ -21,9 +21,9 @@ module.exports = (client, message) => {
|
|||
}
|
||||
|
||||
if (channel) {
|
||||
let embed = new Discord.RichEmbed();
|
||||
let embed = new Discord.MessageEmbed();
|
||||
embed.setColor("#f93a2f");
|
||||
embed.setAuthor("Message deleted!", message.member.user.avatarURL);
|
||||
embed.setAuthor("Message deleted!", message.member.user.avatarURL({dynamic: true}));
|
||||
if (msg == "") {
|
||||
msg = "**An image was deleted, but is not shown for privacy reasons.**"
|
||||
} else {
|
||||
|
|
|
@ -8,14 +8,14 @@ module.exports = (client, omsg, nmsg) => {
|
|||
));
|
||||
|
||||
if (settings.chatlogsChannel !== "off") {
|
||||
const channel = nmsg.guild.channels.find(
|
||||
const channel = nmsg.guild.channels.cache.find(
|
||||
channel => channel.name === settings.chatlogsChannel
|
||||
);
|
||||
|
||||
if (channel) {
|
||||
let embed = new Discord.RichEmbed();
|
||||
let embed = new Discord.MessageEmbed();
|
||||
embed.setColor("#fff937");
|
||||
embed.setAuthor("Message Edited!", nmsg.member.user.avatarURL);
|
||||
embed.setAuthor("Message Edited!", nmsg.member.user.avatarURL({dynamic: true}));
|
||||
if (omsg.content == "") {
|
||||
omsg.content = "**[IMAGE]**"
|
||||
} else if (nmsg.content == "") {
|
||||
|
@ -29,7 +29,7 @@ module.exports = (client, omsg, nmsg) => {
|
|||
return;
|
||||
}
|
||||
|
||||
embed.setDescription(`❯ Author: ${nmsg.member} (${nmsg.member.user.id})\n❯ Channel: ${nmsg.channel}\n❯ Old message: ${omsg.content}\n❯ New message: ${nmsg.content}`)
|
||||
embed.setDescription(`• Author: ${nmsg.member} (${nmsg.member.user.id})\n• Channel: ${nmsg.channel}\n• Old message: ${omsg.content}\n• New message: ${nmsg.content}`)
|
||||
try {
|
||||
channel.send({ embed });
|
||||
} catch (err) {
|
||||
|
|
|
@ -6,13 +6,13 @@ module.exports = client => {
|
|||
|
||||
client.lockActivity = false;
|
||||
|
||||
client.logger.log(`Connected to Discord as ${client.user.tag} | v${client.update.version}`, "ready");
|
||||
client.logger.log(`Connected to Discord as ${client.user.tag} | v${client.version.number}`, 'ready');
|
||||
|
||||
let channel;
|
||||
let channel1;
|
||||
|
||||
try { channel = client.guilds.get('410990517841690625').channels.get('570963998342643732'); } catch(err) {};
|
||||
try { channel1 = client.guilds.get('410990517841690625').channels.get('570963481189154822'); } catch(err) {};
|
||||
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.devmode == true) {
|
||||
client.logger.warn("Running in development mode.")
|
||||
|
@ -25,8 +25,9 @@ module.exports = client => {
|
|||
|
||||
let randomActivity = activityArray.random();
|
||||
|
||||
client.user.setActivity(`${prefix + randomActivity} | v${client.update.version}`, {type: "PLAYING"});
|
||||
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.update.version}`, {type: "PLAYING"})}, 30000);
|
||||
if(client.lockActivity == false) client.user.setActivity(`${prefix + randomActivity} | v${client.version.number}`, {type: "PLAYING"});
|
||||
}, 30000);
|
||||
};
|
||||
|
|
67
src/index.js
Normal file
67
src/index.js
Normal file
|
@ -0,0 +1,67 @@
|
|||
const Discord = require('discord.js');
|
||||
const { promisify } = require('util');
|
||||
const readdir = promisify(require('fs').readdir);
|
||||
const Enmap = require('enmap');
|
||||
const chalk = require('chalk');
|
||||
const DBL = require("dblapi.js");
|
||||
const client = new Discord.Client();
|
||||
|
||||
client.config = require('../config');
|
||||
client.version = require('../version.json');
|
||||
client.logger = require('./modules/Logger');
|
||||
require("./modules/functions")(client);
|
||||
client.logger.setClient(client);
|
||||
|
||||
client.commands = new Enmap();
|
||||
client.aliases = new Enmap();
|
||||
client.settings = new Enmap({name: 'settings', dataDir: '../data'});
|
||||
client.blacklist = new Enmap({name: 'blacklist', dataDir: '../data'});
|
||||
|
||||
client.devmode = false;
|
||||
|
||||
if(process.env['USER'] != 'container') {
|
||||
client.devmode = true;
|
||||
};
|
||||
|
||||
if(client.devmode === false) {
|
||||
const dblapi = new DBL(client.config.dblkey, client);
|
||||
};
|
||||
|
||||
const init = async () => {
|
||||
const cmdFiles = await readdir("./commands/");
|
||||
client.logger.info(`Loading ${cmdFiles.length} commands.`);
|
||||
cmdFiles.forEach(file => {
|
||||
if (!file.endsWith(".js")) {
|
||||
return;
|
||||
};
|
||||
const response = client.loadCommand(file);
|
||||
if (response) {
|
||||
console.log(response);
|
||||
};
|
||||
});
|
||||
|
||||
const evtFiles = await readdir("./events/");
|
||||
client.logger.info(`Loading ${evtFiles.length} events.`);
|
||||
evtFiles.forEach(file => {
|
||||
if (!file.endsWith(".js")) {
|
||||
return;
|
||||
};
|
||||
const eventName = file.split(".")[0];
|
||||
const event = require(`./events/${file}`);
|
||||
client.on(eventName, event.bind(null, client));
|
||||
});
|
||||
|
||||
client.levelCache = {};
|
||||
for (let i = 0; i < client.config.permLevels.length; i++) {
|
||||
const thisLevel = client.config.permLevels[i];
|
||||
client.levelCache[thisLevel.name] = thisLevel.level;
|
||||
};
|
||||
|
||||
if(client.devmode === true) {
|
||||
client.login(client.config.devtoken);
|
||||
} else {
|
||||
client.login(client.config.token);
|
||||
};
|
||||
};
|
||||
|
||||
init();
|
|
@ -2,53 +2,63 @@ const chalk = require("chalk");
|
|||
const moment = require("moment");
|
||||
|
||||
exports.log = (content, type = "log") => {
|
||||
const timestamp = `[${moment().format("YYYY-MM-DD HH:mm:ss")}]`;
|
||||
const timestamp1 = `\`${moment().format("YYYY-MM-DD HH:mm:ss")}\`:`;
|
||||
const timestamp = chalk.grey(`[${moment().format("YYYY-MM-DD HH:mm:ss")}]`);
|
||||
|
||||
let channel;
|
||||
|
||||
try { channel = client.guilds.get('410990517841690625').channels.get('570963481189154822'); } catch(err) {}
|
||||
try { channel = client.guilds.cache.get('410990517841690625').channels.cache.get('570963481189154822'); } catch(err) {}
|
||||
|
||||
switch (type) {
|
||||
case "log": {
|
||||
try { if (client.user.id === "435961704145485835") {
|
||||
channel.send(`${timestamp1} ` + content);
|
||||
};
|
||||
} catch(err) {};
|
||||
return console.log(`${timestamp} ${chalk.cyanBright(`[${type.toUpperCase()}] -`)} ${content} `);
|
||||
case "info": {
|
||||
try {
|
||||
if (client.devmode == false) {
|
||||
channel.send(`\`${timestamp}\`: ` + content);
|
||||
};
|
||||
} catch(err) {};
|
||||
return console.log(`${timestamp} ${chalk.cyanBright(`[${type.toUpperCase()}]`)} ${content} `);
|
||||
};
|
||||
|
||||
case "warn": {
|
||||
try { if (client.user.id === "435961704145485835") {
|
||||
channel.send(`${timestamp1} ` + content);
|
||||
};
|
||||
} catch(err) {};
|
||||
try {
|
||||
if (client.devmode == false) {
|
||||
channel.send(`\`${timestamp}\`: ` + content);
|
||||
};
|
||||
} catch(err) {};
|
||||
return console.log(`${timestamp} ${chalk.yellowBright(`[${type.toUpperCase()}]`)} ${content} `);
|
||||
};
|
||||
|
||||
case "error": {
|
||||
try { if (client.user.id === "439594675230212096") {
|
||||
channel.send(`${timestamp1} ` + content);
|
||||
};
|
||||
} catch(err) {}
|
||||
try {
|
||||
if (client.devmode == false) {
|
||||
channel.send(`\`${timestamp}\`: ` + content);
|
||||
};
|
||||
} catch(err) {}
|
||||
return console.log(`${timestamp} ${chalk.redBright(`[${type.toUpperCase()}]`)} ${content} `);
|
||||
};
|
||||
|
||||
case "debug": {
|
||||
try { if (client.user.id === "435961704145485835") {
|
||||
channel.send(`${timestamp1} ` + content);
|
||||
};
|
||||
} catch(err) {};
|
||||
try {
|
||||
if (client.devmode == false) {
|
||||
channel.send(`\`${timestamp}\`: ` + content);
|
||||
};
|
||||
} catch(err) {};
|
||||
return console.log(`${timestamp} ${chalk.magentaBright(`[${type.toUpperCase()}]`)} ${content} `);
|
||||
};
|
||||
|
||||
case "cmd": {
|
||||
try { if (client.user.id === "435961704145485835") {
|
||||
channel.send(`${timestamp1} ` + content);
|
||||
};
|
||||
} catch(err) {};
|
||||
try {
|
||||
if (client.devmode == false) {
|
||||
channel.send(`\`${timestamp}\` ` + content);
|
||||
};
|
||||
} catch(err) {};
|
||||
return console.log(`${timestamp} ${chalk.whiteBright(`[${type.toUpperCase()}]`)} ${content}`);
|
||||
};
|
||||
|
||||
case "ready": {
|
||||
return console.log(`${timestamp} ${chalk.greenBright (`[${type.toUpperCase()}]`)} ${content}`);
|
||||
};
|
||||
default: throw new TypeError("Logger type must be either warn, debug, log, ready, cmd or error.");
|
||||
|
||||
default: throw new TypeError("Logger type must be either warn, debug, info, ready, cmd or error.");
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -58,9 +68,10 @@ exports.warn = (...args) => this.log(...args, "warn");
|
|||
|
||||
exports.debug = (...args) => this.log(...args, "debug");
|
||||
|
||||
exports.info = (...args) => this.log(...args, "info");
|
||||
|
||||
exports.cmd = (...args) => this.log(...args, "cmd");
|
||||
|
||||
exports.setClient = function(c)
|
||||
{
|
||||
exports.setClient = function(c) {
|
||||
client = c;
|
||||
};
|
||||
|
|
|
@ -70,7 +70,6 @@ module.exports = client => {
|
|||
|
||||
client.loadCommand = commandName => {
|
||||
try {
|
||||
client.logger.log(`Loading command: ${commandName}`);
|
||||
const props = require(`../commands/${commandName}`);
|
||||
if (props.init) {
|
||||
props.init(client);
|
||||
|
@ -109,15 +108,6 @@ module.exports = client => {
|
|||
return false;
|
||||
};
|
||||
|
||||
// EMBED COLOUR CONTROL
|
||||
client.embedColour = function(msg) {
|
||||
if(!msg.guild) {
|
||||
return ["#ff9d68", "#ff97cb", "#d789ff", "#74FFFF"].random();
|
||||
} else {
|
||||
return msg.guild.member(client.user).displayHexColor;
|
||||
};
|
||||
};
|
||||
|
||||
// MEMBER SEARCH
|
||||
client.searchForMembers = function(guild, query) {
|
||||
if (!query) return;
|
||||
|
@ -127,14 +117,14 @@ module.exports = client => {
|
|||
var b;
|
||||
|
||||
try {
|
||||
b = guild.members.find(x => x.displayName.toLowerCase() == query);
|
||||
if (!b) guild.members.find(x => x.user.username.toLowerCase() == query);
|
||||
b = guild.members.cache.find(x => x.displayName.toLowerCase() == query);
|
||||
if (!b) guild.members.cache.find(x => x.user.username.toLowerCase() == query);
|
||||
} catch (err) {};
|
||||
if (b) a.push(b);
|
||||
guild.members.forEach(member => {
|
||||
guild.members.cache.forEach(member => {
|
||||
if (
|
||||
(member.displayName.toLowerCase().startsWith(query) ||
|
||||
member.user.username.toLowerCase().startsWith(query)) &&
|
||||
member.user.tag.toLowerCase().startsWith(query)) &&
|
||||
member.id != (b && b.id)
|
||||
) {
|
||||
a.push(member);
|
||||
|
@ -143,7 +133,7 @@ module.exports = client => {
|
|||
return a;
|
||||
};
|
||||
|
||||
// Music stuff
|
||||
// MUSIC
|
||||
client.music = {guilds: {}};
|
||||
|
||||
client.music.isYoutubeLink = function(input) {
|
||||
|
@ -194,7 +184,7 @@ module.exports = client => {
|
|||
|
||||
client.music.play = async function(message, input, bypassQueue)
|
||||
{
|
||||
let voiceChannel = message.member.voiceChannel;
|
||||
let voiceChannel = message.member.voice.channel;
|
||||
if(!voiceChannel) return message.channel.send('<:error:466995152976871434> You need to be in a voice channel to use this command!');
|
||||
|
||||
let permissions = voiceChannel.permissionsFor(client.user);
|
||||
|
@ -204,7 +194,7 @@ module.exports = client => {
|
|||
if (!permissions.has('SPEAK')) {
|
||||
return message.channel.send('<:error:466995152976871434> I do not have permission to join your voice channel.');
|
||||
}
|
||||
if (message.member.voiceChannel.joinable != true) {
|
||||
if (voiceChannel.joinable != true) {
|
||||
return message.channel.send("<:error:466995152976871434> I do not have permission to join your voice channel.")
|
||||
}
|
||||
|
||||
|
@ -260,9 +250,9 @@ module.exports = client => {
|
|||
|
||||
try
|
||||
{
|
||||
let dispatcher = client.music.getGuild(message.guild.id).dispatcher = connection.playOpusStream(await ytdl("https://www.youtube.com/watch?v=" + id, {highWaterMark: 1024 * 1024 * 32}));
|
||||
let dispatcher = client.music.getGuild(message.guild.id).dispatcher = connection.play(await ytdl("https://www.youtube.com/watch?v=" + id, {highWaterMark: 1024 * 1024 * 32}), {type: 'opus'});
|
||||
|
||||
dispatcher.on('end', (a, b) =>
|
||||
dispatcher.on('finish', (a, b) =>
|
||||
{
|
||||
end(a == "silent");
|
||||
});
|
||||
|
@ -284,7 +274,7 @@ module.exports = client => {
|
|||
}
|
||||
}
|
||||
|
||||
// COVNERT SECONDS TO TIMESTAMP
|
||||
// MUSIC - TIMESTAMP
|
||||
client.createTimestamp = function(duration){
|
||||
hrs = ~~(duration / 60 / 60),
|
||||
min = ~~(duration / 60) % 60,
|
||||
|
@ -310,7 +300,29 @@ module.exports = client => {
|
|||
return time;
|
||||
};
|
||||
|
||||
// MISCELLANEOUS NON-CRITICAL FUNCTIONS
|
||||
//FIND ROLE
|
||||
client.findRole = function(input, message) {
|
||||
var role;
|
||||
role = message.guild.roles.cache.find(r => r.name.toLowerCase() === input.toLowerCase());
|
||||
if(!role) {
|
||||
role = message.guild.roles.cache.get(input.toLowerCase());
|
||||
};
|
||||
|
||||
if(!role) {
|
||||
return;
|
||||
};
|
||||
|
||||
return role;
|
||||
};
|
||||
|
||||
// EMBED COLOUR
|
||||
client.embedColour = function(msg) {
|
||||
if(!msg.guild) {
|
||||
return ["#ff9d68", "#ff97cb", "#d789ff", "#74FFFF"].random();
|
||||
} else {
|
||||
return msg.guild.member(client.user).displayHexColor;
|
||||
};
|
||||
};
|
||||
|
||||
// <String>.toPropercase() returns a proper-cased string
|
||||
Object.defineProperty(String.prototype, "toProperCase", {
|
||||
|
@ -340,6 +352,6 @@ module.exports = client => {
|
|||
});
|
||||
|
||||
process.on("unhandledRejection", err => {
|
||||
client.logger.error(`Unhandled rejection: ${err}`);
|
||||
client.logger.error(`Unhandled rejection: ${err.stack}`);
|
||||
});
|
||||
};
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
{
|
||||
"version": "1.0.2",
|
||||
"changelog": "**Updated to 1.0:**\n> - Music commands have been competely reworked. They're now less buggy and more feature rich!\n> - Added `nowplaying` command\n> - Added `blacklist` command, which lets you stop users from using commands in your server\n> - Woomy works in DM's again\n> - Renamed `calculate` to `math`\n> - The filter has been removed because it sucked\n> - Lots of minor changes to lots of commands\n> - Woomy now lists the permissions she needs to run specific commands in `help`\n> - Invite now lets you choose what permissions Woomy gets\n**Notes:**\n> - Woomy skipped from 0.7.0 to 1.0 so she could have a better way to name her updates. For example, the X in (X.Y.Z) will change only if there is a huge update like a rewrite, Y will change when new features are added to Woomy and Z will change when minor updates are made, like bug fixes.\n> - Woomy is now open source! You can view her code at https://github.com/mudkipscience/woomy"
|
||||
}
|
4
version.json
Normal file
4
version.json
Normal file
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"number": "1.1.0",
|
||||
"changelog": "**1.1.0 CHANGELOG:**\n> • Added `~softban`, bans and unbans a user to clear messages\n> • Added `~emoji`, enlarges custom emojis\n> • Added `~inspirobot`, generates an inspirational quote\n> • `~serverinfo` has been changed to be more consistent, and also now displays boosts and if the server is partnered and stuff\n> • `~userinfo` has been changed to be more consistent, also added some stuff\n> • `~about` has been changed, added a thumbnail and removed the description\n> • `~colour` has been changed, it can now generate colours from text\n> • `~hackban` no longer has its own embed\n> • `~eval` now logs to hastebin if output is too large\n> • role names are no longer case sensitive\n> • `~echo` renamed `~say`\n> • Users with the ADMINISTRATOR permission now automatically recieve woomy admin\n> • Fixed `~flip`, `~purge`, `~bohemian_rhapsody` and `~creeper`\n> • Guild join/leave messages no longer include the guild name\n> • Some emojis have been changed\n> • Woomy now supports discord.js v12\n> • Files have been restructured\n> • Logger now logs error stack\n> • Restart now exits with code 0"
|
||||
}
|
63
woomy.js
63
woomy.js
|
@ -1,63 +0,0 @@
|
|||
const Discord = require("discord.js");
|
||||
const { promisify } = require("util");
|
||||
const readdir = promisify(require("fs").readdir);
|
||||
const Enmap = require("enmap");
|
||||
const chalk = require("chalk");
|
||||
const client = new Discord.Client();
|
||||
|
||||
client.config = require("./config");
|
||||
client.update = require("./update.json");
|
||||
client.logger = require("./src/modules/Logger");
|
||||
client.logger.setClient(client);
|
||||
|
||||
require("./src/modules/functions.js")(client);
|
||||
|
||||
if(process.env['USER'] != 'container') {
|
||||
client.devmode = true;
|
||||
};
|
||||
|
||||
if(client.devmode === false) {
|
||||
const DBL = require("dblapi.js");
|
||||
const dbl = new DBL(client.config.dblkey, client);
|
||||
};
|
||||
|
||||
client.commands = new Enmap();
|
||||
client.aliases = new Enmap();
|
||||
client.settings = new Enmap({name: "settings"});
|
||||
client.warnings = new Enmap({name: "warnings"});
|
||||
client.blacklist = new Enmap({name: "blacklist"});
|
||||
//client.points = new Enmap({name: "points"});
|
||||
|
||||
const init = async () => {
|
||||
|
||||
const cmdFiles = await readdir("./src/commands/");
|
||||
client.logger.log(chalk.greenBright(`Loading ${cmdFiles.length} commands.`));
|
||||
cmdFiles.forEach(f => {
|
||||
if (!f.endsWith(".js")) return;
|
||||
const response = client.loadCommand(f);
|
||||
if (response) console.log(response);
|
||||
});
|
||||
|
||||
const evtFiles = await readdir("./src/events/");
|
||||
client.logger.log(chalk.greenBright(`Loading ${evtFiles.length} events.`));
|
||||
evtFiles.forEach(file => {
|
||||
const eventName = file.split(".")[0];
|
||||
client.logger.log(`Loading Event: ${eventName}`);
|
||||
const event = require(`./src/events/${file}`);
|
||||
client.on(eventName, event.bind(null, client));
|
||||
});
|
||||
|
||||
client.levelCache = {};
|
||||
for (let i = 0; i < client.config.permLevels.length; i++) {
|
||||
const thisLevel = client.config.permLevels[i];
|
||||
client.levelCache[thisLevel.name] = thisLevel.level;
|
||||
}
|
||||
if(client.devmode === true) {
|
||||
client.login(client.config.devtoken);
|
||||
}
|
||||
if(client.devmode !== true) {
|
||||
client.login(client.config.token);
|
||||
}
|
||||
};
|
||||
|
||||
init();
|
Loading…
Reference in a new issue