improv: black
This commit is contained in:
+20
-14
@@ -46,33 +46,37 @@ class Frequency:
|
|||||||
if self.dates[0].hour <= busiest_hour and self.dates[-1].hour >= busiest_hour:
|
if self.dates[0].hour <= busiest_hour and self.dates[-1].hour >= busiest_hour:
|
||||||
n_hours += 1
|
n_hours += 1
|
||||||
|
|
||||||
plt.style.use('dark_background')
|
plt.style.use("dark_background")
|
||||||
|
|
||||||
fig, ax = plt.subplots()
|
fig, ax = plt.subplots()
|
||||||
|
|
||||||
fig.patch.set_facecolor('#36393F')
|
fig.patch.set_facecolor("#36393F")
|
||||||
ax.patch.set_alpha(0)
|
ax.patch.set_alpha(0)
|
||||||
|
|
||||||
times = range(25)
|
times = range(25)
|
||||||
|
|
||||||
for i in range(7):
|
for i in range(7):
|
||||||
hours = [self.hours[i][hour]*7/n_hours for hour in range(24)] + [self.hours[i][0]*7/n_hours]
|
hours = [self.hours[i][hour] * 7 / n_hours for hour in range(24)] + [
|
||||||
ax.plot(times, hours, label=calendar.day_name[i], linestyle='--', linewidth=0.8)
|
self.hours[i][0] * 7 / n_hours
|
||||||
|
]
|
||||||
|
ax.plot(
|
||||||
|
times, hours, label=calendar.day_name[i], linestyle="--", linewidth=0.8
|
||||||
|
)
|
||||||
|
|
||||||
hours = [day[hour]/n_hours for hour in range(24)] + [day[0]/n_hours]
|
hours = [day[hour] / n_hours for hour in range(24)] + [day[0] / n_hours]
|
||||||
ax.plot(times, hours, c='r', label='average', linewidth=1.5)
|
ax.plot(times, hours, c="r", label="average", linewidth=1.5)
|
||||||
|
|
||||||
ax.set_xlabel('hour of day')
|
ax.set_xlabel("hour of day")
|
||||||
ax.set_xlim([0, 24])
|
ax.set_xlim([0, 24])
|
||||||
ax.set_ylabel('average messages')
|
ax.set_ylabel("average messages")
|
||||||
ax.legend(framealpha=0)
|
ax.legend(framealpha=0)
|
||||||
|
|
||||||
with BytesIO() as f:
|
with BytesIO() as f:
|
||||||
plt.savefig(f, format='png', facecolor=fig.get_facecolor(), edgecolor='none')
|
plt.savefig(
|
||||||
|
f, format="png", facecolor=fig.get_facecolor(), edgecolor="none"
|
||||||
|
)
|
||||||
f.seek(0)
|
f.seek(0)
|
||||||
return [
|
return [discord.File(f, f"{time.time()}-plot.png")]
|
||||||
discord.File(f, f"{time.time()}-plot.png")
|
|
||||||
]
|
|
||||||
|
|
||||||
def to_string(
|
def to_string(
|
||||||
self,
|
self,
|
||||||
@@ -107,14 +111,16 @@ class Frequency:
|
|||||||
f"- **messages/day**: {precise(total_msg/delta.days, precision=3)}",
|
f"- **messages/day**: {precise(total_msg/delta.days, precision=3)}",
|
||||||
f"- **busiest day of week**: {calendar.day_name[busiest_weekday]} (~{precise(week[busiest_weekday]/n_weekdays, precision=3)} msg, {percent(week[busiest_weekday]/total_msg)})",
|
f"- **busiest day of week**: {calendar.day_name[busiest_weekday]} (~{precise(week[busiest_weekday]/n_weekdays, precision=3)} msg, {percent(week[busiest_weekday]/total_msg)})",
|
||||||
f"- **quietest day of week**: {calendar.day_name[quietest_weekday]} (~{precise(week[quietest_weekday]/n_weekdays, precision=3)} msg, {percent(week[quietest_weekday]/total_msg)})"
|
f"- **quietest day of week**: {calendar.day_name[quietest_weekday]} (~{precise(week[quietest_weekday]/n_weekdays, precision=3)} msg, {percent(week[quietest_weekday]/total_msg)})"
|
||||||
if week[quietest_weekday] > 0 else "",
|
if week[quietest_weekday] > 0
|
||||||
|
else "",
|
||||||
f"- **busiest day ever**: {from_now(self.busiest_day)} ({self.busiest_day_count} msg)"
|
f"- **busiest day ever**: {from_now(self.busiest_day)} ({self.busiest_day_count} msg)"
|
||||||
if self.busiest_day is not None
|
if self.busiest_day is not None
|
||||||
else "",
|
else "",
|
||||||
f"- **messages/hour**: {precise(total_msg*3600/delta.total_seconds(), precision=3)}",
|
f"- **messages/hour**: {precise(total_msg*3600/delta.total_seconds(), precision=3)}",
|
||||||
f"- **busiest hour of day**: {busiest_hour:0>2}:00 (~{precise(day[busiest_hour]/n_hours, precision=3)} msg, {percent(day[busiest_hour]/total_msg)})",
|
f"- **busiest hour of day**: {busiest_hour:0>2}:00 (~{precise(day[busiest_hour]/n_hours, precision=3)} msg, {percent(day[busiest_hour]/total_msg)})",
|
||||||
f"- **quietest hour of day**: {quietest_hour:0>2}:00 (~{precise(day[quietest_hour]/n_hours, precision=3)} msg, {percent(day[quietest_hour]/total_msg)})"
|
f"- **quietest hour of day**: {quietest_hour:0>2}:00 (~{precise(day[quietest_hour]/n_hours, precision=3)} msg, {percent(day[quietest_hour]/total_msg)})"
|
||||||
if day[quietest_hour] > 0 else "",
|
if day[quietest_hour] > 0
|
||||||
|
else "",
|
||||||
f"- **busiest hour ever**: {from_now(self.busiest_hour)} ({self.busiest_hour_count} msg)",
|
f"- **busiest hour ever**: {from_now(self.busiest_hour)} ({self.busiest_hour_count} msg)",
|
||||||
f"- **longest break**: {plural(round(self.longest_break.total_seconds()/3600), 'hour')} ({plural(self.longest_break.days,'day')}), started {from_now(self.longest_break_start)}",
|
f"- **longest break**: {plural(round(self.longest_break.total_seconds()/3600), 'hour')} ({plural(self.longest_break.days,'day')}), started {from_now(self.longest_break_start)}",
|
||||||
f"- **avg. streak**: {precise(sum(self.streaks)/len(self.streaks), precision=3)} msg",
|
f"- **avg. streak**: {precise(sum(self.streaks)/len(self.streaks), precision=3)} msg",
|
||||||
|
|||||||
@@ -14,9 +14,13 @@ from utils import generate_help
|
|||||||
class FrequencyScanner(Scanner):
|
class FrequencyScanner(Scanner):
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def help() -> str:
|
def help() -> str:
|
||||||
return generate_help("freq", "(BETA) Show frequency-related statistics", args=[
|
return generate_help(
|
||||||
|
"freq",
|
||||||
|
"(BETA) Show frequency-related statistics",
|
||||||
|
args=[
|
||||||
"graph - plot hours of week",
|
"graph - plot hours of week",
|
||||||
],)
|
],
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__(
|
super().__init__(
|
||||||
|
|||||||
Reference in New Issue
Block a user