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:
Ö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ığındaword
kelimesinin yer aldığı gönderileri durdurunsource_channel_reference
/filterrx
mustNotHave
.*word.*<photo>.*
2. İki kelime -word1
veword2
- belirli bir sırada/filterrx
3. Herhangi bir sırada iki kelimesource_channel_reference
mustNotHave
.*word1.*word2.*/filterrx
source_channel_reference5. Herhangi bir sırada iki kelime, kaydı dikkate almayın
mustNotHave
(?=.*\bword1\b)(?=.*\bword2\b).*/filterrx
6. Bir kümeden herhangi bir kelimesource_channel_reference
mustNotHave
(?i:.*wOrd1.*woRd2.*)/filterrx
7. Bunları birleştirebilirsiniz. Örneğin, büyük/küçük harfe duyarlı olmayan kelimelerden herhangi birisource_channel_reference
mustNotHave
.*word1.*|.*word2.*|.*word3.*/filterrx
source_channel_reference8. Rus alfabesi içeren herhangi bir kelime
mustNotHave
(?i:.*wOrd1.*|.*worD2.*|.*woRd3.*)/filterrx
9. Herhangi bir HTTP bağlantısısource_channel_reference
mustNotHave
.*([а-яА-Я]+).*/filterrx
10. Herhangi bir sayısource_channel_reference
mustNotHave .*(http:\/\/|https:\/\/).*/filterrx
11. Herhangi bir @kullanıcı adısource_channel_reference
mustNotHave .*([0-9]+).*/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:
- Komutuyla yeni bir yönlendirme kuralı oluşturun
/new
- Yazar adlarının kopyalanmasını şu komutla açın
/settingchannel source_channel_reference author full
- İ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 (User's 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:
- Komutuyla yeni bir yönlendirme kuralı oluşturun
/new
- 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ı. - 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