[edit]
just added them outer most { }, thanks for the pointout FiberOPtics
/me is making mistakes becuase hes to lazy to make the help.txt file, and clone in to trigger the events, to check his code

#help on
on *:text:!help:*:{
if (%i != on) {
play -t!help $nick help.txt 2000
set -su5 %i on
}
}
on *:text:!help !*:*:{
if ((%i != on) && ($istok(!say !die !join !part !cycle !enable !disable !ruser !pass,$2,32))) {
play -t $+ $2 $nick help.txt 2000
set -su5 %i on
}
}
#help end
1st event does !help
2nd event does !help !* and then checks if $2 being the !* matches one of your options, if so plays it, the SET needs no timer unset becuase the -u5 unsets it in 5 seconds
Im sure theres a method of getting if a section header exists in an INI but i cant think of what it is, maybe someone else can adjust the code for it. as well