Немного переделал по ключам, которым if ищет bad events (не те евенты)
Теперь все не нужные отсеиваются. (просто пропускаются)
считаю такой вариант хороший, но возможно есть вариант получше.
if not event.message_id or not event.text: return await handler(event, data)
else: pass
UPD: Еще можно поменять типы в __call__:
from aiogram.types import Message
async def __call__(
self,
handler: Callable[[Message, Dict[str, Any]], Awaitable[Any]],
event: Message,
data: Dict[str, Any],
) -> Any:
if not event.message_id or not event.text: return await handler(event, data)
else: pass
#...внутренности мидлваря
return await handler(event, data) # кстати данный ретурн обязательный :)
Но это не отсеивает event'ы т.к даже то что чел исключает чела имеет message_id (структуру сообщения, не знаю зачем и почему, в вк реализованы просто апдейты chat_invite_user / chat_remove_user, в vk-io так), поэтому верхний if все равно нужен. И то не факт что где то что то может и иметь такие поля, хотя как таковым сообщением не является.