(badges): Update to account for session tracker.

Include current sessions in new badge scans.
Remove the voice update badge hook.
Account for current session in the current badge view.
This commit is contained in:
2021-12-04 11:13:26 +02:00
parent 144ccf9e81
commit bb181d9039
3 changed files with 5 additions and 17 deletions

View File

@@ -8,7 +8,6 @@ import discord
from meta import client from meta import client
from data.conditions import GEQ from data.conditions import GEQ
from core import Lion
from core.data import lions from core.data import lions
from utils.lib import strfdur from utils.lib import strfdur
from settings import GuildSettings from settings import GuildSettings
@@ -56,7 +55,8 @@ async def update_study_badges(full=False):
# Retrieve member rows with out of date study badges # Retrieve member rows with out of date study badges
if not full and client.appdata.last_study_badge_scan is not None: if not full and client.appdata.last_study_badge_scan is not None:
update_rows = new_study_badges.select_where( update_rows = new_study_badges.select_where(
_timestamp=GEQ(client.appdata.last_study_badge_scan or 0) _timestamp=GEQ(client.appdata.last_study_badge_scan or 0),
_extra="OR session_start IS NOT NULL"
) )
else: else:
update_rows = new_study_badges.select_where() update_rows = new_study_badges.select_where()
@@ -287,7 +287,6 @@ async def study_badge_tracker():
""" """
while True: while True:
try: try:
Lion.sync()
await update_study_badges() await update_study_badges()
except Exception: except Exception:
# Unknown exception. Catch it so the loop doesn't die. # Unknown exception. Catch it so the loop doesn't die.
@@ -304,11 +303,10 @@ async def study_badge_tracker():
await asyncio.sleep(60) await asyncio.sleep(60)
async def _update_member_studybadge(member): async def update_member_studybadge(member):
""" """
Checks and (if required) updates the study badge for a single member. Checks and (if required) updates the study badge for a single member.
""" """
Lion.fetch(member.guild.id, member.id).flush()
update_rows = new_study_badges.select_where( update_rows = new_study_badges.select_where(
guildid=member.guild.id, guildid=member.guild.id,
userid=member.id userid=member.id
@@ -332,16 +330,6 @@ async def _update_member_studybadge(member):
await _update_guild_badges(member.guild, update_rows) await _update_guild_badges(member.guild, update_rows)
@client.add_after_event("voice_state_update")
async def voice_studybadge_updater(client, member, before, after):
if not client.is_ready():
# The poll loop will pick it up
return
if before.channel and not after.channel:
await _update_member_studybadge(member)
@module.launch_task @module.launch_task
async def launch_study_badge_tracker(client): async def launch_study_badge_tracker(client):
asyncio.create_task(study_badge_tracker()) asyncio.create_task(study_badge_tracker())

View File

@@ -125,7 +125,7 @@ CREATE VIEW current_study_badges AS
*, *,
(SELECT r.badgeid (SELECT r.badgeid
FROM study_badges r FROM study_badges r
WHERE r.guildid = members_totals.guildid AND members_totals.tracked_time > r.required_time WHERE r.guildid = members_totals.guildid AND members_totals.total_tracked_time > r.required_time
ORDER BY r.required_time DESC ORDER BY r.required_time DESC
LIMIT 1) AS current_study_badgeid LIMIT 1) AS current_study_badgeid
FROM members_totals; FROM members_totals;

View File

@@ -563,7 +563,7 @@ CREATE VIEW current_study_badges AS
*, *,
(SELECT r.badgeid (SELECT r.badgeid
FROM study_badges r FROM study_badges r
WHERE r.guildid = members_totals.guildid AND members_totals.tracked_time > r.required_time WHERE r.guildid = members_totals.guildid AND members_totals.total_tracked_time > r.required_time
ORDER BY r.required_time DESC ORDER BY r.required_time DESC
LIMIT 1) AS current_study_badgeid LIMIT 1) AS current_study_badgeid
FROM members_totals; FROM members_totals;