Un efficiente script antispam e risponditore su away per mIRC

Tutti gli script che uso in mIRC sono fatti da me, quindi ne aggiungo di nuovi o modifico i vecchi quando ne ho necessità. Va da sé che uno script antispam è stata la primissima cosa che ho fatto, non ne potevo più di ricevere inviti in query per entrare in altri canali o visitare siti web.

Questo script, come ogni altro dello stesso tipo, non fa altro che riconoscere delle parole chiavi o espressioni particolari in un messaggio e ignorarlo senza farlo apparire se corrisponde al filtro.

Per iniziare potete scaricare questo addon per caricare lo script in mIRC senza dover aggiungere manualmente le righe nel pannello remote. La versione che scaricherete qui è quella più aggiornata, ma la spiegazione che segue, se siete curiosi e volete leggerla, copre il 90% del funzionamento dello script. Dopo aver decompresso lo ZIP, leggete il file TXT per tutte le istruzioni (in inglese, ma o mangiate questa minestra o vi buttate dalla finestra).

L’evento che in mIRC viene lanciato quando si apre una query è il seguente:

on 1:OPEN:?:*:{....

Il punto interrogativo specifica che l’evento dovrà attivarsi solo se si tratta di una query, e l’asterisco specifica che qualunque messaggio in query verrà controllato.

Il mio script fa 4 cose: controlla se il nick che manda un messaggio è un operatore in uno dei canali in cui sono, e in questo caso non filtra il messaggio; se il nick che manda il messaggio non è in nessuno dei miei canali il messaggio viene ignorato a prescindere. Se il messaggio passa anche questo controllo, viene verificato che non vi sia presente nessuna parola chiave che lo identifica come spam, altrimenti la query viene subito chiusa e il messaggio viene aggiunto in una finestra apposita dove verranno raccolte tutte le query non accettate, per verificare che non ne sia stata rifiutata nessuna per sbaglio. Qualora il messaggio non sia spam, lo script controlla se si è correntemente away, nel qual caso ci sarà una risposta automatica che dice da quanto tempo si è attivato l’away e che avverte che probabilmente si sta dormendo se è notte fonda.

Questa è una versione completa dello script (che funziona in mIRC 5.9, non so per le versioni precedenti):

on 1:OPEN:?:*:{
  var %Ghost
  set %Ghost 1
  var %Cnt
  set %Cnt 1
   :Loop
  //if ($nick isop $chan(%Cnt)) goto allok
  //if ($ialchan($nick,$chan(%Cnt),1) != $null) set %Ghost 0
  inc %Cnt
  //if (%Cnt < = $chan(0)) goto Loop
  //if (%Ghost == 1) goto absent
  if ($strip($1-) == hello,) goto lamer
  if ($strip($1-) == hello) goto lamer
  if ($strip($1-) === hi) goto lamer
  if ($strip($1-) == hallo) goto lamer
  if ($strip($1-) == holla) goto lamer
  if ($pos($strip($1-),#,1) != $null) goto lamer
  if ($pos($strip($1-),j o i n,1) != $null) goto lamer
  if ($pos($strip($1-),how are you,1) != $null) goto lamer
  if ($pos($strip($1-),how are u,1) != $null) goto lamer
  if ($pos($strip($1-),www.,1) != $null) goto lamer
  if ($pos($strip($1-),slm,1) != $null) goto lamer
  if ($pos($strip($1-),asl,1) != $null) goto lamer
  if ($pos($strip($1-),gamez,1) != $null) goto lamer
  if ($pos($strip($1-),leech,1) != $null) goto lamer
  if ($pos($strip($1-),join,1) != $null) goto lamer
  if ($pos($strip($1-),plz come,1) != $null) goto lamer
  if ($pos($strip($1-),pls come,1) != $null) goto lamer
  if ($pos($strip($1-),/server,1) != $null) goto lamer
  if ($pos($strip($1-),www.cheatos.com,1) != $null) goto lamer
  if ($pos($strip($1-),serv,1) != $null) goto lamer
  if ($pos($strip($1-),click here,1) != $null) goto lamer
  if ($pos($strip($1-),xguest,1) != $null) goto lamer
  if ($pos($strip($1-),/server,1) != $null) goto lamer
  if ($pos($strip($1-),check out my pics,1) != $null) goto lamer
  if ($pos($strip($1-),check my pics,1) != $null) goto lamer
  if ($pos($strip($1-),http://,1) != $null) goto lamer
  if ($pos($strip($1-),sex,1) != $null) goto lamer
  if ($pos($strip($1-),porn,1) != $null) goto lamer
  if ($pos($strip($1-),we need,1) != $null) goto lamer
  if ($pos($strip($1-),chat,1) != $null) goto lamer
  if ($pos($strip($1-),Matches for,1) == 1) goto Results
  goto allok
  :absent
  /query $nick Not in any of my channels. Message ignored.
  /close -m $nick
  goto end
  :lamer
  /query $nick This message's been detected as an invite/whatever else, so this window is being closed. My script can't be 100% accurate, so sorry if it's not your case.
  /close -m $nick
  //if ($window(@lamerz,1) == $null) /window -n @lamerz
  //aline -hp @lamerz 9 [ $time ] 7 < $nick > 8 $1-
  goto end
  :allok
  //if ($away == $true) {
    //if ($asctime(H) < 9) //query $nick [Automated Response] It is $asctime(H:nn) $+ $asctime(tt) here, and I am away ( $+ $duration($idle,2) idle), so I may be sleeping.
    else //query $nick [Automated Response] I am away ( $+ $duration($idle,2) idle). I could answer you if I'm here and the speakers are on ;-)
  }
  :end
}

Come personalizzare lo script:

  • Aggiungere nuove parole chiave: semplicemente mettete in fondo alla lista una riga come questa "if ($pos($1-,parole chiave,1) != $null) goto lamer".
  • Specificare frasi precise: potete anche pretendere che lo script blocchi alcune parole chiave controllando la correttezza di maiuscole/minuscole, in questo caso usate una riga come quella di prima, ma con "$poscs" così diventerà"if ($poscs($1-,ParOle ChiAvE,1) != $null) goto lamer". Potete anche controllare che il messaggio venga bloccato solo se comincia per quelle parole e non se le contiene al suo interno, quindi sostituite "!= $null" con"= 1" , esempio "if ($poscs($1-,ParOle ChiAvE,1) = 1) goto lamer".
  • Specificare messaggi interi: potete anche bloccare il messaggio se e solo se è precisamente uguale alla frase che specificate e non ha altre parole, aggiungendo la linea "if ($1- == Frase specifica) goto lamer"; questo controllo non verifica le maiuscole, per fare ciò sostituite"==" con"===", come"if ($1- === FraSe sPecIfiCa) goto lamer".
  • Modificare l'orario di sonno: lo script suppone che io sia quasi sicuramente a dormire tra mezzanotte e le 9, quindi se una query mi arriva in quell'intervallo di tempo la risposta dirà l'orario locale e avvertirà che si sta dormendo. Potete modificare i limiti orari correggendo ad esempio la sveglia dalle 9 alle 10; modificare l'orario di mezzanotte è semplice se lo si vuole posticipare ad esempio all'1 o alle 2, ma se lo si vuole anticipare bisogna modificare del tutto la stringa, per cui vi consiglio di lasciar perdere a meno che non conosciate voi stessi un pò di scripting.

Leave a Reply

Your email address will not be published. Required fields are marked *