mirror of
https://github.com/allthingslinux/tux.git
synced 2024-10-02 16:43:12 +00:00
Merge pull request #581 from allthingslinux/gif_limiter
Fixed a critical bug in the GIF ratelimiter cog caused by the double …
This commit is contained in:
commit
6f1524de75
1 changed files with 7 additions and 13 deletions
|
@ -58,17 +58,12 @@ class GifLimiter(commands.Cog):
|
||||||
|
|
||||||
if (
|
if (
|
||||||
channel in self.channelwide_gif_limits
|
channel in self.channelwide_gif_limits
|
||||||
and channel in self.recent_gifs_by_channel
|
|
||||||
and len(self.recent_gifs_by_channel[channel]) >= self.channelwide_gif_limits[channel]
|
and len(self.recent_gifs_by_channel[channel]) >= self.channelwide_gif_limits[channel]
|
||||||
):
|
):
|
||||||
await self._delete_message(message, "for channel")
|
await self._delete_message(message, "for channel")
|
||||||
return
|
return
|
||||||
|
|
||||||
if (
|
if channel in self.user_gif_limits and len(self.recent_gifs_by_user[user]) >= self.user_gif_limits[channel]:
|
||||||
user in self.recent_gifs_by_user
|
|
||||||
and channel in self.user_gif_limits
|
|
||||||
and len(self.recent_gifs_by_user[user]) >= self.user_gif_limits[channel]
|
|
||||||
):
|
|
||||||
await self._delete_message(message, "for user")
|
await self._delete_message(message, "for user")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -97,16 +92,15 @@ class GifLimiter(commands.Cog):
|
||||||
current_time: int = int(time())
|
current_time: int = int(time())
|
||||||
|
|
||||||
async with self.gif_lock:
|
async with self.gif_lock:
|
||||||
for channel_id, timestamps in self.recent_gifs_by_channel.items():
|
for channel_id, timestamps in list(self.recent_gifs_by_channel.items()):
|
||||||
self.recent_gifs_by_channel[channel_id] = [
|
self.recent_gifs_by_channel[channel_id] = [
|
||||||
t for t in timestamps if current_time - t < self.recent_gif_age
|
t for t in timestamps if current_time - t < self.recent_gif_age
|
||||||
]
|
]
|
||||||
|
for user_id, timestamps in list(self.recent_gifs_by_user.items()):
|
||||||
for user_id, timestamps in self.recent_gifs_by_user.items():
|
filtered_timestamps = [t for t in timestamps if current_time - t < self.recent_gif_age]
|
||||||
self.recent_gifs_by_user[user_id] = [t for t in timestamps if current_time - t < self.recent_gif_age]
|
if filtered_timestamps:
|
||||||
|
self.recent_gifs_by_user[user_id] = filtered_timestamps
|
||||||
# Delete user key if no GIF has recently been sent by them
|
else:
|
||||||
if len(self.recent_gifs_by_user[user_id]) == 0:
|
|
||||||
del self.recent_gifs_by_user[user_id]
|
del self.recent_gifs_by_user[user_id]
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue