Filtreleme

Junction Bot ‘ta, filtreleme kuralları uygulayarak gelen Telegram mesajlarını filtreleyebilirsiniz. Hangi mesajları alacağınıza ve hangilerini görmemeniz için filtreleneceğine siz karar verirsiniz (örneğin reklamlar gibi).

Filtreler kanallara ayrı ayrı veya tüm kanallara aynı anda uygulanabilir. Her türden istediğiniz miktarda filtreyi birleştirebilirsiniz.

Desteklenen özellikler: mustHave, mustNotHave, regex, ek türüne göre filtreleme ve çok daha fazlası.

Lütfen size saatler kazandırabilecek çok kullanışlı bir hata ayıklama özelliği olduğunu unutmayın.

Komutlar

/filter - bir filtre oluşturun (1 kaynak için) VEYA ikinci kez girilirse bir filtreyi kaldırın. İle birleştirir: 'mustHave', 'mustNotHave', 'every', ek türü /filterrx - regex ile filtreleme ( buradaki örneklere bakın) /filterall, /filterrxall - tüm kaynaklar için bir filtre oluşturun /filter source_channel_reference - bir kanala uygulanan tüm geçerli filtreleri görün

Aynı kaynaktan farklı hedeflere birden fazla yönlendirme kuralınız varsa, farklı hedefler için farklı ayarlar, filtreler ve değiştirmeler ayarlayabilirsiniz. Daha fazla ayrıntı için buraya bakınız.

mustHave, mustNotHave filtreleri

mustHave - sadece belirli bir metin içeren mesajlar alacaksınız
Format:  /filter source_channel_reference mustHave text to receive
Ex.  /filter https://t.me/junction_bot_news mustHave cool cats
Lütfen bir filtre metninin ayrı kelimeler olarak değil, bütün bir ifade olarak geçerli olduğunu unutmayın. Yani bu örnekte tam olarak "cool cats" ifadesini içeren tüm mesajları alacaksınız. Buradaki gibi herhangi bir kaçış karakteri kullanmanıza gerek yoktur.

mustNotHave - belirli bir metne sahip mesajları filtreler
Format:  /filter source_channel_reference mustNotHave text to filter out
Ex.  /filter https://t.me/junction_bot_news mustNotHave old hats

Filtrelerin birleştirilmesi

Birkaç mustHave filtresi “OR” kuralına göre birleştirilecektir.

Birkaç mustNotHave filtresi “AND” kuralına göre birleştirilecektir.

Not: Bunları tek bir komutta birleştiremezsiniz. Her filtre için ayrı bir komut kullanın.

Örnekler:
/filter source_channel_reference mustHave cats
/filter source_channel_reference mustHave kittens
'Kediler' veya 'yavru kediler' kelimelerini içeren tüm mesajları alacaksınız
/filter source_channel_reference mustNotHave dogs
/filter source_channel_reference mustNotHave puppies 
'Köpek' veya 'yavru köpek' kelimelerini içeren hiçbir mesaj almayacaksınız

Telegram ekinin türüne göre filtreleme

Ayrıca medya mesajlarını filtreleyebilirsiniz. Bunun için filtre metni olarak aşağıdaki dizelerden birini kullanın: <fotoğraf>, <belge>, <ses>, <Video>, <çıkartma>, <ses>, <konum>, <animasyon>, <videonote>, <anket>.

Örnekler:
/filter source_channel_reference mustHave <audio>  - kanaldan yalnızca ses ekleri içeren mesajlar alacaksınız
/filter source_channel_reference mustNotHave <photo>  - kanaldan resim içeren herhangi bir mesaj almayacaksınız

Gelişmiş filtreleme

Ayrıca, filtreleme yapmak için düzenli ifadeler (RegEx) kullanabilirsiniz. Bunun için /filterrx komutunu kullanın. Aynı formata sahiptir.

