sorry, i did not answer.

I've done a new one ... now it does not work with *.ini files, it works with *.txt files

Code:
On *:TEXT:!addbadword*:#: {
  %badword.a.adicionar = $2-
  if (($nick isop $chan) || ($nick ishop $chan)) {
    /write Badwords\Badwords_ $+ $chan $+ .txt %badword.a.adicionar
    /notice $nick $2 adicionado à lista de badwords do canal $chan com sucesso.
  }
}

On *:TEXT:!rembadword*:#: {
  var %badword.a.remover = $2
  if (($nick isop $chan) || ($nick ishop $chan)) {
    /write -ds %badword.a.remover Badwords\Badwords_ $+ $chan $+ .txt
    /notice $nick $2 removido da lista de badwords do canal $chan com sucesso.
  }
}

On *:TEXT:!listbadword*:#: {
  if (($nick isop $chan) || ($nick ishop $chan)) {
    var %conta.linhas = $lines(Badwords\Badwords_ $+ $chan $+ .txt)
    var %while.1 = 1
    var %while.2 = 41
    var %while.3 = 81
    var %while.4 = 121
    var %while.5 = 161
    var %while.6 = 201
    while ( %while.1 <= 40 ) {
      var %ler.linha1 = $gettok($read(Badwords\Badwords_ $+ $chan $+ .txt,%while.1),1,32)
      var %msg.linha1 = %msg.linha1 %ler.linha1
      inc %while.1
    }
    notice $nick Badwords: %msg.linha1
    while ( %while.2 <= 80 ) {
      var %ler.linha2 = $gettok($read(Badwords\Badwords_ $+ $chan $+ .txt.txt,%while.2),1,32)
      var %msg.linha2 = %msg.linha2 %ler.linha2
      inc %while.2
    }
    notice $nick %msg.linha2
    while ( %while.3 <= 120 ) {
      var %ler.linha3 = $gettok($read(Badwords\Badwords_ $+ $chan $+ .txt,%while.3),1,32)
      var %msg.linha3  = %msg.linha3 %ler.linha3
      inc %while.3
    }
    notice $nick %msg.linha3
    while ( %while.4 <= 160 ) {
      var %ler.linha4 = $gettok($read(Badwords\Badwords_ $+ $chan $+ .txt,%while.4),1,32)
      var %msg.linha4 = %msg.linha4 %ler.linha4
      inc %while.4
    }
    notice $nick %msg.linha4
    while ( %while.5 <= 200 ) {
      var %ler.linha5 = $gettok($read(Badwords\Badwords_ $+ $chan $+ .txt,%while.5),1,32)
      var %msg.linha5 = %msg.linha5 %ler.linha5
      inc %while.5
    }
    notice $nick %msg.linha5
    while ( %while.6 <= %conta.linhas ) {
      var %ler.linha6 = $gettok($read(Badwords\Badwords_ $+ $chan $+ .txt,%while.6),1,32)
      var %msg.linha6 = %msg.linha6 %ler.linha6
      inc %while.6
    }
    notice $nick %ler.linha6
  }
}

On *:TEXT:*:#: {
  inc %asn. [ $+ [ $nick ] ]
  var %outro.trigger = $lines(Badwords\Badwords_ $+ $chan $+ .txt)
  var %outro1.trigger = 1
  while (%outro1.trigger <= %outro.trigger) {
    var %txt.trigger = $read(Badwords\Badwords_ $+ $chan $+ .txt,%outro1.trigger)
    var %txt1.trigger = $gettok(%txt.trigger,1,32)
    var %mensagem.trigger = $gettok(%txt.trigger,2-200,32)
    if ( %txt1.trigger isin $1- ) {
      if (%asn. [ $+ [ $nick ] ] == 1) { kick $chan $nick %mensagem.trigger ( $+ %txt1.trigger $+ ) }
      if (%asn. [ $+ [ $nick ] ] == 2) {
        mode $chan +b $address($nick,2)
        kick $chan $nick %mensagem.trigger ( $+ %txt1.trigger $+ )
        timerlavaaboca 1 18000 /mode $chan -b $address($nick,2)
      }
    }
    inc %outro1.trigger
  }
}


it works fine but i've got a doubt

i wanted to improve it so i could do for example

!addbadword * shit * No badwords please

and the bot would only kick the user when he said shit with two spaces

<test> Oh man this is a shit isn't it?

like that...

but if he said

<test> Oh manwhatashitisn't it

as the badword i added was * shit * the bot would not kick him.

Or i could do !addbadword *shit * No badwods

and if he said

thisisashit man

the bot kicked him

all depended on the *

!addbadword *gay* Test

when the bot detected the letters g a y, kick

<test> youaregay!

did you understand?

i don't know how to do it