It’s not very easy, but what I always recommend people do is:
1. Before you get a reply(), first do like setUservar(username, “origMessage”, message) and store their raw original message.
2. In an object macro you could get it back like: `let origMessage = await rs.getUservar(rs.currentUser(), “origMessage”)` (JavaScript example)
3. And then re-parse it yourself. You’ll have the full, raw, original message so if the user is like “name the chat Mike’s Group” that’s exactly how the origMessage would look—if it matched “+ name the chat *” you’ll have to do your own regexp in the macro to get just the name. Like /^name the chat (.+?)$/
It’s not possible for RiveScript to have an “<ostar1>” tag or something that catches the original contents of wildcards, because the user message that gets tested against the +Trigger regexp has already been formatted, lowercased and stripped.
For some simple use cases (like if you wanted “[brackets]” or an “@” symbol from an email address to stay intact), enabling UTF-8 mode will let most symbols slip through—but not common punctuation like ! ? ; : .—but you can change the punctuation regexp to something else if you want to preserve punctuation, but this might severely impact matching ability. For example, “hello?” does not match “+ hello” if you allow the literal question mark to stay in the message.