Вообще всё должно работать, при условии, что этот обработчик зарегистрирован раньше всех других.
Но работать он не будет если допустим активен какой-то FSM, тогда управление уйдет в него.
Наверное, лучше было бы создать Middleware, и там уже обрабатывать. Для версии 2.х очень условно будет что-то вроде:
class BadWordFilterMiddleware(BaseMiddleware):
async def on_process_message(self, message: types.Message, data: dict):
badwords = ['привет', 'пока']
message_text = message.text if message.text else message.caption
if message_text:
message_text_words = message_text.lower().split()
for badword in badwords:
if badword in message_text_words:
await bot.delete_message(message.chat.id, message.message_id)
raise CancelHandler()
return
dp.middleware.setup(BadWordFilterMiddleware())