Filtern

In Junction Bot können Sie eingehende Telegram-Nachrichten filtern, indem Sie Filterregeln anwenden. Sie entscheiden, welche Nachrichten Sie erhalten und welche herausgefiltert werden, damit Sie sie nicht sehen (z. B. Werbung).

Filter können auf einzelne Kanäle oder auf alle Kanäle gleichzeitig angewendet werden. Sie können eine beliebige Anzahl von Filtern jeglicher Art kombinieren.

Unterstützte Funktionen: mustHave, mustNotHave, Regex, Filterung nach Anlagentyp und vieles mehr.

Bitte beachten Sie, dass es eine sehr nützliche Debugging-Funktion gibt, die Ihnen viele Stunden ersparen kann.

Befehle

/filter - erstellt einen Filter (für 1 Quelle) ODER entfernt einen Filter, wenn er zum zweiten Mal eingegeben wird. Kombiniert mit: 'mustHave', 'mustNotHave', 'every', Art des Anhangs /filterrx - Filterung nach Regex (siehe Beispiele hier) /filterall, /filterrxall - erstellt einen Filter für alle Quellen /filter source_channel_reference - zeigt alle aktuellen Filter an, die auf einen Kanal angewendet werden

Wenn Sie mehrere Weiterleitungsregeln von derselben Quelle zu verschiedenen Zielen haben, können Sie unterschiedliche Einstellungen, Filter und Ersetzungen für verschiedene Ziele festlegen. Weitere Einzelheiten finden Sie hier.

mustHave-, mustNotHave-Filter

mustHave - Sie werden nur Nachrichten mit einem bestimmten Text erhalten
Format:  /filter source_channel_reference mustHave text to receive
Ex.  /filter https://t.me/junction_bot_news mustHave cool cats
Bitte beachten Sie, dass der Text eines Filters als ganzer Satz gilt, nicht als einzelne Wörter. In diesem Beispiel erhalten Sie also alle Nachrichten, die den genauen Ausdruck "coole Katzen" enthalten. Sie brauchen keine Escape-Zeichen wie hier zu verwenden.

mustNotHave - filtert Nachrichten mit einem bestimmten Text heraus
Format:  /filter source_channel_reference mustNotHave text to filter out
Ex.  /filter https://t.me/junction_bot_news mustNotHave old hats

Kombinierte Filter

Mehrere mustHave-Filter werden nach der “OR”-Regel kombiniert.

Mehrere mustNotHave-Filter werden nach der “AND”-Regel kombiniert.

Hinweis: Sie können sie nicht in einem Befehl kombinieren. Verwenden Sie für jeden Filter einen eigenen Befehl.

Beispiele:
/filter source_channel_reference mustHave cats
/filter source_channel_reference mustHave kittens
Sie erhalten alle Nachrichten, die entweder das Wort "Katzen" oder das Wort "Kätzchen" enthalten
/filter source_channel_reference mustNotHave dogs
/filter source_channel_reference mustNotHave puppies 
Sie werden keine Nachrichten erhalten, die die Wörter "Hunde" oder "Welpen" enthalten.

Filterung nach Art des Telegrammanhangs

Außerdem können Sie Mediennachrichten herausfiltern. Verwenden Sie dazu eine der folgenden Zeichenfolgen als Filtertext: <Foto>, <Dokument>, <Audio>, <Video>, <Aufkleber>, <Stimme>, <Standort>, <Animation>, <Videonote>, <Umfrage>.

Beispiele:
/filter source_channel_reference mustHave <audio>  - Sie erhalten nur Nachrichten mit Audioanhängen von diesem Kanal
/filter source_channel_reference mustNotHave <photo>  - Sie erhalten keine Nachrichten mit Bildern von diesem Kanal

Erweiterte Filterung

Sie können auch reguläre Ausdrücke (RegEx) verwenden, um zu filtern. Verwenden Sie dazu den Befehl /filterrx. Sie hat das gleiche Format.

