The arch wiki has a udev rule that can automatically do something if the battery crosses a certain threshold: https://wiki.archlinux.org/title/Laptop#Hibernate_on_low_battery_level
No polling which is great. I always try to do stuff on an event driven basis where possible for efficiency reasons. Gotta test this out though, since your battery might not send events for every percent change.
W.r.t. water bottles, I think it’s because people don’t look at or think about the signs that are often posted. A loud person yelling specifically at you is much more likely to make someone stop and ask themselves if they have a water bottle.
I’m definitely not defending it, but that’s my take on the matter. The whole water bottle thing is just security theater anyways.