This doc is opinionated. If you have proven better ways to do some of this stuff, you can contact me. I will most likely get butthurt, so there's not much of a reason to make an argument.
Usually, when I make static classes, people complain about global variables. You are wrong. They are declared module-level, not global. I mainly use them to group functions with the data they modify, or, more importantly, with data that can't be saved with functions attached (loaded Json or from databases).
The bots I usually make are split into the following classes, with some slight variation depending on use cases: