diff options
| author | Andrew Lee <andrew@alee14.me> | 2025-02-25 23:15:04 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-25 23:15:04 -0500 |
| commit | 44f7f14736aaf77858ee71c80abeb3c13343d3c2 (patch) | |
| tree | 47dc895e50fa95b52a894bf0806e1a6c1edc8818 /commands | |
| parent | 9519602e73a53931be10438dcd990becea7989d9 (diff) | |
| parent | 5777f96394444dab18a81d6f085ac81df3e62008 (diff) | |
| download | AleeBot-44f7f14736aaf77858ee71c80abeb3c13343d3c2.tar.gz AleeBot-44f7f14736aaf77858ee71c80abeb3c13343d3c2.tar.bz2 AleeBot-44f7f14736aaf77858ee71c80abeb3c13343d3c2.zip | |
Merge pull request #36 from Alee14/beta
2.13 Release
Diffstat (limited to 'commands')
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 |
