From d5a3667cfb6fa1662fc31a26e80e8fe93934805d Mon Sep 17 00:00:00 2001 From: Klemek Date: Tue, 18 May 2021 18:13:51 +0200 Subject: [PATCH] prepare history scanner for images --- src/scanners/first_scanner.py | 3 +++ src/scanners/history_scanner.py | 24 +++++++++++++++++------- src/scanners/last_scanner.py | 3 +++ src/scanners/random_scanner.py | 3 +++ 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/scanners/first_scanner.py b/src/scanners/first_scanner.py index 1048e2c..ab98add 100644 --- a/src/scanners/first_scanner.py +++ b/src/scanners/first_scanner.py @@ -14,5 +14,8 @@ class FirstScanner(HistoryScanner): def __init__(self): super().__init__(help=FirstScanner.help()) + def allow_message(self, *_) -> bool: + return True + def get_results(self, intro: str) -> List[str]: return self.history.to_string(type="first") diff --git a/src/scanners/history_scanner.py b/src/scanners/history_scanner.py index 5a3ae4c..7ddcbaf 100644 --- a/src/scanners/history_scanner.py +++ b/src/scanners/history_scanner.py @@ -1,5 +1,5 @@ from abc import ABC, abstractmethod -from typing import List +from typing import Callable, List import discord # Custom libs @@ -10,10 +10,10 @@ from logs import ChannelLogs, MessageLog class HistoryScanner(Scanner, ABC): - def __init__(self, *, help: str): + def __init__(self, *, valid_args: List[str] = [], help: str): super().__init__( has_digit_args=True, - valid_args=["all", "everyone"], + valid_args=["all", "everyone"] + valid_args, help=help, intro_context="", ) @@ -30,12 +30,17 @@ class HistoryScanner(Scanner, ABC): self.history, self.raw_members, all_messages=self.all_messages, + allow_message=self.allow_message, ) @abstractmethod def get_results(self, intro: str): pass + @abstractmethod + def allow_message(self, channel: ChannelLogs, message: MessageLog) -> bool: + pass + @staticmethod def analyse_message( channel: ChannelLogs, @@ -44,14 +49,19 @@ class HistoryScanner(Scanner, ABC): raw_members: List[int], *, all_messages: bool, + allow_message: Callable ) -> bool: impacted = False # If author is included in the selection (empty list is all) if ( - (not message.bot or all_messages) - and len(raw_members) == 0 - or message.author in raw_members - ) and (message.content or message.attachment): + ( + (not message.bot or all_messages) + and len(raw_members) == 0 + or message.author in raw_members + ) + and (message.content or message.attachment) + and allow_message(channel, message) + ): impacted = True history.messages += [message] return impacted diff --git a/src/scanners/last_scanner.py b/src/scanners/last_scanner.py index 3d8cbf0..eb69fb4 100644 --- a/src/scanners/last_scanner.py +++ b/src/scanners/last_scanner.py @@ -14,5 +14,8 @@ class LastScanner(HistoryScanner): def __init__(self): super().__init__(help=LastScanner.help()) + def allow_message(self, *_) -> bool: + return True + def get_results(self, intro: str) -> List[str]: return self.history.to_string(type="last") diff --git a/src/scanners/random_scanner.py b/src/scanners/random_scanner.py index f4fb7a9..990ebd1 100644 --- a/src/scanners/random_scanner.py +++ b/src/scanners/random_scanner.py @@ -14,5 +14,8 @@ class RandomScanner(HistoryScanner): def __init__(self): super().__init__(help=RandomScanner.help()) + def allow_message(self, *_) -> bool: + return True + def get_results(self, intro: str) -> List[str]: return self.history.to_string(type="random")