فیلتر کردن

در Junction Bot می توانید پیام های دریافتی تلگرام را با اعمال قوانین فیلترینگ فیلتر کنید. شما تصمیم می گیرید که کدام پیام ها را دریافت کنید و کدام یک فیلتر شوند تا آنها را نبینید (مثلاً تبلیغات).

فیلترها را می توان به طور جداگانه برای کانال ها یا به طور همزمان برای همه کانال ها اعمال کرد. شما می توانید هر مقدار فیلتر از هر نوع را ترکیب کنید.

ویژگی های پشتیبانی شده : mustHave، mustNotHave، regex، فیلتر کردن بر اساس نوع پیوست و بسیاری موارد دیگر.

لطفاً توجه داشته باشید که یک ویژگی اشکال زدایی بسیار مفید وجود دارد که ممکن است ساعت های زیادی در شما صرفه جویی کند.

دستورات

/filter - یک فیلتر (برای 1 منبع) ایجاد کنید یا اگر برای بار دوم وارد شد فیلتر را حذف کنید. ترکیب می شود با: «باید»، «مباید نبود»، «همه»، نوع پیوست /filterrx - فیلتر کردن توسط regex (نمونه‌ها را اینجا ببینید) /filterall ، /filterrxall - یک فیلتر برای همه منابع ایجاد کنید /filter source_channel_reference - تمام فیلترهای فعلی اعمال شده روی یک کانال را ببینید

اگر چندین قانون ارسال از یک منبع به مقصدهای مختلف دارید، می‌توانید تنظیمات، فیلترها و جایگزین‌های مختلفی را برای مقاصد مختلف تنظیم کنید. جزئیات بیشتر را اینجا ببینید.

فیلترهای mustHave، mustNotHave

mustHave - فقط پیام هایی با یک متن خاص دریافت خواهید کرد
قالب:  /filter source_channel_reference mustHave text to receive
سابق.  /filter https://t.me/junction_bot_news mustHave cool cats
لطفاً به یاد داشته باشید که متن یک فیلتر به عنوان یک عبارت کامل اعمال می شود، نه به عنوان کلمات جداگانه. بنابراین در این مثال شما تمام پیام‌های حاوی عبارت دقیق «گربه‌های باحال» را دریافت خواهید کرد. شما نیازی به استفاده از هیچ گونه شخصیت فرار مانند اینجا ندارید.

mustNotHave - پیام های دارای متن خاص را فیلتر می کند
قالب:  /filter source_channel_reference mustNotHave text to filter out
سابق.  /filter https://t.me/junction_bot_news mustNotHave old hats

ترکیب فیلترها

چندین فیلتر mustHave بر اساس قانون “OR” ترکیب خواهند شد.

چندین فیلتر mustNotHave بر اساس قانون “AND” ترکیب خواهند شد.

توجه: شما نمی توانید آنها را در یک دستور ترکیب کنید. برای هر فیلتر از یک دستور جداگانه استفاده کنید.

مثال ها:
/filter source_channel_reference mustHave cats
/filter source_channel_reference mustHave kittens
شما همه پیام‌های حاوی کلمه "گربه" یا "گربه" را دریافت خواهید کرد.
/filter source_channel_reference mustNotHave dogs
/filter source_channel_reference mustNotHave puppies 
هیچ پیامی حاوی کلمات "سگ" یا "توله سگ" دریافت نخواهید کرد.

فیلتر بر اساس نوع پیوست تلگرام

همچنین می توانید پیام های رسانه ای را فیلتر کنید. برای این کار از یکی از رشته های زیر به عنوان متن فیلتر استفاده کنید: <عکس> ،< سند>, <سمعی>, <ویدئو>, <استیکر>, <صدا>, <محل>, <انیمیشن>, <یادداشت ویدیویی>, <نظرسنجی>.

