Penyaringan

Dalam Junction Bot Anda dapat memfilter pesan Telegram yang masuk dengan menerapkan aturan pemfilteran. Anda menentukan pesan mana yang Anda terima dan mana yang akan disaring sehingga Anda tidak akan melihatnya (seperti iklan, misalnya).

Filter dapat diterapkan ke saluran secara terpisah atau ke semua saluran sekaligus. Anda dapat mengombinasikan sejumlah filter apa pun.

Fitur yang didukung: mustHave, mustNotHave, regex, pemfilteran berdasarkan jenis lampiran, dan masih banyak lagi.

Harap perhatikan bahwa ada fitur debugging yang sangat berguna, yang dapat menghemat waktu Anda.

Perintah

/filter - membuat filter (untuk 1 sumber) ATAU menghapus filter jika dimasukkan untuk kedua kalinya. Dikombinasikan dengan: 'harusDimiliki', 'harusTidakDimiliki', 'setiap', jenis lampiran /filterrx - memfilter berdasarkan regex (lihat contohnya di sini) /filterall, /filterrxall - membuat filter untuk semua sumber /filter source_channel_reference - melihat semua filter saat ini yang diterapkan ke saluran

Jika Anda memiliki beberapa aturan penerusan dari sumber yang sama ke tujuan yang berbeda, Anda dapat mengatur pengaturan, filter, dan penggantian yang berbeda untuk tujuan yang berbeda. Lihat detail selengkapnya di sini.

Filter harusDimiliki, tidak bolehDimiliki

mustHave - Anda hanya akan menerima pesan dengan teks tertentu
Format:  /filter source_channel_reference mustHave text to receive
Ex.  /filter https://t.me/junction_bot_news mustHave cool cats
Harap diingat, bahwa teks filter berlaku sebagai frasa utuh, bukan sebagai kata-kata yang terpisah. Jadi, dalam contoh ini, Anda akan menerima semua pesan yang mengandung frasa "kucing keren". Anda tidak perlu menggunakan karakter escape seperti di sini.

mustNotHave - menyaring pesan dengan teks tertentu
Format:  /filter source_channel_reference mustNotHave text to filter out
Ex.  /filter https://t.me/junction_bot_news mustNotHave old hats

Menggabungkan filter

Beberapa filter yang wajib dimiliki akan digabungkan berdasarkan aturan “OR”.

Beberapa filter mustNotHave akan digabungkan berdasarkan aturan “AND”.

Catatan: Anda tidak dapat menggabungkan keduanya dalam satu perintah. Gunakan perintah terpisah untuk setiap filter.

Contoh:
/filter source_channel_reference mustHave cats
/filter source_channel_reference mustHave kittens
Anda akan menerima semua pesan yang mengandung kata 'kucing' atau kata 'anak kucing'
/filter source_channel_reference mustNotHave dogs
/filter source_channel_reference mustNotHave puppies 
Anda tidak akan menerima pesan apa pun yang mengandung kata 'anjing' atau 'anak anjing'

Memfilter berdasarkan jenis lampiran Telegram

Anda juga dapat menyaring pesan media. Untuk itu, gunakan salah satu string berikut ini sebagai teks filter: <foto>, <dokumen>, <audio>, <video>, <stiker>, <suara>, <lokasi>, <animasi>, <catatan video>, <jajak pendapat>.

Contoh:
/filter source_channel_reference mustHave <audio>  - Anda hanya akan menerima pesan yang berisi lampiran audio dari saluran
/filter source_channel_reference mustNotHave <photo>  - Anda tidak akan menerima pesan apa pun yang berisi gambar dari saluran tersebut

Pemfilteran lanjutan

Selain itu, Anda juga dapat menggunakan ekspresi reguler (RegEx) untuk melakukan pemfilteran. Untuk itu, gunakan perintah /filterrx. Ini memiliki format yang sama.

Berikut ini beberapa contoh umum:
1. Hentikan postingan yang memiliki kata word dalam keterangan gambar
/filterrx referensi sumber_channel_reference mustNotHave .*word.*<photo>.*
2. Dua kata - word1 dan word2 - dalam urutan tertentu
/filterrx source_channel_reference mustNotHave .*word1.*word2.*
3. Dua kata dalam urutan apa pun
/filterrx referensi sumber_channel_reference mustNotHave (?=.*\bword1\b)(?=.*\bword2\b).*
5. Dua kata dalam urutan apa pun, abaikan daftar
/filterrx source_channel_reference mustNotHave (?i:.*wOrd1.*woRd2.*)
6. Kata apa pun dari satu set
/filterrx source_channel_reference mustNotHave .*word1.*|.*word2.*|.*word3.*
7. Anda dapat menggabungkannya. Misalnya, salah satu kata, tidak peka huruf besar/kecil
/filterrx referensi sumber_channel_reference mustNotHave (?i:.*wOrd1.*|.*worD2.*|.*woRd3.*)
8. Kata apa pun yang mengandung alfabet Rusia
/filterrx source_channel_reference mustNotHave .*([а-яА-Я]+).*
9. Tautan HTTP apa pun
/filterrx source_channel_reference mustNotHave .*(http:\/\/|https:\/\/).*
10. Nomor apa saja
/filterrx source_channel_reference mustNotHave .*([0-9]+).*
11. Nama pengguna apa saja
/filterrx source_channel_reference mustNotHave .*@([a-zA-Z0-9=&_\-]+).*

Penting untuk memahami apa itu RegEx sebelum menggunakan filter ini. Sebagai contoh, filter dengan ekspresi reguler word2 TIDAK COCOK dengan pesan word1 word2 word3, karena mengandung kata selain word2. Ingatlah untuk menambahkan .* di kedua sisi kata: .*kata2.*

Perhatikan satu hal penting: saat memfilter, bot dapat menambahkan spasi dan/atau kode konten media di akhir teks. Oleh karena itu, kami menyarankan Anda untuk selalu meletakkan .* di akhir filter RegEx Anda.

Poin penting lainnya: RegEx untuk filter biasanya memiliki .* di awal dan di akhir, karena Anda ingin seluruh pesan sesuai dengan ekspresi. Jika Anda ingin menggunakan ekspresi yang sama untuk penggantian, Anda mungkin ingin menghapus .* (jika tidak, penggantian akan menggantikan seluruh teks pesan).

Ada instrumen yang sangat nyaman untuk menguji ekspresi reguler: https://regex101.com. Atur Flavor ke “Java 8” dan atur bendera “Baris tunggal: Titik cocok dengan baris baru”. Ini akan membuatnya bekerja dengan cara yang sama seperti pencocokan @junction_bot.

Bantuan dengan ekspresi reguler

Ekspresi reguler adalah topik yang sangat luas. Bantuan di bidang ini berada di luar cakupan administrasi bot. Mohon jangan menulis kepada admin secara pribadi untuk meminta mereka membuatkan aturan pengganti atau filter. Selain itu, administrasi bot tidak menyediakan bantuan semacam ini di grup dukungan.

Cara termudah untuk mendapatkan ekspresi reguler yang dibuat untuk kebutuhan Anda adalah dengan meminta ChatGPT, ini cukup bagus.

Selain itu, Anda juga dapat mencari bantuan di forum yang sesuai. Misalnya StackOverflow atau CodeProject.

Menetapkan filter untuk semua sumber Anda

Untuk menambahkan filter ke semua sumber Anda saat ini, gunakan perintah /filterall atau /filterrxall (untuk ekspresi reguler).

Harap diperhatikan bahwa aturan penerusan baru selalu dibuat dengan daftar filter kosong. Anda dapat menyalin filter dari sumber yang sudah ada.

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

Perintah ini akan menambahkan filter pada semua sumber Anda, yang akan menghentikan pesan yang mengandung tautan.

Salin filter

Dalam Junction Bot Anda dapat menyalin semua filter dari satu saluran Telegram ke saluran lainnya. Untuk melakukan ini, gunakan format perintah berikut:

/filter channel_to_copy_filters_to addAllFrom channel_to_copy_filters_from

Menghapus filter

Untuk menghapus filter, cukup kirimkan perintah yang sama sekali lagi.

Untuk melihat semua filter saat ini yang diterapkan ke saluran, gunakan perintah

/filter source_channel_reference

Untuk menghapus semua filter dari semua saluran Anda, gunakan perintah

/filterall DELETE ALL

Untuk filter RegEx, gunakan /filterrx dan /filterrxall.

Hanya menerima pesan ke-N

Di Junction bot Anda dapat memfilter pesan Telegram berdasarkan frekuensi, sehingga hanya setiap pesan ke-n yang akan disalin (dalam contoh berikut – setiap pesan kedua). Untuk melakukan ini, gunakan format perintah berikut:

/filter source_channel_reference every 2

Memfilter berdasarkan tanggal dan waktu

Bot Junction dapat memfilter pesan Telegram berdasarkan tanggal dan waktu datangnya.

/filtertime source_channel_reference mustHave time interval

Set interval waktu:
– Interval ketika pesan harus datang untuk mustHave
– Interval ketika pesan tidak boleh datang untuk mustNotHave

Interval waktu dapat berisi hari dalam seminggu, waktu, dan zona waktu.

Hari dalam seminggu. Selalu dimulai dengan huruf w dan diikuti dengan angka hari dalam seminggu (mulai dari Senin).
Contoh:

w135
Sesuai dengan hari ke-1, ke-3, dan ke-5 dalam seminggu (Senin, Rabu, Jumat)

w67
Sesuai dengan hari ke-6 dan ke-7 dalam seminggu (Sabtu, Minggu)

Waktu. Waktu selalu dalam format 24 jam, interval dari – hingga (inklusif), jam:menit.
Contoh:
9:30-17:30
0:00-23:59

Zona waktu. Silakan lihat daftar zona waktu yang tersedia di sini. Jika Anda tidak secara eksplisit menyebutkan zona waktu, maka zona waktu akan diatur ke CET – Waktu Eropa Tengah (Amsterdam/Berlin/Prague/Vienna)

Contoh:

/filtertime source_channel_reference mustNotHave 0:00-7:00
Pesan tidak akan masuk dari tengah malam hingga pukul 7 pagi CET.

/filtertime source_channel_reference mustHave w12345 8:00-20:00 America/New_York
Pesan hanya akan masuk pada hari kerja (Senin-Jumat) mulai pukul 08.00 hingga 20.00 waktu New York.

Untuk menambahkan filter temporal ke semua sumber, Anda dapat menggunakan perintah /filtertimeall. Sebagai contoh:
/filtertimeall add mustNotHave 0:00-7:00
Untuk menghapus:
/filtertimeall remove mustNotHave 0:00-7:00

Memfilter berdasarkan topik dalam grup

Untuk mengatur filter topik, gunakan perintah berikut:

/filtertopic source_channel_reference mustHave topicID

Untuk mengetahui nomor topik grup, ambil tautan ke pos mana pun dalam topik tersebut. Nomor di tengah-tengah tautan adalah nomor topik. Sebagai contoh, jika tautannya adalah https://t.me/publicchat/1723/36753, nomor topiknya adalah 1723.

Contoh:

/filtertopic source_channel_reference mustHave 1723
Hanya mengizinkan postingan dari topik nomor 1723.

/filtertopic source_channel_reference mustNotHave 7231
Saring postingan dari topik nomor 7231.

Untuk menyalin pesan dari berbagai topik di sumber ke saluran tujuan yang berbeda, pertama-tama buat aturan penerusan yang diperlukan dari sumber ke tujuan. Kemudian, untuk setiap aturan penerusan tertentu, atur filter yang diinginkan dengan perintah /filtertopic dengan mengikuti petunjuk berikut. Contohnya, perintahnya mungkin terlihat seperti ini:
/filtertopic &123456789#151617181->-1001222333444 mustHave 1723

Untuk menyalin pesan dari topik di sumber ke topik yang sama di tujuan, Anda perlu membuat topik tujuan secara manual. Kemudian Anda perlu membuat saluran perantara untuk setiap topik. Untuk setiap topik, Anda terlebih dahulu mengatur penyalinan ke saluran perantara dengan filter topik yang diinginkan. Kemudian dari saluran perantara ke tujuan dengan pengaturan topic yang diinginkan.

Duplikat

Dalam beberapa kasus, satu pesan bisa datang kepada Anda beberapa kali. Misalnya, jika Anda berlangganan dua saluran yang keduanya meneruskan postingan yang sama. Untuk memfilter semua pesan Telegram yang identik di Junction Bot gunakan perintah /setting duplikat. Ini berfungsi untuk pesan yang identik dalam periode 24 jam antara kemunculannya.

/setting duplikat + salah satu opsi berikut ini:

lulus - dinonaktifkan, izinkan duplikat
Ex.  /setting duplicate pass

menyaring - menyaring pesan yang terduplikasi
Ex.  /setting duplicate filter

Untuk menerapkan pengaturan ini ke satu saluran saja, ganti perintah /setting dengan /settingchannel source_channel_reference (baca selengkapnya).

Harap diperhatikan, bahwa filter duplikat membandingkan pesan asli. Ini berarti bahwa jika Anda ingin menghindari duplikat di saluran tujuan, muncul sebagai hasil dari aturan penggantian Anda, Anda perlu menggunakan pendekatan yang sedikit lebih kompleks – melalui saluran perantara.

Misalkan kita perlu mengalihkan pesan dari A ke B. Buat saluran C dan siapkan pengalihan dari A (sumber) ke C (perantara). Terapkan semua aturan pengganti Anda ke saluran A. Anda tidak perlu membuat filter duplikat untuk saluran A.

Selanjutnya, siapkan pengalihan dari C (perantara) ke B (tujuan). Kami menetapkan aturan penyaringan pada pengalihan ini (dengan perintah /settingchannel C duplicate filter ), yang akan menghapus semua yang terduplikasi, bahkan yang muncul sebagai hasil dari aturan penggantian.

Selesai! Jika Anda akan menetapkan filter duplikat untuk pengalihan pertama (dari A ke C), maka filter ini tidak akan memengaruhi duplikat yang muncul sebagai hasil dari aturan penggantian.

Modifikasi filter secara massal

/filterall – perintah ini akan menambahkan filter ini ke semua langganan dan penerusan Anda. Harap diperhatikan, bahwa tidak ada yang namanya seperangkat filter yang umum – seperangkat filter yang diterapkan pada semua aturan, tidak ada. Ada satu set filter per aturan langganan / penerusan yang konkret.

/filterall bekerja dengan kombinasi yang sama dengan /filter.

Alih-alih source_channel, Anda menetapkan tindakan: tambah atau hapus.

/filterall add - menambahkan filter baru ke semua saluran.
Format:  /filterall add [rule] text to receive
Ex.  /filterall add mustHave bitcoin ATAU /filterall add mustNotHave litecoin

/filterall remove - menghapus filter dari semua saluran.
Format:  /filterall remove [rule] text to filter out
Ex.  /filterall remove mustHave bitcoin ATAU /filterall remove mustNotHave litecoin

Ubah perintah menjadi /filterrxall untuk menggunakan ekspresi reguler.

Satu sumber – banyak tujuan

Jika Anda memiliki beberapa aturan penerusan ke saluran yang berbeda dari satu sumber dan ingin mengatur filter ke satu aturan sumber-tujuan saja, ikuti petunjuk ini.

Tambahkan konstruksi berikut ini ke source_channel_reference: ->-1001251642436
Di mana -1001251642436 adalah pengenal saluran tujuan dalam sistem Telegram ditambah awalan “-100” (ini adalah cara Telegram membedakan nomor jika saluran dari nomor objek lain). Untuk menemukan nomor ini sangat mudah, cari petunjuk di Internet. Misalnya, meneruskan pesan dari saluran ke bot @junction_helper0_bot. Di sana Anda akan melihat nomor saluran di forward_from_chat.id atau forward_from.id.
Jadi, misalnya, perintah konfigurasi mungkin terlihat seperti ini:
/filter source_channel_reference->-1001251642436 mustHave cats

Memfilter kiriman dari orang tertentu

Anda dapat membuat Junction Bot memfilter pesan Telegram dari pengguna tertentu. Katakanlah @source adalah obrolan sumber. Untuk meneruskan hanya pesan dari @pengguna, lakukan hal berikut:

  1. Buat aturan penerusan baru dengan perintah /new
  2. Aktifkan penyalinan nama penulis dengan perintah
    /settingchannel source_channel_reference author full
  3. Siapkan filter untuk nama yang Anda perlukan dengan perintah
    /filter source_channel_reference mustHave user_reference
    Jika Anda membutuhkan pesan dari pengguna tertentu dan pada saat yang sama berisi teks tertentu, maka Anda memerlukan perintah yang sedikit berbeda:
    /filterrx source_channel_reference mustHave .*user_reference.*specific text.*

Dalam kebanyakan kasus sebagai referensi_pengguna , Anda dapat menggunakan @nama_pengguna. Dalam beberapa kasus, ini tidak akan berhasil (misalnya jika pengguna tidak memiliki nama pengguna publik atau bot tidak memiliki informasi lengkap tentangnya). Dalam kasus ini, Anda perlu mengaktifkan laporan penjelasan dan melihat bagaimana pengguna direferensikan dalam pesan dan kemudian menggunakan string ini.

Dengan pengaturan author , pesan yang dihasilkan akan berisi nama penulis pesan. Kadang-kadang nama penulis tidak perlu dicantumkan. Ini akan membutuhkan proses yang sedikit lebih rumit – melalui saluran perantara.

Misalkan kita perlu mengalihkan pesan dari A ke B. Buat saluran C dan atur pengalihan dari A (sumber) ke C (perantara). Terapkan pengaturan dari halaman 2 dan 3 ke sana:
/settingchannel A author full
/filter A mustHave @user

Selanjutnya, siapkan pengalihan dari C (perantara) ke B (tujuan). Kami menetapkan aturan penggantian pada pengalihan ini (dengan perintah /replace ), yang akan menghapus nama-nama penulis.
/replace B @user&nbsp;(User's&nbsp;name)

Selesai! Jika Anda menetapkan aturan penggantian ini untuk pengalihan pertama (dari A ke C), maka aturan ini tidak akan memengaruhi nama penulis. Nama penulis, seperti nama saluran sumber, adalah teks layanan dan tidak terpengaruh oleh perintah /replace, dan dapat disesuaikan dengan cara lain.

Memfilter postingan yang diteruskan

Anda dapat membuat Junction Bot menyaring pesan Telegram yang diteruskan ke saluran sumber. Katakanlah @source adalah saluran sumber. Untuk menyalin hanya pesan asli @sumber, tetapi tidak menyalin pesan yang diteruskan ke @sumber dari saluran lain, lakukan hal berikut:

  1. Buat aturan penerusan baru dengan perintah /new
  2. Aktifkan penyalinan nama penulis dengan perintah
    /settingchannel source_channel_reference header from_only
    Ini akan menambahkan di awal pesan yang diteruskan sepotong teks: “dari ” + nama saluran.
  3. Siapkan filter untuk nama saluran yang ingin Anda saring. Misalnya, jika postingan yang diteruskan berasal dari saluran bernama “Sumber penerusan”
    /filter source_channel_reference mustNotHave from Source of forwards
    Jika Anda ingin menyingkirkan postingan yang diteruskan dari saluran lain, maka Anda memerlukan perintah yang sedikit berbeda:
    /filter source_channel_reference mustNotHave from

Penyaringan AI

Anda dapat mendeskripsikan kriteria penyaringan apa pun dalam bentuk bebas dan membiarkan AI secara otomatis menyaring pesan Anda. Menariknya, dengan cara ini Anda tidak hanya dapat memfilter berdasarkan teks pesan, tetapi juga berdasarkan makna dan sentimennya. Misalnya, Anda dapat meminta AI untuk hanya mengizinkan berita positif di saluran Anda ☺️

Bagaimana cara mengaturnya, lihat di sini.

Penyaringan manual

Jika Anda ingin memiliki kontrol manual untuk menentukan apakah postingan harus disalin atau dilewati, gunakan mode tinjauan.

Mencari tahu apa yang tidak berhasil

Periksa filter apa saja yang digunakan saat ini dan apakah sudah benar:

/filter source_channel_reference
/filterrx source_channel_reference

Jika Anda mengatur banyak filter, mungkin sulit untuk mengetahui mengapa pesan tertentu lolos atau tidak. Untuk membantu Anda, ada pengaturan khusus yang disebut explain. Anda dapat mengaturnya dengan perintah:

/settingchannel source_channel_reference jelaskan pada

Jika diaktifkan, Anda akan menerima laporan untuk setiap pesan baru yang datang dari source_channel ini. Laporan akan menjelaskan mengapa pesan ini disaring atau dibiarkan lewat.

Untuk menonaktifkan mode penjelasan, gunakan perintah

/settingchannel source_channel_reference jelaskan