refactor: Update study module structure.

Prepare `study` module for session and timer systems.
Move regular sync to the studybadge loop.
This commit is contained in:
2021-10-26 17:33:44 +03:00
parent 0b7b84556d
commit 5ea7d06dae
12 changed files with 28 additions and 20 deletions

View File

@@ -68,9 +68,10 @@ async def preload_studying_members(client):
) )
@module.launch_task # Removing the sync loop in favour of the studybadge sync.
async def launch_lion_sync_loop(client): # @module.launch_task
asyncio.create_task(_lion_sync_loop()) # async def launch_lion_sync_loop(client):
# asyncio.create_task(_lion_sync_loop())
@module.unload_task @module.unload_task

View File

@@ -1,9 +1,8 @@
from .module import module from .module import module
from . import data from . import badges
from . import admin from . import timers
from . import badge_tracker from . import tracking
from . import time_tracker
from . import top_cmd from . import top_cmd
from . import studybadge_cmd
from . import stats_cmd from . import stats_cmd

View File

@@ -0,0 +1,2 @@
from . import badge_tracker
from . import studybadge_cmd

View File

@@ -13,7 +13,7 @@ from core.data import lions
from utils.lib import strfdur from utils.lib import strfdur
from settings import GuildSettings from settings import GuildSettings
from .module import module from ..module import module
from .data import new_study_badges, study_badges from .data import new_study_badges, study_badges
@@ -287,6 +287,7 @@ 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.

View File

@@ -2,8 +2,6 @@ from cachetools import cached
from data import Table, RowTable from data import Table, RowTable
untracked_channels = Table('untracked_channels')
study_badges = RowTable( study_badges = RowTable(
'study_badges', 'study_badges',
('badgeid', 'guildid', 'roleid', 'required_time'), ('badgeid', 'guildid', 'roleid', 'required_time'),

View File

@@ -12,7 +12,7 @@ from wards import is_guild_admin
from core.data import lions from core.data import lions
from settings import GuildSettings from settings import GuildSettings
from .module import module from ..module import module
from .data import study_badges, guild_role_cache, new_study_badges from .data import study_badges, guild_role_cache, new_study_badges
from .badge_tracker import _update_guild_badges from .badge_tracker import _update_guild_badges

View File

View File

@@ -0,0 +1,4 @@
from . import data
from . import settings
from . import time_tracker
from . import session_tracker

View File

@@ -0,0 +1,3 @@
from data import Table
untracked_channels = Table('untracked_channels')

View File

@@ -7,8 +7,8 @@ from time import time
from meta import client from meta import client
from core import Lion from core import Lion
from .module import module from ..module import module
from . import admin from .settings import untracked_channels, hourly_reward, hourly_live_bonus
last_scan = {} # guildid -> timestamp last_scan = {} # guildid -> timestamp
@@ -36,9 +36,9 @@ def _scan(guild):
if interval > 60 * 20: if interval > 60 * 20:
return return
untracked = admin.untracked_channels.get(guild.id).data untracked = untracked_channels.get(guild.id).data
hourly_reward = admin.hourly_reward.get(guild.id).data guild_hourly_reward = hourly_reward.get(guild.id).data
hourly_live_bonus = admin.hourly_live_bonus.get(guild.id).data guild_hourly_live_bonus = hourly_live_bonus.get(guild.id).data
channel_members = ( channel_members = (
channel.members for channel in guild.voice_channels if channel.id not in untracked channel.members for channel in guild.voice_channels if channel.id not in untracked
@@ -61,9 +61,9 @@ def _scan(guild):
lion.addTime(interval, flush=False) lion.addTime(interval, flush=False)
# Add coins # Add coins
hour_reward = hourly_reward hour_reward = guild_hourly_reward
if member.voice.self_stream or member.voice.self_video: if member.voice.self_stream or member.voice.self_video:
hour_reward += hourly_live_bonus hour_reward += guild_hourly_live_bonus
lion.addCoins(hour_reward * interval / (3600), flush=False) lion.addCoins(hour_reward * interval / (3600), flush=False)
@@ -102,7 +102,7 @@ async def _study_tracker():
@module.launch_task @module.launch_task
async def launch_study_tracker(client): async def launch_study_tracker(client):
# First pre-load the untracked channels # First pre-load the untracked channels
await admin.untracked_channels.launch_task(client) await untracked_channels.launch_task(client)
asyncio.create_task(_study_tracker()) asyncio.create_task(_study_tracker())