Skip to content

Commit 96c5cae

Browse files
committed
Fix
1 parent ae027b3 commit 96c5cae

File tree

3 files changed

+15
-17
lines changed

3 files changed

+15
-17
lines changed

docs/source/changelog.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ Releases
4040
v3.1.2
4141
===================
4242
- Fixed SQL compatibility
43+
- Fixed "TypeError: can't compare offset-naive and offset-aware datetimes" exception when
44+
a rate limit happened (or slow mode).
45+
- Fixed selenium timer reset when no join attempt was triggered.
4346

4447

4548
v3.1.1

src/daf/guild/autoguild.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -466,12 +466,15 @@ async def get_next_guild():
466466
trace(f"Could not query top.gg, stopping auto join.", TraceLEVELS.ERROR, exc)
467467
self.guild_query_iter = None
468468

469-
if (yielded := await get_next_guild()) is None:
470-
return
469+
470+
while True:
471+
if (yielded := await get_next_guild()) is None:
472+
return
473+
474+
if client.get_guild(yielded.id) is not None:
475+
self.guild_join_count += 1 # Guilds we are already joined also count
476+
continue
471477

472-
no_error = True
473-
# Not already joined in the guild
474-
if client.get_guild(yielded.id) is None:
475478
try:
476479
invite_url = await selenium.fetch_invite_link(yielded.url)
477480
if invite_url is None:
@@ -485,17 +488,16 @@ async def get_next_guild():
485488
"No error detected in browser,"
486489
"but the guild can not be seen by the API wrapper."
487490
)
491+
492+
self.guild_join_count += 1 # Increase only on success
488493
except Exception as exc:
489-
no_error = False
490494
trace(
491495
f"Joining guild raised an error. (Guild '{yielded.name}')",
492496
TraceLEVELS.ERROR,
493497
exc
494498
)
495499

496-
if no_error:
497-
# Don't count errored joins but count guilds we are already joined if they match the pattern
498-
self.guild_join_count += 1
500+
break
499501

500502
self._reset_auto_join_timer()
501503

src/daf/message/text_based.py

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,7 @@ async def _handle_error(
355355
elif ex.status == 429: # Rate limit
356356
retry_after = int(ex.response.headers["Retry-After"]) + 5
357357
if ex.code == 20016: # Slow Mode
358-
self.next_send_time = datetime.now() + timedelta(seconds=retry_after)
358+
self.next_send_time = datetime.now().astimezone() + timedelta(seconds=retry_after)
359359
trace(f"{channel.name} is in slow mode, retrying in {retry_after} seconds", TraceLEVELS.WARNING)
360360
self._check_period() # Fix the period
361361

@@ -369,13 +369,6 @@ async def _handle_error(
369369

370370
return handled, action
371371

372-
def _calc_next_time(self):
373-
super()._calc_next_time()
374-
slowmode_delay = self._slowmode
375-
current_time = datetime.now().astimezone()
376-
if self.next_send_time - current_time < slowmode_delay:
377-
self.next_send_time = current_time + slowmode_delay
378-
379372
async def _send_channel(self,
380373
channel: Union[discord.TextChannel, discord.Thread, None],
381374
text: Optional[str],

0 commit comments

Comments
 (0)