Skip to content

فیلترها

فیلترها با & (AND)، | (OR) و ~ (NOT) ترکیب می‌شوند.

Python
# AND - پیام کاربر خاص در گروه
@client.on_new_message(FromUser("u0abc...") & ChatType("group"))

# OR - گروه یا کانال
@client.on_new_message(ChatType("group") | ChatType("channel"))

# NOT - هر چیزی غیر از خودم
@client.on_new_message(~IsMe())

فیلترهای نوع رویداد

فیلتر
توضیح
IsMessage() پیام جدید
IsEdited() پیام ویرایش شده
IsDeleted() پیام پاک شده

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

فیلتر
توضیح
مثال
ChatType("user") نوع چت ChatType("group")
ChatType("bot") فقط بات ChatType("bot")
ChatType("service") فقط سرویس ChatType("service")
ChatType(["group", "channel"]) چند نوع
FromChat("id") چت خاص (GUID، نام‌کاربری یا لینک) FromChat("g0abc...")
FromChat(["id1", "id2"]) چند چت
FromUser("id") کاربر خاص FromUser("@Online_User")
FromUser(["id1", "id2"]) چند کاربر
FromBot("id") بات خاص FromBot("@MyBot")
FromBot(["id1", "id2"]) چند بات
FromActivity("id") فعالیت از کاربر خاص FromActivity("u0abc...")
FromActivity(["id1", "id2"]) فعالیت از چند کاربر
IsMe() پیام‌های خود کاربر

فیلترهای فایل و مدیا

فیلتر
توضیح
IsText() فقط پیام متنی (بدون فایل)
IsImage() تصویر
IsVideo() ویدئو (غیر گرد)
IsVideoMessage() پیام ویدئویی (ویدئوی گرد)
IsVoice() پیام صوتی (ویس)
IsMusic() فایل موسیقی
IsGif() گیف
IsSticker() استیکر
IsFile() فایل/سند
IsContact() مخاطب
IsLocation() موقعیت مکانی
IsPoll() نظرسنجی
IsLive() پخش زنده

فیلترهای رویداد سیستمی

فیلتر
توضیح
مثال
IsEvent() هر رویداد سیستمی
EventType("type") نوع خاص رویداد EventType("AddedGroupMembers")

انواع رویداد: RemoveGroupMembers, AddedGroupMembers, PinnedMessageUpdated, TitleUpdate, PhotoUpdate, RemovePhoto, SetAutoDelete, JoinedGroupByLink, LeaveGroup, JoinedGroupByRequest, CreateGroupVoiceChat, StopGroupVoiceChat, GroupCreated, ChannelCreated


فیلترهای ریپلای و فوروارد

فیلتر
توضیح
IsReply() پیام ریپلای شده
IsForwarded() هر نوع فوروارد
ForwardedFromUser() فوروارد از کاربر
ForwardedFromChannel() فوروارد از کانال
ForwardedFromBot() فوروارد از بات
ForwardedNoLink() فوروارد با هویت مخفی

فیلترهای متن

فیلتر
توضیح
مثال
Text("pattern") متن شامل الگو باشد Text("سلام")
TextMatch("pattern") مانند Text + ذخیره match TextMatch(r"اسم (\w+)")
Command("name") دستور با / شروع شود Command("start")
Command() هر دستوری
Command(["start", "help"]) چند دستور
Command("help", prefixes=["/", "!"]) با پیشوند دلخواه

فیلترهای متادیتا و ری‌اکشن

فیلتر
توضیح
مثال
HasMetadata() پیام فرمت‌دار (Bold, Italic)
MetadataType("Bold") نوع خاص MetadataType(["Bold", "Italic"])
HasReaction() پیام دارای ری‌اکشن

مثال‌های ترکیبی

Python
# فقط تصاویر در گروه
@client.on_new_message(IsImage() & ChatType("group"))
async def group_images(event):
    await event.reply("تصویر در گروه دریافت شد!")

# پیام متنی از کاربر خاص که ریپلای نباشد
@client.on_new_message(FromUser("@Online_User") & IsText() & ~IsReply())
async def text_from_user(event):
    print(f"پیام: {event.text}")

# دستور start یا help
@client.on_new_message(Command(["start", "help"]))
async def commands(event):
    await event.reply("در خدمتم!")

# دستور با پیشوند دلخواه (مثلاً !help)
@client.on_new_message(Command("help", prefixes=["/", "!"]))
async def custom_prefix(event):
    await event.reply("دستور با پیشوند دلخواه!")

# تشخیص نام با TextMatch
@client.on_new_message(TextMatch(r"اسم من (\w+) هست"))
async def name_catcher(event):
    name = event.pattern_match.group(1)
    await event.reply(f"سلام {name}!")

# رویداد افزودن عضو به گروه
@client.on_message(EventType("AddedGroupMembers"))
async def new_member(event):
    print("کاربر جدید اضافه شد!")

# پیام فوروارد شده از کانال
@client.on_new_message(IsForwarded() & ForwardedFromChannel())
async def forwarded_from_channel(event):
    print("فوروارد از کانال")

# چند کاربر خاص
@client.on_new_message(FromUser(["u0abc...", "u0xyz..."]))
async def multiple_users(event):
    print(f"پیام از یکی از کاربران خاص: {event.text}")

# پیام از بات یا سرویس
@client.on_new_message(ChatType(["bot", "service"]))
async def bot_or_service(event):
    print("پیام از بات یا سرویس")