summaryrefslogtreecommitdiff
path: root/src/commands/moderation
diff options
context:
space:
mode:
Diffstat (limited to 'src/commands/moderation')
-rw-r--r--src/commands/moderation/addrole.ts55
-rw-r--r--src/commands/moderation/ban.ts25
-rw-r--r--src/commands/moderation/clear.ts77
-rw-r--r--src/commands/moderation/kick.ts29
-rw-r--r--src/commands/moderation/removerole.ts54
5 files changed, 240 insertions, 0 deletions
diff --git a/src/commands/moderation/addrole.ts b/src/commands/moderation/addrole.ts
new file mode 100644
index 0000000..ac0dbb6
--- /dev/null
+++ b/src/commands/moderation/addrole.ts
@@ -0,0 +1,55 @@
+import { Command, CommandoMessage } from 'discord.js-commando';
+
+module.exports = class AddRoleModeration extends Command {
+ constructor(client) {
+ super(client, {
+ name: 'addrole',
+ aliases: ['roleadd'],
+ group: 'moderation',
+ memberName: 'addrole',
+ description: 'Adds a role to a specific user.',
+ args: [
+ {
+ key: 'userID',
+ prompt: 'Who would you like to add the role to? (@someone or myself)',
+ type: 'string',
+ default: ''
+ },
+ {
+ key: 'roleID',
+ prompt: 'What role would you like to add?',
+ type: 'string'
+ }
+ ],
+ userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY', 'BAN_MEMBERS'],
+ clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY', 'BAN_MEMBERS'],
+ examples: [
+ 'uwu!addrole @CoolRole',
+ 'uwu!addrole @sin#1337 @CoolRole',
+ 'uwu!roleadd @sin#1337',
+ 'uwu!roleadd @sin#1337 @CoolerRole'
+ ]
+ });
+ }
+ run(msg: CommandoMessage, { userID, roleID }) {
+ let role = msg.guild.roles.cache.find(role => role === roleID);
+ let member = msg.mentions.members?.first();
+ if (!userID) {
+ if (role) {
+ console.log(role)
+ member?.roles.add(role)
+ msg.reply(`The role **${role}** has been added to **${member}**.`)
+ } else {
+ msg.reply('Role is either non-existant or you might\'ve mispelled it.')
+ }
+ } else if (userID) {
+ if (role) {
+ console.log(role)
+ member?.roles.add(role)
+ } else {
+ console.log(role)
+ msg.reply('Role is either non-existant or you might\'ve mispelled it.')
+ }
+ }
+ }
+}; \ No newline at end of file
diff --git a/src/commands/moderation/ban.ts b/src/commands/moderation/ban.ts
new file mode 100644
index 0000000..45f5298
--- /dev/null
+++ b/src/commands/moderation/ban.ts
@@ -0,0 +1,25 @@
+import { Command, CommandoMessage } from 'discord.js-commando';
+
+module.exports = class BanModeration extends Command {
+ constructor(client) {
+ super(client, {
+ name: 'ban',
+ aliases: ['banuser', 'ban-user'],
+ group: 'moderation',
+ memberName: 'ban',
+ description: 'Ban someone.',
+ userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY', 'BAN_MEMBERS'],
+ clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY', 'BAN_MEMBERS'],
+ examples: ['uwu!ban @sin#1337']
+ });
+ }
+ run(msg: CommandoMessage) {
+ let userID = msg.mentions.members?.first().id
+ if (!msg.guild.member(userID)) {
+ msg.reply('Member does not exist in server.')
+ } else {
+ msg.guild.members.ban(userID)
+ msg.say(`User **${userID}** has been banned!`)
+ }
+ }
+}; \ No newline at end of file
diff --git a/src/commands/moderation/clear.ts b/src/commands/moderation/clear.ts
new file mode 100644
index 0000000..e83d023
--- /dev/null
+++ b/src/commands/moderation/clear.ts
@@ -0,0 +1,77 @@
+import { Command, CommandoMessage } from 'discord.js-commando';
+import emoji from 'emoji-random';
+
+module.exports = class ClearBot extends Command {
+ constructor(client) {
+ super(client, {
+ name: 'clear',
+ aliases: ['delete', 'del', 'c', 'd'],
+ group: 'bot',
+ memberName: 'clear',
+ description: 'Clears a specified amount of messages.',
+ guildOnly: true,
+ args: [
+ {
+ key: 'deleteAmount',
+ prompt: 'How many messages would you like to delete?',
+ type: 'integer'
+ }
+ ],
+ examples: [
+ 'uwu!clear 23',
+ 'uwu!delete 75',
+ 'uwu!del 32',
+ 'uwu!c 45',
+ 'uwu!d 84'
+ ],
+ userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY', 'MANAGE_MESSAGES'],
+ clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY', 'MANAGE_MESSAGES']
+ });
+ }
+ async run(msg: CommandoMessage, { deleteAmount }) {
+ if (msg.member.hasPermission('MANAGE_MESSAGES')) {
+ if (!deleteAmount) {
+ msg.reply('You haven\'t specified an amount of messages which should be deleted. ' + emoji.random()).then(deleteNotificationMessage => {
+ // @ts-ignore
+ deleteNotificationMessage.delete({ timeout: 1000 });
+ });
+ } else if (isNaN(deleteAmount)) {
+ msg.reply('The amount parameter isn\'t a number. ' + emoji.random()).then(deleteNotificationMessage => {
+ // @ts-ignore
+ deleteNotificationMessage.delete({ timeout: 1000 });
+ });
+ } else if (deleteAmount > 100) {
+ msg.reply('You can\'t delete more than 100 messages at once. ' + emoji.random()).then(deleteNotificationMessage => {
+ // @ts-ignore
+ deleteNotificationMessage.delete({ timeout: 1000 });
+ });
+ } else if (deleteAmount < 1) {
+ msg.reply('You have to delete at least 1 message. ' + emoji.random()).then(deleteNotificationMessage => {
+ // @ts-ignore
+ deleteNotificationMessage.delete({ timeout: 1000 });
+ });
+ }
+ /*else if (msg.createdTimestamp > 1209600) {
+ msg.reply('due to discord rules, bots can only bulk delete messages that are under 14 days old :(')
+ } */
+ else {
+ var clearAmount = deleteAmount + 1;
+ // It took me so long to figure out why this was not really working. It would delete but an insane amount at a time.
+ // I realized that because it was getting parsed as a string, it would just add 1 to it so if I tried to delete 1
+ // message, it would delete 11 lol. Fixed by parsing as integer THEN adding one. 02:30 2020/04/03/2020
+
+ await msg.channel.messages.fetch({
+ limit: clearAmount
+ }).then(messages => { // I am on v11 discord.js
+ msg.channel.bulkDelete(messages);
+ });
+ msg.reply('It\'s been deleted ~uwu ' + emoji.random()).then(deleteNotificationMessage => {
+ // @ts-ignore
+ deleteNotificationMessage.delete({ timeout: 1000 });
+ });
+ }
+ } else {
+ msg.reply('Insufficent permsissions. ' + emoji.random());
+ }
+ }
+}; \ No newline at end of file
diff --git a/src/commands/moderation/kick.ts b/src/commands/moderation/kick.ts
new file mode 100644
index 0000000..24b669d
--- /dev/null
+++ b/src/commands/moderation/kick.ts
@@ -0,0 +1,29 @@
+import { Command, CommandoMessage } from 'discord.js-commando';
+
+module.exports = class KickModeration extends Command {
+ constructor(client) {
+ super(client, {
+ name: 'kick',
+ aliases: ['kickuser', 'kick-user'],
+ group: 'moderation',
+ memberName: 'kick',
+ description: 'Kick someone.',
+ userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY', 'BAN_MEMBERS'],
+ clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY', 'BAN_MEMBERS'],
+ examples: [
+ 'uwu!kick @sin#1337',
+ 'uwu!kickuser @sin#1337',
+ 'uwu!kick-user @sin#1337'
+ ]
+ });
+ }
+ run(msg: CommandoMessage) {
+ let userID = msg.mentions.members?.first().id
+ if (!msg.guild.member(userID)) {
+ msg.reply('Member does not exist in server.')
+ } else {
+ msg.guild.members.prune(userID)
+ msg.say(`User **${userID}** has been kicked!`)
+ }
+ }
+}; \ No newline at end of file
diff --git a/src/commands/moderation/removerole.ts b/src/commands/moderation/removerole.ts
new file mode 100644
index 0000000..a4edc92
--- /dev/null
+++ b/src/commands/moderation/removerole.ts
@@ -0,0 +1,54 @@
+import { Command, CommandoMessage } from 'discord.js-commando';
+
+module.exports = class RemoveRoleModeration extends Command {
+ constructor(client) {
+ super(client, {
+ name: 'removerole',
+ aliases: ['roleremove'],
+ group: 'moderation',
+ memberName: 'removerole',
+ description: 'Removes a role to a specific user.',
+ args: [
+ {
+ key: 'userID',
+ prompt: 'Who would you like to remove the role from? (@someone or myself)',
+ type: 'string'
+ },
+ {
+ key: 'roleID',
+ prompt: 'What role would you like to remove?',
+ type: 'string'
+ }
+ ],
+ userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY', 'BAN_MEMBERS'],
+ clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY', 'BAN_MEMBERS'],
+ examples: [
+ 'uwu!removerole @CoolRole',
+ 'uwu!removerole @sin#1337 @CoolRole',
+ 'uwu!roleremove @sin#1337',
+ 'uwu!roleremove @sin#1337 @CoolerRole'
+ ]
+ });
+ }
+ run(msg: CommandoMessage, { userID, roleID }) {
+ let role = msg.guild.roles.cache.find(r => r.id === roleID);
+ let member = msg.mentions.members?.first();
+ if (!userID) {
+ if (role) {
+ console.log(role)
+ member?.roles.remove(role)
+ msg.reply(`The role **${role}** has been remove from **${member}**.`)
+ } else {
+ console.log(role)
+ msg.reply('Role is either non-existant or you might\'ve mispelled it.')
+ }
+ } else if (!userID) {
+ if (roleID) {
+ member?.roles.remove(roleID)
+ } else {
+ console.log(roleID)
+ msg.reply('Role is either non-existant or you might\'ve mispelled it.')
+ }
+ }
+ }
+}; \ No newline at end of file