Hier sind einige gängige Beispiele:
1. Keine Beiträge mehr, die das Wort word in einer Bildunterschrift enthalten
/filterrx Quelle_Kanal_Referenz mustNotHave .*word.*<photo>.*
2. Zwei Wörter - word1 und word2 - in einer bestimmten Reihenfolge
/filterrx source_channel_reference mustNotHave .*word1.*word2.*
3. Zwei Wörter in beliebiger Reihenfolge
/filterrx Quelle_Kanal_Referenz mustNotHave (?=.*\bword1\b)(?=.*\bword2\b).*
5. Zwei Wörter in beliebiger Reihenfolge, ohne Berücksichtigung des Registers
/filterrx source_channel_reference mustNotHave (?i:.*wOrd1.*woRd2.*)
6. Ein beliebiges Wort aus einer Menge
/filterrx source_channel_reference mustNotHave .*word1.*|.*word2.*|.*word3.*
7. Sie können sie kombinieren. Zum Beispiel jedes beliebige Wort, unabhängig von der Groß- und Kleinschreibung
/filterrx Quelle_Kanal_Referenz mustNotHave (?i:.*wOrd1.*|.*worD2.*|.*woRd3.*)
8. Jedes Wort, das ein russisches Alphabet enthält
/filterrx source_channel_reference mustNotHave .*([а-яА-Я]+).*
9. Jeder HTTP-Link
/filterrx source_channel_reference mustNotHave .*(http:\/\/|https:\/\/).*
10. Jede Zahl
/filterrx source_channel_reference mustNotHave .*([0-9]+).*
11. Jeder @Benutzername
/filterrx source_channel_reference mustNotHave .*@([a-zA-Z0-9=&_\-]+).*

Es ist wichtig, dass Sie verstehen, was RegEx ist, bevor Sie diese Filter verwenden. Der Filter mit dem regulären Ausdruck wort2 passt zum Beispiel nicht auf die Nachricht wort1 wort2 wort3, da sie andere Wörter als wort2 enthält. Denken Sie daran, .* auf beiden Seiten des Wortes hinzuzufügen: .*wort2.*

Beachten Sie eine wichtige Nuance: Beim Filtern kann der Bot am Ende des Textes ein Leerzeichen und/oder einen Medieninhaltscode hinzufügen. Daher raten wir Ihnen, am Ende Ihrer RegEx-Filter immer ein .* zu setzen.

Ein weiterer wichtiger Punkt: RegEx für Filter hat in der Regel ein .* am Anfang und am Ende, weil man möchte, dass die gesamte Nachricht in den Ausdruck passt. Wenn Sie einen ähnlichen Ausdruck für Ersetzungen verwenden möchten, sollten Sie wahrscheinlich .* entfernen (andernfalls wird die Ersetzung den gesamten Text der Nachricht ersetzen).

Es gibt ein sehr bequemes Instrument, um reguläre Ausdrücke zu testen: https://regex101.com. Setzen Sie den Flavor auf “Java 8” und setzen Sie das Flag “Single line: Punkt entspricht der neuen Zeile”. Damit funktioniert er auf die gleiche Weise wie der Matcher von @junction_bot.

Hilfe bei regulären Ausdrücken

Reguläre Ausdrücke sind ein umfangreiches Thema. Die Hilfe in diesem Bereich übersteigt die Möglichkeiten der Bot-Verwaltung. Bitte schreiben Sie Admins nicht privat an und bitten Sie sie, Ihnen eine Ersatzregel oder einen Filter zu erstellen. Auch die Bot-Verwaltung bietet diese Art von Hilfe in der Selbsthilfegruppe nicht an.

Der einfachste Weg, einen regulären Ausdruck für Ihre Bedürfnisse zu erstellen, ist, ChatGPT zu fragen, es ist ziemlich gut darin.

