feat: add functions to check and update 4:20 timezone cache
This commit is contained in:
@@ -71,6 +71,45 @@ def get_state_snapshot() -> dict:
|
|||||||
return dict(STATE)
|
return dict(STATE)
|
||||||
|
|
||||||
|
|
||||||
|
def _check_420(tz_list: list[str] | None = None) -> str:
|
||||||
|
cache = get_tzdb_cache()
|
||||||
|
timezones = load_timezones() if cache is None else []
|
||||||
|
countries = load_countries() if cache is None else []
|
||||||
|
if tz_list is None:
|
||||||
|
if cache is None:
|
||||||
|
tz_list = where_is_it_420(timezones, countries)
|
||||||
|
else:
|
||||||
|
tz_list = where_is_it_420(
|
||||||
|
timezones,
|
||||||
|
countries,
|
||||||
|
tz_names=cache.get("tz_names"),
|
||||||
|
tz_to_country_code=cache.get("tz_to_country_code"),
|
||||||
|
country_code_to_name=cache.get("country_code_to_name"),
|
||||||
|
)
|
||||||
|
if tz_list:
|
||||||
|
tz_str = "\n".join(tz_list)
|
||||||
|
return f"\nIt's 4:20 in:\n{tz_str}"
|
||||||
|
return ""
|
||||||
|
|
||||||
|
|
||||||
|
def _update_420_cache() -> None:
|
||||||
|
try:
|
||||||
|
cache = get_tzdb_cache()
|
||||||
|
if cache is None:
|
||||||
|
tz_list = where_is_it_420(load_timezones(), load_countries())
|
||||||
|
else:
|
||||||
|
tz_list = where_is_it_420(
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
tz_names=cache.get("tz_names"),
|
||||||
|
tz_to_country_code=cache.get("tz_to_country_code"),
|
||||||
|
country_code_to_name=cache.get("country_code_to_name"),
|
||||||
|
)
|
||||||
|
_update_state(last_locations=tz_list or [])
|
||||||
|
except Exception as e:
|
||||||
|
_update_state(last_locations=[], last_error=str(e))
|
||||||
|
|
||||||
|
|
||||||
def get_next_scheduled_event(now: datetime | None = None) -> dict:
|
def get_next_scheduled_event(now: datetime | None = None) -> dict:
|
||||||
"""Return the next scheduled notification time/type based on known minute marks."""
|
"""Return the next scheduled notification time/type based on known minute marks."""
|
||||||
if now is None:
|
if now is None:
|
||||||
@@ -98,9 +137,6 @@ def create_embed(type: str, tz_list: list[str] | None = None) -> dict:
|
|||||||
"""
|
"""
|
||||||
templates_path = os.getenv("TEMPLATES_PATH", "templates.json")
|
templates_path = os.getenv("TEMPLATES_PATH", "templates.json")
|
||||||
messages = load_templates(templates_path)
|
messages = load_templates(templates_path)
|
||||||
cache = get_tzdb_cache()
|
|
||||||
timezones = load_timezones() if cache is None else []
|
|
||||||
countries = load_countries() if cache is None else []
|
|
||||||
if type in messages:
|
if type in messages:
|
||||||
msg = messages[type]
|
msg = messages[type]
|
||||||
image_url = msg.get("image_url")
|
image_url = msg.get("image_url")
|
||||||
@@ -108,20 +144,7 @@ def create_embed(type: str, tz_list: list[str] | None = None) -> dict:
|
|||||||
msg["image"] = {"url": image_url}
|
msg["image"] = {"url": image_url}
|
||||||
if type == "420":
|
if type == "420":
|
||||||
# Check where it's 4:20
|
# Check where it's 4:20
|
||||||
if tz_list is None:
|
msg["text"] += _check_420(tz_list)
|
||||||
if cache is None:
|
|
||||||
tz_list = where_is_it_420(timezones, countries)
|
|
||||||
else:
|
|
||||||
tz_list = where_is_it_420(
|
|
||||||
timezones,
|
|
||||||
countries,
|
|
||||||
tz_names=cache.get("tz_names"),
|
|
||||||
tz_to_country_code=cache.get("tz_to_country_code"),
|
|
||||||
country_code_to_name=cache.get("country_code_to_name"),
|
|
||||||
)
|
|
||||||
if tz_list:
|
|
||||||
tz_str = "\n".join(tz_list)
|
|
||||||
msg["text"] += f"\nIt's 4:20 in:\n{tz_str}"
|
|
||||||
else:
|
else:
|
||||||
msg = {"text": "Unknown notification type", "color": 0xFF0000}
|
msg = {"text": "Unknown notification type", "color": 0xFF0000}
|
||||||
embed = {
|
embed = {
|
||||||
@@ -159,21 +182,7 @@ def send_notification(message: str) -> None:
|
|||||||
|
|
||||||
tz_list: list[str] | None = None
|
tz_list: list[str] | None = None
|
||||||
if message == "420":
|
if message == "420":
|
||||||
try:
|
_update_420_cache()
|
||||||
cache = get_tzdb_cache()
|
|
||||||
if cache is None:
|
|
||||||
tz_list = where_is_it_420(load_timezones(), load_countries())
|
|
||||||
else:
|
|
||||||
tz_list = where_is_it_420(
|
|
||||||
[],
|
|
||||||
[],
|
|
||||||
tz_names=cache.get("tz_names"),
|
|
||||||
tz_to_country_code=cache.get("tz_to_country_code"),
|
|
||||||
country_code_to_name=cache.get("country_code_to_name"),
|
|
||||||
)
|
|
||||||
_update_state(last_locations=tz_list or [])
|
|
||||||
except Exception as e:
|
|
||||||
_update_state(last_locations=[], last_error=str(e))
|
|
||||||
|
|
||||||
embed = create_embed(message, tz_list=tz_list)
|
embed = create_embed(message, tz_list=tz_list)
|
||||||
data = {"embeds": [embed]}
|
data = {"embeds": [embed]}
|
||||||
|
|||||||
Reference in New Issue
Block a user