Not bad for being new, but if you look, the answer may not always represent the question asked, for example;
!8ball How would someone know about that?
8ball reply: To make you feel good...HECK NO! (1st response of your snippet)
I\'d reccomend keeping the same layout but adding something like this?
on :TEXT:!8ball:#: {
if (!$2) notice $nick Please choose a question to ask.
elseif ($2 == how) {
set %8ball $rand(1,5)
if (%8ball == 1) { msg $chan How? why would I know? }
elseif (%8ball == 2) { msg $chan You must be pretty thick if you can\'t answer that yourself. }
(Finish script)
etc, etc. That was it\'s a more...Pesonalised response, you will probably notice that with other 8balls cripts out there.