Filtraggio

In Junction Bot è possibile filtrare i messaggi Telegram in arrivo applicando regole di filtraggio. Siete voi a decidere quali messaggi ricevere e quali filtrare per non vederli (come ad esempio le pubblicità).

I filtri possono essere applicati ai canali separatamente o a tutti i canali contemporaneamente. È possibile combinare una quantità qualsiasi di filtri di qualsiasi tipo.

Caratteristiche supportate: mustHave, mustNotHave, regex, filtraggio per tipo di allegato e molte altre.

Si noti che esiste una funzione di debug molto utile, che può far risparmiare molte ore.

Comandi

/filtro - crea un filtro (per 1 sorgente) O rimuove un filtro se inserito una seconda volta. Si combina con: 'mustHave', 'mustNotHave', 'ogni', tipo di allegato /filterrx - filtraggio tramite regex (vedi esempi qui) /filterall, /filterrxall - crea un filtro per tutte le sorgenti /filtro canale_fonte_riferimento - vede tutti i filtri correnti applicati a un canale

Se si dispone di più regole di inoltro dalla stessa origine a destinazioni diverse, è possibile impostare impostazioni, filtri e sostituzioni diversi per le varie destinazioni. Maggiori dettagli qui.

filtri mustHave e mustNotHave

mustHave - si riceveranno solo messaggi con un testo specifico
Formato:  /filter source_channel_reference mustHave text to receive
Ex.  /filter https://t.me/junction_bot_news mustHave cool cats
Ricordate che il testo di un filtro si applica come un'intera frase, non come parole separate. In questo esempio, quindi, si riceveranno tutti i messaggi contenenti la frase esatta "cool cats". Non è necessario utilizzare caratteri di escape come in questo caso.

mustNotHave - filtra i messaggi con un testo specifico
Formato:  /filter source_channel_reference mustNotHave text to filter out
Ex.  /filter https://t.me/junction_bot_news mustNotHave old hats

Combinazione di filtri

Diversi filtri mustHave verranno combinati in base alla regola “OR”.

Diversi filtri mustNotHave verranno combinati in base alla regola “AND”.

Nota: non è possibile combinarli in un unico comando. Utilizzare un comando separato per ogni filtro.

Esempi:
/filter source_channel_reference mustHave cats
/filter source_channel_reference mustHave kittens
Riceverete tutti i messaggi contenenti la parola "gatti" o la parola "gattini".
/filter source_channel_reference mustNotHave dogs
/filter source_channel_reference mustNotHave puppies 
Non riceverete messaggi contenenti le parole "cani" o "cuccioli".

Filtraggio per tipo di allegato Telegram

Inoltre, è possibile filtrare i messaggi dei media. A tale scopo, utilizzare una delle seguenti stringhe come testo di filtro: <foto>, documento <>, <audio>, <video>, <adesivo>, <voce>, <posizione>, <animazione>, <videoconferenza>, <sondaggio>.

Esempi:
/filter source_channel_reference mustHave <audio>  - si riceveranno solo i messaggi contenenti allegati audio dal canale
/filter source_channel_reference mustNotHave <photo>  - non si riceveranno messaggi contenenti immagini dal canale

Filtraggio avanzato

Inoltre, è possibile utilizzare le espressioni regolari (RegEx) per effettuare il filtraggio. A tale scopo, utilizzare il comando /filterrx. Ha lo stesso formato.

