I was going through a lot of approved bots for Messenger Platform recently. There are several things that I wanted to highlight.
There are two must have features: greeting text and null-state CTA. Every good bot should have them. The message that you send on the button click should provide an explanation of what your bot does and give some clear options (ideally via buttons).
Value. Bots have very limited UI by nature. Trying to stuff a single bot with a lot of things doesn't work well. A good bot focuses on a single utility function, clear value prop, and aligns all of the flows around this functionality.
Bots should not pretend to be powered by AI, if they are not. Instead of resorting to text input, use the buttons. Use text input only when needing unstructured input (such as an address, search query, etc).
In general, think of bots as apps for which you need to have good onboarding, clear utility, some retention mechanisms (meaningful subscriptions), and potentially some virality (something people would want to share).