Anti spam

Difficoltà con il BOT ? Qui puoi esporre i tuoi problemi.
DemoneBianco
Messaggi: 38
Iscritto il: 08/01/2010, 1:51

Anti spam

Messaggioda DemoneBianco » 29/01/2010, 20:27

Sono riuscito a sistemare la sentinella che reagisce solo quando vede un link "www.", solo volevo farlo anche per i canali e qui ho qualche difficoltà. Volevo sapere come fare affinché on text #..='$data' reagisca solo se il canale non sia #canale1 o #canale2 ecc oppure vede che il canale non sia nessuno citati all'interno di una lista di un file! Come posso fare? Grazie in anticipo

BuDuS
Amministratore
Messaggi: 364
Iscritto il: 19/07/2009, 14:15
Contatta:

Re: Anti spam

Messaggioda BuDuS » 30/01/2010, 17:01

Dunque, cerco di capire il problema:
In determinati canali, elencati all'interno di un file che posso chiamare .xchat2/buduscript/lista_canali.txt, voglio eseguire un qualche comando nel caso in cui un utente scriva una frase contenente il pattern www.


Come prima cosa immagino una sentinella che reagisce quando qualcuno scrive www.:

Codice: Seleziona tutto

/event add 0 text www\.='$data' /....

bene, ora ho il problema di determinare cosa questa sentinella dovrà fare quando reagisce.
Devo fare in modo che venga controllato un file, alla ricerca del canale che, evidentemente, saprò utilizzando la variabile $channel; sfruttando i comandi condizionali, che possono eseguire dei comandi del sistema operativo ed utilizzarne l'output per eseguire un confronto, posso fare qualche prova.
Prima, però, mi conviene aprire un terminale e testare quello che voglio ottenere; sfrutterò il comando grep (man grep) per effettuare la ricerca sul file:

Codice: Seleziona tutto

grep -F '#buduscript' lista_canali.txt


su un file contenete:

Codice: Seleziona tutto

#buduscript
#mychan
#mychan1
#mychan2


risponde con:

Codice: Seleziona tutto

#buduscript


ma se provo:

Codice: Seleziona tutto

uda@localhost ~/.xchat2/buduscript $ grep -F '#mychan' lista_canali.txt
#mychan
#mychan1
#mychan2

mi rendo conto che la cosa non funziona bene.
Per risolvere il problema ho pensato di adottare una formattazione speciale per il file; dato che il nome di un canale non può contenere spazi, ho pensato che aggiungendo uno spazio all'inizio e alla fine di ogni riga dove elenco un canale mi permette una cosa di questo tipo:

Codice: Seleziona tutto

uda@localhost ~/.xchat2/buduscript $ grep -F ' #mychan ' lista_canali.txt
 #mychan

Bene: cercando "#mychan" ottengo solo quello e non soluzioni multiple o comunque "simili", che falserebbero quello che voglio ottenere.

Ora non mi resta che tradurre la cosa in un comando condizionale BuDuScRiPt, avendo l'accortezza di effettuare il confronto dopo aver tolto gli eventuali spazi iniziale e finale dal risultato che andrò ad ottenere.
Provo una cosa come questa (da X-Chat):

Codice: Seleziona tutto

/budus if "'$(grep -F ' #mychan ' $HOME/.xchat2/buduscript/lista_canali.txt )'" ! '' /budus if "strip($output)" = #mychan /ECHO strip($output)

e ottengo proprio "#mychan" - senza spazi - come risultato.
Ora non mi resta che utilizzare questo comando come azione della sentinella, ottenendo:

Codice: Seleziona tutto

/event add 0 text www\.='$data' /budus if "'$(grep -F ' #mychan ' $HOME/.xchat2/buduscript/lista_canali.txt )'" ! '' /budus if "strip($output)" = #mychan /ECHO strip($output)

ma chiaramente non va ancora bene: "#mychan" deve essere personalizzato con il nome del canale, quindi:

Codice: Seleziona tutto

/event add 0 text www\.='$data' /budus if "'$(grep -F ' $channel ' $HOME/.xchat2/buduscript/lista_canali.txt )'" ! '' /budus if "strip($output)" = $channel /ECHO strip($output)

infine, devo personalizzare quello che, alla fine, deve essere fatto; supponendo che devo kickare l'utente che ha scritto "www.", dovrò utilizzare una sentinella come questa:

Codice: Seleziona tutto

/event add 0 text www\.='$data' /budus if "'$(grep -F ' $channel ' $HOME/.xchat2/buduscript/lista_canali.txt )'" ! '' /budus if "strip($output)" = $channel /KICK $ru Non e' consentito spammare indirizzi WEB nel canale $channel .


Se, anziché elencare i canali dove non si può scrivere www. vuoi elencare quelli dove è concesso, basta aggiungere l'opzione "v" al grep, in questo modo:

Codice: Seleziona tutto

/event add 0 text www\.='$data' /budus if "'$(grep -vF ' $channel ' $HOME/.xchat2/buduscript/lista_canali.txt )'" ! '' /budus if "strip($output)" = $channel /KICK $ru Non e' consentito spammare indirizzi WEB nel canale $channel .

DemoneBianco
Messaggi: 38
Iscritto il: 08/01/2010, 1:51

Re: Anti spam

Messaggioda DemoneBianco » 30/01/2010, 17:55

Risposta off topic.

BuDuS
Amministratore
Messaggi: 364
Iscritto il: 19/07/2009, 14:15
Contatta:

Re: Anti spam

Messaggioda BuDuS » 30/01/2010, 20:03

Hai fatto una domanda e ho dato una risposta, che magari non è quello che volevi, ma certamente non è off-topic per il semplice motivo che, anche interpretando diversamente quanto hai chiesto, comunque la soluzione è molto analoga.

Semmai hai aperto tu off-topic nella sezione sbagliata, dato che non è un problema legato al BOT ma allo SCRIPT ... che poi tu usi queste cose sul BOT è altro discorso, ma sono temi legati allo SCRIPT in tutti i casi. Ma non è certo un problema.

Rileggendo quanto hai scritto:
Volevo sapere come fare affinché on text #..='$data' reagisca solo se il canale non sia #canale1 o #canale2 ecc oppure vede che il canale non sia nessuno citati all'interno di una lista di un file! Come posso fare?

mi sono reso conto - cosa evidentemente non reciproca - che è interpretabile almeno in 2 modi diversi:
  • Una sentinella che reagisce a "www." in determinati canali
  • Una sentinella che reagisce a "#nome_canale", dove quest'ultimo è un qualcosa preso da una qualche lista.

Interpretando la domanda nel secondo modo la sentinella non dovrà più reagire a "www." ma - ad esempio - semplicemente ad un "#", tipo:

Codice: Seleziona tutto

/event add 0 text #='$data' ......


Chiaro, qualsiasi canale uno scriva, la sentinella reagirà. Come azione uno può crearsi un file script che esegue il controllo e risponde dando l'eventuale comando di risposta, tipo:

Codice: Seleziona tutto

/event add 0 text #='$data' /budus pipe_script $HOME/.xchat2/buduscript/controllo_spam.sh \($data\)

passandogli come parametro quello che l'utente ha scritto.
Lo script dovrà analizzare il parametro passato e agire di conseguenza.

BuDuS
Amministratore
Messaggi: 364
Iscritto il: 19/07/2009, 14:15
Contatta:

Re: Anti spam

Messaggioda BuDuS » 02/02/2010, 22:15

Grazie alle funzionalità aggiunte a partire dalla versione 3.1.85 il problema è risolvibile con una sola sentinella che fa uso di funzioni avanzate:

Codice: Seleziona tutto

/event add 0 text #='$data' /budus cmd /budus set chan_name filter( +#[^ _BUDUSCRIPT_COMMA_]*,$ru.say )\;/budus if "'$(grep -F ' $chan_name ' $HOME/.xchat2/buduscript/lista_canali.txt)'" = '' /budus cmd /ECHO $ru non puoi nominare $chan_name\;/budus else /ECHO A $ru è concesso scrivere $chan_name


N.B.: La funzione "/budus set" ha un bug che si manifesta cambiando valore alle variabili; fino al prossimo aggiornamento è probabilmente meglio usare "/budus seth".

DemoneBianco
Messaggi: 38
Iscritto il: 08/01/2010, 1:51

Re: Anti spam

Messaggioda DemoneBianco » 03/02/2010, 19:10

alla fine continui a non rispondere a quello che dico, non è chiaro che fa e il problema posto, che pongo a fare le domande se poi rispondi come ti pare? Era meglio in chat, qui rispondi molto peggio di quando lo faccio in chat. Questo era x dimostrarti che nn puoi usare le mie parole contro di me che mi parli del mio forum ;) Alla fine non hai esaudito a nessuna mia risposta e persisti a interpretare le risposte come ti pare e piace

BuDuS
Amministratore
Messaggi: 364
Iscritto il: 19/07/2009, 14:15
Contatta:

Re: Anti spam

Messaggioda BuDuS » 03/02/2010, 20:03

Premetto sottolineando una cosa scritta in precedenza:
mi sono reso conto - cosa evidentemente non reciproca - che è interpretabile almeno in 2 modi diversi:


Speravo che le interpretazioni possibili fossero solo 2, ma evidentemente sbagliavo.

DemoneBianco ha scritto:alla fine continui a non rispondere a quello che dico, non è chiaro che fa e il problema posto, che pongo a fare le domande se poi rispondi come ti pare?


Non è che rispondo come mi pare: cerco di capire cosa hai chiesto e rispondo di conseguenza.
Parti dal presupposto che, non necessariamente, ci si possa accorgere che una domanda non la si è capita. Io la leggo, la capisco in un modo e rispondo di conseguenza. In genere, non vedo molta gente che legge, chiede se ha capito la domanda e poi risponde, normalmente leggono e danno una risposta (magari nella speranza di azzeccarci se non è chiarissimo quanto letto).

Inoltre: se la risposta - anche sbagliata - fosse utile solo ed esclusivamente a te, non avrei risposto ma chiesto subito chiarimenti.
Ma dato che comunque la risposta che ho dato può aiutare altri nei contesti più disparati, non mi sono fatto molti problemi a dare una risposta.

DemoneBianco ha scritto: Era meglio in chat, qui rispondi molto peggio di quando lo faccio in chat.


Beh, qui i dubbi sono molti di più:
1) Le tue domande non le capisco nemmeno in chat, quindi cambia poco rispondere qua o là da questo punto di vista.
2) Qui rimangono sia le domande che le risposte e, anche se "non si incontrano", comunque possono risultare di utilità (discorso descritto qualche riga sopra).

DemoneBianco ha scritto: Questo era x dimostrarti che nn puoi usare le mie parole contro di me che mi parli del mio forum ;)


Non uso parole contro di te; faccio solo notare come le interpretazioni possibili ad una domanda posta siano molteplici.
E comunque il discorso che facevo io era un altro: nel tuo canale inviti gli utenti ad usare il tuo Forum, non puoi sorprenderti che io faccia la medesima cosa.

DemoneBianco ha scritto: Alla fine non hai esaudito a nessuna mia risposta e persisti a interpretare le risposte come ti pare e piace


Tranquillo, le interpretazioni più plausibili le ho esaurite, quelle rimaste sono troppo strane perché riesca a rispondere senza un chiarimento (possibilmente esaustivo).

DemoneBianco
Messaggi: 38
Iscritto il: 08/01/2010, 1:51

Re: Anti spam

Messaggioda DemoneBianco » 03/02/2010, 23:56

Vedo che persisti ancora a risp come cavolo ti pare e aggiungo anche con arroganza. Intanto parlo italiano e se leggi fallo bene xké io parlavo proprio del mio invito nel mio forum e non la risp che hai dato te. Secondo come fatto notare più volte hai la presunzione di rispondere dando per "giusto" e chiaro quello che dici, non pensi che magari TU CHE PROGRAMMI CERTE COSE PER TE SIANO OVVIE? Ti rammento che anche se non programmo bash, IO PROGRAMMAVO, pertanto non far il sapientone con me, scendi con più umiltà quando comunichi, perché è vero che quello che fai non ci paghi e non ti paghiamo, ma questo non ti autorizza a porgerti come fai. Ti ho fatto notare sia in chat che qui che non hai dato risposte consone alla richiesta e tu piuttosto che con UMILTÀ (non è qualcosa che si mangia) chiedere dettagli te ne strasbatti e rispondi come ti pare, per non parlare che non spieghi nemmeno bene quello che fai, hai mai provato a rileggerti non facendolo come un programmatore? Fallo e scoprirai chi è che non si esprime al meglio. A ME CHE HO POSTO UN PROBLEMA, non me ne frega una mazza che possa aiutare un fantomatico qualcuno che forse, se... IO HO UN PROBLEMA, te l'ho posto COME MI HAI CHIESTO qui che leggi e segui con calma! Il risultato è decisamente pessimo, superficiale e inutile!
Su un altro post (nella sezione che ritieni sbagliata) ti avevo posto UNA CHIARA RICHIESTA di aiuto sentinella, ove tu HAI RISP in maniera arbitraria specifica e non GENERICA, come ti è stato detto (in lingua italiana). Come detto nella continuazione del post che ignori da un pezzo.
Quando si fa un programma non deve essere il cliente ad entrare nella tua testa, ma tu ad entrare nella sua, anche se di chi entri è un coglione ottuso, TU DEVI DIVENTARE COSÌ CAPIRE E FARGLI CAPIRE la soluzione al problema, cosa che tu invece NON fai, come constatato in diversi post e risposte date.
Ovviamente non pretendo che mi dia aiuto, ma se lo devi fare fallo nel rispetto della persona e con metodo citato su, questo te lo consiglio sia per il bot sia nel mondo reale ;)
Ultima cosa, come detto in chat lo ripeto qui, come mai le stesse cose che dico a te, gli altri lo capiscono e tu no? Siamo sicuri che sono io che sempre non mi esprimo bene o... ;)
Per tutto il resto, grazie per quello che già mi hai fatto di utile.

BuDuS
Amministratore
Messaggi: 364
Iscritto il: 19/07/2009, 14:15
Contatta:

Re: Anti spam

Messaggioda BuDuS » 04/02/2010, 2:08

DemoneBianco ha scritto:Vedo che persisti ancora a risp come cavolo ti pare e aggiungo anche con arroganza. Intanto parlo italiano


Magari qualche minuto in più speso a scrivere - come pare hai fatto questa volta - non farebbe male, ma sorvolo.

DemoneBianco ha scritto: e se leggi fallo bene


La prima volta che ho risposto, temo di non aver letto bene, ma le altre l'ho fatto e continuo a pensare che le interpretazioni possibili sono ALMENO 2 ed io ho risposto ad entrambe (appunto, con 2 soluzioni diverse).

DemoneBianco ha scritto:xké io parlavo proprio del mio invito nel mio forum e non la risp che hai dato te.


Qui non ho ben capito, ma ormai sono abituato e non credo sia pure un punto importante.

DemoneBianco ha scritto:Secondo come fatto notare più volte hai la presunzione di rispondere dando per "giusto" e chiaro quello che dici, non pensi che magari TU CHE PROGRAMMI CERTE COSE PER TE SIANO OVVIE?


Eppure metto dei comandi che basta poco oltre un copia/incolla e descrivo anche quello che fanno.
Basterebbe "provarli" per vedere come si comportano, magari anche cercando di modificarli per vedere come le cose reagiscono.

DemoneBianco ha scritto: Ti rammento che anche se non programmo bash, IO PROGRAMMAVO, pertanto non far il sapientone con me,


Prima mi sembrava sostenessi che non capivo quello che chiedi.
Ora sembri sostenere che "quello che scrivo è incomprensibile".

Tra l'altro, proprio perché programmavi, certe cose ti dovrebbero essere familiari, eppure non ti limiti a chiedere chiarimenti sul funzionamento di qualcosa, tendi a chiedere "la soluzione finale al problema".

Se mi chiedi "cosa fa la tal funzione dello script perché magari nella guida non è abbastanza chiaro", mi pare una domanda diretta, impossibile da fraintendere e che rispecchia in pieno lo scopo di questo posto.
Se mi chiedi una "soluzione antispam", beh, non è detto che tu abbia in mente quello che posso capire io, tra l'altro senza uno straccio di tentativo di risolvere il problema, qualcosa, che almeno uno possa capire dove sbagli.

DemoneBianco ha scritto: scendi con più umiltà quando comunichi, perché è vero che quello che fai non ci paghi e non ti paghiamo, ma questo non ti autorizza a porgerti come fai. Ti ho fatto notare sia in chat che qui che non hai dato risposte consone alla richiesta e tu piuttosto che con UMILTÀ (non è qualcosa che si mangia) chiedere dettagli te ne strasbatti e rispondi come ti pare, per non parlare che non spieghi nemmeno bene quello che fai, hai mai provato a rileggerti non facendolo come un programmatore?