Ecco alcuni esempi comuni:
1. Stop ai post con la parola word nella didascalia di un'immagine
/filterrx canale_fonte_riferimento mustNotHave .*word.*<photo>.*
2. Due parole - word1 e word2 - in un determinato ordine
/filterrx source_channel_reference mustNotHave .*word1.*word2.*
3. Due parole in qualsiasi ordine
/filterrx canale_fonte_riferimento mustNotHave (?=.*\bword1\b)(?=.*\bword2\b).*
5. Due parole in qualsiasi ordine, ignorando il registro
/filterrx source_channel_reference mustNotHave (?i:.*wOrd1.*woRd2.*)
6. Qualsiasi parola di un insieme
/filterrx source_channel_reference mustNotHave .*word1.*|.*word2.*|.*word3.*
7. È possibile combinarli. Per esempio, una qualsiasi delle parole, senza distinzione tra maiuscole e minuscole
/filterrx canale_fonte_riferimento mustNotHave (?i:.*wOrd1.*|.*worD2.*|.*woRd3.*)
8. Qualsiasi parola contenente un elemento dell'alfabeto russo
/filterrx source_channel_reference mustNotHave .*([а-яА-Я]+).*
9. Qualsiasi collegamento HTTP
/filterrx source_channel_reference mustNotHave .*(http:\/\/|https:\/\/).*
10. Qualsiasi numero
/filterrx source_channel_reference mustNotHave .*([0-9]+).*
11. Qualsiasi @nomeutente
/filterrx source_channel_reference mustNotHave .*@([a-zA-Z0-9=&_\-]+).*

È importante capire cosa sono le RegEx prima di usare questi filtri. Ad esempio, il filtro con l’espressione regolare word2 NON CORRISPONDE al messaggio word1 word2 word3, poiché contiene parole diverse da word2. Ricordarsi di aggiungere .* su entrambi i lati della parola: .*parola2.*

Si noti una sfumatura importante: durante il filtraggio, il bot può aggiungere uno spazio e/o un codice di contenuto multimediale alla fine del testo. Pertanto, si consiglia di inserire sempre .* alla fine dei filtri RegEx.

Un altro punto importante: Le RegEx per i filtri di solito hanno un .* all’inizio e alla fine, perché si vuole che l’intero messaggio si adatti all’espressione. Se si vuole usare un’espressione simile per le sostituzioni, probabilmente si vuole rimuovere .* (altrimenti la sostituzione sostituirà l’intero testo del messaggio).

Esiste uno strumento molto comodo per testare le espressioni regolari: https://regex101.com. Impostare il Flavor su “Java 8” e impostare il flag “Linea singola: Il punto corrisponde alla nuova riga”. Questo lo farà funzionare allo stesso modo del matcher di @junction_bot.

Aiuto con le espressioni regolari

Le espressioni regolari sono un argomento molto vasto. L’aiuto in questo settore esula dalla portata dell’amministrazione del bot. Non scrivete agli amministratori in privato chiedendo loro di farvi una regola sostitutiva o un filtro. Inoltre, l’amministrazione del bot non fornisce questo tipo di aiuto nel gruppo di supporto.

Il modo più semplice per creare un’espressione regolare per le vostre esigenze è chiedere a ChatGPT, che è abbastanza bravo in questo.

Inoltre, è possibile cercare aiuto nei forum appropriati. Ad esempio StackOverflow o CodeProject.

Impostazione di un filtro per tutte le fonti

Per aggiungere un filtro a tutte le fonti correnti, usare il comando /filterall o /filterrxall (per le espressioni regolari).

Si noti che le nuove regole di inoltro vengono sempre create con un elenco di filtri vuoto. È possibile copiare i filtri da un’origine esistente.

Per esempio:
/filterrxall add mustNotHave .*(http:\/\/|https:\/\/).*

Questo comando aggiunge a tutte le fonti un filtro che blocca qualsiasi messaggio contenente un link.

Filtri di copia

In Junction Bot è possibile copiare tutti i filtri da un canale Telegram a un altro. A tal fine, utilizzare il seguente formato di comando:

/filter channel_to_copy_filters_to addAllFrom channel_to_copy_filters_from

Rimuovere i filtri

Per rimuovere un filtro è sufficiente inviare nuovamente lo stesso comando.

Per vedere tutti i filtri correnti applicati a un canale, utilizzare il comando

/filter source_channel_reference

Per eliminare tutti i filtri da tutti i canali, utilizzare il comando

/filterall DELETE ALL

Per i filtri RegEx utilizzare i corrispondenti /filterrx e /filterrxall.

Ricezione del solo messaggio N-esimo

In Junction bot è possibile filtrare i messaggi di Telegram per frequenza, in modo da copiare solo ogni n-esimo messaggio (nell’esempio seguente, ogni secondo messaggio). A tal fine, utilizzare il seguente formato di comando:

/filter source_channel_reference every 2

Filtro per data e ora

Il bot Junction può filtrare i messaggi di Telegram in base alla data e all’ora in cui arrivano.

/filtertime source_channel_reference mustHave time interval

Set di intervalli di tempo:
– L’intervallo di tempo in cui devono arrivare i messaggi per i mustHave
– L’intervallo di tempo in cui i messaggi non devono arrivare per mustNotHave

L’intervallo di tempo può contenere il giorno della settimana, l’ora e il fuso orario.

Giorno della settimana. Inizia sempre con la lettera w e poi seguono i numeri dei giorni della settimana (a partire da lun).
Esempio:

w135
Corrisponde al 1°, 3° e 5° giorno della settimana (lun, mer, ven)

w67
Corrisponde al 6° e al 7° giorno della settimana (sabato e domenica).

Tempo. L’ora è sempre in formato 24h, un intervallo da – a (compreso), ore:minuti.
Esempi:
9:30-17:30
0:00-23:59

Fuso orario. Consultare l’elenco dei fusi orari disponibili qui. Se non si indica esplicitamente il fuso orario, questo verrà impostato su CET – Central European Time (Amsterdam/Berlino/Praga/Vienna).

Esempi:

/filtertime source_channel_reference mustNotHave 0:00-7:00
I messaggi non arriveranno da mezzanotte alle 7 del mattino all’ora dell’Europa centrale.

/filtertime source_channel_reference mustHave w12345 8:00-20:00 America/New_York
I messaggi arriveranno solo nei giorni lavorativi (dal lunedì al venerdì) a partire dalle 8 del mattino e fino alle 20 dell’ora di New York.

Per aggiungere un filtro temporale a tutte le fonti si può usare il comando /filtertimeall. Ad esempio:
/filtertimeall add mustNotHave 0:00-7:00
Da rimuovere:
/filtertimeall remove mustNotHave 0:00-7:00

Filtrare per argomento in un gruppo

Per impostare un filtro per argomenti, utilizzare il seguente comando:

/filtertopic source_channel_reference mustHave topicID

Per conoscere il numero dell’argomento del gruppo, cercate un link a qualsiasi post dell’argomento. Il numero al centro del link è il numero dell’argomento. Ad esempio, se il link è https://t.me/publicchat/1723/36753, il numero dell’argomento è 1723.

Esempi:

/filtertopic source_channel_reference mustHave 1723
Consentire solo i messaggi dell’argomento numero 1723.

/filtertopic source_channel_reference mustNotHave 7231
Filtrare i messaggi dall’argomento numero 7231.

Per copiare i messaggi da diversi argomenti nell’origine a diversi canali di destinazione, creare prima le regole di inoltro necessarie dall’origine alla destinazione. Quindi, per ogni regola di inoltro specifica, impostare il filtro desiderato con il comando /filtertopic seguendo le seguenti istruzioni. Ad esempio, il comando potrebbe avere il seguente aspetto:
/filtertopic &123456789#151617181->-1001222333444 mustHave 1723

Per copiare i messaggi dagli argomenti dell’origine agli stessi argomenti della destinazione, è necessario creare manualmente gli argomenti di destinazione. Quindi è necessario creare un canale intermedio per ogni argomento. Per ogni argomento, si imposta prima la copia sul canale intermedio con il filtro dell’argomento desiderato. Poi dal canale intermedio alla destinazione con l’impostazione desiderata topic.

Duplicati

