start moderation module, readd tidy
This commit is contained in:
		
							parent
							
								
									88507c511a
								
							
						
					
					
						commit
						7009fa9491
					
				
					 1 changed files with 85 additions and 0 deletions
				
			
		
							
								
								
									
										85
									
								
								src/modules/moderation.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								src/modules/moderation.js
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,85 @@
 | 
				
			||||||
 | 
					const Command = require("../lib/command.js");
 | 
				
			||||||
 | 
					const CATEGORY = "moderation";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const {lookupUser} = require("../lib/utils.js");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const tidy = new Command("tidy");
 | 
				
			||||||
 | 
					tidy.addAlias("prune");
 | 
				
			||||||
 | 
					tidy.addAlias("purge");
 | 
				
			||||||
 | 
					tidy.category = CATEGORY;
 | 
				
			||||||
 | 
					tidy.helpText = "Clean up messages";
 | 
				
			||||||
 | 
					tidy.usage = "[subcommand] <count> <extra>";
 | 
				
			||||||
 | 
					tidy.callback = async function (msg, line, subcommand, count, extra) {
 | 
				
			||||||
 | 
					  if (!msg.channel.permissionsOf(msg.author.id).has("MANAGE_MESSAGES")) {
 | 
				
			||||||
 | 
					    return "You do not have `Manage Messages` permission.";
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  if (!msg.channel.permissionsOf(hf.bot.user.id).has("MANAGE_MESSAGES")) {
 | 
				
			||||||
 | 
					    return "I do not have `Manage Messages` permission.";
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  switch (subcommand) {
 | 
				
			||||||
 | 
					    case "all": {
 | 
				
			||||||
 | 
					      const messages = await msg.channel.getMessages({
 | 
				
			||||||
 | 
					        after: msg.id,
 | 
				
			||||||
 | 
					        limit: count && parseInt(count) > 0 ? parseInt(count) : 10,
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					      await msg.channel.deleteMessages(
 | 
				
			||||||
 | 
					        messages.map((m) => m.id),
 | 
				
			||||||
 | 
					        `Message purge by ${msg.author.tag}`
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      return `Deleted ${messages.length} messages.`;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    case "user": {
 | 
				
			||||||
 | 
					      const user = await lookupUser(count);
 | 
				
			||||||
 | 
					      if (typeof user === "string") {
 | 
				
			||||||
 | 
					        return user;
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        const messages = await msg.channel.getMessages({
 | 
				
			||||||
 | 
					          after: msg.id,
 | 
				
			||||||
 | 
					          limit: extra && parseInt(extra) > 0 ? parseInt(extra) : 10,
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        await msg.channel.deleteMessages(
 | 
				
			||||||
 | 
					          messages.filter((m) => m.author.id == user.id).map((m) => m.id),
 | 
				
			||||||
 | 
					          `Message purge by ${msg.author.tag} targeting ${user.tag}`
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return `Deleted ${messages.length} messages.`;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    case "bots": {
 | 
				
			||||||
 | 
					      const messages = await msg.channel.getMessages({
 | 
				
			||||||
 | 
					        after: msg.id,
 | 
				
			||||||
 | 
					        limit: count && parseInt(count) > 0 ? parseInt(count) : 50,
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					      await msg.channel.deleteMessages(
 | 
				
			||||||
 | 
					        messages.filter((m) => msg.author.bot).map((m) => m.id),
 | 
				
			||||||
 | 
					        `Message purge by ${msg.author.tag} targeting bots`
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      return `Deleted ${messages.length} messages.`;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    case "filter": {
 | 
				
			||||||
 | 
					      if (count.length === 0)
 | 
				
			||||||
 | 
					        return "Filter must be at least 1 character long.";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      const messages = await msg.channel.getMessages({
 | 
				
			||||||
 | 
					        after: msg.id,
 | 
				
			||||||
 | 
					        limit: extra && parseInt(extra) > 0 ? parseInt(extra) : 10,
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					      await msg.channel.deleteMessages(
 | 
				
			||||||
 | 
					        messages.filter((m) => m.content.indexOf(count) > -1).map((m) => m.id),
 | 
				
			||||||
 | 
					        `Message purge by ${msg.author.tag} targeting "${count}"`
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      return `Deleted ${messages.length} messages.`;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    default:
 | 
				
			||||||
 | 
					      return `__Usage__
 | 
				
			||||||
 | 
					• \`all <count = 10>\` - Last \`count\` messages.
 | 
				
			||||||
 | 
					• \`user [user] <count = 10>\` - Last \`count\` messages from \`user\`.
 | 
				
			||||||
 | 
					• \`bots <count = 50>\` - Last \`count\` messages from bots.
 | 
				
			||||||
 | 
					• \`filter [string] <count = 10>\` - Last \`count\` messages whose content matches \`string\`.`;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					hf.registerCommand(tidy);
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue