diff --git a/docs/source/api/enums/ListenerTypes.rst b/docs/source/api/enums/ListenerTypes.rst new file mode 100644 index 000000000..39d8b960e --- /dev/null +++ b/docs/source/api/enums/ListenerTypes.rst @@ -0,0 +1,8 @@ +ListenerTypes +============= + +.. autoclass:: pyrogram.enums.ListenerTypes() + :members: + +.. raw:: html + :file: ./cleanup.html diff --git a/pyrogram/client.py b/pyrogram/client.py index 98c393a48..b7d314aca 100644 --- a/pyrogram/client.py +++ b/pyrogram/client.py @@ -45,7 +45,7 @@ from pyrogram.errors import ( SessionPasswordNeeded, VolumeLocNotFound, ChannelPrivate, - BadRequest, ListenerTimeout, + BadRequest ) from pyrogram.handlers.handler import Handler from pyrogram.methods import Methods @@ -57,7 +57,7 @@ pass else: from pyrogram.storage import MongoStorage -from pyrogram.types import User, TermsOfService, ListenerTypes +from pyrogram.types import User, TermsOfService from pyrogram.utils import ainput from .dispatcher import Dispatcher from .file_id import FileId, FileType, ThumbnailSource @@ -332,7 +332,7 @@ def __init__( self.updates_watchdog_task = None self.updates_watchdog_event = asyncio.Event() self.last_update_time = datetime.now() - self.listeners = {listener_type: [] for listener_type in ListenerTypes} + self.listeners = {listener_type: [] for listener_type in pyrogram.enums.ListenerTypes} self.loop = asyncio.get_event_loop() def __enter__(self): diff --git a/pyrogram/enums/__init__.py b/pyrogram/enums/__init__.py index 76a13db6e..d1ae77004 100644 --- a/pyrogram/enums/__init__.py +++ b/pyrogram/enums/__init__.py @@ -21,6 +21,7 @@ from .chat_member_status import ChatMemberStatus from .chat_members_filter import ChatMembersFilter from .chat_type import ChatType +from .listerner_types import ListenerTypes from .message_entity_type import MessageEntityType from .message_media_type import MessageMediaType from .message_service_type import MessageServiceType @@ -39,6 +40,7 @@ 'ChatMemberStatus', 'ChatMembersFilter', 'ChatType', + 'ListenerTypes', 'MessageEntityType', 'MessageMediaType', 'MessageServiceType', diff --git a/pyrogram/enums/listerner_types.py b/pyrogram/enums/listerner_types.py new file mode 100644 index 000000000..2e9c8b504 --- /dev/null +++ b/pyrogram/enums/listerner_types.py @@ -0,0 +1,32 @@ +# Pyrofork - Telegram MTProto API Client Library for Python +# Copyright (C) 2020 Cezar H. +# Copyright (C) 2022-present Mayuri-Chan +# +# This file is part of Pyrofork. +# +# Pyrofork is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Pyrofork is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Pyrofork. If not, see . + +from enum import auto + +from .auto_name import AutoName + + +class ListenerTypes(AutoName): + """Listener type enumeration used in :obj:`~pyrogram.types.Client`.""" + + MESSAGE = auto() + "A Message" + + CALLBACK_QUERY = auto() + "A CallbackQuery" diff --git a/pyrogram/handlers/callback_query_handler.py b/pyrogram/handlers/callback_query_handler.py index 65ade3a70..88ea285f0 100644 --- a/pyrogram/handlers/callback_query_handler.py +++ b/pyrogram/handlers/callback_query_handler.py @@ -22,7 +22,7 @@ import pyrogram from pyrogram.utils import PyromodConfig -from pyrogram.types import ListenerTypes, CallbackQuery, Identifier, Listener +from pyrogram.types import CallbackQuery, Identifier, Listener from .handler import Handler @@ -99,7 +99,7 @@ async def check_if_has_matching_listener( data = self.compose_data_identifier(query) listener = client.get_listener_matching_with_data( - data, ListenerTypes.CALLBACK_QUERY + data, pyrogram.enums.ListenerTypes.CALLBACK_QUERY ) listener_does_match = False diff --git a/pyrogram/handlers/message_handler.py b/pyrogram/handlers/message_handler.py index cf4a922b0..55739c632 100644 --- a/pyrogram/handlers/message_handler.py +++ b/pyrogram/handlers/message_handler.py @@ -19,7 +19,7 @@ from typing import Callable import pyrogram -from pyrogram.types import ListenerTypes, Message, Identifier +from pyrogram.types import Message, Identifier from .handler import Handler @@ -73,7 +73,7 @@ async def check_if_has_matching_listener(self, client: "pyrogram.Client", messag from_user_id=[from_user_id, from_user_username], ) - listener = client.get_listener_matching_with_data(data, ListenerTypes.MESSAGE) + listener = client.get_listener_matching_with_data(data, pyrogram.enums.ListenerTypes.MESSAGE) listener_does_match = False diff --git a/pyrogram/methods/pyromod/ask.py b/pyrogram/methods/pyromod/ask.py index 94be08c8f..d7a9ccdee 100644 --- a/pyrogram/methods/pyromod/ask.py +++ b/pyrogram/methods/pyromod/ask.py @@ -21,7 +21,6 @@ from pyrogram.filters import Filter from typing import List, Optional, Union -from pyrogram.types import ListenerTypes class Ask: async def ask( @@ -29,7 +28,7 @@ async def ask( chat_id: Union[Union[int, str], List[Union[int, str]]], text: str, filters: Optional[Filter] = None, - listener_type: ListenerTypes = ListenerTypes.MESSAGE, + listener_type: "pyrogram.enums.ListenerTypes" = pyrogram.enums.ListenerTypes.MESSAGE, timeout: Optional[int] = None, unallowed_click_alert: bool = True, user_id: Union[Union[int, str], List[Union[int, str]]] = None, @@ -61,7 +60,7 @@ async def ask( filters (:obj:`~pyrogram.filters`, *optional*): A filter to check the incoming message against. - listener_type (:obj:`~pyrogram.types.ListenerTypes`, *optional*): + listener_type (:obj:`~pyrogram.enums.ListenerTypes`, *optional*): The type of listener to listen for. Default to Message. diff --git a/pyrogram/methods/pyromod/get_listener_matching_with_data.py b/pyrogram/methods/pyromod/get_listener_matching_with_data.py index a6816a219..690b15b16 100644 --- a/pyrogram/methods/pyromod/get_listener_matching_with_data.py +++ b/pyrogram/methods/pyromod/get_listener_matching_with_data.py @@ -20,13 +20,13 @@ import pyrogram from typing import Optional -from pyrogram.types import ListenerTypes, Identifier, Listener +from pyrogram.types import Identifier, Listener class GetListenerMatchingWithData: def get_listener_matching_with_data( self: "pyrogram.Client", data: Identifier, - listener_type: ListenerTypes + listener_type: "pyrogram.enums.ListenerTypes" ) -> Optional[Listener]: """Gets a listener that matches the given data. @@ -36,7 +36,7 @@ def get_listener_matching_with_data( data (:obj:`~pyrogram.types.Identifier`): The Identifier to match agains. - listener_type (:obj:`~pyrogram.types.ListenerTypes`): + listener_type (:obj:`~pyrogram.enums.ListenerTypes`): The type of listener to get. Returns: diff --git a/pyrogram/methods/pyromod/get_listener_matching_with_identifier_pattern.py b/pyrogram/methods/pyromod/get_listener_matching_with_identifier_pattern.py index 3a946a285..c045e7a5d 100644 --- a/pyrogram/methods/pyromod/get_listener_matching_with_identifier_pattern.py +++ b/pyrogram/methods/pyromod/get_listener_matching_with_identifier_pattern.py @@ -20,13 +20,13 @@ import pyrogram from typing import Optional -from pyrogram.types import ListenerTypes, Identifier, Listener +from pyrogram.types import Identifier, Listener class GetListenerMatchingWithIdentifierPattern: def get_listener_matching_with_identifier_pattern( self: "pyrogram.Client", pattern: Identifier, - listener_type: ListenerTypes + listener_type: "pyrogram.enums.ListenerTypes" ) -> Optional[Listener]: """Gets a listener that matches the given identifier pattern. @@ -40,7 +40,7 @@ def get_listener_matching_with_identifier_pattern( pattern (:obj:`~pyrogram.types.Identifier`): The Identifier to match agains. - listener_type (:obj:`~pyrogram.types.ListenerTypes`): + listener_type (:obj:`~pyrogram.enums.ListenerTypes`): The type of listener to get. Returns: diff --git a/pyrogram/methods/pyromod/get_many_listeners_matching_with_data.py b/pyrogram/methods/pyromod/get_many_listeners_matching_with_data.py index aab83fc98..b3675a9a7 100644 --- a/pyrogram/methods/pyromod/get_many_listeners_matching_with_data.py +++ b/pyrogram/methods/pyromod/get_many_listeners_matching_with_data.py @@ -20,13 +20,13 @@ import pyrogram from typing import List -from pyrogram.types import ListenerTypes, Identifier, Listener +from pyrogram.types import Identifier, Listener class GetManyListenersMatchingWithData: def get_many_listeners_matching_with_data( self: "pyrogram.Client", data: Identifier, - listener_type: ListenerTypes, + listener_type: "pyrogram.enums.ListenerTypes", ) -> List[Listener]: """Gets multiple listener that matches the given data. @@ -36,7 +36,7 @@ def get_many_listeners_matching_with_data( data (:obj:`~pyrogram.types.Identifier`): The Identifier to match agains. - listener_type (:obj:`~pyrogram.types.ListenerTypes`): + listener_type (:obj:`~pyrogram.enums.ListenerTypes`): The type of listener to get. Returns: diff --git a/pyrogram/methods/pyromod/get_many_listeners_matching_with_identifier_pattern.py b/pyrogram/methods/pyromod/get_many_listeners_matching_with_identifier_pattern.py index aadf16e66..4299ea656 100644 --- a/pyrogram/methods/pyromod/get_many_listeners_matching_with_identifier_pattern.py +++ b/pyrogram/methods/pyromod/get_many_listeners_matching_with_identifier_pattern.py @@ -20,13 +20,13 @@ import pyrogram from typing import List -from pyrogram.types import ListenerTypes, Identifier, Listener +from pyrogram.types import Identifier, Listener class GetManyListenersMatchingWithIdentifierPattern: def get_many_listeners_matching_with_identifier_pattern( self: "pyrogram.Client", pattern: Identifier, - listener_type: ListenerTypes, + listener_type: "pyrogram.enums.ListenerTypes", ) -> List[Listener]: """Gets multiple listener that matches the given identifier pattern. @@ -40,7 +40,7 @@ def get_many_listeners_matching_with_identifier_pattern( pattern (:obj:`~pyrogram.types.Identifier`): The Identifier to match agains. - listener_type (:obj:`~pyrogram.types.ListenerTypes`): + listener_type (:obj:`~pyrogram.enums.ListenerTypes`): The type of listener to get. Returns: diff --git a/pyrogram/methods/pyromod/listen.py b/pyrogram/methods/pyromod/listen.py index 02784e9ad..cfc5fc53c 100644 --- a/pyrogram/methods/pyromod/listen.py +++ b/pyrogram/methods/pyromod/listen.py @@ -24,14 +24,14 @@ from pyrogram.errors import ListenerTimeout from pyrogram.filters import Filter from typing import List, Optional, Union -from pyrogram.types import ListenerTypes, Identifier, Listener +from pyrogram.types import Identifier, Listener from pyrogram.utils import PyromodConfig class Listen: async def listen( self: "pyrogram.Client", filters: Optional[Filter] = None, - listener_type: ListenerTypes = ListenerTypes.MESSAGE, + listener_type: "pyrogram.enums.ListenerTypes" = pyrogram.enums.ListenerTypes.MESSAGE, timeout: Optional[int] = None, unallowed_click_alert: bool = True, chat_id: Union[Union[int, str], List[Union[int, str]]] = None, @@ -59,7 +59,7 @@ async def listen( filters (:obj:`~pyrogram.filters`, *optional*): A filter to check the incoming message against. - listener_type (:obj:`~pyrogram.types.ListenerTypes`, *optional*): + listener_type (:obj:`~pyrogram.enums.ListenerTypes`, *optional*): The type of listener to listen for. Default to Message. diff --git a/pyrogram/methods/pyromod/register_next_step_handler.py b/pyrogram/methods/pyromod/register_next_step_handler.py index 94d766c41..90e9095d9 100644 --- a/pyrogram/methods/pyromod/register_next_step_handler.py +++ b/pyrogram/methods/pyromod/register_next_step_handler.py @@ -21,14 +21,14 @@ from pyrogram.filters import Filter from typing import Callable, List, Optional, Union -from pyrogram.types import ListenerTypes, Identifier, Listener +from pyrogram.types import Identifier, Listener class RegisterNextStepHandler: def register_next_step_handler( self: "pyrogram.Client", callback: Callable, filters: Optional[Filter] = None, - listener_type: ListenerTypes = ListenerTypes.MESSAGE, + listener_type: "pyrogram.enums.ListenerTypes" = pyrogram.enums.ListenerTypes.MESSAGE, unallowed_click_alert: bool = True, chat_id: Union[Union[int, str], List[Union[int, str]]] = None, user_id: Union[Union[int, str], List[Union[int, str]]] = None, @@ -49,7 +49,7 @@ def register_next_step_handler( filters (:obj:`~pyrogram.filters`, *optional*): A filter to check the incoming message against. - listener_type (:obj:`~pyrogram.types.ListenerTypes`, *optional*): + listener_type (:obj:`~pyrogram.enums.ListenerTypes`, *optional*): The type of listener to listen for. Default to Message. diff --git a/pyrogram/methods/pyromod/stop_listening.py b/pyrogram/methods/pyromod/stop_listening.py index 1143fa60a..c2e57fda0 100644 --- a/pyrogram/methods/pyromod/stop_listening.py +++ b/pyrogram/methods/pyromod/stop_listening.py @@ -20,12 +20,12 @@ import pyrogram from typing import List, Union -from pyrogram.types import ListenerTypes, Identifier +from pyrogram.types import Identifier class StopListening: async def stop_listening( self: "pyrogram.Client", - listener_type: ListenerTypes = ListenerTypes.MESSAGE, + listener_type: "pyrogram.enums.ListenerTypes" = pyrogram.enums.ListenerTypes.MESSAGE, chat_id: Union[Union[int, str], List[Union[int, str]]] = None, user_id: Union[Union[int, str], List[Union[int, str]]] = None, message_id: Union[int, List[int]] = None, @@ -38,7 +38,7 @@ async def stop_listening( Uses :meth:`~pyrogram.Client.get_many_listeners_matching_with_identifier_pattern`. Parameters: - listener_type (:obj:`~pyrogram.types.ListenerTypes`, *optional*): + listener_type (:obj:`~pyrogram.enums.ListenerTypes`, *optional*): The type of listener to stop listening for. Default to Message. diff --git a/pyrogram/types/messages_and_media/message.py b/pyrogram/types/messages_and_media/message.py index 01a09f501..b414b77ac 100644 --- a/pyrogram/types/messages_and_media/message.py +++ b/pyrogram/types/messages_and_media/message.py @@ -575,7 +575,7 @@ async def wait_for_click( return await self._client.listen( (self.chat.id, from_user_id, self.id), - listener_type=types.ListenerTypes.CALLBACK_QUERY, + listener_type=pyrogram.enums.ListenerTypes.CALLBACK_QUERY, timeout=timeout, filters=filters, unallowed_click_alert=alert, diff --git a/pyrogram/types/pyromod/__init__.py b/pyrogram/types/pyromod/__init__.py index da751887c..7929f2209 100644 --- a/pyrogram/types/pyromod/__init__.py +++ b/pyrogram/types/pyromod/__init__.py @@ -1,5 +1,4 @@ from .identifier import Identifier from .listener import Listener -from .listener_types import ListenerTypes -__all__ = ["Identifier", "Listener", "ListenerTypes"] \ No newline at end of file +__all__ = ["Identifier", "Listener"] \ No newline at end of file diff --git a/pyrogram/types/pyromod/listener.py b/pyrogram/types/pyromod/listener.py index 4c8eaefe7..81c335d62 100644 --- a/pyrogram/types/pyromod/listener.py +++ b/pyrogram/types/pyromod/listener.py @@ -24,8 +24,6 @@ import pyrogram from .identifier import Identifier -from .listener_types import ListenerTypes - @dataclass class Listener: @@ -33,7 +31,7 @@ class Listener: It enables you to wait for specific events like messages or callback queries and provides mechanisms for defining the conditions and filters that trigger these listeners. Parameters: - listener_type (:obj:`~pyrogram.types.ListenerTypes`): + listener_type (:obj:`~pyrogram.enums.ListenerTypes`): The type of listener that specifies the event you want to listen for. It can be either a “message” or a “callback_query.” @@ -55,7 +53,7 @@ class Listener: callback (``Callable``, *optional*): The callback to call when the listener is fulfilled. """ - listener_type: ListenerTypes + listener_type: pyrogram.enums.ListenerTypes filters: "pyrogram.filters.Filter" unallowed_click_alert: bool identifier: Identifier diff --git a/pyrogram/types/pyromod/listener_types.py b/pyrogram/types/pyromod/listener_types.py deleted file mode 100644 index 25ad06dde..000000000 --- a/pyrogram/types/pyromod/listener_types.py +++ /dev/null @@ -1,6 +0,0 @@ -from enum import Enum - - -class ListenerTypes(Enum): - MESSAGE = "message" - CALLBACK_QUERY = "callback_query" \ No newline at end of file