Sie können auch in entsprechenden Foren nach Hilfe suchen. Zum Beispiel StackOverflow oder CodeProject.

Einstellen eines Filters für alle Ihre Quellen

Um einen Filter für alle Ihre aktuellen Quellen hinzuzufügen, verwenden Sie den Befehl /filterall oder /filterrxall (für reguläre Ausdrücke).

Bitte beachten Sie, dass neue Weiterleitungsregeln immer mit einer leeren Filterliste erstellt werden. Sie können Filter aus einer vorhandenen Quelle in diese kopieren.

Zum Beispiel:
/filterrxall add mustNotHave .*(http:\/\/|https:\/\/).*

Dieser Befehl fügt allen Ihren Quellen einen Filter hinzu, der jede Nachricht mit einem Link stoppt.

Filter kopieren

In Junction Bot können Sie alle Filter von einem Telegram-Kanal in einen anderen kopieren. Verwenden Sie dazu das folgende Befehlsformat:

/filter channel_to_copy_filters_to addAllFrom channel_to_copy_filters_from

Filter entfernen

Um einen Filter zu entfernen, senden Sie denselben Befehl noch einmal.

Um alle aktuell auf einen Kanal angewandten Filter zu sehen, verwenden Sie den Befehl

/filter source_channel_reference

Um alle Filter aus allen Kanälen zu löschen, verwenden Sie den Befehl

/filterall DELETE ALL

Für RegEx-Filter verwenden Sie entsprechend /filterrx und /filterrxall.

Empfang nur der N-ten Nachricht

Im Junction-Bot können Sie Telegram-Nachrichten nach Häufigkeit filtern, so dass nur jede n-te Nachricht kopiert wird (im folgenden Beispiel – jede zweite Nachricht). Verwenden Sie dazu das folgende Befehlsformat:

/filter source_channel_reference every 2

Filtern nach Datum und Uhrzeit

Der Junction-Bot kann Telegram-Nachrichten je nach Datum und Uhrzeit filtern, zu der sie eingehen.

/filtertime source_channel_reference mustHave time interval

Zeitintervall-Sets:
– Das Intervall, in dem Nachrichten für mustHave kommen sollen
– Das Intervall, in dem keine Nachrichten für mustNotHave kommen sollen

Das Zeitintervall kann Wochentag, Uhrzeit und Zeitzone enthalten.

Tag der Woche. Es beginnt immer mit dem Buchstaben w und dann folgen die Zahlen der Wochentage (beginnend mit Mo).
Beispiel:

w135
Entspricht dem 1., 3. und 5. Tag der Woche (Mo, Mi, Fr)

w67
Entspricht dem 6. und 7. Tag der Woche (Sa, So)

Zeit. Die Zeit ist immer im 24-Stunden-Format, ein Intervall von – bis (einschließlich), Stunden:Minuten.
Beispiele:
9:30-17:30
0:00-23:59

Zeitzone. Die Liste der verfügbaren Zeitzonen finden Sie hier. Wenn Sie die Zeitzone nicht ausdrücklich angeben, wird sie auf CET – Central European Time (Amsterdam/Berlin/Prag/Wien) eingestellt.

Beispiele:

/filtertime source_channel_reference mustNotHave 0:00-7:00
Zwischen Mitternacht und 7 Uhr morgens (MEZ) werden keine Nachrichten gesendet.

/filtertime source_channel_reference mustHave w12345 8:00-20:00 America/New_York
Nachrichten werden nur an Werktagen (Mo-Fr) von 8 Uhr morgens bis 20 Uhr abends New Yorker Zeit übermittelt.

Um einen zeitlichen Filter für alle Ihre Quellen hinzuzufügen, können Sie den Befehl /filtertimeall verwenden. Zum Beispiel:
/filtertimeall add mustNotHave 0:00-7:00
Zum Entfernen:
/filtertimeall remove mustNotHave 0:00-7:00

Filtern nach Thema in einer Gruppe

Um einen Themenfilter zu setzen, verwenden Sie den folgenden Befehl:

/filtertopic source_channel_reference mustHave topicID

Um die Themennummer der Gruppe herauszufinden, klicken Sie auf einen Link zu einem beliebigen Beitrag in diesem Thema. Die Zahl in der Mitte des Links ist die Themennummer. Wenn der Link zum Beispiel https://t.me/publicchat/1723/36753 lautet, ist die Themennummer 1723.

Beispiele:

/filtertopic source_channel_reference mustHave 1723
Nur Beiträge ab Thema Nummer 1723 zulassen.

/filtertopic source_channel_reference mustNotHave 7231
Filtern Sie Beiträge mit der Themennummer 7231 heraus.

Um Nachrichten aus verschiedenen Themen in der Quelle in verschiedene Zielkanäle zu kopieren, erstellen Sie zunächst die erforderlichen Weiterleitungsregeln von der Quelle zum Ziel. Legen Sie dann für jede spezifische Weiterleitungsregel den gewünschten Filter mit dem Befehl /filtertopic fest und folgen Sie dabei diesen Anweisungen. Der Befehl könnte zum Beispiel so aussehen:
/filtertopic &123456789#151617181->-1001222333444 mustHave 1723

Um Nachrichten aus Themen in der Quelle in dieselben Themen im Ziel zu kopieren, müssen Sie manuell Zielthemen erstellen. Dann müssen Sie für jedes Thema einen Zwischenkanal erstellen. Für jedes Thema richten Sie zunächst das Kopieren in den Zwischenkanal mit dem gewünschten Themenfilter ein. Dann vom Zwischenkanal zum Ziel mit der gewünschten Einstellung topic.

Duplikate

In manchen Fällen kann eine Nachricht mehrmals bei Ihnen eingehen. Zum Beispiel, wenn Sie zwei Kanäle abonniert haben, die beide denselben Beitrag weitergeleitet haben. Um alle identischen Telegram-Nachrichten im Junction Bot herauszufiltern, verwenden Sie den Befehl /setting duplicate. Es funktioniert für identische Nachrichten innerhalb von 24 Stunden zwischen ihrem Erscheinen.

/setting duplicate + eine der folgenden Optionen:

pass - deaktiviert, Duplikate zulassen
Ex.  /setting duplicate pass

filter - doppelte Nachrichten herausfiltern
Ex.  /setting duplicate filter

Um diese Einstellung nur auf einen Kanal anzuwenden, ersetzen Sie den Befehl /setting durch /settingchannel source_channel_reference (mehr dazu).

Bitte beachten Sie, dass der Filter für Duplikate die Originalnachrichten vergleicht. Das heißt, wenn Sie Duplikate im Zielkanal vermeiden wollen, die aufgrund Ihrer Ersetzungsregeln entstanden sind, müssen Sie einen etwas komplexeren Ansatz wählen – über einen Zwischenkanal.

Angenommen, wir müssen Nachrichten von A nach B umleiten. Erstellen Sie Kanal C und richten Sie eine Umleitung von A (Quelle) nach C (Zwischenstation) ein. Wenden Sie alle Ersetzungsregeln auf Kanal A an. Es ist nicht erforderlich, einen doppelten Filter für Kanal A zu erstellen.

Als Nächstes richten Sie eine Umleitung von C (Zwischenstation) nach B (Ziel) ein. Wir setzen eine Filterregel auf diese Umleitung (mit dem Befehl /settingchannel C duplicate filter ), die alle Duplikate entfernt, auch diejenigen, die als Ergebnis von Ersetzungsregeln erschienen sind.

Erledigt! Wenn Sie für die erste Umleitung (von A nach C) einen Filter für Duplikate setzen würden, hätte dies keinen Einfluss auf die Duplikate, die aufgrund von Ersetzungsregeln entstanden sind.

