refactoring

This commit is contained in:
klemek
2021-01-08 16:31:38 +01:00
parent ea0febfb3c
commit 7702e36fa0
5 changed files with 19 additions and 13 deletions
+1
View File
@@ -1 +1,2 @@
from .emote import Emote
from .freq import Frequency
+2
View File
@@ -0,0 +1,2 @@
class Frequency:
pass
+7 -1
View File
@@ -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):
+7 -3
View File
@@ -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):
+2 -9
View File
@@ -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