Besides needing to remove the ! before msg, you can combine your triggers into a single event.
on *:text:!set *:#:{
if ($nick isop $chan) {
if (!$3) { .notice $nick Incorrect format. Use !set followed by roster, league, news, or website and then the data you want stored. Example: !set website http://www.google.com/ | return }
if ($2 == roster) {
set %roster $3-
}
elseif ($2 == league) {
set %league $3-
}
elseif ($2 == news) {
set %news $3-
}
elseif ($2 == website) {
set %website $3-
}
else { .notice $nick Incorrect format. Use !set followed by roster, league, news, or website and then the data you want stored. Example: !set website http://www.google.com/ | return }
msg $chan done!
}
else { .notice $nick You are not an op and cannot use that command. }
}
Now, that's combining all of the commands that only ops can do that start with !set. You could then combine other commands that are open to everyone in a similar way.
EDIT: The above code works fine and is easy to understand (I think). Below, you can see another method that might be more difficult to understand, but is a bit smaller. You may find it interesting to look at.
on *:text:!set *:#:{
if ($nick isop $chan) {
if (!$3) { .notice $nick Incorrect format. Use !set followed by roster, league, news, or website and then the data you want stored. Example: !set website http://www.google.com/ | return }
if ($istok(roster league news website,$2,32)) {
set % $+ $2 $3-
}
else { .notice $nick Incorrect format. Use !set followed by roster, league, news, or website and then the data you want stored. Example: !set website http://www.google.com/ | return }
msg $chan done!
}
else { .notice $nick You are not an op and cannot use that command. }
}