Massive Änderung von Filtern

/filterall – dieser Befehl fügt diesen Filter zu allen Ihren Abonnements und Weiterleitungen hinzu. Bitte beachten Sie, dass es so etwas wie einen gemeinsamen Satz von Filtern nicht gibt – ein Satz von Filtern, der auf alle Regeln angewendet wird, existiert nicht. Es gibt eine Reihe von Filtern pro konkreter Abonnement-/Weiterleitungsregel.

/filterall funktioniert mit denselben Kombinationen wie /filter.

Anstelle von source_channel legen Sie eine Aktion fest: add oder remove.

/filterall add - fügt einen neuen Filter zu allen Kanälen hinzu.
Format:  /filterall add [rule] text to receive
Ex.  /filterall add mustHave bitcoin OR /filterall add mustNotHave litecoin

/filterall remove - Entfernt den Filter von allen Kanälen.
Format:  /filterall remove [rule] text to filter out
Ex.  /filterall remove mustHave bitcoin OR /filterall remove mustNotHave litecoin

Ändern Sie den Befehl in /filterrxall, um reguläre Ausdrücke zu verwenden.

Eine Quelle – viele Ziele

Wenn Sie mehrere Weiterleitungsregeln zu verschiedenen Kanälen von einer Quelle haben und einen Filter nur auf eine Quell-Ziel-Regel setzen wollen, folgen Sie dieser Anleitung.

Fügen Sie die folgende Konstruktion zur source_channel_reference hinzu: ->-1001251642436
Dabei ist -1001251642436 der Identifikator des Zielkanals im Telegramm-System plus Präfix “-100” (so unterscheidet Telegramm die Nummern von Kanälen von den Nummern anderer Objekte). Es ist sehr einfach, diese Nummer herauszufinden; suchen Sie im Internet nach einer Anleitung. Leiten Sie zum Beispiel eine Nachricht aus dem Kanal an den Bot @junction_helper0_bot weiter. Dort sehen Sie die Kanalnummer in forward_from_chat.id oder forward_from.id.
So könnte der Konfigurationsbefehl beispielsweise folgendermaßen aussehen:
/filter source_channel_reference->-1001251642436 mustHave cats

Filtern von Beiträgen einer bestimmten Person

Sie können Junction Bot die Telegram-Nachrichten eines bestimmten Benutzers filtern lassen. Nehmen wir an, @source ist der Quell-Chat. Um nur Nachrichten von @user weiterzuleiten, gehen Sie wie folgt vor:

  1. Erstellen Sie eine neue Weiterleitungsregel mit dem Befehl /new
  2. Aktivieren Sie das Kopieren der Namen der Autoren mit dem Befehl
    /settingchannel source_channel_reference author full
  3. Richten Sie den Filter für den von Ihnen benötigten Namen mit dem Befehl
    /filter source_channel_reference mustHave user_reference
    Wenn die Nachricht von einem bestimmten Benutzer stammen und gleichzeitig einen bestimmten Text enthalten soll, benötigen Sie einen etwas anderen Befehl:
    /filterrx source_channel_reference mustHave .*user_reference.*specific text.*

In den meisten Fällen können Sie als user_reference den @username des Benutzers verwenden. In einigen Fällen wird es nicht funktionieren (z. B. wenn der Benutzer keinen öffentlichen Benutzernamen hat oder der Bot nicht über alle Informationen über ihn verfügt). In diesem Fall müssen Sie einen Erklärungsbericht aktivieren und sehen, wie der Benutzer in der Nachricht referenziert wird, und dann diese Zeichenfolge verwenden.

Mit der Einstellung author enthalten die resultierenden Nachrichten den Namen des Verfassers der Nachricht. Manchmal ist es notwendig, dass der Name des Autors nicht erscheint. Dies erfordert ein etwas komplexeres Verfahren – über einen Zwischenkanal.

