aboutsummaryrefslogtreecommitdiff
path: root/commands
diff options
context:
space:
mode:
authorAndrew Lee <andrew@alee14.me>2025-02-25 23:15:04 -0500
committerGitHub <noreply@github.com>2025-02-25 23:15:04 -0500
commit44f7f14736aaf77858ee71c80abeb3c13343d3c2 (patch)
tree47dc895e50fa95b52a894bf0806e1a6c1edc8818 /commands
parent9519602e73a53931be10438dcd990becea7989d9 (diff)
parent5777f96394444dab18a81d6f085ac81df3e62008 (diff)
downloadAleeBot-44f7f14736aaf77858ee71c80abeb3c13343d3c2.tar.gz
AleeBot-44f7f14736aaf77858ee71c80abeb3c13343d3c2.tar.bz2
AleeBot-44f7f14736aaf77858ee71c80abeb3c13343d3c2.zip
Merge pull request #36 from Alee14/beta
2.13 Release
Diffstat (limited to 'commands')
-rw-r--r--commands/about.js63
-rw-r--r--commands/addquote.js251
-rw-r--r--commands/ask.js66
-rw-r--r--commands/avatarurl.js32
-rw-r--r--commands/balance.js51
-rw-r--r--commands/ban.js46
-rw-r--r--commands/eval.js138
-rw-r--r--commands/git.js43
-rw-r--r--commands/help.js140
-rw-r--r--commands/info.js54
-rw-r--r--commands/interrogate.js41
-rw-r--r--commands/invite.js51
-rw-r--r--commands/jail.js43
-rw-r--r--commands/kick.js48
-rw-r--r--commands/leaveguild.js39
-rw-r--r--commands/nick.js36
-rw-r--r--commands/pay.js60
-rw-r--r--commands/ping.js66
-rw-r--r--commands/poweroff.js54
-rw-r--r--commands/purge.js43
-rw-r--r--commands/quote.js74
-rw-r--r--commands/say.js41
-rw-r--r--commands/serverinfo.js51
-rw-r--r--commands/setlogchannel.js55
-rw-r--r--commands/setprefix.js65
-rw-r--r--commands/setup.js45
-rw-r--r--commands/slowdown.js37
-rw-r--r--commands/suggest.js59
-rw-r--r--commands/suggestfeature.js54
-rw-r--r--commands/timeout.js49
-rw-r--r--commands/uptime.js93
-rw-r--r--commands/userinfo.js53
-rw-r--r--commands/vtquote.js65
33 files changed, 1145 insertions, 961 deletions
diff --git a/commands/about.js b/commands/about.js
new file mode 100644
index 0000000..0ae756d
--- /dev/null
+++ b/commands/about.js
@@ -0,0 +1,63 @@
+/** **************************************
+ *
+ * About: Command for AleeBot
+ * Copyright (C) 2017-2021 Alee Productions
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * *************************************/
+module.exports.run = async (client, message) => {
+ const { MessageEmbed, MessageButton, MessageActionRow } = require('discord.js');
+
+ let Contributors = ('- Andrew Lee (Founder of this project)\n');
+ Contributors += ('- OfficialRain (Raina) (Uptime Command)\n');
+ Contributors += ('- jtsshieh (Command Handler)');
+
+ const aboutEmbed = new MessageEmbed()
+ .setAuthor(`AleeBot ${require('../storage/settings.json').abVersion}`, client.user.avatarURL())
+ .addField('About AleeBot', 'AleeBot is an all-in-one bot that\'s made from the Discord.JS API!')
+ .addField('License', 'GNU General Public License v3.0')
+ .addField('Contributors', Contributors)
+ .setFooter('© Copyright 2017-2025 Andrew Lee Projects')
+ .setColor('#1fd619');
+
+ let Buttons = new MessageActionRow()
+ .addComponents(
+ new MessageButton()
+ .setStyle('LINK')
+ .setLabel('Source Code')
+ .setURL('https://github.com/alee14-projects/AleeBot'),
+ new MessageButton()
+ .setStyle('LINK')
+ .setLabel('Invite AleeBot')
+ .setURL('https://discord.com/oauth2/authorize?client_id=282547024547545109&permissions=68185158&scope=bot'),
+ new MessageButton()
+ .setStyle('LINK')
+ .setLabel('Join Andrew Lee Projects')
+ .setURL('https://discord.gg/EFhRDqG')
+ );
+
+ await message.channel.send({embeds: [aboutEmbed], components: [Buttons]});
+};
+
+exports.conf = {
+ aliases: [],
+ guildOnly: false,
+};
+exports.help = {
+ name: 'about',
+ description: 'About the bot.',
+ usage: 'about',
+ category: '- Information Commands',
+};
diff --git a/commands/addquote.js b/commands/addquote.js
index 04df3f4..6eae015 100644
--- a/commands/addquote.js
+++ b/commands/addquote.js
@@ -1,7 +1,7 @@
-/****************************************
- *
+/** **************************************
+ *
* AddQuote: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,46 +15,207 @@
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ *
* *************************************/
-module.exports.run = async (client, message, args) => {
- /*
- const moment = require('moment');
- const log = message => {
-
- console.log(`[${moment().format('YYYY-MM-DD HH:mm:ss')}] ${message}`);
-
- };
- const fs = require('fs');
- if(!args[0]) return message.reply(`Usage: ab:addquote [author] [authorImage] [quote] [year]`);
-
- let quotes = JSON.parse(fs.readFileSync("./storage/quotes.json", "utf8"));
-
- quotes = {
- author: args[0],
- authorImage: args[1],
- quote: args[2],
- year: args[3]
- };
-
- fs.writeFile("./storage/quotes.json", JSON.stringify(quotes), (err) =>{
- if (err) log(err)
- })
-
- message.reply(`You just added a new quote!`);
- log(`[i] A quote has been added to quotes.json...`)
-*/
- message.reply('Command is broken for now');
- };
-
- exports.conf = {
- aliases: [],
- guildOnly: true,
- };
- exports.help = {
- name: 'addquote',
- description: 'Sets the guild prefix.',
- usage: 'addquote [author] [authorImage] [quote] [year]',
- category: '- Quote Commands',
- };
-
+const { pendingQuote } = require('../models/quote');
+const { MessageEmbed } = require("discord.js");
+
+const setupUsers = new Set();
+
+module.exports.run = async (client, message) => {
+ try {
+ let newAuthor, newAuthorImage, newQuote, newYear;
+
+ if (setupUsers.has(message.author.id)) {
+ return await message.reply('You are already setting up a quote.');
+ }
+
+ setupUsers.add(message.author.id);
+
+ const setupProcess = [
+ 'Provide the name of the author:',
+ 'Submit the image of the author:\nYou can use an attachment or a link that ends in .jpg/.jpeg or .png (like those from IMGUR or Google Images), and the picture should be either 128x128 pixels or 512x512 pixels in size.',
+ 'Enter the quote:',
+ 'Specify the year from which the quote originates:'
+ ];
+
+ async function createQuote() {
+ await pendingQuote.create({
+ author: newAuthor,
+ authorImage: newAuthorImage,
+ quote: newQuote,
+ year: newYear,
+ submitterAuthor: message.author.username,
+ submitterID: message.author.id
+ });
+ }
+
+ let setupMessage = "Welcome to the AleeBot Quote Setup!\n";
+ setupMessage += "Please follow these rules when submitting quotes:\n";
+ setupMessage += "```1. No offensive content (NSFW, Racism, etc).\n";
+ setupMessage += "2. Do not send any personal information.\n";
+ setupMessage += "3. Only send noteworthy quotes.```\n";
+ setupMessage += "We reserve the right to reject any quotes that do not meet our criteria.\n";
+
+ const filter = (m) => m.author.id === message.author.id;
+
+ await message.reply(':arrow_left: Check DMs to continue.');
+
+ const dmChannel = await message.author.createDM();
+ await dmChannel.send(setupMessage);
+ await dmChannel.send(setupProcess[0]);
+
+ let counter = 1;
+ const collector = dmChannel.createMessageCollector({
+ filter,
+ max: setupProcess.length,
+ time: 1000 * 1200
+ });
+
+ collector.on('collect', async (msg) => {
+ if (counter === 2) { // Collecting author image
+ const attachment = msg.attachments.first();
+ if (attachment) {
+ const fileExtension = attachment.name.split('.').pop().toLowerCase();
+ if (['jpg', 'png', 'jpeg'].includes(fileExtension)) {
+ newAuthorImage = attachment.url.toString(); // Use the attachment's URL directly
+ } else {
+ await dmChannel.send('Invalid file type. Please attach a .jpg or .png image.');
+ collector.stop();
+ return;
+ }
+ } else if (msg.content.startsWith('http') && (msg.content.endsWith('.jpg') || msg.content.endsWith('.jpeg') || msg.content.endsWith('.png'))) {
+ newAuthorImage = msg.content;
+ } else {
+ await dmChannel.send('Invalid input. Please provide an image URL or attach an image file.');
+ collector.stop();
+ return;
+ }
+ }
+
+ if (counter < setupProcess.length) {
+ await dmChannel.send(setupProcess[counter++]);
+ }
+ });
+
+ collector.on('end', async (collected) => {
+ if (collected.size < setupProcess.length) {
+ dmChannel.send('Quote setup was not completed. Please rerun the command.');
+ setupUsers.delete(message.author.id);
+ } else {
+ const quoteContent = collected.map((m) => m.content);
+ newAuthor = quoteContent[0];
+ if (!newAuthorImage) {
+ newAuthorImage = quoteContent[1] || 'N/A';
+ }
+ newQuote = quoteContent[2];
+ newYear = quoteContent[3];
+
+ const setupEmbed = new MessageEmbed()
+ .setAuthor('AleeBot Quote Setup', client.user.avatarURL())
+ .setDescription('Are you happy with this quote?\nThis quote will be sent for manual approval automatically in 20 minutes.')
+ .addField('Author', newAuthor || 'N/A')
+ .addField('Author Image (URL)', newAuthorImage || 'N/A')
+ .addField('Quote', newQuote || 'N/A')
+ .addField('Year', newYear || 'N/A')
+ .setColor('#1fd619');
+
+ let messageReact = await dmChannel.send({embeds: [setupEmbed]});
+ await messageReact.react('🧑');
+ await messageReact.react('📷');
+ await messageReact.react('🖋️');
+ await messageReact.react('📅');
+ await messageReact.react('✅');
+ await messageReact.react('❌');
+
+ const reactionFilter = (reaction, user) => {
+ return ['🧑', '📷', '🖋️', '📅', '✅', '❌'].includes(reaction.emoji.name) && user.id === message.author.id;
+ };
+
+ const reactionCollector = messageReact.createReactionCollector({
+ filter: reactionFilter,
+ time: 1000 * 1200
+ });
+
+ reactionCollector.on('collect', async (reaction) => {
+ switch (reaction.emoji.name) {
+ case '🧑':
+ await dmChannel.send('You selected the author. Please provide the name of the author.');
+ const authorResponse = await dmChannel.awaitMessages({ filter, max: 1, time: 60000 });
+ if (authorResponse.size) newAuthor = authorResponse.first().content;
+ await dmChannel.send('Updated author name.');
+ break;
+ case '📷':
+ await dmChannel.send('You selected the author image. Please provide the image URL or attach an image file.');
+ const imageResponse = await dmChannel.awaitMessages({ filter, max: 1, time: 60000 });
+ const attachment = imageResponse.first().attachments.first();
+ if (attachment) {
+ const fileExtension = attachment.name.split('.').pop().toLowerCase();
+ if (['jpg', 'png', 'jpeg'].includes(fileExtension)) {
+ newAuthorImage = attachment.url.toString(); // Use the attachment's URL directly
+ } else {
+ await dmChannel.send('Invalid file type. Please attach a .jpg or .png image.');
+ }
+ } else if (imageResponse.first().content.startsWith('http') && (imageResponse.first().content.endsWith('.jpg') || imageResponse.first().content.endsWith('.jpeg') || imageResponse.first().content.endsWith('.png'))) {
+ newAuthorImage = imageResponse.first().content;
+ } else {
+ await dmChannel.send('Invalid input. Please provide an image URL or attach an image file.');
+ }
+ await dmChannel.send('Updated author image.');
+ break;
+ case '🖋️':
+ await dmChannel.send('You selected the quote. Please provide the quote.');
+ const quoteResponse = await dmChannel.awaitMessages({ filter, max: 1, time: 60000 });
+ if (quoteResponse.size) newQuote = quoteResponse.first().content;
+ await dmChannel.send('Updated quote.');
+ break;
+ case '📅':
+ await dmChannel.send('You selected the year. Please provide the year.');
+ const yearResponse = await dmChannel.awaitMessages({ filter, max: 1, time: 60000 });
+ if (yearResponse.size) newYear = yearResponse.first().content;
+ await dmChannel.send('Updated year.');
+ break;
+ case '✅':
+ reactionCollector.stop('completed');
+ break;
+ case '❌':
+ reactionCollector.stop('cancelled');
+ break;
+ }
+
+ await messageReact.edit({embeds: [setupEmbed]});
+ });
+
+ reactionCollector.on('end', async (collected, reason) => {
+ if (reason === 'cancelled') {
+ dmChannel.send('Cancelling quote setup.');
+ } else if (reason === 'completed') {
+ dmChannel.send('Sending this quote for manual approval.');
+ await createQuote();
+ } else {
+ dmChannel.send('You have not responded. Sending this quote for manual approval.');
+ await createQuote();
+ }
+ setupUsers.delete(message.author.id);
+ });
+ }
+ });
+ } catch (error) {
+ await message.author.send('An error occurred while setting up the quote. Please rerun the command.');
+ setupUsers.delete(message.author.id);
+ console.error(error);
+ }
+};
+
+exports.conf = {
+ aliases: [],
+ guildOnly: true,
+};
+
+exports.help = {
+ name: 'addquote',
+ description: 'Adds a quote to the database.',
+ usage: 'addquote',
+ category: '- Quote Commands',
+};
+
diff --git a/commands/ask.js b/commands/ask.js
index db9e10e..efb4a22 100644
--- a/commands/ask.js
+++ b/commands/ask.js
@@ -1,7 +1,7 @@
-/****************************************
- *
+/** **************************************
+ *
* Ask: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,35 +15,35 @@
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ *
* *************************************/
module.exports.run = async (client, message, args) => {
- let abaskanswer = [
- "Yes.",
- "Nope. Just kidding :P",
- "Definitely!",
- "No.",
- "Yep. Just kidding :P",
- "I doubt it.",
- "Maybe?",
- "I don't know?",
- "Hmm let me think :thinking:"
- ];
- if (args[1]) {
- message.channel.sendMessage(abaskanswer[Math.floor(Math.random() * abaskanswer.length)]);
- } else {
- message.channel.sendMessage("Sorry, I don't know what your saying.")
- }
- };
-
- exports.conf = {
- aliases: ['8ball'],
- guildOnly: false,
- };
- exports.help = {
- name: 'ask',
- description: 'Give AleeBot a question!',
- usage: 'ask [args]',
- category: '- Fun Commands',
- };
- \ No newline at end of file
+ const abaskanswer = [
+ 'Yes.',
+ 'Nope. Just kidding :P',
+ 'Definitely!',
+ 'No.',
+ 'Yep. Just kidding :P',
+ 'I doubt it.',
+ 'Maybe?',
+ 'Perhaps...',
+ 'I don\'t know?',
+ 'Hmm let me think :thinking:',
+ ];
+ if (args[1]) {
+ message.channel.send(abaskanswer[Math.floor(Math.random() * abaskanswer.length)]);
+ } else {
+ message.channel.send('Sorry, I don\'t know what your saying.');
+ }
+};
+
+exports.conf = {
+ aliases: ['8ball'],
+ guildOnly: false,
+};
+exports.help = {
+ name: 'ask',
+ description: 'Give AleeBot a question!',
+ usage: 'ask [args]',
+ category: '- Fun Commands',
+};
diff --git a/commands/avatarurl.js b/commands/avatarurl.js
index 018bc7a..2c796f4 100644
--- a/commands/avatarurl.js
+++ b/commands/avatarurl.js
@@ -1,7 +1,7 @@
-/****************************************
- *
- * AvatarURL: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+/** **************************************
+ *
+ * avatarurl: Command for AleeBot
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,19 +15,25 @@
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ *
* *************************************/
module.exports.run = async (client, message) => {
- message.reply(message.author.avatarURL);
+ if(!message.mentions.users.first()) {
+ message.reply(message.author.avatarURL({ dynamic: true, format: 'png', size: 1024 }));
+ } else {
+ let targetMember;
+ targetMember = message.mentions.users.first();
+ message.reply(targetMember.avatarURL({ dynamic: true, format: 'png', size: 1024 }))
+ }
};
-
+
exports.conf = {
- aliases: [],
- guildOnly: false,
+ aliases: ['pic'],
+ guildOnly: false,
};
exports.help = {
- name: 'avatarurl',
- description: 'Sends you your avatar picture.',
- usage: 'avatarurl',
- category: '- Fun Commands',
+ name: 'avatarurl',
+ description: 'Sends you your avatar picture.',
+ usage: 'avatarurl',
+ category: '- Fun Commands',
};
diff --git a/commands/balance.js b/commands/balance.js
deleted file mode 100644
index ae575cc..0000000
--- a/commands/balance.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/****************************************
- *
- * Balance: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * *************************************/
-module.exports.run = async (client, message) => {
- const db = require('quick.db');
- const { RichEmbed } = require('discord.js');
-
- let user = message.mentions.users.first() || message.author;
-
- let balance = await db.fetch(`userBalance_${user.id}`);
-
- if (balance === null) {
- db.set(`userBalance_${message.author.id}`, 0);
- balance = 0;
- }
- const embed = new RichEmbed()
- .setDescription(`**AleeCorp Bank**`)
- .addField('Account Holder: ', user.username, true)
- .addField('Account Balance: ', balance, true)
- .setColor('#1fd619')
-
- message.channel.send({embed})
- };
-
- exports.conf = {
- aliases: ['bal', 'money'],
- guildOnly: false,
- };
- exports.help = {
- name: 'balance',
- description: 'Checks the balance of AleeBot',
- usage: 'balance [@someone (optional)]',
- category: '- Economy Commands',
- };
- \ No newline at end of file
diff --git a/commands/ban.js b/commands/ban.js
index 6331347..b734be5 100644
--- a/commands/ban.js
+++ b/commands/ban.js
@@ -1,7 +1,7 @@
-/****************************************
- *
+/** **************************************
+ *
* Ban: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,31 +15,31 @@
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ *
* *************************************/
module.exports.run = async (client, message, args) => {
- const Discord = require('discord.js');
- const mreason = args.join(" ").slice(22);
- if (!message.member.permissions.has('BAN_MEMBERS')) return message.reply("It looks like that you don't have the permissions to ban people.")
- if (!message.guild.member(client.user).hasPermission('BAN_MEMBERS')) return message.reply('Uhh... I don\'t have permission to ban members.');
- const member = message.mentions.members.first();
- if (!member) return message.reply("Uhh... Please mention a member first.");
- member.ban(`Banned by ${message.author.tag} Reason: ` + mreason);
- const embed = new Discord.RichEmbed()
- .setTitle('User Banned!')
- .setColor('#1fd619')
- .addField('**User:**', `${member.user.tag}`)
- .addField('**Reason:**', `\`\`\`${mreason}\`\`\``)
- await message.channel.send({ embed });
+ const Discord = require('discord.js');
+ const mreason = args.join(' ').slice(22);
+ if (!message.member.permissions.has('BAN_MEMBERS')) return message.reply('It looks like that you don\'t have the permissions to ban people.');
+ if (!message.guild.members.cache.get(client.user.id).permissions.has('BAN_MEMBERS')) return message.reply('I don\'t have permission to ban members.');
+ const member = message.mentions.members.first();
+ if (!member) return message.reply('Please mention a member first.');
+ await member.ban({ reason: `Banned by ${message.author.tag} for ${mreason}.`});
+ const banEmbed = new Discord.MessageEmbed()
+ .setTitle('User Banned!')
+ .setColor('#1fd619')
+ .addField('**User:**', `${member.user.tag}`)
+ if (mreason) return banEmbed.addField('**Reason:**', `\`\`\`${mreason}\`\`\``);
+ await message.channel.send({embeds: [banEmbed]});
};
exports.conf = {
- aliases: [],
- guildOnly: false,
+ aliases: [],
+ guildOnly: false,
};
exports.help = {
- name: 'ban',
- description: 'Bans a member',
- usage: 'ban [user] [reason]',
- category: '- Moderation Commands',
+ name: 'ban',
+ description: 'Bans a member',
+ usage: 'ban [user] [reason]',
+ category: '- Moderation Commands',
};
diff --git a/commands/eval.js b/commands/eval.js
index 90b7030..b414225 100644
--- a/commands/eval.js
+++ b/commands/eval.js
@@ -1,7 +1,7 @@
-/****************************************
- *
+/** **************************************
+ *
* Eval: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions & jtsshieh + PokeWorld
+ * Copyright (C) 2017-2021 Alee Productions & jtsshieh + PokeWorld
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,72 +15,70 @@
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ *
* *************************************/
module.exports.run = async (client, message, args) => {
- if (!['242775871059001344',].includes(message.author.id)) return message.reply('Nope! You need the person who created this bot to use this command.');
- const { RichEmbed } = require('discord.js');
- const code = args.join(' ');
-
- let evaled;
- let remove;
-
- try {
- remove = text => {
- if (typeof(text) === 'string') {
- return text.replace(/`/g, '`' + String.fromCharCode(8203)).replace(/@/g, '@' + String.fromCharCode(8203));
- } else {
- return text;
- }
- };
-
- evaled = eval(code);
-
- if (typeof evaled !== 'string') {
- evaled = require('util').inspect(evaled);
- }
-
- } catch (err) {
- const embed = new RichEmbed()
- .setAuthor('Eval Error')
- .setDescription('Eval\'s result')
- .addField(':inbox_tray: Input:', `\`\`\`js\n${code}\n\`\`\``)
- .addField(':outbox_tray: Output:', `\`\`\`${err}\`\`\``)
- .setFooter('Eval', client.user.avatarURL)
- .setColor('RED');
- return message.channel.send({ embed });
- }
-
- try {
- const embed = new RichEmbed()
- .setAuthor('Eval Success')
- .setDescription('Eval\'s result')
- .addField(':inbox_tray: Input:', `\`\`\`js\n${code}\n\`\`\``)
- .addField(':outbox_tray: Output:', `\`\`\`js\n${remove(evaled)}\n\`\`\``)
- .setFooter('Eval', client.user.avatarURL)
- .setColor('GREEN');
-
- return message.channel.send({ embed });
- } catch (err) {
- const embed = new RichEmbed()
- .setAuthor('Eval Error')
- .setDescription('Eval\'s result')
- .addField(':inbox_tray: Input:', `\`\`\`js\n${code}\n\`\`\``)
- .addField(':outbox_tray: Output:', `\`\`\`${err}\`\`\``)
- .setFooter('Eval', client.user.avatarURL)
- .setColor('RED');
- return message.channel.send({ embed });
- }
- };
-
- exports.conf = {
- aliases: [],
- guildOnly: false,
- };
- exports.help = {
- name: 'eval',
- description: 'Evalulates commands.',
- usage: '<code>',
- category: '- Owners Only',
- };
- \ No newline at end of file
+ if (!['242775871059001344'].includes(message.author.id)) return message.reply('Nope! You need the person who created this bot to use this command.');
+ const {MessageEmbed} = require('discord.js');
+ const code = args.join(' ');
+
+ let evaled;
+ let remove;
+
+ try {
+ remove = (text) => {
+ if (typeof(text) === 'string') {
+ return text.replace(/`/g, '`' + String.fromCharCode(8203)).replace(/@/g, '@' + String.fromCharCode(8203));
+ } else {
+ return text;
+ }
+ };
+
+ evaled = eval(code);
+
+ if (typeof evaled !== 'string') {
+ evaled = require('util').inspect(evaled);
+ }
+ } catch (err) {
+ const embed = new MessageEmbed()
+ .setAuthor('Eval Error')
+ .setDescription('Eval\'s result')
+ .addField(':inbox_tray: Input:', `\`\`\`js\n${code}\n\`\`\``)
+ .addField(':outbox_tray: Output:', `\`\`\`${err}\`\`\``)
+ .setFooter('Eval', client.user.avatarURL())
+ .setColor('RED');
+ return message.channel.send({embeds: [embed]});
+ }
+
+ try {
+ const embed = new MessageEmbed()
+ .setAuthor('Eval Success')
+ .setDescription('Eval\'s result')
+ .addField(':inbox_tray: Input:', `\`\`\`js\n${code}\n\`\`\``)
+ .addField(':outbox_tray: Output:', `\`\`\`js\n${remove(evaled)}\n\`\`\``)
+ .setFooter('Eval', client.user.avatarURL())
+ .setColor('GREEN');
+
+ return message.channel.send({embeds: [embed]});
+ } catch (err) {
+ const embed = new MessageEmbed()
+ .setAuthor('Eval Error')
+ .setDescription('Eval\'s result')
+ .addField(':inbox_tray: Input:', `\`\`\`js\n${code}\n\`\`\``)
+ .addField(':outbox_tray: Output:', `\`\`\`${err}\`\`\``)
+ .setFooter('Eval', client.user.avatarURL())
+ .setColor('RED');
+ return message.channel.send({embeds: [embed]});
+ }
+};
+
+exports.conf = {
+ aliases: [],
+ guildOnly: false,
+};
+exports.help = {
+ name: 'eval',
+ description: 'Evalulates commands.',
+ usage: '<code>',
+ category: '- Owners Only',
+};
diff --git a/commands/git.js b/commands/git.js
deleted file mode 100644
index d6bed8b..0000000
--- a/commands/git.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************
- *
- * Git: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * *************************************/
-module.exports.run = async (client, message) => {
- const Discord = require('discord.js');
- const git = require('git-last-commit');
- git.getLastCommit(function(err, commit) {
- const embed = new Discord.RichEmbed()
- .setTitle('GitHub Information')
- .addField('**Repository:**', 'https://github.com/aleeproductions/AleeBot-JS')
- .addField('**Last Commit:**', commit.subject)
- .addField('**Commited By:**', commit.author.name)
- .setColor('#1fd619')
- message.channel.send({ embed });
- })
-};
-
-exports.conf = {
- aliases: [],
- guildOnly: false,
-};
-exports.help = {
- name: 'git',
- description: 'Get the git info.',
- usage: 'git',
- category: '- General Commands',
-};
diff --git a/commands/help.js b/commands/help.js
index eb53b40..7a824f1 100644
--- a/commands/help.js
+++ b/commands/help.js
@@ -1,70 +1,70 @@
-/****************************************
- *
- * Help: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * *************************************/
-const Discord = require('discord.js');
-const fs = require('fs');
-module.exports.run = async (client, message) => {
- const categories = [];
- const commands = Array.from(client.commands.keys());
- const settings = require('../storage/settings.json');
- commands.forEach(function(x) {
- if (!categories.includes(client.commands.get(x).help.category)) {
- categories.push(client.commands.get(x).help.category);
- }
- });
-
- let prefixes = JSON.parse(fs.readFileSync("./storage/prefixes.json", "utf8"));
-
- if(!prefixes[message.guild.id]){
- prefixes[message.guild.id] = {
- prefixes: settings.prefix
- };
- }
-
- let prefix = prefixes[message.guild.id].prefixes
- if (!message.guild.member(client.user).hasPermission('EMBED_LINKS')) return message.reply('ERROR: AleeBot doesn\'t have the permission to send embed links please enable them to use the full help.');
- const embed = new Discord.RichEmbed()
- .setAuthor('AleeBot ' + require('../storage/settings.json').abVersion + ` Help and on ${client.guilds.size} servers`, client.user.avatarURL)
- .setDescription('Every command you input into AleeBot is `' + prefix + '`')
- .setColor('#1fd619')
- .setFooter('© Copyright 2017-2020 Alee Productions, Licensed with GPL-3.0');
-
- categories.forEach(function(x) {
- let cat = '';
- commands.forEach(function(command) {
- if (client.commands.get(command).help.category == x) {
- cat = cat + command + '\n';
- }
- });
- embed.addField(x, cat, true);
- });
-
- await message.channel.send({ embed });
-};
-
-exports.conf = {
- aliases: ['h'],
- guildOnly: false,
-};
-exports.help = {
- name: 'help',
- description: 'Displays all the commands or a page with information for 1 command.',
- usage: 'help (command:command-name)',
- category: '- General Commands',
-};
+/** **************************************
+ *
+ * Help: Command for AleeBot
+ * Copyright (C) 2017-2021 Alee Productions
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * *************************************/
+const Discord = require('discord.js');
+const fs = require('fs');
+module.exports.run = async (client, message) => {
+ const categories = [];
+ const commands = Array.from(client.commands.keys());
+ const settings = require('../storage/settings.json');
+ commands.forEach(function(x) {
+ if (!categories.includes(client.commands.get(x).help.category)) {
+ categories.push(client.commands.get(x).help.category);
+ }
+ });
+
+ const prefixes = JSON.parse(fs.readFileSync('./storage/prefixes.json', 'utf8'));
+
+ if (!prefixes[message.guild.id]) {
+ prefixes[message.guild.id] = {
+ prefixes: settings.prefix,
+ };
+ }
+
+ const prefix = prefixes[message.guild.id].prefixes;
+ if (!message.guild.members.cache.get(client.user.id).permissions.has('EMBED_LINKS')) return message.reply('ERROR: AleeBot doesn\'t have the permission to send embed links, please enable them to use the full help.');
+ const embed = new Discord.MessageEmbed()
+ .setAuthor('AleeBot ' + require('../storage/settings.json').abVersion + ` Help`, client.user.avatarURL())
+ .setDescription('Every command you input into AleeBot is `' + prefix + '`')
+ .setFooter(`Currently serving on ${client.guilds.cache.size} servers`)
+ .setColor('#1fd619')
+
+ categories.forEach(function(x) {
+ let cat = '';
+ commands.forEach(function(command) {
+ if (client.commands.get(command).help.category == x) {
+ cat = cat + command + '\n';
+ }
+ });
+ embed.addField(x, cat, true);
+ });
+
+ await message.channel.send({embeds: [embed]});
+};
+
+exports.conf = {
+ aliases: ['h'],
+ guildOnly: false,
+};
+exports.help = {
+ name: 'help',
+ description: 'Displays all the commands or a page with information for 1 command.',
+ usage: 'help (command:command-name)',
+ category: '- General Commands',
+};
diff --git a/commands/info.js b/commands/info.js
index 162a1cf..a74d73e 100644
--- a/commands/info.js
+++ b/commands/info.js
@@ -1,7 +1,7 @@
-/****************************************
- *
+/** **************************************
+ *
* Info: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,29 +15,29 @@
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ *
* *************************************/
module.exports.run = async (client, message) => {
- const Discord = require('discord.js');
- const os = require('os');
- const embed = new Discord.RichEmbed()
- .setTitle('Information on AleeBot\'s Host')
- .addField('OS Hostname: ', os.hostname() , true)
- .addField('NodeJS Version: ', process.versions.node , true)
- .addField('OS Platform: ', os.platform() , true)
- .addField('OS Version: ', os.release() , true)
- .setColor('#1fd619');
- message.channel.send({embed});
- };
-
- exports.conf = {
- aliases: [],
- guildOnly: false,
- };
- exports.help = {
- name: 'info',
- description: 'Tells you information about the bot',
- usage: 'info',
- category: '- Information Commands',
- };
- \ No newline at end of file
+ const { MessageEmbed, version } = require('discord.js');
+ const os = require('os');
+ const embed = new MessageEmbed()
+ .setTitle('Information on AleeBot\'s Host')
+ .addField('OS Hostname: ', os.hostname(), true)
+ .addField('NodeJS Version: ', process.versions.node, true)
+ .addField('Discord.JS Version: ', version, true)
+ .addField('OS Platform: ', os.platform(), true)
+ .addField('OS Version: ', os.release(), true)
+ .setColor('#1fd619');
+ await message.channel.send({ embeds: [embed] });
+};
+
+exports.conf = {
+ aliases: [],
+ guildOnly: false,
+};
+exports.help = {
+ name: 'info',
+ description: 'Tells you information about the bot',
+ usage: 'info',
+ category: '- Information Commands',
+};
diff --git a/commands/interrogate.js b/commands/interrogate.js
index 5630114..3386352 100644
--- a/commands/interrogate.js
+++ b/commands/interrogate.js
@@ -1,7 +1,7 @@
-/****************************************
- *
+/** **************************************
+ *
* Interrogate: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,29 +15,28 @@
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ *
* *************************************/
module.exports.run = async (client, message, args) => {
- if (message.guild.id != '243022206437687296') return message.reply ('This is a ACN exclusive command.');
+ if (message.guild.id !== '243022206437687296') return message.reply('This is a Binaryworks exclusive command.');
- if (!message.member.hasPermission('BAN_MEMBERS')) return message.reply('It looks like that you don\'t have the permissions to jail members.');
- if (!message.guild.member(client.user).hasPermission('MANAGE_ROLES')) return message.reply('Uhh... I don\'t have permission to jail members.');
+ if (!message.member.permissions.has('BAN_MEMBERS')) return message.reply('It looks like that you don\'t have the permissions to jail members.');
+ if (!message.guild.members.cache.get(client.user.id).permissions.has('MANAGE_ROLES')) return message.reply('Uhh... I don\'t have permission to jail members.');
- const member = message.mentions.members.first();
- if (!member) return await message.reply('Uhh... Please mention a member first.');
+ const member = message.mentions.members.first();
+ if (!member) return await message.reply('Uhh... Please mention a member first.');
- member.addRole(message.guild.roles.find('name', 'Interrogation'));
- message.reply(`Alright, I just interrogated ${member.user.tag}.`)
+ member.roles.add(message.guild.roles.cache.get('431973193608200193'));
+ message.reply(`Alright, I just interrogated ${member.user.tag}.`);
};
exports.conf = {
- aliases: [],
- guildOnly: false,
- };
- exports.help = {
- name: 'interrogate',
- description: 'Interrogates a member',
- usage: 'interrogate [user]',
- category: '- ALP Exclusive Commands',
- };
- \ No newline at end of file
+ aliases: [],
+ guildOnly: false,
+};
+exports.help = {
+ name: 'interrogate',
+ description: 'Interrogates a member',
+ usage: 'interrogate [user]',
+ category: '- ALP Exclusive Commands',
+};
diff --git a/commands/invite.js b/commands/invite.js
deleted file mode 100644
index b0d3ec3..0000000
--- a/commands/invite.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/****************************************
- *
- * Invite: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * *************************************/
-module.exports.run = async (client, message) => {
- const Discord = require('discord.js');
- const embed = new Discord.RichEmbed()
- message.channel.send({embed: {
- color: 2086425,
- title: "Invite Command",
- fields: [{
- name: "Invite AleeBot",
- value: "[Invite AleeBot to your server.](https://discordapp.com/api/oauth2/authorize?client_id=282547024547545109&permissions=2080375863&scope=bot)"
- },
- {
- name: "Join the Alee Productions Community",
- value: "[If there's any bugs you can join Alee Community guild and explain the bug...](https://discord.gg/EFhRDqG)"
- }
- ],
- }
-});
-
- // message.channel.send('Want AleeBot in your server? Here\'s the link: https://discordapp.com/api/oauth2/authorize?client_id=282547024547545109&permissions=2080375863&scope=bot');
- };
-
- exports.conf = {
- aliases: [],
- guildOnly: false,
- };
- exports.help = {
- name: 'invite',
- description: 'Gives you an invite to the guild and the bot.',
- usage: 'invite',
- category: '- General Commands',
- };
-
diff --git a/commands/jail.js b/commands/jail.js
deleted file mode 100644
index 18cbfb1..0000000
--- a/commands/jail.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************
- *
- * Jail: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * *************************************/
-module.exports.run = async (client, message, args) => {
- if (message.guild.id != '243022206437687296') return message.reply ('This is a ACN exclusive command.');
-
- if (!message.member.hasPermission('BAN_MEMBERS')) return message.reply('It looks like that you don\'t have the permissions to jail members.');
- if (!message.guild.member(client.user).hasPermission('MANAGE_ROLES')) return message.reply('Uhh... I don\'t have permission to jail members.');
-
- const member = message.mentions.members.first();
- if (!member) return await message.reply('Uhh... Please mention a member first.');
-
- member.addRole(message.guild.roles.find('name', 'Jail'));
- message.reply(`Alright, I just jailed ${member.user.tag}.`)
-};
-
-exports.conf = {
- aliases: [],
- guildOnly: false,
- };
- exports.help = {
- name: 'jail',
- description: 'Jails a member',
- usage: 'jail [user]',
- category: '- ALP Exclusive Commands',
- };
- \ No newline at end of file
diff --git a/commands/kick.js b/commands/kick.js
index dbb1eb1..c248afc 100644
--- a/commands/kick.js
+++ b/commands/kick.js
@@ -1,7 +1,7 @@
-/****************************************
- *
+/** **************************************
+ *
* Kick: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,31 +15,31 @@
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ *
* *************************************/
module.exports.run = async (client, message, args) => {
- const Discord = require('discord.js');
- const mreason = args.join(" ").slice(22);
- if (!message.member.permissions.has('KICK_MEMBERS')) return message.reply("It looks like that you don't have the permissions to ban people.");
- if (!message.guild.member(client.user).hasPermission('KICK_MEMBERS')) return message.reply('Uhh... I don\'t have permission to kick members.');
- const member = message.mentions.members.first();
- if (!member) return message.reply("Uhh... Please mention a member first.");
- member.kick(`Kicked by: ${message.author.tag} Reason: ` + mreason);
- const embed = new Discord.RichEmbed()
- .setTitle('User Kicked!')
- .setColor('#1fd619')
- .addField('**User:**', `${member.user.tag}`)
- .addField('**Reason:**', `\`\`\`${mreason}\`\`\``)
- await message.channel.send({ embed });
- };
+ const Discord = require('discord.js');
+ const mreason = args.join(' ').slice(22);
+ if (!message.member.permissions.has('KICK_MEMBERS')) return message.reply('It looks like that you don\'t have the permissions to kick people.');
+ if (!message.guild.members.cache.get(client.user.id).permissions.has('KICK_MEMBERS')) return message.reply('I don\'t have permission to kick members.');
+ const member = message.mentions.members.first();
+ if (!member) return message.reply('Please mention a member first.');
+ await member.kick(`Kicked by ${message.author.tag} for ${mreason}.`);
+ const kickEmbed = new Discord.MessageEmbed()
+ .setTitle('User Kicked!')
+ .setColor('#1fd619')
+ .addField('**User:**', `${member.user.tag}`)
+ if (mreason) return kickEmbed.addField('**Reason:**', `\`\`\`${mreason}\`\`\``);
+ await message.channel.send({embeds: [kickEmbed]});
+};
exports.conf = {
- aliases: [],
- guildOnly: false,
+ aliases: [],
+ guildOnly: false,
};
exports.help = {
- name: 'kick',
- description: 'Kicks a member',
- usage: 'kick [user]',
- category: '- Moderation Commands',
+ name: 'kick',
+ description: 'Kicks a member',
+ usage: 'kick [user]',
+ category: '- Moderation Commands',
};
diff --git a/commands/leaveguild.js b/commands/leaveguild.js
index 4a77b0c..00a97fc 100644
--- a/commands/leaveguild.js
+++ b/commands/leaveguild.js
@@ -1,7 +1,7 @@
-/****************************************
- *
+/** **************************************
+ *
* LeaveGuild: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,22 +15,21 @@
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ *
* *************************************/
module.exports.run = async (client, message) => {
- if (!['242775871059001344', message.guild.owner.user.id].includes(message.author.id)) return message.reply('Nope! You need the person who created this bot or the owner of this guild to use this command.');
- message.channel.send('Alright, I\'m leaving the server now. Bye everyone!')
- message.guild.leave();
- };
-
- exports.conf = {
- aliases: [],
- guildOnly: false,
- };
- exports.help = {
- name: 'leaveguild',
- description: 'Makes the bot leave the server',
- usage: 'leaveguild',
- category: '- Owners Only',
- };
- \ No newline at end of file
+ if (!['242775871059001344', message.guild.ownerID].includes(message.author.id)) return message.reply('Nope! You need the person who created this bot or the owner of this guild to use this command.');
+ await message.channel.send('Leaving server. If that\'s a mistake, you can re-invite me');
+ message.guild.leave();
+};
+
+exports.conf = {
+ aliases: [],
+ guildOnly: false,
+};
+exports.help = {
+ name: 'leaveguild',
+ description: 'Makes the bot leave the server',
+ usage: 'leaveguild',
+ category: '- Owners Only',
+};
diff --git a/commands/nick.js b/commands/nick.js
new file mode 100644
index 0000000..8fcdce7
--- /dev/null
+++ b/commands/nick.js
@@ -0,0 +1,36 @@
+/** **************************************
+ *
+ * Nick: Command for AleeBot
+ * Copyright (C) 2017-2021 Alee Productions
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * *************************************/
+module.exports.run = async (client, message, args) => {
+ if (!message.guild.members.cache.get(client.user.id).permissions.has('MANAGE_NICKNAME')) return message.reply('**ERROR:** I can\'t change nicknames. (Check permissions)');
+ const nick = args.join(' ');
+ message.member.setNickname(nick);
+ message.channel.send(`Alright! I changed your nickname to \`${nick}\``);
+};
+
+exports.conf = {
+ aliases: [],
+ guildOnly: false,
+};
+exports.help = {
+ name: 'nick',
+ description: 'Changes nickname.',
+ usage: 'nick [context]',
+ category: '- General Commands',
+};
diff --git a/commands/pay.js b/commands/pay.js
deleted file mode 100644
index 633e4db..0000000
--- a/commands/pay.js
+++ /dev/null
@@ -1,60 +0,0 @@
-/****************************************
- *
- * Pay: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * *************************************/
-
-module.exports.run = async (client, message, args) => {
- const db = require('quick.db');
- if (!message.mentions.members.first()) return message.reply('Please mention a user...');
-
- let targetMember = message.mentions.members.first(),
- amount = parseInt(args.join(' ').replace(targetMember, ''));
-
- if (isNaN(amount)) return message.reply('Please define an amount.')
-
- let targetBalance = await db.fetch(`userBalance_${targetMember.id}`),
- selfBalance = await db.fetch(`userBalance_${message.author.id}`);
-
- if (targetBalance === null) {
- db.set(`userBalance_${targetMember.id}`, 0);
- targetBalance = 0
- }
-
- if (selfBalance === null) {
- db.set(`userBalance_${message.author.id}`, 0);
- selfBalance = 0
- }
-
- if (amount > selfBalance) return message.reply('Sorry you don\'t have enough money.');
-
- db.add(`userBalance_${targetMember.id}`, amount);
- db.subtract(`userBalance_${message.author.id}`, amount);
-
- message.reply(`Successfully transfered $${amount} to ${targetMember.user}`)
- };
-
- exports.conf = {
- aliases: ['transfer'],
- guildOnly: false,
- };
- exports.help = {
- name: 'pay',
- description: 'You can pay others!',
- usage: 'pay [@user] [interger]',
- category: '- Economy Commands',
- }; \ No newline at end of file
diff --git a/commands/ping.js b/commands/ping.js
index fa1fd10..d66330d 100644
--- a/commands/ping.js
+++ b/commands/ping.js
@@ -1,33 +1,33 @@
-/****************************************
- *
- * Ping: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * *************************************/
-module.exports.run = async (client, message) => {
- message.reply('**PONG!** :ping_pong: ' + Math.round(client.ping) + ' ms');
-};
-
-exports.conf = {
- aliases: [],
- guildOnly: false,
-};
-exports.help = {
- name: 'ping',
- description: 'Ping the bot.',
- usage: 'ping',
- category: '- General Commands',
-};
+/** **************************************
+ *
+ * Ping: Command for AleeBot
+ * Copyright (C) 2017-2021 Alee Productions
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * *************************************/
+module.exports.run = async (client, message) => {
+ message.reply('**PONG!** :ping_pong: ' + Math.round(client.ws.ping) + ' ms');
+};
+
+exports.conf = {
+ aliases: [],
+ guildOnly: false,
+};
+exports.help = {
+ name: 'ping',
+ description: 'Ping the bot.',
+ usage: 'ping',
+ category: '- General Commands',
+};
diff --git a/commands/poweroff.js b/commands/poweroff.js
index f336bed..22fb6bb 100644
--- a/commands/poweroff.js
+++ b/commands/poweroff.js
@@ -1,7 +1,7 @@
-/****************************************
- *
+/** **************************************
+ *
* Poweroff: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,24 +15,32 @@
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ *
* *************************************/
-module.exports.run = async (client, message, args) => {
- if (!['242775871059001344',].includes(message.author.id)) return message.reply('Nope! You need the person who created this bot to use this command.');
- await client.channels.find('id', '606602551634296968').send("**AleeBot Status:** AleeBot is now going offline.");
- await message.reply(':warning: AleeBot will now exit!');
- client.destroy();
- process.exit(0);
- };
-
- exports.conf = {
- aliases: ['reboot'],
- guildOnly: false,
- };
- exports.help = {
- name: 'poweroff',
- description: 'Turns off AleeBot.',
- usage: 'poweroff',
- category: '- Owners Only',
- };
- \ No newline at end of file
+module.exports.run = async (client, message) => {
+ const Discord = require('discord.js');
+ if (!['242775871059001344'].includes(message.author.id)) return message.reply('Nope! You need the person who created this bot to use this command.');
+ const stopEmbed = new Discord.MessageEmbed()
+ .setAuthor('AleeBot Status', client.user.avatarURL())
+ .setDescription('AleeBot is now going offline...')
+ .setColor('#ff3333');
+
+ let statusChannel = client.channels.cache.get('606602551634296968');
+ if (!statusChannel) return console.error('The status channel does not exist! Skipping.');
+ await statusChannel.send({ embeds: [stopEmbed]});
+ await message.reply(':warning: AleeBot will now exit!');
+ console.log('[i] AleeBot will now exit!'.blue);
+ client.destroy();
+ process.exit(0);
+};
+
+exports.conf = {
+ aliases: ['reboot'],
+ guildOnly: false,
+};
+exports.help = {
+ name: 'poweroff',
+ description: 'Turns off AleeBot.',
+ usage: 'poweroff',
+ category: '- Owners Only',
+};
diff --git a/commands/purge.js b/commands/purge.js
index 9a510f9..bc6e727 100644
--- a/commands/purge.js
+++ b/commands/purge.js
@@ -1,7 +1,7 @@
-/****************************************
- *
+/** **************************************
+ *
* Purge: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,26 +15,25 @@
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ *
* *************************************/
module.exports.run = async (client, message, args) => {
- if (!message.member.permissions.has('MANAGE_MESSAGES')) return message.reply("It looks like that you don't have the permissions to delete messages.")
- if (isNaN(args[0])) return message.reply("Please put the valid number of messages to purge.");
+ if (!message.member.permissions.has('MANAGE_MESSAGES')) return message.reply('It looks like that you don\'t have the permissions to delete messages.');
+ if (isNaN(args[0])) return message.reply('Please put the valid number of messages to purge.');
+
+ if (args[0] > 100) return message.channel.send('Please put a number less than 100.');
- if (args[0] > 100) return message.channel.send("Please put a number less than 100.");
+ message.channel.bulkDelete(args[0])
+ .then( (messages) => message.channel.send(`Successfully deleted ${messages.size} messages.`));
+};
- message.channel.bulkDelete(args[0])
- .then( messages => message.channel.send(`Successfully deleted ${messages.size} messages.`))
- };
-
- exports.conf = {
- aliases: ['rm'],
- guildOnly: false,
- };
- exports.help = {
- name: 'purge',
- description: 'Removes messages in a bulk.',
- usage: 'purge [number]',
- category: '- Moderation Commands',
- };
- \ No newline at end of file
+exports.conf = {
+ aliases: ['rm'],
+ guildOnly: false,
+};
+exports.help = {
+ name: 'purge',
+ description: 'Removes messages in a bulk.',
+ usage: 'purge [number]',
+ category: '- Moderation Commands',
+};
diff --git a/commands/quote.js b/commands/quote.js
index 9aa9be0..f19675f 100644
--- a/commands/quote.js
+++ b/commands/quote.js
@@ -1,7 +1,7 @@
-/****************************************
- *
+/** **************************************
+ *
* Quote: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,51 +15,43 @@
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ *
* *************************************/
-module.exports.run = async (client, message) => {
-const Discord = require('discord.js');
-
-let NewQuote;
+module.exports.run = async (client, message, args) => {
+ const { quote: quoteDB } = require('../models/quote');
+ const { MessageEmbed } = require('discord.js');
+ let quoteID = args[0];
- function GetNewQuote(quoteNum = -1) {
- NewQuote = new Discord.RichEmbed();
-
- let quo = require('../storage/quotes.json').quotes;
+ if (quoteID === undefined) {
+ const quoteList = await quoteDB.findAll({ attributes: ['id'] })
+ const random = crypto.getRandomValues(new Uint32Array(1));
+ quoteID = quoteList[random[0] % quoteList.length].id;
+ }
- if (quoteNum == -1) {
- quoteNum = Math.floor(Math.random() * 1000) % quo.length;
- quo=quo[quoteNum];
- }
+ const quote = await quoteDB.findOne({ where: { id: quoteID } })
- const author = quo.author;
- const authorImage = quo.authorImage;
- const quote = quo.quote;
- const year = quo.year;
- const url = quo.url;
+ if (quote) {
+ const quoteEmbed = new MessageEmbed()
+ .setAuthor({ name: quote.author, iconURL: quote.authorImage })
+ .setDescription(quote.quote)
+ .setColor('#1fd619')
+ .setFooter(`- ${quote.year}\nSubmitted by ${quote.submitter}`);
- NewQuote.setAuthor(author, authorImage);
- NewQuote.setColor('#1fd619');
- NewQuote.setDescription(quote);
- NewQuote.setFooter('- ' + year);
- NewQuote.setURL(url);
+ await message.reply({ embeds: [quoteEmbed] })
+ } else {
+ message.reply('Cannot find quote, specify the correct quote id.');
+ }
- return NewQuote;
- }
- const newquote = GetNewQuote();
- message.reply('Alright, here\'s your quote.')
- message.channel.send(newquote);
};
exports.conf = {
- aliases: [],
- guildOnly: false,
- };
- exports.help = {
- name: 'quote',
- description: 'Tells you quotes',
- usage: 'quote',
- category: '- Quote Commands',
- };
- \ No newline at end of file
+ aliases: [],
+ guildOnly: false,
+};
+exports.help = {
+ name: 'quote',
+ description: 'Tells you quotes',
+ usage: 'quote',
+ category: '- Quote Commands',
+};
diff --git a/commands/say.js b/commands/say.js
index 4f25aec..9ef9707 100644
--- a/commands/say.js
+++ b/commands/say.js
@@ -1,7 +1,7 @@
-/****************************************
- *
+/** **************************************
+ *
* Say: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,23 +15,22 @@
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ *
* *************************************/
module.exports.run = async (client, message, args) => {
- if (!['242775871059001344',].includes(message.author.id)) return message.reply('Nope! You need the person who created this bot to use this command.');
- let absay = args.join(" ");
- message.delete().catch();
- message.channel.send(absay);
- };
-
- exports.conf = {
- aliases: [],
- guildOnly: false,
- };
- exports.help = {
- name: 'say',
- description: 'You can control AleeBot now!',
- usage: 'say [context]',
- category: '- Owners Only',
- };
- \ No newline at end of file
+ if (!['242775871059001344'].includes(message.author.id)) return message.reply('Nope! You need the person who created this bot to use this command.');
+ const absay = args.join(' ');
+ message.delete().catch();
+ message.channel.send(absay);
+};
+
+exports.conf = {
+ aliases: [],
+ guildOnly: false,
+};
+exports.help = {
+ name: 'say',
+ description: 'You can control AleeBot now!',
+ usage: 'say [context]',
+ category: '- Owners Only',
+};
diff --git a/commands/serverinfo.js b/commands/serverinfo.js
new file mode 100644
index 0000000..67442a2
--- /dev/null
+++ b/commands/serverinfo.js
@@ -0,0 +1,51 @@
+/** **************************************
+ *
+ * ServerInfo: Command for AleeBot
+ * Copyright (C) 2017-2021 Alee Productions
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * *************************************/
+module.exports.run = async (client, message) => {
+ const Discord = require('discord.js');
+ const listedChannels = [];
+ let guildOwner = await message.guild.fetchOwner();
+ let memberCountNoBots = await message.guild.members.fetch().then((members) => members.filter(member => !member.user.bot).size);
+ const embed = new Discord.MessageEmbed()
+ .setAuthor(`${message.guild.name}`, `${message.guild.iconURL()}`)
+ .setDescription('Server Information')
+ .setThumbnail(message.guild.iconURL())
+ .addField('Main Information', `**Server Name:** ${message.guild.name}\n**Server ID:** ${message.guild.id}\n**Server Owner:** ${guildOwner.user.tag}`)
+ .addField('Join Dates', `**Created At:** ${message.guild.createdAt.toUTCString()}\n**AleeBot Joined:** ${message.guild.joinedAt.toUTCString()}`)
+ /*message.guild.channels.cacheType.forEach(channel => {
+ listedChannels.push(channel)
+ })*/
+ //.addField('Channels', `${listedChannels.join('\n')}`)
+ //.addField('Total Channels', message.guild.channelCountMode)
+ .addField('Total Members (with bots)', `${message.guild.memberCount}`)
+ .addField('Total Members (without bots)', `${memberCountNoBots}`)
+ .setColor('#1fd619');
+ await message.channel.send({embeds: [embed]});
+};
+
+exports.conf = {
+ aliases: ['sinfo'],
+ guildOnly: false,
+};
+exports.help = {
+ name: 'serverinfo',
+ description: 'Tells your info.',
+ usage: 'serverinfo',
+ category: '- Information Commands',
+};
diff --git a/commands/setlogchannel.js b/commands/setlogchannel.js
new file mode 100644
index 0000000..d989f8b
--- /dev/null
+++ b/commands/setlogchannel.js
@@ -0,0 +1,55 @@
+/** **************************************
+ *
+ * SetLogChannel: Command for AleeBot
+ * Copyright (C) 2017-2021 Alee Productions
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * *************************************/
+const { guildSettings } = require ('../models/guild-settings')
+module.exports.run = async (client, message, args) => {
+ //This will be replaced in the future possibly
+ if (!message.member.permissions.has('MANAGE_GUILD')) return message.reply('It looks like that you can\'t manage this server.');
+
+ let channel;
+
+ if (message.mentions.channels.first()) {
+ channel = message.mentions.channels.first().id;
+ } else if (args[0] && message.guild.channels.cache.has(args[0])) {
+ channel = args[0];
+ } else {
+ return await message.reply('Please enter a valid channel ID.')
+ }
+
+ const [ guild ] = await guildSettings.findOrCreate({ where: { guildID: message.guild.id } } )
+
+ if (!channel) {
+ message.reply('No channel has been set, disabling the logging channel feature...');
+ await guild.update({ logChannelID: null } );
+ } else {
+ await guild.update({ logChannelID: channel } );
+ await message.reply(`Logging channel has been set to <#${channel}>`);
+ }
+};
+
+exports.conf = {
+ aliases: [],
+ guildOnly: false,
+};
+exports.help = {
+ name: 'setlogchannel',
+ description: 'Set the log channel.',
+ usage: 'setlogchannel #channel',
+ category: '- Moderation Commands',
+};
diff --git a/commands/setprefix.js b/commands/setprefix.js
index f9aac08..6800eea 100644
--- a/commands/setprefix.js
+++ b/commands/setprefix.js
@@ -1,7 +1,7 @@
-/****************************************
- *
+/** **************************************
+ *
* SetPrefix: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,41 +15,38 @@
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ *
* *************************************/
module.exports.run = async (client, message, args) => {
- const moment = require('moment');
- const log = message => {
+ const moment = require('moment');
+ const log = (message) => {
+ console.log(`[${moment().format('YYYY-MM-DD HH:mm:ss')}] ${message}`);
+ };
+ const fs = require('fs');
+ if (!message.member.permissions.has('ADMINISTRATOR')) return message.reply('Sorry you need admin to set my prefix');
+ if (!args[0] || args[0 == 'help']) return message.reply('Usage: <your prefix>setprefix <prefix>');
- console.log(`[${moment().format('YYYY-MM-DD HH:mm:ss')}] ${message}`);
-
- };
- const fs = require('fs');
- if(!message.member.hasPermission("ADMINISTRATOR")) return message.reply('Sorry you need admin to set my prefix')
- if(!args[0] || args[0 == "help"]) return message.reply(`Usage: <your prefix>setprefix <prefix>`)
+ const prefixes = JSON.parse(fs.readFileSync('./storage/prefixes.json', 'utf8'));
- let prefixes = JSON.parse(fs.readFileSync("./storage/prefixes.json", "utf8"));
+ prefixes[message.guild.id] = {
+ prefixes: args[0],
+ };
- prefixes[message.guild.id] = {
- prefixes: args[0]
- };
+ fs.writeFile('./storage/prefixes.json', JSON.stringify(prefixes), (err) =>{
+ if (err) log(err);
+ });
- fs.writeFile("./storage/prefixes.json", JSON.stringify(prefixes), (err) =>{
- if (err) log(err)
- })
+ message.reply(`AleeBot's Prefix in this guild is now \`${args[0]}\``);
+ log(`[i] The guild ${message.guild.name} has changed AleeBot's prefix to ${args[0]}`);
+};
- message.reply(`AleeBot's Prefix in this guild is now \`${args[0]}\``);
- log(`[i] The guild ${message.guild.name} has changed AleeBot's prefix to ${args[0]}`)
- };
-
- exports.conf = {
- aliases: [],
- guildOnly: true,
- };
- exports.help = {
- name: 'setprefix',
- description: 'Sets the guild prefix.',
- usage: 'setprefix [prefix]',
- category: '- Settings Commands',
- };
- \ No newline at end of file
+exports.conf = {
+ aliases: [],
+ guildOnly: true,
+};
+exports.help = {
+ name: 'setprefix',
+ description: 'Sets the guild prefix.',
+ usage: 'setprefix [prefix]',
+ category: '- Settings Commands',
+};
diff --git a/commands/setup.js b/commands/setup.js
new file mode 100644
index 0000000..c797f7d
--- /dev/null
+++ b/commands/setup.js
@@ -0,0 +1,45 @@
+/****************************************
+ *
+ * Setup: Command for AleeBot
+ * Copyright (C) 2017-2021 Alee Productions
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * *************************************/
+
+module.exports.run = async (client, message) => {
+ if (!['242775871059001344', message.guild.ownerId].includes(message.author.id)) return message.reply(':warning: You must be a server owner or be the creator of the bot to access this command.');
+ message.reply(':arrow_left: Check DMs to continue.');
+ const Discord = require('discord.js');
+ const setupEmbed = new Discord.MessageEmbed()
+ .setTitle('AleeBot Setup', client.user.avatarURL())
+ .setDescription('Select the options')
+ .addField('Logging', 'channelid', true)
+ .addField('Broadcast', 'placeholder', true)
+ .addField('Quote of the Day', 'placeholder', true)
+ .addField('QOTD Channel', 'channelid', true);
+
+ message.author.send({embeds: [setupEmbed]});
+};
+
+exports.conf = {
+ aliases: [],
+ guildOnly: false,
+};
+exports.help = {
+ name: 'setup',
+ description: 'Setting up AleeBot.',
+ usage: 'setup',
+ category: '- Settings Commands',
+};
diff --git a/commands/slowdown.js b/commands/slowdown.js
new file mode 100644
index 0000000..55e441b
--- /dev/null
+++ b/commands/slowdown.js
@@ -0,0 +1,37 @@
+/** **************************************
+ *
+ * Slowdown: Command for AleeBot
+ * Copyright (C) 2017-2021 Alee Productions
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * *************************************/
+module.exports.run = async (client, message, args) => {
+ if (!message.member.permissions.has('MANAGE_CHANNELS')) return message.reply('It looks like that you don\'t have the permissions to slowdown channels.');
+ if (isNaN(args[0])) return message.reply('Please input a valid number to slowdown a channel.');
+ await message.channel.setRateLimitPerUser(args[0]);
+ message.channel.send(`This channel has been slowdown for ${args[0]} second(s).`);
+
+};
+
+exports.conf = {
+ aliases: [],
+ guildOnly: false,
+};
+exports.help = {
+ name: 'slowdown',
+ description: 'Ratelimits channel.',
+ usage: 'slowdown [number]',
+ category: '- Moderation Commands',
+};
diff --git a/commands/suggest.js b/commands/suggest.js
index 1b2d814..b503139 100644
--- a/commands/suggest.js
+++ b/commands/suggest.js
@@ -1,7 +1,7 @@
-/****************************************
- *
+/** **************************************
+ *
* Suggest: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,32 +15,31 @@
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ *
* *************************************/
module.exports.run = async (client, message, args) => {
- if (message.guild.id != '243022206437687296') return message.reply ('This is a ALP exclusive command.');
- const { RichEmbed } = require('discord.js');
- client.channels.find('id', '427495678390960148').send(
- new RichEmbed()
- .setColor ('#1fd619')
- .setTitle('Suggestion')
- .setDescription(`This is a suggestion from `+ message.author.username +` please react to it using the following emojis.`)
- .addField('Suggestion Contents', args.join(' '))
- ).then(message => {
- message.react('\u2705');
- message.react('\u274E');
- });
- message.reply("Your suggestion has been shown in the suggestions channel.")
- };
-
- exports.conf = {
- aliases: [],
- guildOnly: false,
- };
- exports.help = {
- name: 'suggest',
- description: 'Suggest a feature in ACN.',
- usage: 'suggest [suggestion]',
- category: '- ALP Exclusive Commands',
- };
- \ No newline at end of file
+ if (message.guild.id !== '243022206437687296') return message.reply('This is a Andrew Lee Projects exclusive command.');
+ const {MessageEmbed} = require('discord.js');
+ client.channels.cache.get('427495678390960148').send({ embeds: [
+ new MessageEmbed()
+ .setColor('#1fd619')
+ .setTitle('Suggestion')
+ .setDescription('This is a suggestion from '+ message.author.username +'. Please react to it using the following emojis.')
+ .addField('Suggestion Contents', args.join(' ')),
+ ]}).then((message) => {
+ message.react('\u2705');
+ message.react('\u274E');
+ });
+ message.reply('Your suggestion has been shown in the suggestions channel.');
+};
+
+exports.conf = {
+ aliases: [],
+ guildOnly: false,
+};
+exports.help = {
+ name: 'suggest',
+ description: 'Suggest a feature in Andrew Lee Projects.',
+ usage: 'suggest [suggestion]',
+ category: '- ALP Exclusive Commands',
+};
diff --git a/commands/suggestfeature.js b/commands/suggestfeature.js
index 95e1c2d..21b6849 100644
--- a/commands/suggestfeature.js
+++ b/commands/suggestfeature.js
@@ -1,7 +1,7 @@
/****************************************
- *
+ *
* SuggestFeature: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,29 +15,31 @@
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ *
* *************************************/
module.exports.run = async (client, message, args) => {
- const { RichEmbed } = require('discord.js');
- client.channels.find('id', '427495678390960148').send(
- new RichEmbed()
- .setColor ('#1fd619')
- .setTitle('AleeBot Feature Suggestion')
- .setDescription(`This is an AleeBot feature suggestion from `+ message.author.username +` sending from ${message.guild.name}.`)
- .addField('Suggestion Contents', args.join(' '))
- )
- await message.reply("Your suggestion has been shown to the ALP discord server!")
-
- };
-
- exports.conf = {
- aliases: [],
- guildOnly: false,
- };
- exports.help = {
- name: 'suggestfeature',
- description: 'Suggest features in AleeBot.',
- usage: 'suggestfeature [suggestion]',
- category: '- General Commands',
- };
-
+ const { MessageEmbed } = require('discord.js');
+
+ client.channels.cache.get('427495678390960148').send({ embeds: [
+ new MessageEmbed()
+ .setColor('#1fd619')
+ .setTitle('AleeBot Feature Suggestion')
+ .setDescription(`This is an AleeBot feature suggested from ${message.author.username}.`)
+ .addField('Suggestion Contents', args.join(' '))
+ .setFooter(`Sending from ${message.guild.name}`, message.guild.iconURL())]}
+ );
+ await message.reply('Your suggestion has been shown to the Andrew Lee Projects discord server!');
+
+};
+
+exports.conf = {
+ aliases: [],
+ guildOnly: false,
+};
+exports.help = {
+ name: 'suggestfeature',
+ description: 'Suggest features in AleeBot.',
+ usage: 'suggestfeature [suggestion]',
+ category: '- General Commands',
+};
+
diff --git a/commands/timeout.js b/commands/timeout.js
new file mode 100644
index 0000000..bed9077
--- /dev/null
+++ b/commands/timeout.js
@@ -0,0 +1,49 @@
+/** **************************************
+ *
+ * Jail: Command for AleeBot
+ * Copyright (C) 2017-2021 Alee Productions
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * *************************************/
+module.exports.run = async (client, message, args) => {
+ const { MessageEmbed } = require('discord.js');
+
+ if (!message.member.permissions.has('BAN_MEMBERS')) return message.reply('It looks like that you don\'t have the permissions to jail members.');
+ if (!message.guild.members.cache.get(client.user.id).permissions.has('MANAGE_ROLES')) return message.reply('Uhh... I don\'t have permission to jail members.');
+
+ if (!args[1]) message.reply('Determine the length of the timeout...');
+ if (!args[2]) message.reply('Determine the reason of the timeout...');
+
+ const member = message.mentions.members.first();
+ if (!member) return await message.reply('Uhh... Please mention a member first.');
+
+ const timeoutEmbed = new MessageEmbed()
+ .setDescription(`${member.user.tag} just got timed out!`)
+ .addField('Length', `${args[1]} minute(s)`)
+ .addField('Reason', args[2])
+ .setColor('#ec2727')
+ member.timeout(args[1] * 60 * 1000, args[2]).then(message.reply({embeds: [timeoutEmbed]}));
+};
+
+exports.conf = {
+ aliases: [],
+ guildOnly: false,
+};
+exports.help = {
+ name: 'timeout',
+ description: 'Times out a member',
+ usage: 'timeout [user]',
+ category: '- Moderation Commands',
+};
diff --git a/commands/uptime.js b/commands/uptime.js
index 7c8d9fe..7453ad5 100644
--- a/commands/uptime.js
+++ b/commands/uptime.js
@@ -1,45 +1,48 @@
-/****************************************
- *
- * Uptime: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions & OfficialRain
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * *************************************/
-module.exports.run = async (client, message) => {
-
- let uptime = parseInt(client.uptime);
- uptime = Math.floor(uptime / 1000);
- let uptimeMinutes = Math.floor(uptime / 60);
- const minutes = uptime % 60;
- let hours = 0;
- while (uptimeMinutes >= 60) {
- hours++;
- uptimeMinutes = uptimeMinutes - 60;
- }
- const uptimeSeconds = minutes % 60;
- message.channel.send(':clock3: AleeBot has been up for ' + hours + ' hours, ' + uptimeMinutes + ' minutes, and ' + uptimeSeconds + ' seconds.');
-
-};
-
-exports.conf = {
- aliases: [],
- guildOnly: false,
-};
-exports.help = {
- name: 'uptime',
- description: 'Displays Uptime.',
- usage: 'uptime',
- category: '- General Commands',
-};
+/** **************************************
+ *
+ * Uptime: Command for AleeBot
+ * Copyright (C) 2017-2021 Alee Productions & OfficialRain
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * *************************************/
+module.exports.run = async (client, message) => {
+ let uptime = parseInt(client.uptime);
+ uptime = Math.floor(uptime / 1000);
+ let uptimeMinutes = Math.floor(uptime / 60);
+ const minutes = uptime % 60;
+ let hours = 0;
+ let days = 0;
+ while (uptimeMinutes >= 60) {
+ hours++;
+ uptimeMinutes = uptimeMinutes - 60;
+ }
+ while (hours >= 24) {
+ days++;
+ hours = hours - 24;
+ }
+ const uptimeSeconds = minutes % 60;
+ message.channel.send(`:clock3: AleeBot has been up for ${days} days, ${hours} hours, ${uptimeMinutes} minutes, and ${uptimeSeconds} seconds.`);
+};
+
+exports.conf = {
+ aliases: [],
+ guildOnly: false,
+};
+exports.help = {
+ name: 'uptime',
+ description: 'Displays Uptime.',
+ usage: 'uptime',
+ category: '- General Commands',
+};
diff --git a/commands/userinfo.js b/commands/userinfo.js
index 2eebd8b..bc7ec8e 100644
--- a/commands/userinfo.js
+++ b/commands/userinfo.js
@@ -1,7 +1,7 @@
-/****************************************
- *
+/** **************************************
+ *
* UserInfo: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
+ * Copyright (C) 2017-2021 Alee Productions
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,30 +15,29 @@
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ *
* *************************************/
module.exports.run = async (client, message) => {
- const Discord = require('discord.js');
- var embed = new Discord.RichEmbed()
- .setAuthor(message.author.tag, message.author.avatarURL)
- .setDescription("User Information")
- .setThumbnail(message.author.avatarURL)
- .addField("Names", "**Username:** " + message.author.username + "\n**Current Nickname:** " + message.member.displayName)
- .addField("Identity", `**User ID:** ${message.author.id} `)
- .addField("Create and Join Times", "**Created At:** " + message.member.user.createdAt.toUTCString() + "\n**Joined Guild At:** " + message.member.joinedAt.toUTCString())
- .setColor('#1fd619')
- message.channel.send({embed});
+ const Discord = require('discord.js');
+ const embed = new Discord.MessageEmbed()
+ .setAuthor(message.author.tag, message.author.avatarURL())
+ .setDescription('User Information')
+ .setThumbnail(message.author.avatarURL())
+ .addField('Names', `**Display Name:** ${message.member.displayName}\n**Username:** ${message.author.username}\n**Server Nickname:** ${message.member.displayName}`)
+ .addField('Identity', `**User ID:** ${message.author.id} `)
+ .addField('Create and Join Times', `**Created At:** ${message.member.user.createdAt.toUTCString()}\n**Joined Guild At:** ${message.member.joinedAt.toUTCString()}`)
+ .setColor('#1fd619');
+ await message.channel.send({embeds: [embed]});
+
+};
- };
-
- exports.conf = {
- aliases: ['uinfo'],
- guildOnly: false,
- };
- exports.help = {
- name: 'userinfo',
- description: 'Tells your info.',
- usage: 'userinfo',
- category: '- Information Commands',
- };
- \ No newline at end of file
+exports.conf = {
+ aliases: ['uinfo'],
+ guildOnly: false,
+};
+exports.help = {
+ name: 'userinfo',
+ description: 'Tells your info.',
+ usage: 'userinfo',
+ category: '- Information Commands',
+};
diff --git a/commands/vtquote.js b/commands/vtquote.js
deleted file mode 100644
index e21db08..0000000
--- a/commands/vtquote.js
+++ /dev/null
@@ -1,65 +0,0 @@
-/****************************************
- *
- * VTQuote: Command for AleeBot
- * Copyright (C) 2017-2020 Alee Productions
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * *************************************/
-module.exports.run = async (client, message) => {
- const Discord = require('discord.js');
-
- let VictorQuote;
-
- function GetVictorQuote(quoteNum = -1) {
- VictorQuote = new Discord.RichEmbed();
-
- let quo = require('../storage/vtquotes.json').quotes
-
- if (quoteNum == -1) {
- quoteNum = Math.floor(Math.random() * 1000) % quo.length;
- quo=quo[quoteNum];
- }
-
- const author = quo.author;
- const authorImage = quo.authorImage;
- const quote = quo.quote;
- const year = quo.year;
- const url = quo.url;
-
- VictorQuote.setAuthor(author, authorImage);
- VictorQuote.setColor('#1fd619');
- VictorQuote.setDescription(quote);
- VictorQuote.setFooter('- ' + year);
- VictorQuote.setURL(url);
-
- return VictorQuote;
- }
-
- const victorquote = GetVictorQuote();
- message.reply('Alright, here\'s your Victor quote.')
- message.channel.send(victorquote);
- };
-
- exports.conf = {
- aliases: [],
- guildOnly: false,
- };
- exports.help = {
- name: 'vtquote',
- description: 'Tells you quotes when victor accidentaly swore.',
- usage: 'vtquote',
- category: '- Quote Commands',
- };
- \ No newline at end of file