From 43b6297b5d9391a4cb0102b7829ff61f78ba0629 Mon Sep 17 00:00:00 2001 From: Raven95676 Date: Sat, 5 Apr 2025 21:08:52 +0800 Subject: [PATCH] =?UTF-8?q?reminder=E5=B0=86=E6=97=B6=E5=8C=BA=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E7=A7=BB=E5=85=A5try=E5=9D=97,=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E4=B8=BAself.timezone?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/reminder/main.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/reminder/main.py b/packages/reminder/main.py index 5b9b32588..6b1b8f3e8 100644 --- a/packages/reminder/main.py +++ b/packages/reminder/main.py @@ -18,11 +18,15 @@ class Main(star.Star): def __init__(self, context: star.Context) -> None: self.context = context - self.timezone = self.context.get_config().get("timezone", "Asia/Shanghai") + self.timezone = self.context.get_config().get("timezone") if not self.timezone: self.timezone = None + try: + self.timezone = zoneinfo.ZoneInfo(self.timezone) if self.timezone else None + except Exception as e: + logger.error(f"时区设置错误: {e}, 使用本地时区") + self.timezone = None self.scheduler = AsyncIOScheduler(timezone=self.timezone) - self.tzinfo = zoneinfo.ZoneInfo(self.timezone) if self.timezone else None # set and load config if not os.path.exists("data/astrbot-reminder.json"): @@ -72,8 +76,8 @@ class Main(star.Star): if "datetime" in reminder: reminder_time = datetime.datetime.strptime( reminder["datetime"], "%Y-%m-%d %H:%M" - ).replace(tzinfo=self.tzinfo) - return reminder_time < datetime.datetime.now(self.tzinfo) + ).replace(tzinfo=self.timezone) + return reminder_time < datetime.datetime.now(self.timezone) return False async def _save_data(self): @@ -176,14 +180,14 @@ class Main(star.Star): reminders = self.reminder_data.get(unified_msg_origin, []) if not reminders: return [] - now = datetime.datetime.now(self.tzinfo) + now = datetime.datetime.now(self.timezone) upcoming_reminders = [ reminder for reminder in reminders if "datetime" not in reminder or datetime.datetime.strptime( reminder["datetime"], "%Y-%m-%d %H:%M" - ).replace(tzinfo=self.tzinfo) + ).replace(tzinfo=self.timezone) >= now ] return upcoming_reminders