I would put "if ($nick !isop $chan)" at the top so it skips the entire thing if the person is opped.

You also need to put an "if (%match) {" in there.
Code:
on @1:TEXT:*:#botsparadise: {   
  if ($nick !isop $chan) {
    tokenize 32 $strip($1-)
    var %i = 1   
    while (%i <= $0) {    
      .!echo -q $read($scriptdirswearwords.txt,s,$eval($+($,%i),2))    
      if ($readn) { var %match = $addtok(%match,$eval($+($,%i),2),44) }     
      inc %i  
    }   
    ; You need this so you don't take any action of no swears were spoke by $nick
    if (%match) {
      .!echo -q $read($scriptdirswearers.txt,s,$nick)
      if ($readn) { kick $chan $nick You Were Warned } 
      else {  
        msg $chan Do not use: < $+ $nick $+ > " $+ %match $+ " You will be kicked if it happens again 
        write $scriptdirswearers.txt $nick
      }
    }
  }
}
Personally, I would use a hash table for both the swear word file and to keep track of who triggered it. Otherwise you have to at some time clean up swearers.txt. Also, if the person switches nicks then they will get away with a warning instead of a kick. Here is a sample script that uses a hash table to store who has sworn.
Code:
on @1:TEXT:*:#botsparadise: { 
  if ($nick !isop $chan) {  
    tokenize 32 $strip($1-)
    var %i = 1   
    while (%i <= $0) {    
      .!echo -q $read($scriptdirswearwords.txt,s,$eval($+($,%i),2))
      if ($readn) { var %match = $addtok(%match,$eval($+($,%i),2),44) }     
      inc %i  
    }   
    if (%match) {
      if ($hget(SwearKicked) == $null) { hmake SwearKicked 100 }
      if ($hfind(SwearKicked,$fulladdress,1,W)) {
        var %item = $ifmatch , %val = $hget(SwearKicked,%item)
        if (%val > 5) { ban $chan $nick 2 | kick $chan $nick You were warned %val times!  Now you are banned! }
        else { kick $chan $nick You were warned %val time $+ $iif(%val > 1,s) $+ ! }
        hinc -u7200 SwearKicked %item 1
      }
      else {
        hadd -u7200 SwearKicked $+(*!*,$address) 1
        msg $chan Do not use: < $+ $nick $+ > " $+ %match $+ " You will be kicked if it happens again
      }
    }
  }
}
It will add their address to a hash table (to avoid people escaping by changing nicks) and each entry will expire after 2 hours. It will warn with a msg the first time, kick after warnings 1-5, and ban the user after.