Batch Audit Logs #14

Open
opened 2026-02-02 15:12:20 -05:00 by jared · 0 comments
Owner

Instead of sending each audit log immediately, batch them:

class AuditLogger:
def init(self, channel_id: int, batch_size: int = 5, flush_interval: int = 30):
self.channel_id = channel_id
self.batch_size = batch_size
self.flush_interval = flush_interval
self.queue = []
self.last_flush = datetime.now()

async def log(self, message: str, color: int = 0x980000):
    self.queue.append((message, color, datetime.now()))
    if len(self.queue) >= self.batch_size or \
       (datetime.now() - self.last_flush).seconds >= self.flush_interval:
        await self.flush()

async def flush(self):
    if not self.queue:
        return
    
    channel = client.get_channel(self.channel_id)
    if not channel:
        return
    
    # Create a single embed with all messages
    embed = discord.Embed(color=0x980000, timestamp=datetime.now())
    for msg, _, timestamp in self.queue[:10]:  # Max 10 per embed
        embed.add_field(name=timestamp.strftime("%H:%M:%S"), value=msg[:1024], inline=False)
    
    await channel.send(embed=embed)
    self.queue.clear()
    self.last_flush = datetime.now()
Instead of sending each audit log immediately, batch them: class AuditLogger: def __init__(self, channel_id: int, batch_size: int = 5, flush_interval: int = 30): self.channel_id = channel_id self.batch_size = batch_size self.flush_interval = flush_interval self.queue = [] self.last_flush = datetime.now() async def log(self, message: str, color: int = 0x980000): self.queue.append((message, color, datetime.now())) if len(self.queue) >= self.batch_size or \ (datetime.now() - self.last_flush).seconds >= self.flush_interval: await self.flush() async def flush(self): if not self.queue: return channel = client.get_channel(self.channel_id) if not channel: return # Create a single embed with all messages embed = discord.Embed(color=0x980000, timestamp=datetime.now()) for msg, _, timestamp in self.queue[:10]: # Max 10 per embed embed.add_field(name=timestamp.strftime("%H:%M:%S"), value=msg[:1024], inline=False) await channel.send(embed=embed) self.queue.clear() self.last_flush = datetime.now()
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: LotusGuild/discordBot#14