Angenommen, wir müssen Nachrichten von A nach B umleiten. Erstellen Sie Kanal C und richten Sie eine Umleitung von A (Quelle) nach C (Zwischenstation) ein. Wenden Sie die Einstellungen von Seite 2 und 3 darauf an:
/settingchannel A author full
/filter A mustHave @user

Als Nächstes richten Sie eine Umleitung von C (Zwischenstation) nach B (Ziel) ein. Wir setzen eine Ersetzungsregel für diese Umleitung (mit dem Befehl /replace ), die die Namen der Autoren entfernt.
/replace B @user&nbsp;(User's&nbsp;name)

Erledigt! Wenn Sie diese Ersetzungsregel für die erste Umleitung (von A nach C) festlegen, wirkt sie sich nicht auf den Namen des Autors aus. Der Name des Autors ist wie der Name des Quellkanals ein Servicetext und wird vom Befehl /replace nicht beeinflusst und kann auf andere Weise angepasst werden.

Filterung weitergeleiteter Beiträge

Sie können Junction Bot die Telegram-Nachrichten filtern lassen, die an einen Quellkanal weitergeleitet wurden. Nehmen wir an, @source ist der Quellkanal. Um nur die Originalnachrichten von @source zu kopieren, nicht aber die von anderen Kanälen an @source weitergeleiteten Nachrichten, gehen Sie wie folgt vor:

  1. Erstellen Sie eine neue Weiterleitungsregel mit dem Befehl /new
  2. Schalten Sie das Kopieren von Autorennamen mit dem Befehl
    /settingchannel source_channel_reference header from_only
    Es fügt am Anfang der weitergeleiteten Nachricht ein Stück Text hinzu: “von” + der Name des Kanals.
  3. Richten Sie den Filter für den Namen des Kanals ein, den Sie herausfiltern möchten. Wenn zum Beispiel weitergeleitete Beiträge von einem Kanal mit dem Namen “Quelle der Weiterleitung” kommen
    /filter source_channel_reference mustNotHave from Source of forwards
    Wenn Sie Beiträge loswerden wollen, die von einem anderen Kanal weitergeleitet wurden, benötigen Sie einen etwas anderen Befehl:
    /filter source_channel_reference mustNotHave from

AI-Filterung

Sie können beliebige Filterkriterien in freier Form beschreiben und die KI Ihre Nachrichten automatisch filtern lassen. Interessanterweise können Sie auf diese Weise nicht nur nach dem Text der Nachricht als solchem, sondern auch nach ihrer Bedeutung und Stimmung filtern. Sie können die KI zum Beispiel bitten, nur positive Nachrichten in Ihrem Kanal ☺️ zuzulassen.

Wie Sie dies einrichten, erfahren Sie hier.

Manuelle Filterung

Wenn Sie manuell steuern möchten, ob Beiträge kopiert oder übersprungen werden sollen, verwenden Sie den Überprüfungsmodus.

Herausfinden, was nicht funktioniert

Prüfen Sie, welche Filter derzeit verwendet werden und ob diese korrekt sind:

/filter source_channel_reference
/filterrx source_channel_reference

Wenn Sie viele Filter einrichten, kann es schwierig sein, herauszufinden, warum eine bestimmte Nachricht durchgelassen wird oder nicht. Um Ihnen dabei zu helfen, gibt es eine spezielle Einstellung namens explain. Sie können ihn mit dem Befehl einschalten:

/settingchannel source_channel_reference erklären auf

Wenn sie aktiviert ist, erhalten Sie einen Bericht für jede neue Nachricht, die von diesem source_channel kommt. In dem Bericht wird erklärt, warum diese Nachricht herausgefiltert oder durchgelassen wurde.

Um einen Erklärungsmodus zu deaktivieren, verwenden Sie den Befehl

/settingchannel source_channel_reference explain off