Обрабатывает media_group только для одного аккаунта aiogram 2
Проблема в том что при отправке двух или более фото с одного аккаунта боту работает все корректно, если отправляется с другого аккаунта то он обрабатывает только одно фото
Логи:
[{"media": "AgACAgQAAxkBAAMEZvK10C0ljKKEStmU-sLohx8SJFAAAl7BMRvpipBTBPWsZkaoKjoBAAMCAAN4AAM2BA", "type": "photo", "parse_mode": "html"}, {"media": "AgACAgQAAxkBAAMFZvK10PnPj4ov6-DV-4EMbhcRZRQAAl_BMRvpipBTGL6gqJAlM7oBAAMCAAN4AAM2BA", "type": "photo", "parse_mode": "html"}]
[{"media": "AgACAgIAAxkBAAMNZvK196l4ZxmenHpRMgvtWfCag5MAArf9MRsdQJhLJsktX71EAgkBAAMCAAN4AAM2BA", "type": "photo", "parse_mode": "html"}]
Сам код:
class AlbumMiddleware(BaseMiddleware):
"""This middleware is for capturing media groups."""
album_data: dict = {}
def __init__(self, latency: Union[int, float] = 0.01):
"""
You can provide custom latency to make sure
albums are handled properly in highload.
"""
self.latency = latency
super().__init__()
async def on_process_message(self, message: types.Message, data: dict):
if not message.media_group_id:
return
try:
self.album_data[message.media_group_id].append(message)
raise CancelHandler() # Tell aiogram to cancel handler for this group element
except KeyError:
self.album_data[message.media_group_id] = [message]
await asyncio.sleep(self.latency)
message.conf["is_last"] = True
data["album"] = self.album_data[message.media_group_id]
async def on_post_process_message(self, message: types.Message, result: dict, data: dict):
"""Clean up after handling our album."""
if message.media_group_id and message.conf.get("is_last"):
del self.album_data[message.media_group_id]
async def create_media_group(album: List[types.Message]):
media_group = types.MediaGroup()
for obj in album:
file_id = obj.photo[-1].file_id if obj.photo else obj[obj.content_type].file_id
media_group.attach({"media": file_id, "type": obj.content_type})
return media_group
@dp.message_handler(state=Mailing.waiting_for_mailing, content_types=types.ContentTypes.ANY)
async def set_mailing(message: types.Message, state: FSMContext, album: List[types.Message] = None):
file, caption, type = '', '', ''
if message.text:
caption, type = message.text, 'text'
elif message.media_group_id:
file, type = await create_media_group(album), 'media_group'