Simplify by allowing the statement check to be the default fallback if no match found.
Remove unnecessary statement? method.
Remove skip on last test as now we default to statement response if no match found.
Simplify shouting check to upcase message and compare.

No need for any complex regex here.
Reorder protected methods.
Cast message as string before checks to avoid duplicate nil checks.

We want to keep the code clean and avoid constant nil checking so by
casting the variable as a String if its nil it'll return an empty
string.