diff --git a/src/data_types/__init__.py b/src/data_types/__init__.py index 1ea4568..ed078a3 100644 --- a/src/data_types/__init__.py +++ b/src/data_types/__init__.py @@ -1 +1,2 @@ from .emote import Emote +from .freq import Frequency diff --git a/src/data_types/frequency.py b/src/data_types/frequency.py new file mode 100644 index 0000000..d3eb80e --- /dev/null +++ b/src/data_types/frequency.py @@ -0,0 +1,2 @@ +class Frequency: + pass diff --git a/src/scanners/emotes_scanner.py b/src/scanners/emotes_scanner.py index 670ea66..a8552ac 100644 --- a/src/scanners/emotes_scanner.py +++ b/src/scanners/emotes_scanner.py @@ -1,4 +1,5 @@ from typing import Dict, List +from collections import defaultdict import discord @@ -35,7 +36,8 @@ class EmotesScanner(Scanner): self.all_emojis = False self.show_members = False - async def compute_args(self, message: discord.Message, *args: str) -> bool: + async def init(self, message: discord.Message, *args: str) -> bool: + guild = message.channel.guild # get max emotes to view self.top = 20 for arg in args: @@ -46,6 +48,10 @@ class EmotesScanner(Scanner): self.show_members = "members" in args and ( len(self.members) == 0 or len(self.members) > 1 ) + # Create emotes dict from custom emojis of the guild + self.emotes = defaultdict(Emote) + for emoji in guild.emojis: + self.emotes[str(emoji)] = Emote(emoji) return True def compute_message(self, channel: ChannelLogs, message: MessageLog): diff --git a/src/scanners/frequency_scanner.py b/src/scanners/frequency_scanner.py index 0cb1ee5..48c300d 100644 --- a/src/scanners/frequency_scanner.py +++ b/src/scanners/frequency_scanner.py @@ -5,6 +5,7 @@ import discord # Custom libs from .scanner import Scanner +from data_types import Frequency from logs import ChannelLogs, MessageLog @@ -25,11 +26,12 @@ class FrequencyScanner(Scanner): intro_context="frequency", ) - async def compute_args(self, message: discord.Message, *args: str) -> bool: + async def init(self, message: discord.Message, *args: str) -> bool: + self.freq = Frequency() return True def compute_message(self, channel: ChannelLogs, message: MessageLog): - return FrequencyScanner.analyse_message(message, self.raw_members) + return FrequencyScanner.analyse_message(message, self.freq, self.raw_members) def get_results(self, intro: str) -> List[str]: res = [intro] @@ -37,7 +39,9 @@ class FrequencyScanner(Scanner): return res @staticmethod - def analyse_message(message: MessageLog, raw_members: List[int]) -> bool: + def analyse_message( + message: MessageLog, freq: Frequency, raw_members: List[int] + ) -> bool: impacted = False # If author is included in the selection (empty list is all) if not message.bot and (len(raw_members) == 0 or message.author in raw_members): diff --git a/src/scanners/scanner.py b/src/scanners/scanner.py index 31a4135..7922ef5 100644 --- a/src/scanners/scanner.py +++ b/src/scanners/scanner.py @@ -1,11 +1,9 @@ from abc import ABC, abstractmethod from typing import List -from collections import defaultdict import discord from utils import no_duplicate, get_intro from logs import GuildLogs, ChannelLogs, MessageLog -from data_types import Emote class Scanner(ABC): @@ -56,11 +54,6 @@ class Scanner(ABC): ) return - # Create emotes dict from custom emojis of the guild - self.emotes = defaultdict(Emote) - for emoji in guild.emojis: - self.emotes[str(emoji)] = Emote(emoji) - # Get selected channels or all of them if no channel arguments self.channels = no_duplicate(message.channel_mentions) self.full = len(self.channels) == 0 @@ -71,7 +64,7 @@ class Scanner(ABC): self.members = no_duplicate(message.mentions) self.raw_members = no_duplicate(message.raw_mentions) - if not await self.compute_args(message, *args): + if not await self.init(message, *args): return # Start computing data @@ -119,7 +112,7 @@ class Scanner(ABC): await progress.delete() @abstractmethod - async def compute_args(self, message: discord.Message, *args: str) -> bool: + async def init(self, message: discord.Message, *args: str) -> bool: pass @abstractmethod