Code:
;# /AddWord <Word> [Words ...]
Alias AddWord {
  LoadList
  var %i = 1
  WHILE ( $gettok($1-,%i,32) ) { hadd CS_BadwordList $ifmatch 1 | inc %i }
  SaveList
  echo $colour(info) -a * Added Badword(s): $1-
}

Alias -l LoadList {
  if ( !$hget(CS_BadwordList) ) hmake CS_BadwordList
  if ( $exists(CS_BadwordList.hash ) hload CS_BadwordList CS_BadwordList.hash
}

Alias -l SaveList {
  if ( !$hget(CS_BadwordList) ) LoadList
  hsave -o CS_BadWordList CS_BadWordList.hash
}

On @*:TEXT:*:#Christian_Singles: {
  if ( $nick isop $chan ) return
  if ( !$hget(CS_BadwordList) ) LoadList
  var %s = $strip($1-)
  var %n = $regex(Badword,%s,/\b(.+?)\b)
  var %i = 1
  WHILE ( $regml(Badword,%i) ) {
    inc %i
    if ( !$hget(CS_BadwordList,$ifmatch) ) continue
    ban -u600 $chan $nick 3
    kick $chan $nick We don't say things like that here.
    echo $colour(info) -a * Badword: $nick said $ifmatch
    break
} }

Actually, I just wrote this adlib (haven't even tested it) and notice your original post requested word pairs... this script only supports single words. Let me adjust it slightly, tomorrow.

- Raccoon


Well. At least I won lunch.
Good philosophy, see good in bad, I like!