we use tags to filter out people we dont want future messaging to go to, but we have no current way to block someone with a "negative" tag from booking.
While not 100% effective... we tag the guest... and then have the system send to us a notification at time of booking if someone books that has been tagged. We of course keep all of the "history" with the guest and have not problem cancelling their reservation explaining the past history to them if needed. I would like to see this automated for direct bookings for sure by preventing them from confirming based on the guest information they provided... additionally, I don't know when you actually get the guest information from the OTAs but if when the inquiry comes in there are matches to a guest that is tagged I would think you could respond back to the inquiry with an appropriate booking violation response.
I just tag the guest as "bad guest" then eliminate those tagged guests from my data set.