مثال ها:
/filter source_channel_reference mustHave <audio>  - فقط پیام های حاوی پیوست های صوتی را از کانال دریافت خواهید کرد
/filter source_channel_reference mustNotHave <photo>  - هیچ پیامی حاوی عکس از کانال دریافت نخواهید کرد

فیلترینگ پیشرفته

همچنین، می توانید از عبارات منظم (RegEx) برای انجام فیلترینگ خود استفاده کنید. برای این کار از دستور /filterrx استفاده کنید. همین قالب را دارد.

در اینجا چند نمونه رایج آورده شده است:
1. از داشتن یک کلمه جلوگیری کنیدword در توضیح یک تصویر
/filterrx منبع_کانال_مرجع mustNotHave .*word.*<photo>.*
2. دو کلمه -word1  وword2  - به ترتیب خاصی
/filterrx source_channel_reference mustNotHave .*word1.*word2.*
3. دو کلمه به هر ترتیب
/filterrx منبع_کانال_مرجع mustNotHave (?=.*\bword1\b)(?=.*\bword2\b).*
5. دو کلمه به هر ترتیب، ثبت نام را نادیده بگیرید
/filterrx source_channel_reference mustNotHave (?i:.*wOrd1.*woRd2.*)
6. هر کلمه از یک مجموعه
/filterrx source_channel_reference mustNotHave .*word1.*|.*word2.*|.*word3.*
7. می توانید آنها را ترکیب کنید. به عنوان مثال، هر یک از کلمات، بدون حروف بزرگ و کوچک
/filterrx منبع_کانال_مرجع mustNotHave (?i:.*wOrd1.*|.*worD2.*|.*woRd3.*)
8. هر کلمه ای که حاوی الفبای روسی باشد
/filterrx source_channel_reference mustNotHave .*([а-яА-Я]+).*
9. هر پیوند HTTP
/filterrx source_channel_reference mustNotHave .*(http:\/\/|https:\/\/).*
10. هر عدد
/filterrx source_channel_reference mustNotHave .*([0-9]+).*
11. هر نام کاربری @
/filterrx source_channel_reference mustNotHave .*@([a-zA-Z0-9=&_\-] +).*

قبل از استفاده از این فیلترها، مهم است که بدانید RegEx چیست. به عنوان مثال، فیلتر با عبارت منظم word2 با پیام word1 word2 word3 مطابقت ندارد، زیرا حاوی کلماتی غیر از word2 است. به یاد داشته باشید که .* را در هر دو طرف کلمه اضافه کنید: .*word2.*

به یک نکته مهم توجه کنید: هنگام فیلتر کردن، ربات می تواند یک فاصله و/یا یک کد محتوای رسانه ای را در انتهای متن اضافه کند. بنابراین، به شما توصیه می کنیم همیشه .* را در انتهای فیلترهای RegEx خود قرار دهید.

نکته مهم دیگر: RegEx برای فیلترها معمولا دارای یک.* در ابتدا و در انتها، زیرا می خواهید کل پیام با بیان مطابقت داشته باشد. اگر می خواهید از عبارت مشابهی برای جایگزینی استفاده کنید، احتمالاً می خواهید آن را حذف کنید.* (در غیر این صورت جایگزینی جایگزین کل متن پیام خواهد شد).

ابزار بسیار مناسبی برای آزمایش عبارات منظم وجود دارد: https://regex101.com . Flavor را روی “Java 8” تنظیم کنید و پرچم “Single line: Dot matches line new” را تنظیم کنید. این باعث می شود که آن را به همان روشی که تطبیق دهنده @junction_bot است کار کند.

با عبارات منظم کمک کنید

عبارات منظم یک موضوع گسترده است. کمک در این زمینه خارج از حوزه مدیریت ربات است. لطفاً به صورت خصوصی به ادمین ها ننویسید و از آنها بخواهید یک قانون جایگزین یا یک فیلتر برای شما ایجاد کنند. همچنین، مدیریت ربات این نوع کمک را در گروه پشتیبانی ارائه نمی دهد.

