Celeskry commited on
Commit
4e0e03b
·
verified ·
1 Parent(s): 7158180

Update app/invite_logic.py

Browse files
Files changed (1) hide show
  1. app/invite_logic.py +10 -7
app/invite_logic.py CHANGED
@@ -3,12 +3,14 @@ import httpx
3
  import os
4
  import dns.resolver
5
  from datetime import datetime, timedelta
 
6
 
7
 
8
  class DiscordInviteLogic:
9
  def __init__(self):
10
  self.token = os.getenv("DISCORD_TOKEN")
11
  self.channel_id = os.getenv("CHANNEL_ID")
 
12
  self.client = None
13
  self._cached_invite = None
14
  self._expiry_time = None
@@ -35,20 +37,22 @@ class DiscordInviteLogic:
35
 
36
  async def get_invite(self):
37
  EXPIRY_DURATION = 600
 
38
 
39
  if (
40
  self._cached_invite
41
  and self._expiry_time
42
- and self._expiry_time > datetime.utcnow() + timedelta(seconds=30)
43
  ):
44
- remaining = self._expiry_time - datetime.utcnow()
45
  mins, secs = divmod(int(remaining.total_seconds()), 60)
46
 
47
  return {
48
  "status": "cached",
49
  "invite": self._cached_invite,
50
  "expires_in": f"{mins:02d}:{secs:02d}",
51
- "expires_at": self._expiry_time.strftime("%Y-%m-%d %H:%M:%S"),
 
52
  }
53
 
54
  if not self.token or not self.channel_id:
@@ -84,14 +88,13 @@ class DiscordInviteLogic:
84
  invite_url = f"https://discord.gg/{data.get('code')}"
85
 
86
  self._cached_invite = invite_url
87
- self._expiry_time = datetime.utcnow() + timedelta(
88
- seconds=EXPIRY_DURATION
89
- )
90
 
91
  return {
92
  "status": "generated",
93
  "invite": invite_url,
94
- "expires_at": self._expiry_time.strftime("%Y-%m-%d %H:%M:%S"),
 
95
  }
96
 
97
  return {
 
3
  import os
4
  import dns.resolver
5
  from datetime import datetime, timedelta
6
+ from zoneinfo import ZoneInfo
7
 
8
 
9
  class DiscordInviteLogic:
10
  def __init__(self):
11
  self.token = os.getenv("DISCORD_TOKEN")
12
  self.channel_id = os.getenv("CHANNEL_ID")
13
+ self.timezone = ZoneInfo(os.getenv("TIMEZONE", "Asia/Ho_Chi_Minh"))
14
  self.client = None
15
  self._cached_invite = None
16
  self._expiry_time = None
 
37
 
38
  async def get_invite(self):
39
  EXPIRY_DURATION = 600
40
+ now = datetime.now(self.timezone)
41
 
42
  if (
43
  self._cached_invite
44
  and self._expiry_time
45
+ and self._expiry_time > now + timedelta(seconds=30)
46
  ):
47
+ remaining = self._expiry_time - now
48
  mins, secs = divmod(int(remaining.total_seconds()), 60)
49
 
50
  return {
51
  "status": "cached",
52
  "invite": self._cached_invite,
53
  "expires_in": f"{mins:02d}:{secs:02d}",
54
+ "expires_at": self._expiry_time.isoformat(),
55
+ "timezone": str(self.timezone),
56
  }
57
 
58
  if not self.token or not self.channel_id:
 
88
  invite_url = f"https://discord.gg/{data.get('code')}"
89
 
90
  self._cached_invite = invite_url
91
+ self._expiry_time = now + timedelta(seconds=EXPIRY_DURATION)
 
 
92
 
93
  return {
94
  "status": "generated",
95
  "invite": invite_url,
96
+ "expires_at": self._expiry_time.isoformat(),
97
+ "timezone": str(self.timezone),
98
  }
99
 
100
  return {