In alcuni casi un messaggio può arrivare più volte. Ad esempio, se siete iscritti a due canali che hanno entrambi trasmesso lo stesso post. Per filtrare tutti i messaggi di Telegram identici in Junction Bot, utilizzare il comando /setting duplicate. Funziona per messaggi identici entro un periodo di 24 ore tra la loro comparsa.

/impostazione duplicata + una delle seguenti opzioni:

pass - disabilitato, consente i duplicati
Ex.  /setting duplicate pass

filtro - filtrare i messaggi duplicati
Ex.  /setting duplicate filter

Per applicare questa impostazione a un solo canale, sostituire il comando /setting con /settingchannel source_channel_reference (per saperne di più).

Si noti che il filtro dei duplicati confronta i messaggi originali. Ciò significa che se si vogliono evitare i duplicati nel canale di destinazione, apparsi come risultato delle regole di sostituzione, è necessario utilizzare un approccio un po’ più complesso: attraverso un canale intermedio.

Supponiamo di dover reindirizzare i messaggi da A a B. Creiamo il canale C e impostiamo un reindirizzamento da A (sorgente) a C (intermedio). Applicare tutte le regole di sostituzione al canale A. Non è necessario creare un filtro duplicato per il canale A.

Quindi, impostare un reindirizzamento da C (intermedio) a B (destinazione). Impostiamo una regola di filtraggio su questo reindirizzamento (con il comando /settingchannel C duplicate filter ), che rimuoverà tutti i duplicati, anche quelli apparsi come risultato di regole di sostituzione.

Fatto! Se si imposta un filtro per i duplicati per il primo reindirizzamento (da A a C), questo non influisce sui duplicati che appaiono come risultato delle regole di sostituzione.

Modifica massiva dei filtri

/filterall – questo comando aggiunge il filtro a tutte le sottoscrizioni e agli inoltri. Si noti che non esiste un insieme comune di filtri: un insieme di filtri applicato a tutte le regole non esiste. Esiste un insieme di filtri per sottoscrizione concreta / regola di inoltro.

/filterall funziona con le stesse combinazioni di /filter.

Al posto di source_channel si imposta un’azione: aggiungere o rimuovere.

/filterall add - aggiunge un nuovo filtro a tutti i canali.
Formato:  /filterall add [rule] text to receive
Ex.  /filterall add mustHave bitcoin O /filterall add mustNotHave litecoin

/filterall remove - rimuove il filtro da tutti i canali.
Formato:  /filterall remove [rule] text to filter out
Ex.  /filterall remove mustHave bitcoin O /filterall remove mustNotHave litecoin

Cambiare il comando in /filterrxall per usare le espressioni regolari.

Una fonte – molte destinazioni

Se si dispone di più regole di inoltro a canali diversi da una sorgente e si desidera impostare un filtro su una sola regola sorgente-destinazione, seguire questa istruzione.

Aggiungere il seguente costrutto al canale_di_riferimento sorgente: ->-1001251642436
Dove -1001251642436 è l’identificativo del canale di destinazione nel sistema Telegram più il prefisso “-100” (è il modo in cui Telegram distingue i numeri dei canali dai numeri di altri oggetti). Trovare questo numero è molto semplice, basta cercare le istruzioni su Internet. Ad esempio, inoltrare un messaggio dal canale al bot @junction_helper0_bot. Lì si vedrà il numero del canale in forward_from_chat.id o forward_from.id.
Quindi, ad esempio, il comando di configurazione potrebbe essere simile a questo:
/filter source_channel_reference->-1001251642436 mustHave cats

Filtrare i post di una persona specifica

È possibile far filtrare a Junction Bot i messaggi di Telegram di un utente specifico. Diciamo che @source è la chat di origine. Per inoltrare solo i messaggi di @utente, procedere come segue:

  1. Creare una nuova regola di inoltro con il comando /new
  2. Attivare la copia dei nomi degli autori con il comando
    /settingchannel source_channel_reference author full
  3. Impostare il filtro per il nome desiderato con il comando
    /filter source_channel_reference mustHave user_reference
    Se si desidera che il messaggio provenga da un utente specifico e contenga allo stesso tempo un testo specifico, è necessario un comando leggermente diverso:
    /filterrx source_channel_reference mustHave .*user_reference.*specific text.*

