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()
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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()