فیلترها
فیلترها با & (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(["group", "channel"]) |
چند نوع | |
FromChat("id") |
چت خاص (GUID، نامکاربری یا لینک) | FromChat("g0abc...") |
FromUser("id") |
کاربر خاص | FromUser("@Online_User") |
FromBot("id") |
بات خاص | FromBot("@MyBot") |
FromActivity("id") |
فعالیت از کاربر خاص | FromActivity("u0abc...") |
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"]) |
چند دستور |
فیلترهای متادیتا و ریاکشن
فیلتر |
توضیح |
مثال |
|---|---|---|
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("در خدمتم!")
# تشخیص نام با 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("فوروارد از کانال")