From 06ab804ba12f3cb4142532ad745f270155c559a5 Mon Sep 17 00:00:00 2001 From: n1ret Date: Tue, 31 Oct 2023 09:47:29 +0500 Subject: [PATCH] Added compatibility with Story object to chat filter --- pyrogram/filters.py | 51 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 11 deletions(-) diff --git a/pyrogram/filters.py b/pyrogram/filters.py index 1d83fd9a..02edc590 100644 --- a/pyrogram/filters.py +++ b/pyrogram/filters.py @@ -18,11 +18,19 @@ import inspect import re -from typing import Callable, Union, List, Pattern +from typing import Callable, List, Pattern, Union import pyrogram from pyrogram import enums -from pyrogram.types import Message, CallbackQuery, InlineQuery, InlineKeyboardMarkup, ReplyKeyboardMarkup, Update +from pyrogram.types import ( + CallbackQuery, + InlineKeyboardMarkup, + InlineQuery, + Message, + ReplyKeyboardMarkup, + Story, + Update, +) class Filter: @@ -979,12 +987,33 @@ class chat(Filter, set): else c for c in chats ) - async def __call__(self, _, message: Message): - return (message.chat - and (message.chat.id in self - or (message.chat.username - and message.chat.username.lower() in self) - or ("me" in self - and message.from_user - and message.from_user.is_self - and not message.outgoing))) + async def __call__(self, _, message: Union[Message, Story]): + if isinstance(message, Story): + return ( + message.sender_chat + and ( + message.sender_chat.id in self + or ( + message.sender_chat.username + and message.sender_chat.username.lower() in self + ) + ) + ) or ( + message.from_user + and ( + message.from_user.id in self + or ( + message.from_user.username + and message.from_user.username.lower() in self + ) + ) + ) + else: + return (message.chat + and (message.chat.id in self + or (message.chat.username + and message.chat.username.lower() in self) + or ("me" in self + and message.from_user + and message.from_user.is_self + and not message.outgoing)))