One other note of the flood protection. You can set it per-user so that if two different people use the same trigger, it will show up for both, but if the same person uses it twice, it will only show once. You can even combine the normal method and that so that you have a 10 second (or whatever) protection for everyone, but you only let a command be done once every 30 minutes (or whatever) for the same person.
Example:
on *:text:hi:#: {
if (%flood || $+(%,flood.,$nick)) { return }
set -u10 %flood On
set -u1800 %flood. $+ $nick On
msg $chan Hello, $nick $+ .
}
For this example, you will never respond to "hi" more than once every 10 seconds (the main %flood variable) and you will not respond to "hi from the same nick more than once every 30 minutes (1800 seconds = 30 minutes). A variable will be set for each nick in the form %flood.nick . You can change that the same way you'd change %flood. Just replace all "flood" with whatever you want to use.
If you do plan on using long times like the 30min in this example, I definitely recommend the on start code I showed previously.