Chat commands are:
- only available in 1x1 chats
- identified by a global unique verb
- associated with a list of arguments
- typed : free (string, float, int), constrained (query result)
- can trigger a suggestion component : reuse regular list components?
- trigger a callback when fired (call an events, visual feedback? always send a message?)
Ok, so it's time to bring validation into the discussion. Because even "free" texts or numbers aren't truly free, e.g. they would be lowercase-only, non-empty, larger than zero, etc.
For the constrained ones we'd typically have the default validation that the value has to exist in the list of allowed values. Practically enum type.