feat: (BETA) %freq graph

This commit is contained in:
Klemek
2021-07-13 18:04:46 +02:00
parent 07aed12463
commit 8b0fe859a7
4 changed files with 68 additions and 8 deletions
+12 -6
View File
@@ -14,11 +14,13 @@ from utils import generate_help
class FrequencyScanner(Scanner):
@staticmethod
def help() -> str:
return generate_help("freq", "Show frequency-related statistics")
return generate_help("freq", "(BETA) Show frequency-related statistics", args=[
"graph - plot hours of week",
],)
def __init__(self):
super().__init__(
valid_args=["all", "everyone"],
valid_args=["all", "everyone", "graph"],
help=FrequencyScanner.help(),
intro_context="Frequency",
)
@@ -27,6 +29,7 @@ class FrequencyScanner(Scanner):
self.freq = Frequency()
self.all_messages = "all" in args or "everyone" in args
self.member_specific = len(self.members) > 0
self.to_graph = "graph" in args
return True
def compute_message(self, channel: ChannelLogs, message: MessageLog):
@@ -36,10 +39,13 @@ class FrequencyScanner(Scanner):
def get_results(self, intro: str) -> List[str]:
FrequencyScanner.compute_results(self.freq)
res = [intro]
res += self.freq.to_string(
member_specific=self.member_specific,
)
if self.to_graph:
res = self.freq.to_graph()
else:
res = [intro]
res += self.freq.to_string(
member_specific=self.member_specific,
)
return res
@staticmethod
+10 -2
View File
@@ -288,15 +288,20 @@ class Scanner(ABC):
if self.mention_users
else discord.AllowedMentions.none()
)
file = None
for r in results:
if r:
if isinstance(r, int) and r == SPLIT_TOKEN:
if isinstance(r, discord.File):
file = r
elif isinstance(r, int) and r == SPLIT_TOKEN:
await message.channel.send(
response,
reference=message if first else None,
allowed_mentions=allowed_mentions,
file=file,
)
first = False
file = None
response = ""
elif isinstance(r, str):
if len(response + "\n" + r) > 2000:
@@ -304,15 +309,18 @@ class Scanner(ABC):
response,
reference=message if first else None,
allowed_mentions=allowed_mentions,
file=file,
)
first = False
file = None
response = ""
response += "\n" + r
if len(response) > 0:
if len(response) > 0 or file is not None:
await message.channel.send(
response,
reference=message if first else None,
allowed_mentions=allowed_mentions,
file=file,
)
command_cache.cache(self, message, args)
# Delete custom progress message