ساده ترین راه برای ایجاد یک عبارت منظم برای نیازهای شما این است که از ChatGPT بپرسید، در آن بسیار خوب است.

همچنین، می توانید در انجمن های مناسب به دنبال کمک باشید. به عنوان مثال StackOverflow یا CodeProject .

تنظیم یک فیلتر برای همه منابع شما

برای افزودن فیلتر به همه منابع فعلی خود، از/filterall یا/filterrxall (برای عبارات منظم) دستور.

لطفاً توجه داشته باشید که قوانین حمل و نقل جدید همیشه با یک لیست فیلتر خالی ایجاد می شوند. می توانید فیلترها را از یک منبع موجود به آنها کپی کنید .

برای مثال:
/filterrxall add mustNotHave .*(http:\/\/|https:\/\/).*

این دستور به همه منابع شما یک فیلتر اضافه می کند که هر پیام حاوی پیوند را متوقف می کند.

کپی فیلترها

در Junction Bot می توانید تمام فیلترها را از یک کانال تلگرام به کانال دیگر کپی کنید. برای انجام این کار از فرمت دستور زیر استفاده کنید:

/filter channel_to_copy_filters_to addAllFrom channel_to_copy_filters_from

فیلترها را حذف کنید

برای حذف فیلتر کافیست یک بار دیگر همان دستور را ارسال کنید.

برای مشاهده تمام فیلترهای فعلی اعمال شده روی یک کانال از دستور استفاده کنید

/filter source_channel_reference

برای حذف تمام فیلترها از تمام کانال های خود از دستور استفاده کنید

/filterall DELETE ALL

برای فیلترهای RegEx استفاده کنید/filterrx و /filterrxall متقابلا.

در حال دریافت فقط پیام N

در ربات Junction می توانید پیام های تلگرام را بر اساس فرکانس فیلتر کنید، بنابراین فقط هر n-امین پیام کپی می شود (در مثال زیر – هر پیام دوم). برای این کار از فرمت دستور زیر استفاده کنید:

/filter source_channel_reference every 2

فیلتر کردن بر اساس تاریخ و زمان

ربات Junction می تواند تلگرام پیام ها را بسته به تاریخ و زمان ارسال آنها فیلتر کند.

/filtertime source_channel_reference mustHave time interval

مجموعه های بازه زمانی:
– فاصله زمانی که پیام ها باید برای mustHave بیایند
– فاصله زمانی که پیام ها نباید برای mustNotHave بیایند

فاصله زمانی ممکن است شامل روز هفته، زمان و منطقه زمانی باشد.

روز هفته . همیشه با حرف w شروع می شود و سپس اعداد روزهای هفته را دنبال می کند (از دوشنبه شروع می شود).
مثال:

w135
مربوط به روزهای اول، سوم و پنجم هفته (دوشنبه، چهارشنبه، جمعه) است.

w67
مربوط به روزهای ششم و هفتم هفته (شنبه، یکشنبه)

زمان . زمان همیشه در قالب 24 ساعت است، فاصله زمانی از – تا (شامل)، ساعت: دقیقه.
مثال ها:
9:30-17:30
0:00-23:59

منطقه زمانی . لطفاً لیست مناطق زمانی موجود را اینجا ببینید. اگر به صراحت منطقه زمانی را ذکر نکنید، بر روی CET – به وقت اروپای مرکزی (آمستردام/برلین/پراگ/وین) تنظیم می‌شود.

مثال ها:

/filtertime source_channel_reference mustNotHave 0:00-7:00
پیام ها از نیمه شب تا ساعت 7 صبح در CET ارسال نمی شود.

/filtertime source_channel_reference mustHave w12345 8:00-20:00 America/New_York
پیام ها فقط در روزهای کاری (دوشنبه تا جمعه) از ساعت 8 صبح و تا 8 بعد از ظهر به وقت نیویورک ارسال می شود.

برای افزودن یک فیلتر زمانی به همه منابع خود می توانید از دستور استفاده کنید/filtertimeall . مثلا:
/filtertimeall add mustNotHave 0:00-7:00
برای حذف:
/filtertimeall remove mustNotHave 0:00-7:00

بر اساس موضوع در یک گروه فیلتر کنید

برای تنظیم فیلتر موضوع از دستور زیر استفاده کنید:

/filtertopic source_channel_reference mustHave topicID

برای اطلاع از شماره موضوع گروه، پیوندی به هر پستی در تاپیک بگیرید. شماره وسط لینک شماره موضوع است. به عنوان مثال، اگر لینک https://t.me/publicchat/1723/36753 باشد، شماره موضوع 1723 است.

مثال ها:

/filtertopic source_channel_reference mustHave 1723
فقط پست هایی از موضوع شماره 1723 مجاز باشد.

/filtertopic source_channel_reference mustNotHave 7231
پست های موضوع شماره 7231 را فیلتر کنید.

برای کپی کردن پیام‌ها از موضوعات مختلف در منبع به کانال‌های مقصد مختلف، ابتدا قوانین حمل و نقل لازم را از مبدا به مقصد ایجاد کنید. سپس برای هر قانون ارسال خاص، فیلتر مورد نظر را با/filtertopic دستور زیر این دستورالعمل . به عنوان مثال، دستور ممکن است به شکل زیر باشد:
/filtertopic &123456789#151617181->-1001222333444 mustHave 1723

برای کپی کردن پیام‌ها از موضوعات موجود در منبع به همان موضوعات در مقصد، باید موضوعات مقصد را به صورت دستی ایجاد کنید. سپس باید برای هر موضوع یک کانال میانی ایجاد کنید. برای هر موضوع، ابتدا کپی را در کانال میانی با فیلتر موضوع مورد نظر تنظیم می کنید. سپس از کانال میانی به مقصد با دلخواهtopic تنظیمات.

موارد تکراری

در برخی موارد یک پیام می تواند چندین بار برای شما ارسال شود. به عنوان مثال، اگر مشترک دو کانال هستید که هر دو یک پست را فوروارد کرده اند. برای فیلتر کردن همه پیام‌های یکسان تلگرام در Junction Bot از دستور /setting duplicate استفاده کنید. این برای پیام های یکسان در فاصله 24 ساعت بین ظاهر آنها کار می کند.

/setting duplicate + یکی از گزینه های زیر:

پاس - غیرفعال، مجاز به تکرار
سابق.  /setting duplicate pass

فیلتر - پیام های تکراری را فیلتر کنید
سابق.  /setting duplicate filter

برای اعمال این تنظیم فقط برای یک کانال، دستور را جایگزین کنید/setting با/settingchannel source_channel_reference ( ادامه مطلب ).

لطفا توجه داشته باشید که فیلتر موارد تکراری پیام های اصلی را مقایسه می کند. به این معنی که اگر می خواهید از تکرار در کانال مقصد که در نتیجه قوانین جایگزینی شما ظاهر می شود جلوگیری کنید، باید از یک رویکرد کمی پیچیده تر استفاده کنید – از طریق یک کانال میانی.

فرض کنید باید پیام‌ها را از A به B تغییر مسیر دهیم. کانال C را ایجاد کرده و یک تغییر مسیر از A (منبع) به C (متوسط) تنظیم کنیم. تمام قوانین جایگزینی خود را در کانال A اعمال کنید. نیازی به ایجاد فیلتر تکراری برای کانال A ندارید.

سپس یک تغییر مسیر از C (متوسط) به B (مقصد) تنظیم کنید. ما یک قانون فیلتر در این تغییر مسیر (با/settingchannel C duplicate filter فرمان)، که تمام موارد تکراری را حذف می کند، حتی مواردی که در نتیجه قوانین جایگزین ظاهر شده اند.

انجام شده! اگر یک فیلتر تکراری برای اولین تغییر مسیر (از A به C) تنظیم کنید، آنگاه روی موارد تکراری که در نتیجه قوانین جایگزینی ظاهر شده اند تأثیری نخواهد داشت.

اصلاح انبوه فیلترها

/filterall – این دستور این فیلتر را به تمام اشتراک‌ها و ارسال‌های شما اضافه می‌کند. لطفاً توجه داشته باشید که چیزی به نام مجموعه فیلترهای رایج وجود ندارد – مجموعه ای از فیلترهای اعمال شده برای همه قوانین وجود ندارد. مجموعه ای از فیلترها در هر قانون اشتراک / ارسال بتن وجود دارد.

/filterall با همان ترکیبات /filter کار می کند.

به جای source_channel یک عمل تنظیم می‌کنید: افزودن یا حذف.

/filterall add - یک فیلتر جدید به همه کانال ها اضافه می کند.
قالب:  /filterall add [rule] text to receive
سابق.  /filterall add mustHave bitcoin یا /filterall add mustNotHave litecoin

/filterall remove - فیلتر را از همه کانال ها حذف می کند.
قالب:  /filterall remove [rule] text to filter out
سابق.  /filterall remove mustHave bitcoin یا /filterall remove mustNotHave litecoin

برای استفاده از عبارات منظم دستور را به /filterrxall تغییر دهید.

یک منبع – مقصدهای متعدد

اگر چندین قانون ارسال به کانال‌های مختلف از یک منبع دارید و می‌خواهید یک فیلتر را فقط روی یک قانون مبدا-مقصد تنظیم کنید، این دستورالعمل را دنبال کنید.

ساختار زیر را به source_channel_reference اضافه کنید: > -1001251642436
جایی که -1001251642436 شناسه کانال مقصد در سیستم تلگرام به اضافه پیشوند “-100” است (این روشی است که چگونه تلگرام اعداد اگر کانال را از تعداد اشیاء دیگر متمایز می کند). برای یافتن این شماره بسیار ساده است، برای دستورالعمل ها در اینترنت جستجو کنید. به عنوان مثال، یک پیام از کانال به ربات @junction_helper0_bot فوروارد کنید. در آنجا شماره کانال را در forward_from_chat.id یا forward_from.id خواهید دید.
بنابراین، برای مثال، دستور پیکربندی ممکن است به شکل زیر باشد:
/filter source_channel_reference->-1001251642436 mustHave cats

فیلتر کردن پست های یک شخص خاص

می توانید Junction Bot پیام های تلگرام یک کاربر خاص را فیلتر کنید. بیایید بگوییم منبع @ منبع چت است. برای فوروارد فقط پیام‌ها از @user موارد زیر را انجام دهید:

  1. با دستور یک قانون فوروارد جدید ایجاد کنید /new
  2. کپی کردن نام نویسندگان را با دستور روشن کنید
    /settingchannel source_channel_reference author full
  3. با دستور فیلتر را برای نام مورد نیاز خود تنظیم کنید
    /filter source_channel_reference mustHave user_reference
    اگر می خواهید پیام از یک کاربر خاص باشد و در عین حال حاوی یک متن خاص باشد، به یک دستور کمی متفاوت نیاز دارید:
    /filterrx source_channel_reference mustHave .*user_reference.*specific text.*

در بیشتر موارد به عنوان user_reference می توانید از نام کاربری @ کاربر استفاده کنید. در برخی موارد کار نخواهد کرد (به عنوان مثال اگر کاربر یک نام کاربری عمومی نداشته باشد یا ربات اطلاعات کاملی در مورد آن نداشته باشد). در این صورت باید یک گزارش توضیحی را فعال کنید و ببینید کاربر در پیام چگونه ارجاع داده شده است و سپس از این رشته استفاده کنید.

باauthor تنظیم پیام های به دست آمده حاوی نام نویسنده پیام خواهد بود. گاهی لازم است که نام نویسنده ذکر نشود. این به یک فرآیند کمی پیچیده تر نیاز دارد – از طریق یک کانال میانی.

فرض کنید باید پیام‌ها را از A به B تغییر مسیر دهیم. کانال C را ایجاد کرده و یک تغییر مسیر از A (منبع) به C (متوسط) تنظیم کنیم. تنظیمات صفحه 2 و 3 را روی آن اعمال کنید:
/settingchannel A author full
/filter A mustHave @user

سپس یک تغییر مسیر از C (متوسط) به B (مقصد) تنظیم کنید. ما یک قانون جایگزین برای این تغییر مسیر (با/replace فرمان)، که نام نویسندگان را حذف می کند.
/replace B @user&nbsp;(User's&nbsp;name)

انجام شده! اگر این قانون جایگزینی را برای اولین تغییر مسیر (از A به C) تنظیم کنید، آنگاه روی نام نویسنده تأثیری نخواهد گذاشت. نام نویسنده، مانند نام کانال منبع، یک متن سرویس است و تحت تأثیر آن قرار نمی گیرد/replace فرمان، و می تواند به روش های دیگر تنظیم شود.

فیلتر کردن پست های فوروارد شده

می‌توانید Junction Bot پیام‌های تلگرامی را که به کانال منبع فوروارد شده‌اند فیلتر کنید. فرض کنید @source کانال منبع است. برای کپی کردن فقط پیام‌های اصلی @source، اما نه پیام‌های ارسال شده به منبع @ از کانال‌های دیگر، موارد زیر را انجام دهید:

  1. با دستور یک قانون فوروارد جدید ایجاد کنید /new
  2. کپی کردن نام نویسندگان را با دستور روشن کنید
    /settingchannel source_channel_reference header from_only
    در ابتدای پیام ارسال شده یک قطعه متن اضافه می کند: “از ” + نام کانال.
  3. فیلتر را برای نام کانالی که می خواهید فیلتر کنید تنظیم کنید. به عنوان مثال، اگر پست های فوروارد شده از کانالی به نام “منبع فورواردها” آمده باشد.
    /filter source_channel_reference mustNotHave from Source of forwards
    اگر می خواهید از شر پست های ارسال شده از هر کانال دیگری خلاص شوید، به یک دستور کمی متفاوت نیاز دارید:
    /filter source_channel_reference mustNotHave from

فیلتر هوش مصنوعی

شما می توانید هر معیار فیلترینگ را به صورت رایگان توصیف کنید و به هوش مصنوعی اجازه دهید به طور خودکار پیام های شما را فیلتر کند. جالب اینجاست که از این طریق می‌توانید نه تنها بر اساس متن پیام، بلکه بر اساس معنا و احساس آن نیز فیلتر کنید. به عنوان مثال، می توانید از هوش مصنوعی بخواهید که فقط اخبار مثبت را در کانال شما بگذارد ☺️

چگونه این را تنظیم کنید، اینجا را ببینید.

فیلتر کردن دستی

اگر می‌خواهید روی اینکه آیا پست‌ها باید کپی یا رد شوند، کنترل دستی داشته باشید، از حالت بازبینی استفاده کنید.

پیدا کردن چیزی که کار نمی کند

بررسی کنید که فیلترهای فعلی کدامند و درست هستند:

/filter source_channel_reference
/filterrx source_channel_reference

اگر فیلترهای زیادی تنظیم کرده باشید، تشخیص اینکه چرا یک پیام خاص منتقل می شود یا چرا نیست، می تواند دشوار باشد. برای کمک به شما در این زمینه یک تنظیم ویژه به نام توضیح وجود دارد. می توانید آن را با دستور زیر تنظیم کنید:

/settingchannelsource_channel_reference توضیح دهید

اگر فعال باشد، برای هر پیام جدیدی که از این source_channel می‌آید، گزارشی دریافت خواهید کرد. این گزارش توضیح می‌دهد که چرا این پیام فیلتر شده یا اجازه داده شده است.

برای غیرفعال کردن حالت توضیح از دستور استفاده کنید

/settingchannelsource_channel_reference توضیح دادن