İşte bazı yaygın örnekler:
1. Bir görselin başlığında word kelimesinin yer aldığı gönderileri durdurun
/filterrx source_channel_reference mustNotHave .*word.*<photo>.*
2. İki kelime - word1 ve word2 - belirli bir sırada
/filterrx source_channel_reference mustNotHave .*word1.*word2.*
3. Herhangi bir sırada iki kelime
/filterrx source_channel_reference mustNotHave (?=.*\bword1\b)(?=.*\bword2\b).*
5. Herhangi bir sırada iki kelime, kaydı dikkate almayın
/filterrx source_channel_reference mustNotHave (?i:.*wOrd1.*woRd2.*)
6. Bir kümeden herhangi bir kelime
/filterrx source_channel_reference mustNotHave .*word1.*|.*word2.*|.*word3.*
7. Bunları birleştirebilirsiniz. Örneğin, büyük/küçük harfe duyarlı olmayan kelimelerden herhangi biri
/filterrx source_channel_reference mustNotHave (?i:.*wOrd1.*|.*worD2.*|.*woRd3.*)
8. Rus alfabesi içeren herhangi bir kelime
/filterrx source_channel_reference mustNotHave .*([а-яА-Я]+).*
9. Herhangi bir HTTP bağlantısı
/filterrx source_channel_reference mustNotHave .*(http:\/\/|https:\/\/).*
10. Herhangi bir sayı
/filterrx source_channel_reference mustNotHave .*([0-9]+).*
11. Herhangi bir @kullanıcı adı
/filterrx source_channel_reference mustNotHave .*@([a-zA-Z0-9=&_\-]+).*

Bu filtreleri kullanmadan önce RegEx’in ne olduğunu anlamak önemlidir. Örneğin, word2 düzenli ifadesine sahip filtre, word2 dışında sözcükler içerdiğinden word1 word2 word3 iletisiyle EŞLEŞMEZ. Kelimenin her iki tarafına .* eklemeyi unutmayın: .*word2.*

Önemli bir nüansa dikkat edin: filtreleme yaparken bot metnin sonuna bir boşluk ve/veya medya içerik kodu ekleyebilir. Bu nedenle, RegEx filtrelerinizin sonuna her zaman .* koymanızı tavsiye ederiz.

Bir başka önemli nokta: Filtreler için RegEx’in başında ve sonunda genellikle bir .* vardır, çünkü tüm mesajın ifadeye uymasını istersiniz. Değiştirmeler için benzer bir ifade kullanmak istiyorsanız, muhtemelen .* adresini kaldırmak istersiniz (aksi takdirde değiştirme, mesaj metninin tamamını değiştirir).

Düzenli ifadeleri test etmek için çok uygun bir araç vardır: https://regex101.com. Flavor’ı “Java 8” olarak ayarlayın ve bayrağı “Tek satır: Nokta yeni satırla eşleşir” olarak ayarlayın. Bu, @junction_bot’un eşleştiricisi ile aynı şekilde çalışmasını sağlayacaktır.

Düzenli ifadelerle ilgili yardım

Düzenli ifadeler çok geniş bir konudur. Bu alandaki yardım bot idaresinin kapsamı dışındadır. Lütfen yöneticilere özel olarak yazıp size bir yedek kural veya filtre yapmalarını istemeyin. Ayrıca, bot yönetimi destek grubunda bu tür bir yardım sağlamamaktadır.

İhtiyaçlarınız için bir düzenli ifade oluşturmanın en kolay yolu ChatGPT‘ye sormaktır, bu konuda oldukça iyidir.

Ayrıca, uygun forumlarda yardım arayabilirsiniz. Örneğin StackOverflow veya CodeProject.

Tüm kaynaklarınız için bir filtre ayarlama

Mevcut tüm kaynaklarınıza bir filtre eklemek için /filterall veya /filterrxall (düzenli ifadeler için) komutunu kullanın.

Yeni yönlendirme kurallarının her zaman boş bir filtre listesiyle oluşturulduğunu lütfen unutmayın. Filtreleri mevcut bir kaynaktan bunlara kopyalayabilirsiniz.

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

Bu komut, tüm kaynaklarınıza bağlantı içeren herhangi bir mesajı durduracak bir filtre ekleyecektir.

Filtreleri kopyala

Junction Bot ‘ta tüm filtreleri bir Telegram kanalından diğerine kopyalayabilirsiniz. Bunu yapmak için aşağıdaki komut formatını kullanın:

/filter channel_to_copy_filters_to addAllFrom channel_to_copy_filters_from

Filtreleri kaldır

Bir filtreyi kaldırmak için aynı komutu bir kez daha göndermeniz yeterlidir.

Bir kanala uygulanan tüm geçerli filtreleri görmek için şu komutu kullanın

/filter source_channel_reference

Tüm kanallarınızdan tüm filtreleri silmek için şu komutu kullanın

/filterall DELETE ALL

RegEx filtreleri için buna uygun olarak /filterrx ve /filterrxall adreslerini kullanın.

Yalnızca N’inci mesajın alınması

Junction bot ‘ta Telegram mesajlarını sıklığa göre filtreleyebilirsiniz, böylece yalnızca her n’inci mesaj kopyalanacaktır (aşağıdaki örnekte – her ikinci mesaj). Bunu yapmak için aşağıdaki komut formatını kullanın:

/filter source_channel_reference every 2

Tarih ve saate göre filtreleme

Junction bot, mesajların Telegram’ını geldikleri tarih ve saate bağlı olarak filtreleyebilir.

/filtertime source_channel_reference mustHave time interval

Zaman aralığı setleri:
mustHave için mesajların gelmesi gereken aralık
mustNotHave için mesajların gelmemesi gereken aralık

Zaman aralığı haftanın gününü, saati ve saat dilimini içerebilir.

Haftanın günü. Her zaman bir w harfi ile başlar ve ardından haftanın günlerinin sayılarını takip eder (Pzt’den başlayarak).
Örnek:

w135
Haftanın 1., 3. ve 5. günlerine karşılık gelir (Pazartesi, Çarşamba, Cuma)

w67
Haftanın 6. ve 7. günlerine karşılık gelir (Sat, Sun)

Zaman. Zaman her zaman 24 saat biçimindedir, – ile (dahil) arasında bir aralık, saat:dakika.
Örnekler:
9:30-17:30
0:00-23:59

Saat dilimi. Lütfen mevcut saat dilimlerinin listesine buradan bakın. Saat dilimini açıkça belirtmezseniz, CET – Orta Avrupa Saati (Amsterdam/Berlin/Prag/Viyana) olarak ayarlanacaktır.

Örnekler:

/filtertime source_channel_reference mustNotHave 0:00-7:00
Mesajlar gece yarısından CET’de sabah 7’ye kadar gelmeyecektir.

/filtertime source_channel_reference mustHave w12345 8:00-20:00 America/New_York
Mesajlar sadece iş günlerinde (Pazartesi-Cuma) New York saatiyle sabah 8’den akşam 8’e kadar gelecektir.

Tüm kaynaklarınıza zamansal bir filtre eklemek için /filtertimeall komutunu kullanabilirsiniz. Örneğin:
/filtertimeall add mustNotHave 0:00-7:00
Çıkarmak için:
/filtertimeall remove mustNotHave 0:00-7:00

Gruptaki konuya göre filtreleme

Bir konu filtresi ayarlamak için aşağıdaki komutu kullanın:

/filtertopic source_channel_reference mustHave topicID

Grubun konu numarasını öğrenmek için, konudaki herhangi bir gönderinin bağlantısını alın. Bağlantının ortasındaki sayı konu numarasıdır. Örneğin, bağlantı https://t.me/publicchat/1723/36753 ise, konu numarası 1723’tür.

Örnekler:

/filtertopic source_channel_reference mustHave 1723
Yalnızca 1723 numaralı konudan gönderilere izin verin.

/filtertopic source_channel_reference mustNotHave 7231
Konu numarası 7231 olan gönderileri filtreleyin.

Kaynaktaki farklı konulardan farklı hedef kanallara mesaj kopyalamak için önce kaynaktan hedefe gerekli yönlendirme kurallarını oluşturun. Ardından, her bir özel yönlendirme kuralı için, aşağıdaki talimatları izleyerek /filtertopic komutuyla istediğiniz filtreyi ayarlayın. Örneğin, komut şu şekilde görünebilir:
/filtertopic &123456789#151617181->-1001222333444 mustHave 1723

İletileri kaynaktaki konulardan hedefteki aynı konulara kopyalamak için hedef konuları manuel olarak oluşturmanız gerekir. Ardından her konu için bir ara kanal oluşturmanız gerekir. Her konu için, önce istenen konu filtresi ile ara kanala kopyalamayı ayarlarsınız. Ardından ara kanaldan hedefe istenen topic ayarı ile.

Kopyalar

Bazı durumlarda bir mesaj size birkaç kez gelebilir. Örneğin, her ikisi de aynı gönderiyi ileten iki kanala abone olduysanız. Junction Bot ‘taki tüm aynı Telegram mesajlarını filtrelemek için /setting duplicate komutunu kullanın. Görünüşleri arasındaki 24 saatlik süre içinde aynı mesajlar için çalışır.

/setting duplicate + aşağıdaki seçeneklerden biri:

pass - devre dışı, kopyalara izin ver
Ex.  /setting duplicate pass

filter - yinelenen mesajları filtreler
Ex.  /setting duplicate filter

Bu ayarı sadece bir kanala uygulamak için /setting komutunu /settingchannel source_channel_reference ile değiştirin(devamını okuyun).

Lütfen yinelenenlerin filtresinin orijinal mesajları karşılaştırdığına dikkat edin. Bu, değiştirme kurallarınızın bir sonucu olarak ortaya çıkan hedef kanaldaki yinelemeleri önlemek istiyorsanız, bir ara kanal aracılığıyla biraz daha karmaşık bir yaklaşım kullanmanız gerektiği anlamına gelir.

Diyelim ki mesajları A’dan B’ye yönlendirmemiz gerekiyor. C kanalını oluşturun ve A’dan (kaynak) C’ye (ara) bir yönlendirme ayarlayın. Tüm değiştirme kurallarınızı A kanalına uygulayın. A kanalı için yinelenen bir filtre oluşturmanıza gerek yoktur.

Ardından, C’den (ara) B’ye (hedef) bir yönlendirme ayarlayın. Bu yeniden yönlendirmede ( /settingchannel C duplicate filter komutuyla), değiştirme kurallarının bir sonucu olarak ortaya çıkanlar da dahil olmak üzere tüm yinelenenleri kaldıracak bir filtreleme kuralı belirledik.

Tamamdır! İlk yönlendirme (A’dan C’ye) için bir çoğaltmalar filtresi ayarlarsanız, değiştirme kurallarının bir sonucu olarak ortaya çıkan çoğaltmaları etkilemeyecektir.

Filtrelerin toplu modifikasyonu

/filterall – bu komut, bu filtreyi tüm aboneliklerinize ve yönlendirmelerinize ekleyecektir. Lütfen ortak bir filtre seti diye bir şey olmadığına dikkat edin – tüm kurallara uygulanan bir filtre seti mevcut değildir. Somut abonelik / yönlendirme kuralı başına bir dizi filtre vardır.

/filterall, /filter ile aynı kombinasyonlarla çalışır.

source_channel yerine bir eylem belirlersiniz: ekle veya kaldır.

/filterall add - tüm kanallara yeni bir filtre ekler.
Format:  /filterall add [rule] text to receive
Ex.  /filterall add mustHave bitcoin VEYA /filterall add mustNotHave litecoin

/filterall remove - filtreyi tüm kanallardan kaldırır.
Format:  /filterall remove [rule] text to filter out
Ex.  /filterall remove mustHave bitcoin VEYA /filterall remove mustNotHave litecoin

Düzenli ifadeleri kullanmak için komutu /filterrxall olarak değiştirin.

Tek kaynak – birçok varış noktası

Bir kaynaktan farklı kanallara birden fazla yönlendirme kuralınız varsa ve bir filtreyi yalnızca bir kaynak-hedef kuralına ayarlamak istiyorsanız, bu talimatı izleyin.

source_channel_reference öğesine aşağıdaki yapıyı ekleyin: ->-1001251642436
Burada -1001251642436, Telegram sistemindeki hedef kanalın tanımlayıcısı artı “-100” ön ekidir (Telegram, kanalların numaralarını diğer nesnelerin numaralarından ayırt etme yöntemidir). Bu numarayı bulmak çok basittir, talimatlar için internette arama yapın. Örneğin, kanaldaki bir mesajı @junction_helper0_bot botuna iletin. Orada kanal numarasını forward_from_chat.id veya forward_from.id içinde göreceksiniz.
Örneğin, yapılandırma komutu aşağıdaki gibi görünebilir:
/filter source_channel_reference->-1001251642436 mustHave cats

Belirli bir kişinin gönderilerini filtreleme

Junction Bot ‘un belirli bir kullanıcının Telegram mesajlarını filtrelemesini sağlayabilirsiniz. Diyelim ki @source kaynak sohbet. Yalnızca @kullanıcısından gelen mesajları iletmek için aşağıdakileri yapın:

  1. Komutuyla yeni bir yönlendirme kuralı oluşturun /new
  2. Yazar adlarının kopyalanmasını şu komutla açın
    /settingchannel source_channel_reference author full
  3. İhtiyacınız olan isim için filtreyi şu komutla ayarlayın
    /filter source_channel_reference mustHave user_reference
    Mesajın belirli bir kullanıcıdan gelmesi ve aynı zamanda belirli bir metin içermesi gerekiyorsa, biraz farklı bir komuta ihtiyacınız vardır:
    /filterrx source_channel_reference mustHave .*user_reference.*specific text.*

Çoğu durumda kullanıcı_referans olarak kullanıcının @kullanıcıadını kullanabilirsiniz. Bazı durumlarda çalışmayacaktır (örneğin, kullanıcının herkese açık bir kullanıcı adı yoksa veya bot onun hakkında tam bilgiye sahip değilse). Bu durumda, bir açıklama raporunu etkinleştirmeniz ve mesajda kullanıcıya nasıl atıfta bulunulduğunu görmeniz ve ardından bu dizeyi kullanmanız gerekir.

author ayarı ile sonuçta ortaya çıkan mesajlar mesajın yazarının adını içerecektir. Bazen yazarın adının bulunmaması gerekebilir. Bu, bir ara kanal aracılığıyla biraz daha karmaşık bir süreç gerektirecektir.

Diyelim ki mesajları A’dan B’ye yönlendirmemiz gerekiyor. C kanalını oluşturun ve A’dan (kaynak) C’ye (ara) bir yönlendirme ayarlayın. Sayfa 2 ve 3’teki ayarları buna uygulayın:
/settingchannel A author full
/filter A mustHave @user

Ardından, C’den (ara) B’ye (hedef) bir yönlendirme ayarlayın. Bu yönlendirmede ( /replace komutuyla) yazarların adlarını kaldıracak bir değiştirme kuralı belirledik.
/replace B @user&nbsp;(User's&nbsp;name)

Tamamdır! Bu değiştirme kuralını ilk yönlendirme (A’dan C’ye) için ayarlarsanız, yazarın adını etkilemeyecektir. Yazarın adı, kaynak kanalın adı gibi, bir hizmet metnidir ve /replace komutundan etkilenmez ve başka şekillerde ayarlanabilir.

İletilen gönderileri filtreleme

Junction Bot ‘un bir kaynak kanala iletilen Telegram mesajlarını filtrelemesini sağlayabilirsiniz. Diyelim ki @source kaynak kanal. Diğer kanallardan @source’a iletilen mesajları değil, yalnızca orijinal mesajları @source’a kopyalamak için aşağıdakileri yapın:

  1. Komutuyla yeni bir yönlendirme kuralı oluşturun /new
  2. Yazar adlarının kopyalanmasını şu komutla açın
    /settingchannel source_channel_reference header from_only
    İletilen mesajın başına bir metin parçası ekleyecektir: “from ” + kanalın adı.
  3. Filtrelemek istediğiniz kanalın adı için filtreyi ayarlayın. Örneğin, iletilen gönderiler “İletilerin Kaynağı” adlı bir kanaldan geliyorsa
    /filter source_channel_reference mustNotHave from Source of forwards
    Başka bir kanaldan yönlendirilen gönderilerden kurtulmak istiyorsanız, biraz farklı bir komuta ihtiyacınız var:
    /filter source_channel_reference mustNotHave from

Yapay zeka filtreleme

Herhangi bir filtreleme kriterini serbest formda tanımlayabilir ve yapay zekanın mesajlarınızı otomatik olarak filtrelemesine izin verebilirsiniz. İlginç bir şekilde, bu şekilde yalnızca mesajın metnine göre değil, aynı zamanda anlamına ve duygusuna göre de filtreleme yapabilirsiniz. Örneğin, yapay zekadan kanalınızda yalnızca olumlu haberlere izin vermesini isteyebilirsiniz ☺️

Bunu nasıl ayarlayacağınız için buraya bakın.

Manuel filtreleme

Gönderilerin kopyalanıp kopyalanmayacağı veya atlanıp atlanmayacağı üzerinde manuel kontrol sahibi olmak istiyorsanız, inceleme modunu kullanın.

Neyin çalışmadığını bulmak

Mevcut filtrelerin ne olduğunu ve doğru olup olmadıklarını kontrol edin:

/filter source_channel_reference
/filterrx source_channel_reference

Çok sayıda filtre ayarlarsanız, belirli bir mesajın neden geçtiğini veya neden geçmediğini anlamak zor olabilir. Bu konuda size yardımcı olmak için açıkla adlı özel bir ayar vardır. Komutu ile ayarlayabilirsiniz:

/settingchannel source_channel_reference açıkla

Etkinleştirilirse, bu source_channel’dan gelen her yeni mesaj için bir rapor alırsınız. Rapor, bu mesajın neden filtrelendiğini veya geçmesine izin verildiğini açıklayacaktır.

Bir açıklama modunu devre dışı bırakmak için şu komutu kullanın

/settingchannel source_channel_reference explain off