good, and I changed the $2 to $2- in the conditional so you could use on or off as the first word in the question without it stopping the bot.

Code:
on ^*:TEXT:!8ball*:#:{
  haltdef
  if ($2- == on && $nick isop $chan) { set %8ball.status true | msg $chan 8Ball now active }
  elseif ($2- == off && $nick isop $chan) { unset %8ball.status | msg $chan 8Ball now off }
  elseif (%8ball.status) {
    set %8ball $r(1,9)
    if (%8ball == 1) .msg $chan 10No
    if (%8ball == 2) .msg $chan 10Yes
    if (%8ball == 3) .msg $chan 10Maybe
    if (%8ball == 4) .msg $chan 10Of course
    if (%8ball == 5) .msg $chan 10Not sure
    if (%8ball == 6) .msg $chan 10How should I know?
    if (%8ball == 7) .msg $chan 10Ask again later.
    if (%8ball == 8) .msg $chan 10Message garbled, no answer available.
    if (%8ball == 9) .msg $chan 10Never on $day $+ s.
  }
  else { notice $nick Unfortunently 8Ball is off }
}