wow-token-app-bot

An interactions.py Discord bot for getting and alerting on the WoW Token Price
git clone https://git.emily.sh/wowtoken-app/wow-token-app-bot.git
Log | Files | Refs | README | LICENSE

commit cddc49bbfe50bfa162cefe98ce2cbd93e2dfddff
parent aa955816f94dbf0b0e8a001b90c55f980c2efe69
Author: Emily Doherty <git@emily.sh>
Date:   Sat, 30 Nov 2024 04:45:00 -0800

Squelch ongoing alerts so message is only sent once

Diffstat:
Mtoken_bot/history_manager/history.py | 5+----
Mtoken_bot/history_manager/update_trigger.py | 7++++++-
2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/token_bot/history_manager/history.py b/token_bot/history_manager/history.py @@ -15,8 +15,6 @@ class History: self._last_price_movement : int = 0 self._latest_price_datum : Tuple[datetime.datetime, int] | None = None self._update_triggers : List[UpdateTrigger] = [] - self._squelched_alerts : List[Alert] = [] - for alert_type in AlertType: self._update_triggers.append(UpdateTrigger(Alert(alert_type, flavor, self._region))) @@ -39,9 +37,8 @@ class History: async def _process_update_triggers(self) -> List[Alert]: alerts = [] for trigger in self._update_triggers: - if trigger.check_and_update(self._latest_price_datum, self._history) and trigger.alert not in self._squelched_alerts: + if trigger.check_and_update(self._latest_price_datum, self._history): alerts.append(trigger.alert) - return alerts async def add_price(self, datum: Tuple[datetime.datetime, int]) -> List[Alert]: diff --git a/token_bot/history_manager/update_trigger.py b/token_bot/history_manager/update_trigger.py @@ -9,6 +9,7 @@ class UpdateTrigger: def __init__(self, alert: Alert): self._alert : Alert = alert self._last_trigger : Tuple[datetime.datetime, int] | None = None + self._squelched : bool = False @property def alert(self) -> Alert: @@ -75,5 +76,9 @@ class UpdateTrigger: if comparison_operator(new_datum[1], self._last_trigger[1]): self._last_trigger = new_datum - return True + was_squelched = self._squelched + self._squelched = True + return not was_squelched # Returns True if squelched otherwise True + elif self._squelched: + self._squelched = False return False \ No newline at end of file