ziv, you don't need to pass it. The $chan or # will work. Why go the extra mile for when you can just do swear $1- ? Try it for yourself. Yes, I agree with chacha. It'd be better to use $istok then:
Code:
On *:Text:*:#: { swear $1- }
On *:Action:*:#: { swear $1- }
alias -l swear {
  if ($nick !isop #) {
    if (!$hget(swear)) hmake swear 10
    var %swr = 1
    while %swr <= $lines($mircdirswear.txt) {
      if ($istok($strip($1-),$read($mircdirswear.txt,%swr),32)) {
        hinc swear $nick
        if ($hget(swear,$nick) == 1) .do something here
        if ($hget(swear,$nick) == 3) .do something here
      }
      inc %swr
    }
  }
}