async def caps_on_message(self, message): if not message.guild: return if message.author.bot: return if not message.content: return number_of_caps = sum(1 for letter in message.content if letter.isupper()) if (number_of_caps >= len(message.content) * 0.6) and (len( message.content.split()) > 1): query = "SELECT toggle FROM caps WHERE guild_id = $1" caps = await self.bot.pool.fetchval(query, message.guild.id) if not caps: return proxy_ctx = Object(id=None) proxy_ctx.guild = message.guild proxy_ctx.author = message.author proxy_ctx.bot = self.bot if not await checks.has_level(proxy_ctx, "mod"): try: await message.delete() except Forbidden: pass self.bot.dispatch("member_strike", message.author, "caps", message.content)
async def is_admin_in_guild(self, guild): proxy_ctx = Object(id=None) proxy_ctx.guild = guild proxy_ctx.author = guild.get_member(int(session["user"]["id"])) if not proxy_ctx.author: return False proxy_ctx.bot = self.bot if await checks.has_level(proxy_ctx, "admin"): return True
async def on_reaction_add(self, reaction, user): if reaction.emoji != "✨": return if reaction.message.guild.id != 250309924096049164: return proxy_ctx = Object(id=None) proxy_ctx.guild = reaction.message.guild proxy_ctx.author = user proxy_ctx.bot = self.bot if not await checks.has_level(proxy_ctx, "mod"): return role = reaction.message.guild.get_role(346083000372428811) await self.bot.error_hook.send(role) await reaction.message.author.add_roles(role)
async def image_on_message(self, message): if not message.guild: return if message.author.bot: return if not message.attachments: return number_of_images = sum( [1 for image in message.attachments if image.height]) if number_of_images < 1: return if message.guild.id not in self.image_cache: return proxy_ctx = Object(id=None) proxy_ctx.guild = message.guild proxy_ctx.author = message.author proxy_ctx.bot = self.bot if await checks.has_level(proxy_ctx, "mod"): return if message.author not in self.image_cache[message.guild.id]: amount = self.image_cache[message.guild.id]["amount"] time = self.image_cache[message.guild.id]["time"] self.image_cache[message.guild.id][ message.author] = cooldown.Cooldown(amount, time) user_cooldown = self.image_cache[message.guild.id][message.author] user_cooldown.check_reset() for mention in range(0, number_of_images): user_cooldown.increment() if user_cooldown.is_allowed(): pass else: try: await message.delete() except Forbidden: pass self.bot.dispatch( "member_strike", message.author, "image", "\n".join(attachment.url for attachment in message.attachments))
async def mention_on_message(self, message): if not message.guild: return if message.author.bot: return if message.guild.id not in self.mention_cache: return user_mentions = len(message.raw_mentions) role_mentions = len(message.raw_role_mentions) total_mentions = user_mentions + role_mentions if total_mentions < 1: return proxy_ctx = Object(id=None) proxy_ctx.guild = message.guild proxy_ctx.author = message.author proxy_ctx.bot = self.bot if await checks.has_level(proxy_ctx, "mod"): return if message.author not in self.mention_cache[message.guild.id]: amount = self.mention_cache[message.guild.id]["amount"] time = self.mention_cache[message.guild.id]["time"] self.mention_cache[message.guild.id][ message.author] = cooldown.Cooldown(amount, time) user_cooldown = self.mention_cache[message.guild.id][message.author] user_cooldown.check_reset() for mention in range(0, total_mentions): user_cooldown.increment() if user_cooldown.is_allowed(): pass else: try: await message.delete() except Forbidden: pass self.bot.dispatch("member_strike", message.author, "mention", message.content)
async def censor_on_message(self, message): if not message.guild: return if message.author.bot: return if message.guild.id not in self.censor_cache: return proxy_ctx = Object(id=None) proxy_ctx.guild = message.guild proxy_ctx.author = message.author proxy_ctx.bot = self.bot if await checks.has_level(proxy_ctx, "mod"): return if self.censor_cache[message.guild.id].search(message.content): try: await message.delete() except Forbidden: pass self.bot.dispatch("member_strike", message.author, "censor", message.content)