rewrite(statistics): Minor statistics refactor.

This commit is contained in:
2023-03-08 11:55:36 +02:00
parent aa174d8a1d
commit 42b68e8913
7 changed files with 70 additions and 69 deletions

View File

@@ -15,7 +15,14 @@ async def get_goals_card(
):
data: StatsData = bot.get_cog('StatsCog').data
lion = await bot.core.lions.fetch_member(guildid, userid)
if guildid:
lion = await bot.core.lions.fetch_member(guildid, userid)
user = await lion.fetch_member()
luser = lion.luser
else:
lion = luser = await bot.core.lions.fetch_user(userid)
user = await bot.fetch_user(userid)
today = lion.today
# Calculate periodid and select the correct model
@@ -25,14 +32,14 @@ async def get_goals_card(
start = today - timedelta(days=today.weekday())
start, end = apply_week_offset(start, offset), apply_week_offset(start, offset - 1)
periodid = extract_weekid(start)
key = {'guildid': guildid, 'userid': userid, 'weekid': periodid}
key = {'guildid': guildid or 0, 'userid': userid, 'weekid': periodid}
else:
goal_model = data.MonthlyGoals
tasks_model = data.MonthlyTasks
start = today.replace(day=1, hour=0, minute=0, second=0, microsecond=0)
start, end = apply_month_offset(start, offset), apply_month_offset(start, offset - 1)
periodid = extract_monthid(start)
key = {'guildid': guildid, 'userid': userid, 'monthid': periodid}
key = {'guildid': guildid or 0, 'userid': userid, 'monthid': periodid}
# Extract goals and tasks
goals = await goal_model.fetch_or_create(*key.values())
@@ -63,12 +70,12 @@ async def get_goals_card(
sessions_complete = 0.5
# Get member profile
if member := await lion.fetch_member():
username = (member.display_name, member.discriminator)
avatar = member.avatar.key
if user:
username = (user.display_name, user.discriminator)
avatar = user.avatar.key
else:
username = (lion.data.display_name, '#????')
avatar = lion.user_data.avatar_hash
avatar = luser.data.avatar_hash
# Getch badges
badges = await data.ProfileTag.fetch_tags(guildid, userid)

View File

@@ -14,7 +14,12 @@ from ..lib import apply_month_offset
async def get_monthly_card(bot: LionBot, userid: int, guildid: int, offset: int, mode: CardMode) -> MonthlyStatsCard:
data: StatsData = bot.get_cog('StatsCog').data
lion = await bot.core.lions.fetch_member(guildid, userid)
if guildid:
lion = await bot.core.lions.fetch_member(guildid, userid)
user = await lion.fetch_member()
else:
lion = await bot.core.lions.fetch_user(userid)
user = await bot.fetch_user(userid)
today = lion.today
month_start = today.replace(day=1, hour=0, minute=0, second=0, microsecond=0)
target = apply_month_offset(month_start, offset)
@@ -77,8 +82,8 @@ async def get_monthly_card(bot: LionBot, userid: int, guildid: int, offset: int,
monthly[i][day.day - 1] = stat / 3600
# Get member profile
if member := await lion.fetch_member():
username = (member.display_name, member.discriminator)
if user:
username = (user.display_name, user.discriminator)
else:
username = (lion.data.display_name, '#????')

View File

@@ -12,7 +12,12 @@ from ..data import StatsData
async def get_weekly_card(bot: LionBot, userid: int, guildid: int, offset: int, mode: CardMode) -> WeeklyStatsCard:
data: StatsData = bot.get_cog('StatsCog').data
lion = await bot.core.lions.fetch_member(guildid, userid)
if guildid:
lion = await bot.core.lions.fetch_member(guildid, userid)
user = await lion.fetch_member()
else:
lion = await bot.core.lions.fetch_user(userid)
user = await bot.fetch_user(userid)
today = lion.today
week_start = today - timedelta(days=today.weekday()) - timedelta(weeks=offset)
days = [week_start + timedelta(i) for i in range(-7, 7 if offset else (today.weekday() + 1))]
@@ -34,8 +39,8 @@ async def get_weekly_card(bot: LionBot, userid: int, guildid: int, offset: int,
day_stats.append(0)
# Get member profile
if member := await lion.fetch_member():
username = (member.display_name, member.discriminator)
if user:
username = (user.display_name, user.discriminator)
else:
username = (lion.data.display_name, '#????')