예제 #1
0
    async def censor_invite(self, ctx, code, server_name):
        # Allow for users with a trusted role, or trusted users, to post invite links
        if Configuration.get_var(
                ctx.guild.id, "CENSORING",
                "ALLOW_TRUSTED_BYPASS") and Permissioncheckers.is_trusted(
                    ctx.author):
            return

        ctx.bot.data["message_deletes"].add(ctx.message.id)
        clean_message = await clean_content().convert(ctx, ctx.message.content)
        clean_name = Utils.clean_user(ctx.message.author)
        try:
            await ctx.message.delete()
            GearbotLogging.log_key(ctx.guild.id,
                                   'censored_invite',
                                   user=clean_name,
                                   code=code,
                                   message=clean_message,
                                   server_name=server_name,
                                   user_id=ctx.message.author.id,
                                   channel=ctx.message.channel.mention)
        except discord.NotFound:
            # we failed? guess we lost the race, log anyways
            GearbotLogging.log_key(ctx.guild.id,
                                   'invite_censor_fail',
                                   user=clean_name,
                                   code=code,
                                   message=clean_message,
                                   server_name=server_name,
                                   user_id=ctx.message.author.id,
                                   channel=ctx.message.channel.mention)
            if ctx.message.id in ctx.bot.data["message_deletes"]:
                ctx.bot.data["message_deletes"].remove(ctx.message.id)
        except discord.Forbidden:
            GearbotLogging.log_key(ctx.guild.id,
                                   'invite_censor_forbidden',
                                   user=clean_name,
                                   code=code,
                                   message=clean_message,
                                   server_name=server_name,
                                   user_id=ctx.message.author.id,
                                   channel=ctx.message.channel.mention)
            if ctx.message.id in ctx.bot.data["message_deletes"]:
                ctx.bot.data["message_deletes"].remove(ctx.message.id)
        self.bot.dispatch("user_censored", ctx.message)
예제 #2
0
    async def censor_invite(self, member, message_id, channel, code,
                            server_name, content):
        # Allow for users with a trusted role, or trusted users, to post invite links
        if Configuration.get_var(member.guild.id, "CENSORING",
                                 "ALLOW_TRUSTED_BYPASS"
                                 ) and Permissioncheckers.is_trusted(member):
            return

        self.bot.data["message_deletes"].add(message_id)
        clean_message = await Utils.clean(content, member.guild)
        clean_name = Utils.clean_user(member)
        try:
            await channel.delete_messages([discord.Object(message_id)])
            GearbotLogging.log_key(member.guild.id,
                                   'censored_invite',
                                   user=clean_name,
                                   code=code,
                                   message=clean_message,
                                   server_name=server_name,
                                   user_id=member.id,
                                   channel=channel.mention)
        except discord.NotFound:
            # we failed? guess we lost the race, log anyways
            GearbotLogging.log_key(member.guild.id,
                                   'invite_censor_fail',
                                   user=clean_name,
                                   code=code,
                                   message=clean_message,
                                   server_name=server_name,
                                   user_id=member.id,
                                   channel=channel.mention)
            if message_id in self.bot.data["message_deletes"]:
                self.bot.data["message_deletes"].remove(message_id)
        except discord.Forbidden:
            GearbotLogging.log_key(member.guild.id,
                                   'invite_censor_forbidden',
                                   user=clean_name,
                                   code=code,
                                   message=clean_message,
                                   server_name=server_name,
                                   user_id=member.id,
                                   channel=channel.mention)
            if message_id in self.bot.data["message_deletes"]:
                self.bot.data["message_deletes"].remove(message_id)
예제 #3
0
파일: Censor.py 프로젝트: ginkoid/bargebot
    async def censor_invite(self, member, message_id, channel, code,
                            server_name, content, edit, reply, attachments):
        # Allow for users with a trusted role, or trusted users, to post invite links
        if Configuration.get_var(member.guild.id, "CENSORING",
                                 "ALLOW_TRUSTED_BYPASS"
                                 ) and Permissioncheckers.is_trusted(member):
            return

        e = '_edit' if edit else ''

        self.bot.data["message_deletes"].add(message_id)
        clean_message = await Utils.clean(content, member.guild)
        clean_name = Utils.clean_user(member)
        reply_str = ""
        if reply is not None:
            reply_str = f"\n**{Translator.translate('in_reply_to', member.guild.id)}: **<{assemble_jumplink(member.guild.id, channel.id, reply)}>"

        if attachments is None:
            attachments = await LoggedAttachment.filter(message=message_id)

        if len(attachments) > 0:
            attachments_str = f"**{Translator.translate('attachments', member.guild.id, count=len(attachments))}:** "
            attachments_str += ', '.join(
                Utils.assemble_attachment(
                    channel.id, attachment.id, attachment.filename if hasattr(
                        attachment, "filename") else attachment.name)
                for attachment in attachments)
        else:
            attachments_str = ""
        clean_message = Utils.trim_message(
            clean_message, 1600 - len(attachments_str) - len(reply_str))
        try:
            await channel.delete_messages([discord.Object(message_id)])
            GearbotLogging.log_key(member.guild.id,
                                   f'censored_invite{e}',
                                   user=clean_name,
                                   code=code,
                                   message=clean_message,
                                   server_name=server_name,
                                   user_id=member.id,
                                   channel=channel.mention,
                                   attachments=attachments_str,
                                   reply=reply_str)
        except discord.NotFound:
            # we failed? guess we lost the race, log anyways
            GearbotLogging.log_key(member.guild.id,
                                   f'invite_censor_fail{e}',
                                   user=clean_name,
                                   code=code,
                                   message=clean_message,
                                   server_name=server_name,
                                   user_id=member.id,
                                   channel=channel.mention,
                                   attachments=attachments_str,
                                   reply=reply_str)
            if message_id in self.bot.data["message_deletes"]:
                self.bot.data["message_deletes"].remove(message_id)
        except discord.Forbidden:
            GearbotLogging.log_key(member.guild.id,
                                   f'invite_censor_forbidden{e}',
                                   user=clean_name,
                                   code=code,
                                   message=clean_message,
                                   server_name=server_name,
                                   user_id=member.id,
                                   channel=channel.mention,
                                   attachments=attachments_str,
                                   reply=reply_str)
            if message_id in self.bot.data["message_deletes"]:
                self.bot.data["message_deletes"].remove(message_id)

        self.bot.dispatch(
            "user_censored",
            messageholder(message_id, member, channel, channel.guild))
예제 #4
0
파일: Censor.py 프로젝트: ginkoid/bargebot
    async def censor_message(self,
                             message_id,
                             content,
                             channel,
                             member,
                             bad,
                             key="",
                             edit=False,
                             reply="",
                             attachments=""):
        if Configuration.get_var(member.guild.id, "CENSORING",
                                 "ALLOW_TRUSTED_CENSOR_BYPASS"
                                 ) and Permissioncheckers.is_trusted(member):
            return
        e = '_edit' if edit else ''
        clean_message = await Utils.clean(content,
                                          channel.guild,
                                          markdown=False)
        reply_str = ""
        if reply is not None:
            reply_str = f"\n**{Translator.translate('in_reply_to', member.guild.id)}: **<{assemble_jumplink(member.guild.id, channel.id, reply)}>"

        if attachments is None:
            attachments = await LoggedAttachment.filter(message=message_id)

        if len(attachments) > 0:
            attachments_str = f"**{Translator.translate('attachments', member.guild.id, count=len(attachments))}:** "
            attachments_str += ', '.join(
                Utils.assemble_attachment(
                    channel.id, attachment.id, attachment.filename if hasattr(
                        attachment, "filename") else attachment.name)
                for attachment in attachments)
        else:
            attachments_str = ""
        clean_message = Utils.trim_message(
            clean_message, 1600 - len(attachments_str) - len(reply_str))
        if channel.permissions_for(channel.guild.me).manage_messages:
            try:
                self.bot.data["message_deletes"].add(message_id)
                await channel.delete_messages([discord.Object(message_id)])
            except discord.NotFound as ex:
                pass
            else:
                GearbotLogging.log_key(channel.guild.id,
                                       f'censored_message{key}{e}',
                                       user=member,
                                       user_id=member.id,
                                       message=clean_message,
                                       sequence=bad,
                                       channel=channel.mention,
                                       reply=reply_str,
                                       attachments=attachments_str)
        else:
            GearbotLogging.log_key(
                channel.guild.id,
                f'censored_message_failed{key}{e}',
                user=member,
                user_id=member.id,
                message=clean_message,
                sequence=bad,
                link='https://discord.com/channels/{0}/{1}/{2}'.format(
                    channel.guild.id, channel.id, message_id),
                reply=reply_str,
                attachments=attachments_str)
        self.bot.dispatch(
            "user_censored",
            messageholder(message_id, member, channel, channel.guild))