This commit is contained in:
xds
2026-02-18 16:35:04 +03:00
parent 198ac44960
commit 4586daac38
16 changed files with 309 additions and 83 deletions

View File

@@ -27,19 +27,19 @@ class AlbumMiddleware(BaseMiddleware):
# Ждем сбора остальных частей
await asyncio.sleep(self.latency)
# Проверяем, что ключ все еще существует (на всякий случай)
# Проверяем, что ключ все еще существует
if group_id in self.album_data:
# Передаем собранный альбом в хендлер
# Сортируем по message_id, чтобы порядок был верным
self.album_data[group_id].sort(key=lambda x: x.message_id)
data["album"] = self.album_data[group_id]
current_album = self.album_data[group_id]
current_album.sort(key=lambda x: x.message_id)
data["album"] = current_album
return await handler(event, data)
finally:
# ЧИСТКА: Удаляем всегда, если это "головной" поток, который создал запись
# Проверяем, что мы удаляем именно то, что создали, и ключ существует
if group_id in self.album_data and self.album_data[group_id][0] == event:
del self.album_data[group_id]
# ЧИСТКА: Удаляем запись после обработки или таймаута
# Используем pop() с дефолтом, чтобы избежать KeyError
self.album_data.pop(group_id, None)
else:
# Если группа уже собирается - просто добавляем и выходим