Compare commits
No commits in common. "d83f933f1d262d11169cc123416870675574104b" and "caadca885cc8aa742941fa78c0ad466718927e00" have entirely different histories.
d83f933f1d
...
caadca885c
2 changed files with 7 additions and 35 deletions
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue