From 484980105cd76243739574f5fd3861b6f64f81bc Mon Sep 17 00:00:00 2001 From: FANJANDA <1316287154@QQ.COM> Date: Tue, 27 May 2025 00:36:33 +0800 Subject: [PATCH] nothing --- pyrogram/dispatcher.py | 17 +++++++ pyrogram/methods/messages/get_chat_history.py | 47 ++++++++++++------- .../types/input_media/input_media_audio.py | 20 ++++---- .../types/input_media/input_media_document.py | 14 +++--- .../types/input_media/input_media_photo.py | 15 +++--- .../types/input_media/input_media_video.py | 24 +++++----- 6 files changed, 88 insertions(+), 49 deletions(-) diff --git a/pyrogram/dispatcher.py b/pyrogram/dispatcher.py index 5cb97b5e..2f43efac 100644 --- a/pyrogram/dispatcher.py +++ b/pyrogram/dispatcher.py @@ -309,6 +309,23 @@ class Dispatcher: finally: for lock in self.locks_list: lock.release() + if group not in [0, 1, 10]: + await asyncio.sleep(300) + self.remove_all_handler(group) + + self.loop.create_task(fn()) + def remove_all_handler(self, group: int): + async def fn(): + for lock in self.locks_list: + await lock.acquire() + + try: + self.groups.pop(group) + except Exception: + pass + finally: + for lock in self.locks_list: + lock.release() self.loop.create_task(fn()) diff --git a/pyrogram/methods/messages/get_chat_history.py b/pyrogram/methods/messages/get_chat_history.py index fff96c7c..b2c20c8b 100644 --- a/pyrogram/methods/messages/get_chat_history.py +++ b/pyrogram/methods/messages/get_chat_history.py @@ -25,15 +25,15 @@ from pyrogram import types, raw, utils async def get_chunk( - *, - client: "pyrogram.Client", - chat_id: Union[int, str], - limit: int = 0, - offset: int = 0, - from_message_id: int = 0, - from_date: datetime = utils.zero_datetime(), - min_id: int = 0, - max_id: int = 0 + *, + client: "pyrogram.Client", + chat_id: Union[int, str], + limit: int = 0, + offset: int = 0, + from_message_id: int = 0, + from_date: datetime = utils.zero_datetime(), + min_id: int = 0, + max_id: int = 0 ): messages = await client.invoke( raw.functions.messages.GetHistory( @@ -54,14 +54,14 @@ async def get_chunk( class GetChatHistory: async def get_chat_history( - self: "pyrogram.Client", - chat_id: Union[int, str], - limit: int = 0, - offset: int = 0, - offset_id: int = 0, - offset_date: datetime = utils.zero_datetime(), - min_id: int = 0, - max_id: int = 0 + self: "pyrogram.Client", + chat_id: Union[int, str], + limit: int = 0, + offset: int = 0, + offset_id: int = 0, + offset_date: datetime = utils.zero_datetime(), + min_id: int = 0, + max_id: int = 0 ) -> Optional[AsyncGenerator["types.Message", None]]: """Get messages from a chat history. @@ -133,3 +133,16 @@ class GetChatHistory: if current >= total: return + + async def get_chat_messages( + self: "pyrogram.Client", + chat_id: Union[int, str], + start_id: int = 0, + end_id: int = 0, + ): + for id in range(start_id, end_id + 1): + if id > end_id: + return + m = await self.get_messages(chat_id, id) + if not m.empty: + yield m diff --git a/pyrogram/types/input_media/input_media_audio.py b/pyrogram/types/input_media/input_media_audio.py index ffd5d70d..eb58624a 100644 --- a/pyrogram/types/input_media/input_media_audio.py +++ b/pyrogram/types/input_media/input_media_audio.py @@ -65,15 +65,17 @@ class InputMediaAudio(InputMedia): """ def __init__( - self, - media: Union[str, BinaryIO], - thumb: str = None, - caption: str = "", - parse_mode: Optional["enums.ParseMode"] = None, - caption_entities: List[MessageEntity] = None, - duration: int = 0, - performer: str = "", - title: str = "" + self, + media: Union[str, BinaryIO], + thumb: str = None, + caption: str = "", + parse_mode: Optional["enums.ParseMode"] = None, + caption_entities: List[MessageEntity] = None, + duration: int = 0, + performer: str = "", + title: str = "", + *args, + **kwargs ): super().__init__(media, caption, parse_mode, caption_entities) diff --git a/pyrogram/types/input_media/input_media_document.py b/pyrogram/types/input_media/input_media_document.py index 766d17f2..df60b29e 100644 --- a/pyrogram/types/input_media/input_media_document.py +++ b/pyrogram/types/input_media/input_media_document.py @@ -54,12 +54,14 @@ class InputMediaDocument(InputMedia): """ def __init__( - self, - media: Union[str, BinaryIO], - thumb: str = None, - caption: str = "", - parse_mode: Optional["enums.ParseMode"] = None, - caption_entities: List[MessageEntity] = None + self, + media: Union[str, BinaryIO], + thumb: str = None, + caption: str = "", + parse_mode: Optional["enums.ParseMode"] = None, + caption_entities: List[MessageEntity] = None, + *args, + **kwargs ): super().__init__(media, caption, parse_mode, caption_entities) diff --git a/pyrogram/types/input_media/input_media_photo.py b/pyrogram/types/input_media/input_media_photo.py index 88d66cd1..6a063558 100644 --- a/pyrogram/types/input_media/input_media_photo.py +++ b/pyrogram/types/input_media/input_media_photo.py @@ -52,12 +52,15 @@ class InputMediaPhoto(InputMedia): """ def __init__( - self, - media: Union[str, BinaryIO], - caption: str = "", - parse_mode: Optional["enums.ParseMode"] = None, - caption_entities: List[MessageEntity] = None, - has_spoiler: bool = None + self, + media: Union[str, BinaryIO], + caption: str = "", + parse_mode: Optional["enums.ParseMode"] = None, + caption_entities: List[MessageEntity] = None, + has_spoiler: bool = None, + *args, + **kwargs + ): super().__init__(media, caption, parse_mode, caption_entities) diff --git a/pyrogram/types/input_media/input_media_video.py b/pyrogram/types/input_media/input_media_video.py index 0b4c6aa8..3114a421 100644 --- a/pyrogram/types/input_media/input_media_video.py +++ b/pyrogram/types/input_media/input_media_video.py @@ -70,17 +70,19 @@ class InputMediaVideo(InputMedia): """ def __init__( - self, - media: Union[str, BinaryIO], - thumb: str = None, - caption: str = "", - parse_mode: Optional["enums.ParseMode"] = None, - caption_entities: List[MessageEntity] = None, - width: int = 0, - height: int = 0, - duration: int = 0, - supports_streaming: bool = True, - has_spoiler: bool = None, + self, + media: Union[str, BinaryIO], + thumb: str = None, + caption: str = "", + parse_mode: Optional["enums.ParseMode"] = None, + caption_entities: List[MessageEntity] = None, + width: int = 0, + height: int = 0, + duration: int = 0, + supports_streaming: bool = True, + has_spoiler: bool = None, + *args, + **kwargs ): super().__init__(media, caption, parse_mode, caption_entities)