Compare commits

..

No commits in common. "d83f933f1d262d11169cc123416870675574104b" and "caadca885cc8aa742941fa78c0ad466718927e00" have entirely different histories.

2 changed files with 7 additions and 35 deletions

View file

@ -110,8 +110,7 @@ class MatcherCog(commands.Cog):
interaction: discord.Interaction,
members_min: int | None = None,
weekday: int | None = None,
hour: int | None = None,
cadence: int | None = None):
hour: int | None = None):
"""Schedule a match using the input parameters"""
# Set all the defaults
@ -121,8 +120,6 @@ class MatcherCog(commands.Cog):
weekday = 0
if hour is None:
hour = 9
if cadence is None:
cadence = 1
channel_id = str(interaction.channel.id)
# Bail if not a matcher
@ -133,11 +130,11 @@ class MatcherCog(commands.Cog):
# Add the scheduled task and save
state.State.set_channel_match_task(
channel_id, members_min, weekday, hour, cadence)
channel_id, members_min, weekday, hour)
# Let the user know what happened
logger.info("Scheduled new match task in %s with min %s weekday %s hour %s and cadence %s",
channel_id, members_min, weekday, hour, cadence)
logger.info("Scheduled new match task in %s with min %s weekday %s hour %s",
channel_id, members_min, weekday, hour)
next_run = util.get_next_datetime(weekday, hour)
view = discord.ui.View(timeout=None)

View file

@ -16,7 +16,7 @@ logger = logging.getLogger("state")
logger.setLevel(logging.INFO)
# Warning: Changing any of the below needs proper thought to ensure backwards compatibility
_VERSION = 5
_VERSION = 4
def _migrate_to_v1(d: dict):
@ -64,24 +64,12 @@ def _migrate_to_v4(d: dict):
del d[_Key._HISTORY]
def _migrate_to_v5(d: dict):
"""v5 added weekly cadence"""
tasks = d.get(_Key.TASKS, {})
for tasks in tasks.values():
match_tasks = tasks.get(_Key.MATCH_TASKS, [])
for match in match_tasks:
# All previous matches were every week starting from now
match[_Key.CADENCE] = 1
match[_Key.CADENCE_START] = datetime_to_ts(datetime.now())
# Set of migration functions to apply
_MIGRATIONS = [
_migrate_to_v1,
_migrate_to_v2,
_migrate_to_v3,
_migrate_to_v4,
_migrate_to_v5
]
@ -106,8 +94,6 @@ class _Key(str):
MEMBERS_MIN = "members_min"
WEEKDAY = "weekdays"
HOUR = "hours"
CADENCE = "cadence"
CADENCE_START = "cadence_start"
# Unused
_MATCHEES = "matchees"
@ -153,8 +139,6 @@ _SCHEMA = Schema(
_Key.MEMBERS_MIN: Use(int),
_Key.WEEKDAY: Use(int),
_Key.HOUR: Use(int),
_Key.CADENCE: Use(int),
_Key.CADENCE_START: Use(str),
}
]
}
@ -340,10 +324,7 @@ class _State():
for channel, tasks in self._tasks.items():
for match in tasks.get(_Key.MATCH_TASKS, []):
# Take into account the weekly cadence
start = ts_to_datetime(match[_Key.CADENCE_START])
weeks = int((time - start).days / 7)
if match[_Key.WEEKDAY] == weekday and match[_Key.HOUR] == hour and weeks % match[_Key.CADENCE] == 0:
if match[_Key.WEEKDAY] == weekday and match[_Key.HOUR] == hour:
yield (channel, match[_Key.MEMBERS_MIN])
def get_channel_match_tasks(self, channel_id: str) -> Generator[int, int, int]:
@ -360,7 +341,7 @@ class _State():
yield (task[_Key.WEEKDAY], task[_Key.HOUR], task[_Key.MEMBERS_MIN])
@safe_write
def set_channel_match_task(self, channel_id: str, members_min: int, weekday: int, hour: int, cadence: int):
def set_channel_match_task(self, channel_id: str, members_min: int, weekday: int, hour: int):
"""Set up a match task on a channel"""
channel = self._tasks.setdefault(str(channel_id), {})
matches = channel.setdefault(_Key.MATCH_TASKS, [])
@ -371,10 +352,6 @@ class _State():
if match[_Key.WEEKDAY] == weekday and match[_Key.HOUR] == hour:
found = True
match[_Key.MEMBERS_MIN] = members_min
# If the cadence has changed, update it and reset the start
if cadence != match[_Key.CADENCE]:
match[_Key.CADENCE] = cadence
match[_Key.CADENCE_START] = datetime_to_ts(datetime.now())
# Return true as we've successfully changed the data in place
return True
@ -384,8 +361,6 @@ class _State():
_Key.MEMBERS_MIN: members_min,
_Key.WEEKDAY: weekday,
_Key.HOUR: hour,
_Key.CADENCE: cadence,
_Key.CADENCE_START: datetime_to_ts(datetime.now())
})
@safe_write