add piracy trigger context logging

This commit is contained in:
13xforever
2018-06-09 13:31:13 +05:00
committed by Roberto Anić Banić
parent eb0fe5af34
commit 3ec520a243
2 changed files with 26 additions and 12 deletions

17
bot.py
View File

@@ -98,7 +98,7 @@ async def on_reaction_add(reaction: Reaction, user: User):
if len(reporters) >= user_moderation_count_needed:
await message.add_reaction(user_moderation_character)
# noinspection PyTypeChecker
await report("User moderation report ⭐💵", trigger=None, message=message, reporters=reporters,
await report("User moderation report ⭐💵", trigger=None, trigger_context=None, message=message, reporters=reporters,
attention=True)
@@ -172,7 +172,7 @@ async def on_message(message: Message):
if error_code == LogAnalyzer.ERROR_SUCCESS:
continue
elif error_code == LogAnalyzer.ERROR_PIRACY:
await piracy_alert(message, log.get_trigger())
await piracy_alert(message, log.get_trigger(), log.get_trigger_context())
sent_log = True
break
elif error_code == LogAnalyzer.ERROR_OVERFLOW:
@@ -207,7 +207,7 @@ async def on_message(message: Message):
del log
async def report(report_kind: str, trigger: str, message: Message, reporters: List[Member], attention=False):
async def report(report_kind: str, trigger: str, trigger_context: str, message: Message, reporters: List[Member], attention=False):
author: Member = message.author
channel: TextChannel = message.channel
user: User = author._user
@@ -221,6 +221,7 @@ async def report(report_kind: str, trigger: str, message: Message, reporters: Li
if offending_content is None or offending_content == "":
offending_content = "🤔 something fishy is going on here, there was no message or attachment"
report_text = ("Triggered by: `" + trigger + "`\n") if trigger is not None else ""
report_text += ("Triggered in: ```" + trigger_context + "```\n") if trigger_context is not None else ""
report_text += "Not deleted/requires attention: @here" if attention else "Deleted/Doesn't require attention"
e = Embed(
title="Report for {}".format(report_kind),
@@ -257,7 +258,7 @@ async def piracy_check(message: Message):
await message.delete()
except Forbidden as fbe:
print("Couldn't delete the moderated message")
await report("Piracy", trigger, message, None, attention=True)
await report("Piracy", trigger, None, message, None, attention=True)
return
await message.channel.send(
"{author} Please follow the {rules} and do not discuss "
@@ -265,20 +266,20 @@ async def piracy_check(message: Message):
author=message.author.mention,
rules=rules_channel.mention
))
await report("Piracy", trigger, message, None, attention=False)
await report("Piracy", trigger, None, message, None, attention=False)
await add_warning_for_user(message.channel, message.author._user, 'Pirated Phrase Mentioned',
str(message.created_at) + ' - ' + message.content)
return True
# noinspection PyTypeChecker
async def piracy_alert(message: Message, trigger: str):
async def piracy_alert(message: Message, trigger: str, trigger_context: str):
try:
await message.delete()
await report("Pirated Release", trigger, message, None, attention=False)
await report("Pirated Release", trigger, trigger_context, message, None, attention=False)
except Forbidden as fbe:
print("Couldn't delete the moderated log attachment")
await report("Pirated Release", trigger, message, None, attention=True)
await report("Pirated Release", trigger, trigger_context, message, None, attention=True)
await message.channel.send(
"Pirated release detected {author}!\n"

View File

@@ -2,7 +2,7 @@ import re
import itertools
from collections import deque
from api import sanitize_string
from api import sanitize_string, trim_string
from api.result import ApiResult
from bot_config import piracy_strings
from bot_utils import get_code
@@ -24,7 +24,8 @@ class LogAnalyzer(object):
return self.ERROR_SUCCESS
if self.build_and_specs is None:
self.build_and_specs = self.parsed_data["build_and_specs"]
self.trigger = ''
self.trigger = None
self.trigger_context = None
self.buffer = ''
self.buffer_lines.clear()
self.libraries = []
@@ -33,8 +34,12 @@ class LogAnalyzer(object):
def piracy_check(self):
for trigger in piracy_strings:
if trigger.lower() in self.buffer.lower():
lower_trigger = trigger.lower()
if lower_trigger in self.buffer.lower():
self.trigger = trigger
for line in self.buffer_lines:
if lower_trigger in line.lower():
self.trigger_context = line
return self.ERROR_PIRACY
return self.ERROR_SUCCESS
@@ -160,7 +165,8 @@ class LogAnalyzer(object):
self.total_data_len = 0
self.phase_index = 0
self.build_and_specs = None
self.trigger = ''
self.trigger = None
self.trigger_context = None
self.libraries = []
self.parsed_data = {}
@@ -239,10 +245,17 @@ class LogAnalyzer(object):
for l in self.libraries:
libs.append(sanitize_string(l))
self.libraries = libs
if self.trigger is not None:
self.trigger = sanitize_string(self.trigger)
if self.trigger_context is not None:
self.trigger_context = sanitize_string(trim_string(self.trigger_context, 256))
def get_trigger(self):
return self.trigger
def get_trigger_context(self):
return self.trigger_context
def process_final_data(self):
group_args = self.parsed_data
if 'strict_rendering_mode' in group_args and group_args['strict_rendering_mode'] == 'true':