Nella maggior parte dei casi, come riferimento_utente si può usare il nome @username dell’utente. In alcuni casi non funzionerà (ad esempio se l’utente non ha un nome utente pubblico o il bot non ha informazioni complete su di lui). In questo caso, è necessario attivare un rapporto di spiegazione e vedere come l’utente viene citato nel messaggio e quindi utilizzare questa stringa.

Con l’impostazione author i messaggi risultanti conterranno il nome dell’autore del messaggio. A volte è necessario che il nome dell’autore non sia presente. Ciò richiederà un processo leggermente più complesso, attraverso un canale intermedio.

Supponiamo di dover reindirizzare i messaggi da A a B. Creiamo il canale C e impostiamo un reindirizzamento da A (sorgente) a C (intermedio). Applicare le impostazioni delle pagine 2 e 3:
/settingchannel A author full
/filter A mustHave @user

Quindi, impostare un reindirizzamento da C (intermedio) a B (destinazione). Impostiamo una regola di sostituzione su questo reindirizzamento (con il comando /replace ), che rimuoverà i nomi degli autori.
/replace B @user&nbsp;(User's&nbsp;name)

Fatto! Se si imposta questa regola di sostituzione per il primo reindirizzamento (da A a C), non influirà sul nome dell’autore. Il nome dell’autore, come il nome del canale sorgente, è un testo di servizio e non è influenzato dal comando /replace e può essere regolato in altri modi.

Filtrare i messaggi inoltrati

È possibile far filtrare a Junction Bot i messaggi di Telegram che sono stati inoltrati a un canale sorgente. Diciamo che @source è il canale sorgente. Per copiare solo i messaggi originali di @source, ma non i messaggi inoltrati a @source da altri canali, procedere come segue:

  1. Creare una nuova regola di inoltro con il comando /new
  2. Attivare la copia dei nomi degli autori con il comando
    /settingchannel source_channel_reference header from_only
    Aggiungerà all’inizio del messaggio inoltrato una parte di testo: “da ” + il nome del canale.
  3. Impostare il filtro per il nome del canale che si desidera filtrare. Ad esempio, se i messaggi inoltrati provengono da un canale denominato “Fonte degli inoltri”.
    /filter source_channel_reference mustNotHave from Source of forwards
    Se si desidera eliminare i messaggi inoltrati da qualsiasi altro canale, è necessario un comando leggermente diverso:
    /filter source_channel_reference mustNotHave from

Filtraggio AI

È possibile descrivere qualsiasi criterio di filtraggio in forma libera e lasciare che l’intelligenza artificiale filtri automaticamente i messaggi. È interessante notare che in questo modo è possibile filtrare non solo in base al testo del messaggio in sé, ma anche in base al suo significato e al suo sentimento. Ad esempio, si può chiedere all’intelligenza artificiale di far entrare nel proprio canale solo notizie positive ☺️.

Per sapere come impostarlo, vedere qui.

Filtraggio manuale

Se si desidera controllare manualmente se i post devono essere copiati o saltati, utilizzare la modalità di revisione.

Scoprire cosa non funziona

Controllare quali sono i filtri attuali e che siano corretti:

/filter source_channel_reference
/filterrx source_channel_reference

Se si impostano molti filtri, può essere difficile capire perché un certo messaggio passa o non passa. Per aiutarvi in questo c’è un’impostazione speciale chiamata spiegare. È possibile attivarlo con il comando:

/settingchannel source_channel_reference spiegare su

Se è abilitato, si riceverà un rapporto per ogni nuovo messaggio proveniente da questo canale sorgente. Il rapporto spiegherà perché il messaggio è stato filtrato o lasciato passare.

Per disattivare una modalità di spiegazione, utilizzare il comando

/settingchannel source_channel_reference spiegare off