So I looked into issue (https://github.com/Lonami/grammers/issues/210) with is_bot working incorrectly when checking for message.chat(). I think I have a fix. Basically message.chat() just calls utils::always_find_entity, which calls types::Chat::unpack, which for both users and bots just returns empty user with id and access hash. I just made seperate match branch for PackedType::Bot. Not sure if there is a way to make it work better for other fields but at least this field works.
Here is my explanation from telegram: