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)
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)
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))
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))