fix(bridge): system audit + 5-file bug fix — PATS Deny trigger removal, auto_resolved chat dedup, UUID filenames, IP rate limit leak, bot.py deque

This commit is contained in:
2026-03-15 22:59:47 +09:00
parent 429cae47b7
commit c9f44afcf1
9 changed files with 193 additions and 107 deletions

10
bot.py
View File

@@ -11,6 +11,7 @@ import asyncio
import json
import logging
import time
from collections import deque
from datetime import datetime, timezone
from pathlib import Path
@@ -180,7 +181,7 @@ class GravityBot(commands.Bot):
self.session_category: discord.CategoryChannel | None = None
self.guild: discord.Guild | None = None
self.auto_approve_projects: set[str] = set() # projects with auto-approve enabled
self._processed_message_ids: set[int] = set() # dedup for Gateway event replay
self._processed_message_ids: deque[int] = deque(maxlen=200) # dedup for Gateway event replay
self._approval_messages: dict[str, int] = {} # FIX #4: request_id → discord message_id (for auto_resolved lookup)
self.gateway = None # Set by main.py in gateway mode
@@ -800,12 +801,7 @@ class GravityBot(commands.Bot):
# Dedup: Discord Gateway can deliver MESSAGE_CREATE twice on reconnection
if message.id in self._processed_message_ids:
return
self._processed_message_ids.add(message.id)
# Keep set bounded (last 200 messages)
if len(self._processed_message_ids) > 200:
excess = len(self._processed_message_ids) - 100
for _ in range(excess):
self._processed_message_ids.pop()
self._processed_message_ids.append(message.id)
# Determine project from channel
project = self.channel_to_project.get(message.channel.id)