Tempo permettendo, rileggo sempre quello che scrivo, anche a distanza di tempo, a volte correggo pure, ecc...

E' chiaro che se le cose le leggi senza provarle, quasi sicuramente non puoi capirci nulla.
Ho scritto la prima soluzione man mano che cercavo di risolverla, provando a spiegare il procedimento che adotto per risolvere un problema.
Se uno esegue le medesime manovre, ottiene i medesimi risultati, e se fa qualche modifica, immagino riesca a capire come funziona il tutto.

Ma, di nuovo, non capisco più se il problema è che non capisco le tue domande o se pure, anche azzeccandoci, comunque siano incomprensibili le risposte.


DemoneBianco ha scritto:Fallo e scoprirai chi è che non si esprime al meglio. A ME CHE HO POSTO UN PROBLEMA, non me ne frega una mazza che possa aiutare un fantomatico qualcuno che forse, se... IO HO UN PROBLEMA, te l'ho posto COME MI HAI CHIESTO qui che leggi e segui con calma! Il risultato è decisamente pessimo, superficiale e inutile!


A mio parere lo hai scritto parecchio male, tant'è che sembra lo abbia frainteso 2 volte.
Tu sei convinto di scrivere benissimo le domande, ti chiedo io: prova a metterti nei panni di uno che non sa minimamente dei tuoi problemi se, dalla tua domanda, capisce - anche minimamente - che diavolo chiedi.

So per certo che ti risponderai "lo capisce benissimo", ma pazienza.

DemoneBianco ha scritto:Su un altro post (nella sezione che ritieni sbagliata) ti avevo posto UNA CHIARA RICHIESTA di aiuto sentinella, ove tu HAI RISP in maniera arbitraria specifica e non GENERICA, come ti è stato detto (in lingua italiana). Come detto nella continuazione del post che ignori da un pezzo.


La sezione sbagliata è QUESTO POST, non quell'altro.
Il post che citi mi sembrava già risolto, mi pare avessi scritto in chan che avevi creato il comando, forse me lo hai pure fatto vedere ... mah.
Se capisco quello che hai chiesto, vedrò di rispondere pure là.

DemoneBianco ha scritto:Quando si fa un programma non deve essere il cliente ad entrare nella tua testa, ma tu ad entrare nella sua, anche se di chi entri è un coglione ottuso, TU DEVI DIVENTARE COSÌ CAPIRE E FARGLI CAPIRE la soluzione al problema, cosa che tu invece NON fai, come constatato in diversi post e risposte date.
Ovviamente non pretendo che mi dia aiuto, ma se lo devi fare fallo nel rispetto della persona e con metodo citato su, questo te lo consiglio sia per il bot sia nel mondo reale ;)
Ultima cosa, come detto in chat lo ripeto qui, come mai le stesse cose che dico a te, gli altri lo capiscono e tu no? Siamo sicuri che sono io che sempre non mi esprimo bene o... ;)
Per tutto il resto, grazie per quello che già mi hai fatto di utile.


A dire il vero, problemi di comprensione così "gravi", li ho avuti solo con te .... e sono almeno 12 anni che aiuto gente (per non parlare di quelli che hanno aiutato me) con mezzi diversi (chat, forum, mail, newsgroup, ecc...) e sui più disparati argomenti.

Faccio inoltre notare che non ho mai scritto che le mie spiegazioni siano comprensibili da chiunque, come pure la guida del programma, ecc...
Io ho provato a descrivere le cose in modo conciso e semplice, che poi ci sia riuscito è altro paio di maniche.

Ma, ancora, a qua il problema non è tanto quello che scrivo io, ma che non capisco quello che scrivi tu.

Dato che di due interpretazioni che ho dato non ne ho azzeccata una, sarei proprio curioso di sapere qual'è il problema .... magari se c'è un terzo che, anche anonimamente (NON RICHIEDE ISCRIZIONE QUESTO FORUM) vuole azzardare una risposta, ben venga.


Torna a “Supporto BOT”

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite