diff options
Diffstat (limited to 'src/commands/moderation')
| -rw-r--r-- | src/commands/moderation/addrole.ts | 55 | ||||
| -rw-r--r-- | src/commands/moderation/ban.ts | 25 | ||||
| -rw-r--r-- | src/commands/moderation/clear.ts | 77 | ||||
| -rw-r--r-- | src/commands/moderation/kick.ts | 29 | ||||
| -rw-r--r-- | src/commands/moderation/removerole.ts | 54 |
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 |