Close #81, wrote custom caching in on_member_update to handle duplicates

This commit is contained in:
Zeva Rose 2021-08-06 00:16:51 -06:00
parent 5587bce34b
commit f701cc9655
2 changed files with 17 additions and 6 deletions

View file

@ -1,5 +1,6 @@
import asyncio
from pathlib import Path
from typing import Union
from discord import Intents
from discord.ext import commands
@ -19,15 +20,18 @@ intents = Intents.default()
intents.members = True
restart_ctx = None
jconfig = get_config()
jarvis = commands.Bot(
command_prefix=utils.get_prefix, intents=intents, help_command=None
command_prefix=utils.get_prefix,
intents=intents,
help_command=None,
max_messages=jconfig.max_messages,
)
slash = SlashCommand(jarvis, sync_commands=True, sync_on_cog_reload=True)
jarvis_self = Process()
__version__ = "1.10.2"
jconfig = get_config()
__version__ = "1.10.3"
@jarvis.event

View file

@ -15,6 +15,7 @@ from jarvis.utils.field import Field
class ModlogMemberCog(commands.Cog):
def __init__(self, bot):
self.bot = bot
self.cache = []
@commands.Cog.listener()
async def on_member_ban(self, guild: discord.Guild, user: discord.User):
@ -89,7 +90,7 @@ class ModlogMemberCog(commands.Cog):
await channel.send(embed=embed)
@commands.Cog.listener()
async def on_member_remove(self, user: discord.User):
async def on_member_remove(self, user: discord.Member):
modlog = Setting.objects(guild=user.guild.id, setting="modlog").first()
if modlog:
channel = user.guild.get_channel(modlog.value)
@ -243,8 +244,13 @@ class ModlogMemberCog(commands.Cog):
@commands.Cog.listener()
async def on_member_update(
self, before: discord.User, after: discord.User
self, before: discord.Member, after: discord.Member
):
h = hash(hash(before) * hash(after))
if h not in self.cache:
self.cache.append(h)
else:
return
modlog = Setting.objects(
guild=before.guild.id, setting="modlog"
).first()
@ -335,3 +341,4 @@ class ModlogMemberCog(commands.Cog):
embed = await self.process_rolechange(before, after)
if embed:
await channel.send(embed=embed)
self.cache.remove(h)