So, you need a full match and your line in the file are one word only, this simplify things a bit because it then doesn't matter if you match the lines in the file against the words in the sentence or if you match the words in the sentence against the lines in the file, this also means you'll indeed use $read and the 'w' switch, which provides a way to do the latter for one word, so a loop and you're good.
Note that $read with 'w' already performs a loop for you on each line, and it will return that whole line, you only need to check that $read is different from $null to make sure you have a match in this case.
Code:
on *:text:*:#chan:{
  var %a 1
  ;as long as we have a word in the sentence
  while ($gettok($1-,%a,32) != $null) {
    var %v $v1
    ;if the current word matches a line
    if ($read(badwords.txt,tnw,%v) != $null) { ;a badword is found }
    inc %a
  }
}
Remember to always use the 'n' switch with $read and $readini to prevent code injection


#mircscripting @ irc.swiftirc.net == the best mIRC help channel