示例#1
0
    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)
示例#2
0
 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
示例#3
0
文件: lfg.py 项目: Dunkledore/yoribot
 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)
示例#4
0
    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))
示例#5
0
    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)
示例#6
0
    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)