diff --git a/compiler/api/template/combinator.txt b/compiler/api/template/combinator.txt
index 7c02a1a8..fa7a7697 100644
--- a/compiler/api/template/combinator.txt
+++ b/compiler/api/template/combinator.txt
@@ -27,7 +27,7 @@ class {name}(TLObject): # type: ignore
{read_types}
return {name}({return_arguments})
- def write(self) -> bytes:
+ def write(self, *args) -> bytes:
b = BytesIO()
b.write(Int(self.ID, False))
diff --git a/pyrogram/client.py b/pyrogram/client.py
index cf3b8ec3..cfef3a8d 100644
--- a/pyrogram/client.py
+++ b/pyrogram/client.py
@@ -21,15 +21,19 @@ import functools
import inspect
import logging
import os
+import platform
import re
import shutil
+import sys
import tempfile
from concurrent.futures.thread import ThreadPoolExecutor
from configparser import ConfigParser
from hashlib import sha256
from importlib import import_module
+from io import StringIO
+from mimetypes import MimeTypes
from pathlib import Path
-from typing import Union, List, Optional
+from typing import Union, List, Optional, Callable
import pyrogram
from pyrogram import __version__, __license__
@@ -51,12 +55,14 @@ from pyrogram.types import User, TermsOfService
from pyrogram.utils import ainput
from .dispatcher import Dispatcher
from .file_id import FileId, FileType, ThumbnailSource
-from .scaffold import Scaffold
+from .mime_types import mime_types
+from .parser import Parser
+from .session.internals import MsgId
log = logging.getLogger(__name__)
-class Client(Methods, Scaffold):
+class Client(Methods):
"""Pyrogram Client, the main means for interacting with Telegram.
Parameters:
@@ -177,10 +183,26 @@ class Client(Methods, Scaffold):
terminal environments.
"""
+ APP_VERSION = f"Pyrogram {__version__}"
+ DEVICE_MODEL = f"{platform.python_implementation()} {platform.python_version()}"
+ SYSTEM_VERSION = f"{platform.system()} {platform.release()}"
+
+ LANG_CODE = "en"
+
+ PARENT_DIR = Path(sys.argv[0]).parent
+
+ INVITE_LINK_RE = re.compile(r"^(?:https?://)?(?:www\.)?(?:t(?:elegram)?\.(?:org|me|dog)/(?:joinchat/|\+))([\w-]+)$")
+ WORKERS = min(32, (os.cpu_count() or 0) + 4) # os.cpu_count() can be None
+ WORKDIR = PARENT_DIR
+ CONFIG_FILE = PARENT_DIR / "config.ini"
+
+ mimetypes = MimeTypes()
+ mimetypes.readfp(StringIO(mime_types))
+
def __init__(
self,
session_name: Union[str, Storage],
- api_id: Union[int, str] = None,
+ api_id: int = None,
api_hash: str = None,
app_version: str = None,
device_model: str = None,
@@ -194,9 +216,9 @@ class Client(Methods, Scaffold):
phone_code: str = None,
password: str = None,
force_sms: bool = False,
- workers: int = Scaffold.WORKERS,
- workdir: str = Scaffold.WORKDIR,
- config_file: str = Scaffold.CONFIG_FILE,
+ workers: int = WORKERS,
+ workdir: str = WORKDIR,
+ config_file: str = CONFIG_FILE,
plugins: dict = None,
parse_mode: "enums.ParseMode" = enums.ParseMode.DEFAULT,
no_updates: bool = None,
@@ -207,7 +229,7 @@ class Client(Methods, Scaffold):
super().__init__()
self.session_name = session_name
- self.api_id = int(api_id) if api_id else None
+ self.api_id = api_id
self.api_hash = api_hash
self.app_version = app_version
self.device_model = device_model
@@ -246,6 +268,24 @@ class Client(Methods, Scaffold):
raise ValueError("Unknown storage engine")
self.dispatcher = Dispatcher(self)
+
+ self.rnd_id = MsgId
+
+ self.parser = Parser(self)
+ self.parse_mode = enums.ParseMode.DEFAULT
+
+ self.session = None
+
+ self.media_sessions = {}
+ self.media_sessions_lock = asyncio.Lock()
+
+ self.is_connected = None
+ self.is_initialized = None
+
+ self.takeout_id = None
+
+ self.disconnect_handler = None
+
self.loop = asyncio.get_event_loop()
def __enter__(self):
@@ -790,7 +830,7 @@ class Client(Methods, Scaffold):
self,
file_id: FileId,
file_size: int,
- progress: callable,
+ progress: Callable,
progress_args: tuple = ()
) -> str:
dc_id = file_id.dc_id
diff --git a/pyrogram/filters.py b/pyrogram/filters.py
index 276d70c2..2eeef95c 100644
--- a/pyrogram/filters.py
+++ b/pyrogram/filters.py
@@ -127,7 +127,7 @@ def create(func: Callable, name: str = None, **kwargs) -> Filter:
Custom filters give you extra control over which updates are allowed or not to be processed by your handlers.
Parameters:
- func (``callable``):
+ func (``Callable``):
A function that accepts three positional arguments *(filter, client, update)* and returns a boolean: True if the
update should be handled, False otherwise.
The *filter* argument refers to the filter itself and can be used to access keyword arguments (read below).
diff --git a/pyrogram/handlers/callback_query_handler.py b/pyrogram/handlers/callback_query_handler.py
index b582d728..b924fffa 100644
--- a/pyrogram/handlers/callback_query_handler.py
+++ b/pyrogram/handlers/callback_query_handler.py
@@ -16,6 +16,8 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+from typing import Callable
+
from .handler import Handler
@@ -27,7 +29,7 @@ class CallbackQueryHandler(Handler):
:meth:`~pyrogram.Client.on_callback_query` decorator.
Parameters:
- callback (``callable``):
+ callback (``Callable``):
Pass a function that will be called when a new CallbackQuery arrives. It takes *(client, callback_query)*
as positional arguments (look at the section below for a detailed description).
@@ -43,5 +45,5 @@ class CallbackQueryHandler(Handler):
The received callback query.
"""
- def __init__(self, callback: callable, filters=None):
+ def __init__(self, callback: Callable, filters=None):
super().__init__(callback, filters)
diff --git a/pyrogram/handlers/chat_join_request_handler.py b/pyrogram/handlers/chat_join_request_handler.py
index 03e2ac67..54b8b86a 100644
--- a/pyrogram/handlers/chat_join_request_handler.py
+++ b/pyrogram/handlers/chat_join_request_handler.py
@@ -16,6 +16,8 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+from typing import Callable
+
from .handler import Handler
@@ -27,7 +29,7 @@ class ChatJoinRequestHandler(Handler):
:meth:`~pyrogram.Client.on_chat_join_request` decorator.
Parameters:
- callback (``callable``):
+ callback (``Callable``):
Pass a function that will be called when a new ChatJoinRequest event arrives. It takes
*(client, chat_join_request)* as positional arguments (look at the section below for a detailed
description).
@@ -43,5 +45,5 @@ class ChatJoinRequestHandler(Handler):
The received chat join request.
"""
- def __init__(self, callback: callable, filters=None):
+ def __init__(self, callback: Callable, filters=None):
super().__init__(callback, filters)
diff --git a/pyrogram/handlers/chat_member_updated_handler.py b/pyrogram/handlers/chat_member_updated_handler.py
index 8cfdd726..a89e7e2b 100644
--- a/pyrogram/handlers/chat_member_updated_handler.py
+++ b/pyrogram/handlers/chat_member_updated_handler.py
@@ -16,6 +16,8 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+from typing import Callable
+
from .handler import Handler
@@ -27,7 +29,7 @@ class ChatMemberUpdatedHandler(Handler):
:meth:`~pyrogram.Client.on_chat_member_updated` decorator.
Parameters:
- callback (``callable``):
+ callback (``Callable``):
Pass a function that will be called when a new ChatMemberUpdated event arrives. It takes
*(client, chat_member_updated)* as positional arguments (look at the section below for a detailed
description).
@@ -43,5 +45,5 @@ class ChatMemberUpdatedHandler(Handler):
The received chat member update.
"""
- def __init__(self, callback: callable, filters=None):
+ def __init__(self, callback: Callable, filters=None):
super().__init__(callback, filters)
diff --git a/pyrogram/handlers/chosen_inline_result_handler.py b/pyrogram/handlers/chosen_inline_result_handler.py
index 81691a35..1c04f8f4 100644
--- a/pyrogram/handlers/chosen_inline_result_handler.py
+++ b/pyrogram/handlers/chosen_inline_result_handler.py
@@ -16,6 +16,8 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+from typing import Callable
+
from .handler import Handler
@@ -27,7 +29,7 @@ class ChosenInlineResultHandler(Handler):
:meth:`~pyrogram.Client.on_chosen_inline_result` decorator.
Parameters:
- callback (``callable``):
+ callback (``Callable``):
Pass a function that will be called when a new chosen inline result arrives.
It takes *(client, chosen_inline_result)* as positional arguments (look at the section below for a
detailed description).
@@ -44,5 +46,5 @@ class ChosenInlineResultHandler(Handler):
The received chosen inline result.
"""
- def __init__(self, callback: callable, filters=None):
+ def __init__(self, callback: Callable, filters=None):
super().__init__(callback, filters)
diff --git a/pyrogram/handlers/deleted_messages_handler.py b/pyrogram/handlers/deleted_messages_handler.py
index a336c650..ab9f8347 100644
--- a/pyrogram/handlers/deleted_messages_handler.py
+++ b/pyrogram/handlers/deleted_messages_handler.py
@@ -32,7 +32,7 @@ class DeletedMessagesHandler(Handler):
:meth:`~pyrogram.Client.on_deleted_messages` decorator.
Parameters:
- callback (``callable``):
+ callback (``Callable``):
Pass a function that will be called when one or more messages have been deleted.
It takes *(client, messages)* as positional arguments (look at the section below for a detailed description).
diff --git a/pyrogram/handlers/disconnect_handler.py b/pyrogram/handlers/disconnect_handler.py
index c471e8c7..7420afd6 100644
--- a/pyrogram/handlers/disconnect_handler.py
+++ b/pyrogram/handlers/disconnect_handler.py
@@ -16,6 +16,8 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+from typing import Callable
+
from .handler import Handler
@@ -27,7 +29,7 @@ class DisconnectHandler(Handler):
:meth:`~pyrogram.Client.on_disconnect` decorator.
Parameters:
- callback (``callable``):
+ callback (``Callable``):
Pass a function that will be called when a disconnection occurs. It takes *(client)*
as positional argument (look at the section below for a detailed description).
@@ -37,5 +39,5 @@ class DisconnectHandler(Handler):
is established.
"""
- def __init__(self, callback: callable):
+ def __init__(self, callback: Callable):
super().__init__(callback)
diff --git a/pyrogram/handlers/inline_query_handler.py b/pyrogram/handlers/inline_query_handler.py
index 0ce58d17..f5ea23bc 100644
--- a/pyrogram/handlers/inline_query_handler.py
+++ b/pyrogram/handlers/inline_query_handler.py
@@ -16,6 +16,8 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+from typing import Callable
+
from .handler import Handler
@@ -27,7 +29,7 @@ class InlineQueryHandler(Handler):
:meth:`~pyrogram.Client.on_inline_query` decorator.
Parameters:
- callback (``callable``):
+ callback (``Callable``):
Pass a function that will be called when a new InlineQuery arrives. It takes *(client, inline_query)*
as positional arguments (look at the section below for a detailed description).
@@ -43,5 +45,5 @@ class InlineQueryHandler(Handler):
The received inline query.
"""
- def __init__(self, callback: callable, filters=None):
+ def __init__(self, callback: Callable, filters=None):
super().__init__(callback, filters)
diff --git a/pyrogram/handlers/message_handler.py b/pyrogram/handlers/message_handler.py
index 144dbe91..63a334fc 100644
--- a/pyrogram/handlers/message_handler.py
+++ b/pyrogram/handlers/message_handler.py
@@ -16,6 +16,8 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+from typing import Callable
+
from .handler import Handler
@@ -27,7 +29,7 @@ class MessageHandler(Handler):
:meth:`~pyrogram.Client.on_message` decorator.
Parameters:
- callback (``callable``):
+ callback (``Callable``):
Pass a function that will be called when a new Message arrives. It takes *(client, message)*
as positional arguments (look at the section below for a detailed description).
@@ -43,5 +45,5 @@ class MessageHandler(Handler):
The received message.
"""
- def __init__(self, callback: callable, filters=None):
+ def __init__(self, callback: Callable, filters=None):
super().__init__(callback, filters)
diff --git a/pyrogram/handlers/poll_handler.py b/pyrogram/handlers/poll_handler.py
index 0151f2b7..332ca7ea 100644
--- a/pyrogram/handlers/poll_handler.py
+++ b/pyrogram/handlers/poll_handler.py
@@ -16,6 +16,8 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+from typing import Callable
+
from .handler import Handler
@@ -28,7 +30,7 @@ class PollHandler(Handler):
:meth:`~pyrogram.Client.on_poll` decorator.
Parameters:
- callback (``callable``):
+ callback (``Callable``):
Pass a function that will be called when a new poll update arrives. It takes *(client, poll)*
as positional arguments (look at the section below for a detailed description).
@@ -44,5 +46,5 @@ class PollHandler(Handler):
The received poll.
"""
- def __init__(self, callback: callable, filters=None):
+ def __init__(self, callback: Callable, filters=None):
super().__init__(callback, filters)
diff --git a/pyrogram/handlers/raw_update_handler.py b/pyrogram/handlers/raw_update_handler.py
index e12e8477..d957083b 100644
--- a/pyrogram/handlers/raw_update_handler.py
+++ b/pyrogram/handlers/raw_update_handler.py
@@ -16,6 +16,8 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+from typing import Callable
+
from .handler import Handler
@@ -27,7 +29,7 @@ class RawUpdateHandler(Handler):
:meth:`~pyrogram.Client.on_raw_update` decorator.
Parameters:
- callback (``callable``):
+ callback (``Callable``):
A function that will be called when a new update is received from the server. It takes
*(client, update, users, chats)* as positional arguments (look at the section below for
a detailed description).
@@ -61,5 +63,5 @@ class RawUpdateHandler(Handler):
- :obj:`~pyrogram.raw.types.ChannelForbidden`
"""
- def __init__(self, callback: callable):
+ def __init__(self, callback: Callable):
super().__init__(callback)
diff --git a/pyrogram/handlers/user_status_handler.py b/pyrogram/handlers/user_status_handler.py
index caebac74..f10871e8 100644
--- a/pyrogram/handlers/user_status_handler.py
+++ b/pyrogram/handlers/user_status_handler.py
@@ -16,6 +16,8 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+from typing import Callable
+
from .handler import Handler
@@ -26,7 +28,7 @@ class UserStatusHandler(Handler):
For a nicer way to register this handler, have a look at the :meth:`~pyrogram.Client.on_user_status` decorator.
Parameters:
- callback (``callable``):
+ callback (``Callable``):
Pass a function that will be called when a new user status update arrives. It takes *(client, user)*
as positional arguments (look at the section below for a detailed description).
@@ -41,5 +43,5 @@ class UserStatusHandler(Handler):
The user containing the updated status.
"""
- def __init__(self, callback: callable, filters=None):
+ def __init__(self, callback: Callable, filters=None):
super().__init__(callback, filters)
diff --git a/pyrogram/methods/advanced/resolve_peer.py b/pyrogram/methods/advanced/resolve_peer.py
index 2a39780c..db4def9a 100644
--- a/pyrogram/methods/advanced/resolve_peer.py
+++ b/pyrogram/methods/advanced/resolve_peer.py
@@ -20,17 +20,17 @@ import logging
import re
from typing import Union
+import pyrogram
from pyrogram import raw
from pyrogram import utils
from pyrogram.errors import PeerIdInvalid
-from pyrogram.scaffold import Scaffold
log = logging.getLogger(__name__)
-class ResolvePeer(Scaffold):
+class ResolvePeer:
async def resolve_peer(
- self,
+ self: "pyrogram.Client",
peer_id: Union[int, str]
) -> Union[raw.base.InputPeer, raw.base.InputUser, raw.base.InputChannel]:
"""Get the InputPeer of a known peer id.
diff --git a/pyrogram/methods/advanced/save_file.py b/pyrogram/methods/advanced/save_file.py
index 3f6ebb68..9c92651d 100644
--- a/pyrogram/methods/advanced/save_file.py
+++ b/pyrogram/methods/advanced/save_file.py
@@ -25,23 +25,23 @@ import math
import os
from hashlib import md5
from pathlib import PurePath
-from typing import Union, BinaryIO
+from typing import Union, BinaryIO, Callable
+import pyrogram
from pyrogram import StopTransmission
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
from pyrogram.session import Session
log = logging.getLogger(__name__)
-class SaveFile(Scaffold):
+class SaveFile:
async def save_file(
- self,
+ self: "pyrogram.Client",
path: Union[str, BinaryIO],
file_id: int = None,
file_part: int = 0,
- progress: callable = None,
+ progress: Callable = None,
progress_args: tuple = ()
):
"""Upload a file onto Telegram servers, without actually sending the message to anyone.
@@ -64,7 +64,7 @@ class SaveFile(Scaffold):
file_part (``int``, *optional*):
In case a file part expired, pass the file_id and the file_part to retry uploading that specific chunk.
- progress (``callable``, *optional*):
+ progress (``Callable``, *optional*):
Pass a callback function to view the file transmission progress.
The function must take *(current, total)* as positional arguments (look at Other Parameters below for a
detailed description) and will be called back each time a new file chunk has been successfully
diff --git a/pyrogram/methods/advanced/send.py b/pyrogram/methods/advanced/send.py
index 8ef0849c..6e5551cd 100644
--- a/pyrogram/methods/advanced/send.py
+++ b/pyrogram/methods/advanced/send.py
@@ -18,17 +18,17 @@
import logging
+import pyrogram
from pyrogram import raw
from pyrogram.raw.core import TLObject
-from pyrogram.scaffold import Scaffold
from pyrogram.session import Session
log = logging.getLogger(__name__)
-class Send(Scaffold):
+class Send:
async def send(
- self,
+ self: "pyrogram.Client",
data: TLObject,
retries: int = Session.MAX_RETRIES,
timeout: float = Session.WAIT_TIMEOUT,
diff --git a/pyrogram/methods/auth/accept_terms_of_service.py b/pyrogram/methods/auth/accept_terms_of_service.py
index 5641a8ac..ea041d6c 100644
--- a/pyrogram/methods/auth/accept_terms_of_service.py
+++ b/pyrogram/methods/auth/accept_terms_of_service.py
@@ -16,12 +16,15 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class AcceptTermsOfService(Scaffold):
- async def accept_terms_of_service(self, terms_of_service_id: str) -> bool:
+class AcceptTermsOfService:
+ async def accept_terms_of_service(
+ self: "pyrogram.Client",
+ terms_of_service_id: str
+ ) -> bool:
"""Accept the given terms of service.
Parameters:
diff --git a/pyrogram/methods/auth/check_password.py b/pyrogram/methods/auth/check_password.py
index 1cfa526b..1f1d142c 100644
--- a/pyrogram/methods/auth/check_password.py
+++ b/pyrogram/methods/auth/check_password.py
@@ -18,16 +18,19 @@
import logging
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
from pyrogram.utils import compute_password_check
log = logging.getLogger(__name__)
-class CheckPassword(Scaffold):
- async def check_password(self, password: str) -> "types.User":
+class CheckPassword:
+ async def check_password(
+ self: "pyrogram.Client",
+ password: str
+ ) -> "types.User":
"""Check your Two-Step Verification password and log in.
Parameters:
diff --git a/pyrogram/methods/auth/connect.py b/pyrogram/methods/auth/connect.py
index 82cf661f..191a0e93 100644
--- a/pyrogram/methods/auth/connect.py
+++ b/pyrogram/methods/auth/connect.py
@@ -16,12 +16,14 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
-from pyrogram.scaffold import Scaffold
+import pyrogram
from pyrogram.session import Session
-class Connect(Scaffold):
- async def connect(self) -> bool:
+class Connect:
+ async def connect(
+ self: "pyrogram.Client",
+ ) -> bool:
"""
Connect the client to Telegram servers.
diff --git a/pyrogram/methods/auth/disconnect.py b/pyrogram/methods/auth/disconnect.py
index ddc1e7e1..daa07b83 100644
--- a/pyrogram/methods/auth/disconnect.py
+++ b/pyrogram/methods/auth/disconnect.py
@@ -16,11 +16,13 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
-from pyrogram.scaffold import Scaffold
+import pyrogram
-class Disconnect(Scaffold):
- async def disconnect(self):
+class Disconnect:
+ async def disconnect(
+ self: "pyrogram.Client",
+ ):
"""Disconnect the client from Telegram servers.
Raises:
diff --git a/pyrogram/methods/auth/get_password_hint.py b/pyrogram/methods/auth/get_password_hint.py
index 6ba3f280..d9002106 100644
--- a/pyrogram/methods/auth/get_password_hint.py
+++ b/pyrogram/methods/auth/get_password_hint.py
@@ -18,14 +18,16 @@
import logging
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
log = logging.getLogger(__name__)
-class GetPasswordHint(Scaffold):
- async def get_password_hint(self) -> str:
+class GetPasswordHint:
+ async def get_password_hint(
+ self: "pyrogram.Client",
+ ) -> str:
"""Get your Two-Step Verification password hint.
Returns:
diff --git a/pyrogram/methods/auth/initialize.py b/pyrogram/methods/auth/initialize.py
index 0b760881..2ee15b61 100644
--- a/pyrogram/methods/auth/initialize.py
+++ b/pyrogram/methods/auth/initialize.py
@@ -18,14 +18,16 @@
import logging
-from pyrogram.scaffold import Scaffold
+import pyrogram
from pyrogram.syncer import Syncer
log = logging.getLogger(__name__)
-class Initialize(Scaffold):
- async def initialize(self):
+class Initialize:
+ async def initialize(
+ self: "pyrogram.Client",
+ ):
"""Initialize the client by starting up workers.
This method will start updates and download workers.
diff --git a/pyrogram/methods/auth/log_out.py b/pyrogram/methods/auth/log_out.py
index 7174545d..2f8ad019 100644
--- a/pyrogram/methods/auth/log_out.py
+++ b/pyrogram/methods/auth/log_out.py
@@ -18,14 +18,16 @@
import logging
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
log = logging.getLogger(__name__)
-class LogOut(Scaffold):
- async def log_out(self):
+class LogOut:
+ async def log_out(
+ self: "pyrogram.Client",
+ ):
"""Log out from Telegram and delete the *\\*.session* file.
When you log out, the current client is stopped and the storage session deleted.
diff --git a/pyrogram/methods/auth/recover_password.py b/pyrogram/methods/auth/recover_password.py
index db877ec8..600ac86a 100644
--- a/pyrogram/methods/auth/recover_password.py
+++ b/pyrogram/methods/auth/recover_password.py
@@ -18,15 +18,18 @@
import logging
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
log = logging.getLogger(__name__)
-class RecoverPassword(Scaffold):
- async def recover_password(self, recovery_code: str) -> "types.User":
+class RecoverPassword:
+ async def recover_password(
+ self: "pyrogram.Client",
+ recovery_code: str
+ ) -> "types.User":
"""Recover your password with a recovery code and log in.
Parameters:
diff --git a/pyrogram/methods/auth/resend_code.py b/pyrogram/methods/auth/resend_code.py
index 18e835f5..d17cc395 100644
--- a/pyrogram/methods/auth/resend_code.py
+++ b/pyrogram/methods/auth/resend_code.py
@@ -18,15 +18,19 @@
import logging
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
log = logging.getLogger(__name__)
-class ResendCode(Scaffold):
- async def resend_code(self, phone_number: str, phone_code_hash: str) -> "types.SentCode":
+class ResendCode:
+ async def resend_code(
+ self: "pyrogram.Client",
+ phone_number: str,
+ phone_code_hash: str
+ ) -> "types.SentCode":
"""Re-send the confirmation code using a different type.
The type of the code to be re-sent is specified in the *next_type* attribute of the
diff --git a/pyrogram/methods/auth/send_code.py b/pyrogram/methods/auth/send_code.py
index 3f92cceb..3d42fa6b 100644
--- a/pyrogram/methods/auth/send_code.py
+++ b/pyrogram/methods/auth/send_code.py
@@ -18,17 +18,20 @@
import logging
+import pyrogram
from pyrogram import raw
from pyrogram import types
from pyrogram.errors import PhoneMigrate, NetworkMigrate
-from pyrogram.scaffold import Scaffold
from pyrogram.session import Session, Auth
log = logging.getLogger(__name__)
-class SendCode(Scaffold):
- async def send_code(self, phone_number: str) -> "types.SentCode":
+class SendCode:
+ async def send_code(
+ self: "pyrogram.Client",
+ phone_number: str
+ ) -> "types.SentCode":
"""Send the confirmation code to the given phone number.
Parameters:
diff --git a/pyrogram/methods/auth/send_recovery_code.py b/pyrogram/methods/auth/send_recovery_code.py
index 07879978..40d2b7dd 100644
--- a/pyrogram/methods/auth/send_recovery_code.py
+++ b/pyrogram/methods/auth/send_recovery_code.py
@@ -18,14 +18,16 @@
import logging
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
log = logging.getLogger(__name__)
-class SendRecoveryCode(Scaffold):
- async def send_recovery_code(self) -> str:
+class SendRecoveryCode:
+ async def send_recovery_code(
+ self: "pyrogram.Client",
+ ) -> str:
"""Send a code to your email to recover your password.
Returns:
diff --git a/pyrogram/methods/auth/sign_in.py b/pyrogram/methods/auth/sign_in.py
index 19c0fbc1..d8079c95 100644
--- a/pyrogram/methods/auth/sign_in.py
+++ b/pyrogram/methods/auth/sign_in.py
@@ -19,16 +19,16 @@
import logging
from typing import Union
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
log = logging.getLogger(__name__)
-class SignIn(Scaffold):
+class SignIn:
async def sign_in(
- self,
+ self: "pyrogram.Client",
phone_number: str,
phone_code_hash: str,
phone_code: str
diff --git a/pyrogram/methods/auth/sign_in_bot.py b/pyrogram/methods/auth/sign_in_bot.py
index 7cbcb1ac..db4515a4 100644
--- a/pyrogram/methods/auth/sign_in_bot.py
+++ b/pyrogram/methods/auth/sign_in_bot.py
@@ -18,17 +18,20 @@
import logging
+import pyrogram
from pyrogram import raw
from pyrogram import types
from pyrogram.errors import UserMigrate
-from pyrogram.scaffold import Scaffold
from pyrogram.session import Session, Auth
log = logging.getLogger(__name__)
-class SignInBot(Scaffold):
- async def sign_in_bot(self, bot_token: str) -> "types.User":
+class SignInBot:
+ async def sign_in_bot(
+ self: "pyrogram.Client",
+ bot_token: str
+ ) -> "types.User":
"""Authorize a bot using its bot token generated by BotFather.
Parameters:
diff --git a/pyrogram/methods/auth/sign_up.py b/pyrogram/methods/auth/sign_up.py
index 4b18a732..4e769ab1 100644
--- a/pyrogram/methods/auth/sign_up.py
+++ b/pyrogram/methods/auth/sign_up.py
@@ -18,16 +18,16 @@
import logging
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
log = logging.getLogger(__name__)
-class SignUp(Scaffold):
+class SignUp:
async def sign_up(
- self,
+ self: "pyrogram.Client",
phone_number: str,
phone_code_hash: str,
first_name: str,
diff --git a/pyrogram/methods/auth/terminate.py b/pyrogram/methods/auth/terminate.py
index 46b66982..d8cca6ba 100644
--- a/pyrogram/methods/auth/terminate.py
+++ b/pyrogram/methods/auth/terminate.py
@@ -18,15 +18,17 @@
import logging
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
from pyrogram.syncer import Syncer
log = logging.getLogger(__name__)
-class Terminate(Scaffold):
- async def terminate(self):
+class Terminate:
+ async def terminate(
+ self: "pyrogram.Client",
+ ):
"""Terminate the client by shutting down workers.
This method does the opposite of :meth:`~pyrogram.Client.initialize`.
diff --git a/pyrogram/methods/bots/answer_callback_query.py b/pyrogram/methods/bots/answer_callback_query.py
index 941389b7..73d5ce55 100644
--- a/pyrogram/methods/bots/answer_callback_query.py
+++ b/pyrogram/methods/bots/answer_callback_query.py
@@ -16,13 +16,13 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class AnswerCallbackQuery(Scaffold):
+class AnswerCallbackQuery:
async def answer_callback_query(
- self,
+ self: "pyrogram.Client",
callback_query_id: str,
text: str = None,
show_alert: bool = None,
diff --git a/pyrogram/methods/bots/answer_inline_query.py b/pyrogram/methods/bots/answer_inline_query.py
index 24e7a30c..1751171d 100644
--- a/pyrogram/methods/bots/answer_inline_query.py
+++ b/pyrogram/methods/bots/answer_inline_query.py
@@ -18,14 +18,14 @@
from typing import Iterable
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class AnswerInlineQuery(Scaffold):
+class AnswerInlineQuery:
async def answer_inline_query(
- self,
+ self: "pyrogram.Client",
inline_query_id: str,
results: Iterable["types.InlineQueryResult"],
cache_time: int = 300,
diff --git a/pyrogram/methods/bots/get_game_high_scores.py b/pyrogram/methods/bots/get_game_high_scores.py
index cd0b09ba..e4a2ed15 100644
--- a/pyrogram/methods/bots/get_game_high_scores.py
+++ b/pyrogram/methods/bots/get_game_high_scores.py
@@ -18,14 +18,14 @@
from typing import Union, List
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class GetGameHighScores(Scaffold):
+class GetGameHighScores:
async def get_game_high_scores(
- self,
+ self: "pyrogram.Client",
user_id: Union[int, str],
chat_id: Union[int, str],
message_id: int = None
diff --git a/pyrogram/methods/bots/get_inline_bot_results.py b/pyrogram/methods/bots/get_inline_bot_results.py
index 800de93e..2c41fec7 100644
--- a/pyrogram/methods/bots/get_inline_bot_results.py
+++ b/pyrogram/methods/bots/get_inline_bot_results.py
@@ -18,14 +18,14 @@
from typing import Union
+import pyrogram
from pyrogram import raw
from pyrogram.errors import UnknownError
-from pyrogram.scaffold import Scaffold
-class GetInlineBotResults(Scaffold):
+class GetInlineBotResults:
async def get_inline_bot_results(
- self,
+ self: "pyrogram.Client",
bot: Union[int, str],
query: str = "",
offset: str = "",
diff --git a/pyrogram/methods/bots/request_callback_answer.py b/pyrogram/methods/bots/request_callback_answer.py
index 5db9dfe0..ff6ae0d3 100644
--- a/pyrogram/methods/bots/request_callback_answer.py
+++ b/pyrogram/methods/bots/request_callback_answer.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class RequestCallbackAnswer(Scaffold):
+class RequestCallbackAnswer:
async def request_callback_answer(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
message_id: int,
callback_data: Union[str, bytes],
diff --git a/pyrogram/methods/bots/send_game.py b/pyrogram/methods/bots/send_game.py
index 05b9094f..7f9e856b 100644
--- a/pyrogram/methods/bots/send_game.py
+++ b/pyrogram/methods/bots/send_game.py
@@ -18,14 +18,14 @@
from typing import Union
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class SendGame(Scaffold):
+class SendGame:
async def send_game(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
game_short_name: str,
disable_notification: bool = None,
diff --git a/pyrogram/methods/bots/send_inline_bot_result.py b/pyrogram/methods/bots/send_inline_bot_result.py
index ead95810..299aaaf6 100644
--- a/pyrogram/methods/bots/send_inline_bot_result.py
+++ b/pyrogram/methods/bots/send_inline_bot_result.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class SendInlineBotResult(Scaffold):
+class SendInlineBotResult:
async def send_inline_bot_result(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
query_id: int,
result_id: str,
diff --git a/pyrogram/methods/bots/set_bot_commands.py b/pyrogram/methods/bots/set_bot_commands.py
index c3461515..8c9baa2e 100644
--- a/pyrogram/methods/bots/set_bot_commands.py
+++ b/pyrogram/methods/bots/set_bot_commands.py
@@ -19,11 +19,11 @@
from typing import List
import pyrogram
-from pyrogram import raw, types
-from pyrogram.scaffold import Scaffold
+from pyrogram import raw
+from pyrogram import types
-class SetBotCommands(Scaffold):
+class SetBotCommands:
async def set_bot_commands(
self: "pyrogram.Client",
commands: List["types.BotCommand"],
@@ -31,7 +31,6 @@ class SetBotCommands(Scaffold):
language_code: str = "",
):
"""Set the list of the bot's commands.
-
The commands passed will overwrite any command set previously.
This method can be used by the own bot only.
diff --git a/pyrogram/methods/bots/set_game_score.py b/pyrogram/methods/bots/set_game_score.py
index edb38dcf..ef644b60 100644
--- a/pyrogram/methods/bots/set_game_score.py
+++ b/pyrogram/methods/bots/set_game_score.py
@@ -18,14 +18,14 @@
from typing import Union
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class SetGameScore(Scaffold):
+class SetGameScore:
async def set_game_score(
- self,
+ self: "pyrogram.Client",
user_id: Union[int, str],
score: int,
force: bool = None,
diff --git a/pyrogram/methods/chats/add_chat_members.py b/pyrogram/methods/chats/add_chat_members.py
index 70fb0f97..cda789aa 100644
--- a/pyrogram/methods/chats/add_chat_members.py
+++ b/pyrogram/methods/chats/add_chat_members.py
@@ -18,13 +18,13 @@
from typing import Union, List
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class AddChatMembers(Scaffold):
+class AddChatMembers:
async def add_chat_members(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
user_ids: Union[Union[int, str], List[Union[int, str]]],
forward_limit: int = 100
diff --git a/pyrogram/methods/chats/archive_chats.py b/pyrogram/methods/chats/archive_chats.py
index c65b7622..aa5b50d5 100644
--- a/pyrogram/methods/chats/archive_chats.py
+++ b/pyrogram/methods/chats/archive_chats.py
@@ -18,13 +18,13 @@
from typing import Union, List
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class ArchiveChats(Scaffold):
+class ArchiveChats:
async def archive_chats(
- self,
+ self: "pyrogram.Client",
chat_ids: Union[int, str, List[Union[int, str]]],
) -> bool:
"""Archive one or more chats.
diff --git a/pyrogram/methods/chats/ban_chat_member.py b/pyrogram/methods/chats/ban_chat_member.py
index 3edcb164..c01b7046 100644
--- a/pyrogram/methods/chats/ban_chat_member.py
+++ b/pyrogram/methods/chats/ban_chat_member.py
@@ -19,14 +19,14 @@
from datetime import datetime
from typing import Union
+import pyrogram
from pyrogram import raw, utils
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class BanChatMember(Scaffold):
+class BanChatMember:
async def ban_chat_member(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
user_id: Union[int, str],
until_date: datetime = datetime.fromtimestamp(0)
diff --git a/pyrogram/methods/chats/create_channel.py b/pyrogram/methods/chats/create_channel.py
index b3b21eae..5920d5ff 100644
--- a/pyrogram/methods/chats/create_channel.py
+++ b/pyrogram/methods/chats/create_channel.py
@@ -15,15 +15,14 @@
#
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
-
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class CreateChannel(Scaffold):
+class CreateChannel:
async def create_channel(
- self,
+ self: "pyrogram.Client",
title: str,
description: str = ""
) -> "types.Chat":
diff --git a/pyrogram/methods/chats/create_group.py b/pyrogram/methods/chats/create_group.py
index 2117d369..d01a2e68 100644
--- a/pyrogram/methods/chats/create_group.py
+++ b/pyrogram/methods/chats/create_group.py
@@ -18,14 +18,14 @@
from typing import Union, List
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class CreateGroup(Scaffold):
+class CreateGroup:
async def create_group(
- self,
+ self: "pyrogram.Client",
title: str,
users: Union[Union[int, str], List[Union[int, str]]]
) -> "types.Chat":
diff --git a/pyrogram/methods/chats/create_supergroup.py b/pyrogram/methods/chats/create_supergroup.py
index 2c72e25b..348fc726 100644
--- a/pyrogram/methods/chats/create_supergroup.py
+++ b/pyrogram/methods/chats/create_supergroup.py
@@ -15,15 +15,14 @@
#
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
-
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class CreateSupergroup(Scaffold):
+class CreateSupergroup:
async def create_supergroup(
- self,
+ self: "pyrogram.Client",
title: str,
description: str = ""
) -> "types.Chat":
diff --git a/pyrogram/methods/chats/delete_channel.py b/pyrogram/methods/chats/delete_channel.py
index 3f9baa4f..246c930a 100644
--- a/pyrogram/methods/chats/delete_channel.py
+++ b/pyrogram/methods/chats/delete_channel.py
@@ -18,12 +18,15 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class DeleteChannel(Scaffold):
- async def delete_channel(self, chat_id: Union[int, str]) -> bool:
+class DeleteChannel:
+ async def delete_channel(
+ self: "pyrogram.Client",
+ chat_id: Union[int, str]
+ ) -> bool:
"""Delete a channel.
Parameters:
diff --git a/pyrogram/methods/chats/delete_chat_photo.py b/pyrogram/methods/chats/delete_chat_photo.py
index 4311658b..0b4d6488 100644
--- a/pyrogram/methods/chats/delete_chat_photo.py
+++ b/pyrogram/methods/chats/delete_chat_photo.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class DeleteChatPhoto(Scaffold):
+class DeleteChatPhoto:
async def delete_chat_photo(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str]
) -> bool:
"""Delete a chat photo.
diff --git a/pyrogram/methods/chats/delete_supergroup.py b/pyrogram/methods/chats/delete_supergroup.py
index b9d3bdf7..5f6e8168 100644
--- a/pyrogram/methods/chats/delete_supergroup.py
+++ b/pyrogram/methods/chats/delete_supergroup.py
@@ -18,12 +18,15 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class DeleteSupergroup(Scaffold):
- async def delete_supergroup(self, chat_id: Union[int, str]) -> bool:
+class DeleteSupergroup:
+ async def delete_supergroup(
+ self: "pyrogram.Client",
+ chat_id: Union[int, str]
+ ) -> bool:
"""Delete a supergroup.
Parameters:
diff --git a/pyrogram/methods/chats/delete_user_history.py b/pyrogram/methods/chats/delete_user_history.py
index ca9d0c59..867100bb 100644
--- a/pyrogram/methods/chats/delete_user_history.py
+++ b/pyrogram/methods/chats/delete_user_history.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class DeleteUserHistory(Scaffold):
+class DeleteUserHistory:
async def delete_user_history(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
user_id: Union[int, str],
) -> bool:
diff --git a/pyrogram/methods/chats/get_chat.py b/pyrogram/methods/chats/get_chat.py
index d9ecb166..99e57566 100644
--- a/pyrogram/methods/chats/get_chat.py
+++ b/pyrogram/methods/chats/get_chat.py
@@ -18,15 +18,15 @@
from typing import Union
+import pyrogram
from pyrogram import raw
from pyrogram import types
from pyrogram import utils
-from pyrogram.scaffold import Scaffold
-class GetChat(Scaffold):
+class GetChat:
async def get_chat(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str]
) -> Union["types.Chat", "types.ChatPreview"]:
"""Get up to date information about a chat.
diff --git a/pyrogram/methods/chats/get_chat_event_log.py b/pyrogram/methods/chats/get_chat_event_log.py
index 3e392a20..db277090 100644
--- a/pyrogram/methods/chats/get_chat_event_log.py
+++ b/pyrogram/methods/chats/get_chat_event_log.py
@@ -18,14 +18,14 @@
from typing import Union, List, AsyncGenerator, Optional
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class GetChatEventLog(Scaffold):
+class GetChatEventLog:
async def get_chat_event_log(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
query: str = "",
offset_id: int = 0,
diff --git a/pyrogram/methods/chats/get_chat_member.py b/pyrogram/methods/chats/get_chat_member.py
index 9987327c..9717d019 100644
--- a/pyrogram/methods/chats/get_chat_member.py
+++ b/pyrogram/methods/chats/get_chat_member.py
@@ -18,15 +18,15 @@
from typing import Union
+import pyrogram
from pyrogram import raw
from pyrogram import types
from pyrogram.errors import UserNotParticipant
-from pyrogram.scaffold import Scaffold
-class GetChatMember(Scaffold):
+class GetChatMember:
async def get_chat_member(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
user_id: Union[int, str]
) -> "types.ChatMember":
diff --git a/pyrogram/methods/chats/get_chat_members.py b/pyrogram/methods/chats/get_chat_members.py
index 4c8ae602..7e6b8898 100644
--- a/pyrogram/methods/chats/get_chat_members.py
+++ b/pyrogram/methods/chats/get_chat_members.py
@@ -19,15 +19,15 @@
import logging
from typing import Union, List
+import pyrogram
from pyrogram import raw, types, enums
-from pyrogram.scaffold import Scaffold
log = logging.getLogger(__name__)
-class GetChatMembers(Scaffold):
+class GetChatMembers:
async def get_chat_members(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
offset: int = 0,
limit: int = 200,
@@ -105,17 +105,17 @@ class GetChatMembers(Scaffold):
elif isinstance(peer, raw.types.InputPeerChannel):
filter = filter.lower()
- if filter == Filters.ALL:
+ if filter == enums.ChatMembersFilter.ANY:
filter = raw.types.ChannelParticipantsSearch(q=query)
- elif filter == Filters.BANNED:
+ elif filter == enums.ChatMembersFilter.BANNED:
filter = raw.types.ChannelParticipantsKicked(q=query)
- elif filter == Filters.RESTRICTED:
+ elif filter == enums.ChatMembersFilter.RESTRICTED:
filter = raw.types.ChannelParticipantsBanned(q=query)
- elif filter == Filters.BOTS:
+ elif filter == enums.ChatMembersFilter.BOTS:
filter = raw.types.ChannelParticipantsBots()
- elif filter == Filters.RECENT:
+ elif filter == enums.ChatMembersFilter.RECENT:
filter = raw.types.ChannelParticipantsRecent()
- elif filter == Filters.ADMINISTRATORS:
+ elif filter == enums.ChatMembersFilter.ADMINISTRATORS:
filter = raw.types.ChannelParticipantsAdmins()
else:
raise ValueError(f'Invalid filter "{filter}"')
diff --git a/pyrogram/methods/chats/get_chat_members_count.py b/pyrogram/methods/chats/get_chat_members_count.py
index aa943eea..a7dae4be 100644
--- a/pyrogram/methods/chats/get_chat_members_count.py
+++ b/pyrogram/methods/chats/get_chat_members_count.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class GetChatMembersCount(Scaffold):
+class GetChatMembersCount:
async def get_chat_members_count(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str]
) -> int:
"""Get the number of members in a chat.
diff --git a/pyrogram/methods/chats/get_chat_online_count.py b/pyrogram/methods/chats/get_chat_online_count.py
index a8d13214..3f8e5d6a 100644
--- a/pyrogram/methods/chats/get_chat_online_count.py
+++ b/pyrogram/methods/chats/get_chat_online_count.py
@@ -18,12 +18,15 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class GetChatOnlineCount(Scaffold):
- async def get_chat_online_count(self, chat_id: Union[int, str]) -> int:
+class GetChatOnlineCount:
+ async def get_chat_online_count(
+ self: "pyrogram.Client",
+ chat_id: Union[int, str]
+ ) -> int:
"""Get the number of members that are currently online in a chat.
Parameters:
diff --git a/pyrogram/methods/chats/get_dialogs.py b/pyrogram/methods/chats/get_dialogs.py
index 9fb907ca..7276c80b 100644
--- a/pyrogram/methods/chats/get_dialogs.py
+++ b/pyrogram/methods/chats/get_dialogs.py
@@ -20,17 +20,17 @@ import logging
from datetime import datetime
from typing import List
+import pyrogram
from pyrogram import raw
from pyrogram import types
from pyrogram import utils
-from pyrogram.scaffold import Scaffold
log = logging.getLogger(__name__)
-class GetDialogs(Scaffold):
+class GetDialogs:
async def get_dialogs(
- self,
+ self: "pyrogram.Client",
offset_date: datetime = datetime.fromtimestamp(0),
limit: int = 100,
pinned_only: bool = False
diff --git a/pyrogram/methods/chats/get_dialogs_count.py b/pyrogram/methods/chats/get_dialogs_count.py
index a8598e5f..3f869909 100644
--- a/pyrogram/methods/chats/get_dialogs_count.py
+++ b/pyrogram/methods/chats/get_dialogs_count.py
@@ -16,12 +16,15 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class GetDialogsCount(Scaffold):
- async def get_dialogs_count(self, pinned_only: bool = False) -> int:
+class GetDialogsCount:
+ async def get_dialogs_count(
+ self: "pyrogram.Client",
+ pinned_only: bool = False
+ ) -> int:
"""Get the total count of your dialogs.
pinned_only (``bool``, *optional*):
diff --git a/pyrogram/methods/chats/get_nearby_chats.py b/pyrogram/methods/chats/get_nearby_chats.py
index dcceb439..0dff05aa 100644
--- a/pyrogram/methods/chats/get_nearby_chats.py
+++ b/pyrogram/methods/chats/get_nearby_chats.py
@@ -18,15 +18,15 @@
from typing import List
+import pyrogram
from pyrogram import raw
from pyrogram import types
from pyrogram import utils
-from pyrogram.scaffold import Scaffold
-class GetNearbyChats(Scaffold):
+class GetNearbyChats:
async def get_nearby_chats(
- self,
+ self: "pyrogram.Client",
latitude: float,
longitude: float
) -> List["types.Chat"]:
diff --git a/pyrogram/methods/chats/get_send_as_chats.py b/pyrogram/methods/chats/get_send_as_chats.py
index 4d2fae48..147da217 100644
--- a/pyrogram/methods/chats/get_send_as_chats.py
+++ b/pyrogram/methods/chats/get_send_as_chats.py
@@ -18,14 +18,14 @@
from typing import List, Union
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class GetSendAsChats(Scaffold):
+class GetSendAsChats:
async def get_send_as_chats(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str]
) -> List["types.Chat"]:
"""Get the list of "send_as" chats available.
diff --git a/pyrogram/methods/chats/iter_chat_members.py b/pyrogram/methods/chats/iter_chat_members.py
index 3661d506..f3ccf06c 100644
--- a/pyrogram/methods/chats/iter_chat_members.py
+++ b/pyrogram/methods/chats/iter_chat_members.py
@@ -18,9 +18,9 @@
from typing import Union, AsyncGenerator, Optional
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
class Filters:
@@ -32,9 +32,9 @@ class Filters:
ADMINISTRATORS = "administrators"
-class IterChatMembers(Scaffold):
+class IterChatMembers:
async def iter_chat_members(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
limit: int = 0,
query: str = "",
diff --git a/pyrogram/methods/chats/iter_dialogs.py b/pyrogram/methods/chats/iter_dialogs.py
index 4553e3d4..009bdfa8 100644
--- a/pyrogram/methods/chats/iter_dialogs.py
+++ b/pyrogram/methods/chats/iter_dialogs.py
@@ -18,13 +18,13 @@
from typing import AsyncGenerator, Optional
+import pyrogram
from pyrogram import types, raw, utils
-from pyrogram.scaffold import Scaffold
-class IterDialogs(Scaffold):
+class IterDialogs:
async def iter_dialogs(
- self,
+ self: "pyrogram.Client",
limit: int = 0
) -> Optional[AsyncGenerator["types.Dialog", None]]:
"""Iterate through a user's dialogs sequentially.
diff --git a/pyrogram/methods/chats/join_chat.py b/pyrogram/methods/chats/join_chat.py
index 3f1a09f9..c1a850af 100644
--- a/pyrogram/methods/chats/join_chat.py
+++ b/pyrogram/methods/chats/join_chat.py
@@ -18,14 +18,14 @@
from typing import Union
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class JoinChat(Scaffold):
+class JoinChat:
async def join_chat(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str]
) -> "types.Chat":
"""Join a group chat or channel.
diff --git a/pyrogram/methods/chats/leave_chat.py b/pyrogram/methods/chats/leave_chat.py
index 3271a1f9..56369e1c 100644
--- a/pyrogram/methods/chats/leave_chat.py
+++ b/pyrogram/methods/chats/leave_chat.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class LeaveChat(Scaffold):
+class LeaveChat:
async def leave_chat(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
delete: bool = False
):
diff --git a/pyrogram/methods/chats/mark_chat_unread.py b/pyrogram/methods/chats/mark_chat_unread.py
index 4a48c5d6..32251e2a 100644
--- a/pyrogram/methods/chats/mark_chat_unread.py
+++ b/pyrogram/methods/chats/mark_chat_unread.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram.raw import functions
-from pyrogram.scaffold import Scaffold
-class MarkChatUnread(Scaffold):
+class MarkChatUnread:
async def mark_chat_unread(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
) -> bool:
"""Mark a chat as unread.
diff --git a/pyrogram/methods/chats/pin_chat_message.py b/pyrogram/methods/chats/pin_chat_message.py
index 016a19a7..9e34e1aa 100644
--- a/pyrogram/methods/chats/pin_chat_message.py
+++ b/pyrogram/methods/chats/pin_chat_message.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw, types
-from pyrogram.scaffold import Scaffold
-class PinChatMessage(Scaffold):
+class PinChatMessage:
async def pin_chat_message(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
message_id: int,
disable_notification: bool = False,
diff --git a/pyrogram/methods/chats/promote_chat_member.py b/pyrogram/methods/chats/promote_chat_member.py
index b1d43867..63a844bb 100644
--- a/pyrogram/methods/chats/promote_chat_member.py
+++ b/pyrogram/methods/chats/promote_chat_member.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw, types
-from pyrogram.scaffold import Scaffold
-class PromoteChatMember(Scaffold):
+class PromoteChatMember:
async def promote_chat_member(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
user_id: Union[int, str],
privileges: "types.ChatPrivileges" = types.ChatPrivileges(),
diff --git a/pyrogram/methods/chats/restrict_chat_member.py b/pyrogram/methods/chats/restrict_chat_member.py
index 22eee519..a8ab2173 100644
--- a/pyrogram/methods/chats/restrict_chat_member.py
+++ b/pyrogram/methods/chats/restrict_chat_member.py
@@ -19,14 +19,14 @@
from datetime import datetime
from typing import Union
+import pyrogram
from pyrogram import raw, utils
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class RestrictChatMember(Scaffold):
+class RestrictChatMember:
async def restrict_chat_member(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
user_id: Union[int, str],
permissions: "types.ChatPermissions",
diff --git a/pyrogram/methods/chats/set_administrator_title.py b/pyrogram/methods/chats/set_administrator_title.py
index f59cf28a..ed59b342 100644
--- a/pyrogram/methods/chats/set_administrator_title.py
+++ b/pyrogram/methods/chats/set_administrator_title.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class SetAdministratorTitle(Scaffold):
+class SetAdministratorTitle:
async def set_administrator_title(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
user_id: Union[int, str],
title: str,
diff --git a/pyrogram/methods/chats/set_chat_description.py b/pyrogram/methods/chats/set_chat_description.py
index 6d2575f2..440b4050 100644
--- a/pyrogram/methods/chats/set_chat_description.py
+++ b/pyrogram/methods/chats/set_chat_description.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class SetChatDescription(Scaffold):
+class SetChatDescription:
async def set_chat_description(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
description: str
) -> bool:
diff --git a/pyrogram/methods/chats/set_chat_permissions.py b/pyrogram/methods/chats/set_chat_permissions.py
index 2ff2b678..dfbd5d91 100644
--- a/pyrogram/methods/chats/set_chat_permissions.py
+++ b/pyrogram/methods/chats/set_chat_permissions.py
@@ -18,14 +18,14 @@
from typing import Union
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class SetChatPermissions(Scaffold):
+class SetChatPermissions:
async def set_chat_permissions(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
permissions: "types.ChatPermissions",
) -> "types.Chat":
diff --git a/pyrogram/methods/chats/set_chat_photo.py b/pyrogram/methods/chats/set_chat_photo.py
index a1fee7f6..1097b237 100644
--- a/pyrogram/methods/chats/set_chat_photo.py
+++ b/pyrogram/methods/chats/set_chat_photo.py
@@ -19,15 +19,15 @@
import os
from typing import Union, BinaryIO
+import pyrogram
from pyrogram import raw
from pyrogram import utils
from pyrogram.file_id import FileType
-from pyrogram.scaffold import Scaffold
-class SetChatPhoto(Scaffold):
+class SetChatPhoto:
async def set_chat_photo(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
*,
photo: Union[str, BinaryIO] = None,
diff --git a/pyrogram/methods/chats/set_chat_protected_content.py b/pyrogram/methods/chats/set_chat_protected_content.py
index d63e381d..1372481c 100644
--- a/pyrogram/methods/chats/set_chat_protected_content.py
+++ b/pyrogram/methods/chats/set_chat_protected_content.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram.raw import functions
-from pyrogram.scaffold import Scaffold
-class SetChatProtectedContent(Scaffold):
+class SetChatProtectedContent:
async def set_chat_protected_content(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
enabled: bool
) -> bool:
diff --git a/pyrogram/methods/chats/set_chat_title.py b/pyrogram/methods/chats/set_chat_title.py
index 62649f38..ac30b078 100644
--- a/pyrogram/methods/chats/set_chat_title.py
+++ b/pyrogram/methods/chats/set_chat_title.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class SetChatTitle(Scaffold):
+class SetChatTitle:
async def set_chat_title(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
title: str
) -> bool:
diff --git a/pyrogram/methods/chats/set_chat_username.py b/pyrogram/methods/chats/set_chat_username.py
index 8496dda3..c63207aa 100644
--- a/pyrogram/methods/chats/set_chat_username.py
+++ b/pyrogram/methods/chats/set_chat_username.py
@@ -18,13 +18,13 @@
from typing import Union, Optional
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class SetChatUsername(Scaffold):
+class SetChatUsername:
async def set_chat_username(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
username: Optional[str]
) -> bool:
diff --git a/pyrogram/methods/chats/set_send_as_chat.py b/pyrogram/methods/chats/set_send_as_chat.py
index 3fc686bb..dabb4066 100644
--- a/pyrogram/methods/chats/set_send_as_chat.py
+++ b/pyrogram/methods/chats/set_send_as_chat.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class SetSendAsChat(Scaffold):
+class SetSendAsChat:
async def set_send_as_chat(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
send_as_chat_id: Union[int, str]
) -> bool:
diff --git a/pyrogram/methods/chats/set_slow_mode.py b/pyrogram/methods/chats/set_slow_mode.py
index 7e6739ba..3bc00cb2 100644
--- a/pyrogram/methods/chats/set_slow_mode.py
+++ b/pyrogram/methods/chats/set_slow_mode.py
@@ -18,13 +18,13 @@
from typing import Union, Optional
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class SetSlowMode(Scaffold):
+class SetSlowMode:
async def set_slow_mode(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
seconds: Optional[int]
) -> bool:
diff --git a/pyrogram/methods/chats/unarchive_chats.py b/pyrogram/methods/chats/unarchive_chats.py
index 32867798..a6b77d18 100644
--- a/pyrogram/methods/chats/unarchive_chats.py
+++ b/pyrogram/methods/chats/unarchive_chats.py
@@ -18,13 +18,13 @@
from typing import Union, List
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class UnarchiveChats(Scaffold):
+class UnarchiveChats:
async def unarchive_chats(
- self,
+ self: "pyrogram.Client",
chat_ids: Union[int, str, List[Union[int, str]]],
) -> bool:
"""Unarchive one or more chats.
diff --git a/pyrogram/methods/chats/unban_chat_member.py b/pyrogram/methods/chats/unban_chat_member.py
index c7be7b58..9176fe33 100644
--- a/pyrogram/methods/chats/unban_chat_member.py
+++ b/pyrogram/methods/chats/unban_chat_member.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class UnbanChatMember(Scaffold):
+class UnbanChatMember:
async def unban_chat_member(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
user_id: Union[int, str]
) -> bool:
diff --git a/pyrogram/methods/chats/unpin_all_chat_messages.py b/pyrogram/methods/chats/unpin_all_chat_messages.py
index 3028120a..bd75c40d 100644
--- a/pyrogram/methods/chats/unpin_all_chat_messages.py
+++ b/pyrogram/methods/chats/unpin_all_chat_messages.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class UnpinAllChatMessages(Scaffold):
+class UnpinAllChatMessages:
async def unpin_all_chat_messages(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
) -> bool:
"""Use this method to clear the list of pinned messages in a chat.
diff --git a/pyrogram/methods/chats/unpin_chat_message.py b/pyrogram/methods/chats/unpin_chat_message.py
index 83654452..cf3f9e9d 100644
--- a/pyrogram/methods/chats/unpin_chat_message.py
+++ b/pyrogram/methods/chats/unpin_chat_message.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class UnpinChatMessage(Scaffold):
+class UnpinChatMessage:
async def unpin_chat_message(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
message_id: int = 0
) -> bool:
diff --git a/pyrogram/methods/contacts/add_contact.py b/pyrogram/methods/contacts/add_contact.py
index cceb273d..72bdd88a 100644
--- a/pyrogram/methods/contacts/add_contact.py
+++ b/pyrogram/methods/contacts/add_contact.py
@@ -18,14 +18,14 @@
from typing import Union
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class AddContact(Scaffold):
+class AddContact:
async def add_contact(
- self,
+ self: "pyrogram.Client",
user_id: Union[int, str],
first_name: str,
last_name: str = "",
diff --git a/pyrogram/methods/contacts/delete_contacts.py b/pyrogram/methods/contacts/delete_contacts.py
index 27340747..e6ef3258 100644
--- a/pyrogram/methods/contacts/delete_contacts.py
+++ b/pyrogram/methods/contacts/delete_contacts.py
@@ -18,13 +18,13 @@
from typing import List, Union
+import pyrogram
from pyrogram import raw, types
-from pyrogram.scaffold import Scaffold
-class DeleteContacts(Scaffold):
+class DeleteContacts:
async def delete_contacts(
- self,
+ self: "pyrogram.Client",
user_ids: Union[int, str, List[Union[int, str]]]
) -> Union["types.User", List["types.User"], None]:
"""Delete contacts from your Telegram address book.
diff --git a/pyrogram/methods/contacts/get_contacts.py b/pyrogram/methods/contacts/get_contacts.py
index 98ed1150..0b41c3d6 100644
--- a/pyrogram/methods/contacts/get_contacts.py
+++ b/pyrogram/methods/contacts/get_contacts.py
@@ -19,15 +19,17 @@
import logging
from typing import List
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
log = logging.getLogger(__name__)
-class GetContacts(Scaffold):
- async def get_contacts(self) -> List["types.User"]:
+class GetContacts:
+ async def get_contacts(
+ self: "pyrogram.Client"
+ ) -> List["types.User"]:
"""Get contacts from your Telegram address book.
Returns:
diff --git a/pyrogram/methods/contacts/get_contacts_count.py b/pyrogram/methods/contacts/get_contacts_count.py
index b29fed7a..b7e5d371 100644
--- a/pyrogram/methods/contacts/get_contacts_count.py
+++ b/pyrogram/methods/contacts/get_contacts_count.py
@@ -16,12 +16,14 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class GetContactsCount(Scaffold):
- async def get_contacts_count(self) -> int:
+class GetContactsCount:
+ async def get_contacts_count(
+ self: "pyrogram.Client"
+ ) -> int:
"""Get the total count of contacts from your Telegram address book.
Returns:
diff --git a/pyrogram/methods/contacts/import_contacts.py b/pyrogram/methods/contacts/import_contacts.py
index b7df8554..7a6e3142 100644
--- a/pyrogram/methods/contacts/import_contacts.py
+++ b/pyrogram/methods/contacts/import_contacts.py
@@ -18,14 +18,14 @@
from typing import List
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class ImportContacts(Scaffold):
+class ImportContacts:
async def import_contacts(
- self,
+ self: "pyrogram.Client",
contacts: List["types.InputPhoneContact"]
):
"""Import contacts to your Telegram address book.
diff --git a/pyrogram/methods/decorators/on_callback_query.py b/pyrogram/methods/decorators/on_callback_query.py
index fb0b716f..07e15a3e 100644
--- a/pyrogram/methods/decorators/on_callback_query.py
+++ b/pyrogram/methods/decorators/on_callback_query.py
@@ -20,15 +20,14 @@ from typing import Callable
import pyrogram
from pyrogram.filters import Filter
-from pyrogram.scaffold import Scaffold
-class OnCallbackQuery(Scaffold):
+class OnCallbackQuery:
def on_callback_query(
self=None,
filters=None,
group: int = 0
- ) -> callable:
+ ) -> Callable:
"""Decorator for handling callback queries.
This does the same thing as :meth:`~pyrogram.Client.add_handler` using the
diff --git a/pyrogram/methods/decorators/on_chat_join_request.py b/pyrogram/methods/decorators/on_chat_join_request.py
index 06299018..57fb709c 100644
--- a/pyrogram/methods/decorators/on_chat_join_request.py
+++ b/pyrogram/methods/decorators/on_chat_join_request.py
@@ -20,15 +20,14 @@ from typing import Callable
import pyrogram
from pyrogram.filters import Filter
-from pyrogram.scaffold import Scaffold
-class OnChatJoinRequest(Scaffold):
+class OnChatJoinRequest:
def on_chat_join_request(
self=None,
filters=None,
group: int = 0
- ) -> callable:
+ ) -> Callable:
"""Decorator for handling chat join requests.
This does the same thing as :meth:`~pyrogram.Client.add_handler` using the
diff --git a/pyrogram/methods/decorators/on_chat_member_updated.py b/pyrogram/methods/decorators/on_chat_member_updated.py
index 9c10debf..c2f0e888 100644
--- a/pyrogram/methods/decorators/on_chat_member_updated.py
+++ b/pyrogram/methods/decorators/on_chat_member_updated.py
@@ -20,15 +20,14 @@ from typing import Callable
import pyrogram
from pyrogram.filters import Filter
-from pyrogram.scaffold import Scaffold
-class OnChatMemberUpdated(Scaffold):
+class OnChatMemberUpdated:
def on_chat_member_updated(
self=None,
filters=None,
group: int = 0
- ) -> callable:
+ ) -> Callable:
"""Decorator for handling event changes on chat members.
This does the same thing as :meth:`~pyrogram.Client.add_handler` using the
diff --git a/pyrogram/methods/decorators/on_chosen_inline_result.py b/pyrogram/methods/decorators/on_chosen_inline_result.py
index a2775c9b..090f6c04 100644
--- a/pyrogram/methods/decorators/on_chosen_inline_result.py
+++ b/pyrogram/methods/decorators/on_chosen_inline_result.py
@@ -20,15 +20,14 @@ from typing import Callable
import pyrogram
from pyrogram.filters import Filter
-from pyrogram.scaffold import Scaffold
-class OnChosenInlineResult(Scaffold):
+class OnChosenInlineResult:
def on_chosen_inline_result(
self=None,
filters=None,
group: int = 0
- ) -> callable:
+ ) -> Callable:
"""Decorator for handling chosen inline results.
This does the same thing as :meth:`~pyrogram.Client.add_handler` using the
diff --git a/pyrogram/methods/decorators/on_deleted_messages.py b/pyrogram/methods/decorators/on_deleted_messages.py
index 3bf88b08..9565c113 100644
--- a/pyrogram/methods/decorators/on_deleted_messages.py
+++ b/pyrogram/methods/decorators/on_deleted_messages.py
@@ -20,15 +20,14 @@ from typing import Callable
import pyrogram
from pyrogram.filters import Filter
-from pyrogram.scaffold import Scaffold
-class OnDeletedMessages(Scaffold):
+class OnDeletedMessages:
def on_deleted_messages(
self=None,
filters=None,
group: int = 0
- ) -> callable:
+ ) -> Callable:
"""Decorator for handling deleted messages.
This does the same thing as :meth:`~pyrogram.Client.add_handler` using the
diff --git a/pyrogram/methods/decorators/on_disconnect.py b/pyrogram/methods/decorators/on_disconnect.py
index 5e4f7501..ae54800f 100644
--- a/pyrogram/methods/decorators/on_disconnect.py
+++ b/pyrogram/methods/decorators/on_disconnect.py
@@ -19,11 +19,10 @@
from typing import Callable
import pyrogram
-from pyrogram.scaffold import Scaffold
-class OnDisconnect(Scaffold):
- def on_disconnect(self=None) -> callable:
+class OnDisconnect:
+ def on_disconnect(self=None) -> Callable:
"""Decorator for handling disconnections.
This does the same thing as :meth:`~pyrogram.Client.add_handler` using the
diff --git a/pyrogram/methods/decorators/on_inline_query.py b/pyrogram/methods/decorators/on_inline_query.py
index 4910670e..6b53a464 100644
--- a/pyrogram/methods/decorators/on_inline_query.py
+++ b/pyrogram/methods/decorators/on_inline_query.py
@@ -20,15 +20,14 @@ from typing import Callable
import pyrogram
from pyrogram.filters import Filter
-from pyrogram.scaffold import Scaffold
-class OnInlineQuery(Scaffold):
+class OnInlineQuery:
def on_inline_query(
self=None,
filters=None,
group: int = 0
- ) -> callable:
+ ) -> Callable:
"""Decorator for handling inline queries.
This does the same thing as :meth:`~pyrogram.Client.add_handler` using the
diff --git a/pyrogram/methods/decorators/on_message.py b/pyrogram/methods/decorators/on_message.py
index 634ca2e3..e9a3dfdd 100644
--- a/pyrogram/methods/decorators/on_message.py
+++ b/pyrogram/methods/decorators/on_message.py
@@ -20,15 +20,14 @@ from typing import Callable
import pyrogram
from pyrogram.filters import Filter
-from pyrogram.scaffold import Scaffold
-class OnMessage(Scaffold):
+class OnMessage:
def on_message(
self=None,
filters=None,
group: int = 0
- ) -> callable:
+ ) -> Callable:
"""Decorator for handling messages.
This does the same thing as :meth:`~pyrogram.Client.add_handler` using the
diff --git a/pyrogram/methods/decorators/on_poll.py b/pyrogram/methods/decorators/on_poll.py
index 26940403..6990c456 100644
--- a/pyrogram/methods/decorators/on_poll.py
+++ b/pyrogram/methods/decorators/on_poll.py
@@ -20,15 +20,14 @@ from typing import Callable
import pyrogram
from pyrogram.filters import Filter
-from pyrogram.scaffold import Scaffold
-class OnPoll(Scaffold):
+class OnPoll:
def on_poll(
self=None,
filters=None,
group: int = 0
- ) -> callable:
+ ) -> Callable:
"""Decorator for handling poll updates.
This does the same thing as :meth:`~pyrogram.Client.add_handler` using the
diff --git a/pyrogram/methods/decorators/on_raw_update.py b/pyrogram/methods/decorators/on_raw_update.py
index f61b156b..dffc50b9 100644
--- a/pyrogram/methods/decorators/on_raw_update.py
+++ b/pyrogram/methods/decorators/on_raw_update.py
@@ -19,14 +19,13 @@
from typing import Callable
import pyrogram
-from pyrogram.scaffold import Scaffold
-class OnRawUpdate(Scaffold):
+class OnRawUpdate:
def on_raw_update(
self=None,
group: int = 0
- ) -> callable:
+ ) -> Callable:
"""Decorator for handling raw updates.
This does the same thing as :meth:`~pyrogram.Client.add_handler` using the
diff --git a/pyrogram/methods/decorators/on_user_status.py b/pyrogram/methods/decorators/on_user_status.py
index 38760c2f..a4328c37 100644
--- a/pyrogram/methods/decorators/on_user_status.py
+++ b/pyrogram/methods/decorators/on_user_status.py
@@ -20,15 +20,14 @@ from typing import Callable
import pyrogram
from pyrogram.filters import Filter
-from pyrogram.scaffold import Scaffold
-class OnUserStatus(Scaffold):
+class OnUserStatus:
def on_user_status(
self=None,
filters=None,
group: int = 0
- ) -> callable:
+ ) -> Callable:
"""Decorator for handling user status updates.
This does the same thing as :meth:`~pyrogram.Client.add_handler` using the
:obj:`~pyrogram.handlers.UserStatusHandler`.
diff --git a/pyrogram/methods/invite_links/approve_chat_join_request.py b/pyrogram/methods/invite_links/approve_chat_join_request.py
index 0bb2f604..a18a1c14 100644
--- a/pyrogram/methods/invite_links/approve_chat_join_request.py
+++ b/pyrogram/methods/invite_links/approve_chat_join_request.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class ApproveChatJoinRequest(Scaffold):
+class ApproveChatJoinRequest:
async def approve_chat_join_request(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
user_id: int,
) -> bool:
diff --git a/pyrogram/methods/invite_links/create_chat_invite_link.py b/pyrogram/methods/invite_links/create_chat_invite_link.py
index eec25787..15ca0341 100644
--- a/pyrogram/methods/invite_links/create_chat_invite_link.py
+++ b/pyrogram/methods/invite_links/create_chat_invite_link.py
@@ -19,14 +19,14 @@
from datetime import datetime
from typing import Union
+import pyrogram
from pyrogram import raw, utils
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class CreateChatInviteLink(Scaffold):
+class CreateChatInviteLink:
async def create_chat_invite_link(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
name: str = None,
expire_date: datetime = None,
diff --git a/pyrogram/methods/invite_links/decline_chat_join_request.py b/pyrogram/methods/invite_links/decline_chat_join_request.py
index 3fc01e26..d7c3d2f2 100644
--- a/pyrogram/methods/invite_links/decline_chat_join_request.py
+++ b/pyrogram/methods/invite_links/decline_chat_join_request.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class DeclineChatJoinRequest(Scaffold):
+class DeclineChatJoinRequest:
async def decline_chat_join_request(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
user_id: int,
) -> bool:
diff --git a/pyrogram/methods/invite_links/delete_chat_admin_invite_links.py b/pyrogram/methods/invite_links/delete_chat_admin_invite_links.py
index fda2aadb..c0517178 100644
--- a/pyrogram/methods/invite_links/delete_chat_admin_invite_links.py
+++ b/pyrogram/methods/invite_links/delete_chat_admin_invite_links.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class DeleteChatAdminInviteLinks(Scaffold):
+class DeleteChatAdminInviteLinks:
async def delete_chat_admin_invite_links(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
admin_id: Union[int, str],
) -> bool:
diff --git a/pyrogram/methods/invite_links/delete_chat_invite_link.py b/pyrogram/methods/invite_links/delete_chat_invite_link.py
index eeab4e35..19f4b49b 100644
--- a/pyrogram/methods/invite_links/delete_chat_invite_link.py
+++ b/pyrogram/methods/invite_links/delete_chat_invite_link.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class DeleteChatInviteLink(Scaffold):
+class DeleteChatInviteLink:
async def delete_chat_invite_link(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
invite_link: str,
) -> bool:
diff --git a/pyrogram/methods/invite_links/edit_chat_invite_link.py b/pyrogram/methods/invite_links/edit_chat_invite_link.py
index 9a375360..4a6755d6 100644
--- a/pyrogram/methods/invite_links/edit_chat_invite_link.py
+++ b/pyrogram/methods/invite_links/edit_chat_invite_link.py
@@ -19,14 +19,14 @@
from datetime import datetime
from typing import Union
+import pyrogram
from pyrogram import raw, utils
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class EditChatInviteLink(Scaffold):
+class EditChatInviteLink:
async def edit_chat_invite_link(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
invite_link: str,
name: str = None,
diff --git a/pyrogram/methods/invite_links/export_chat_invite_link.py b/pyrogram/methods/invite_links/export_chat_invite_link.py
index 061ccdf3..9734470f 100644
--- a/pyrogram/methods/invite_links/export_chat_invite_link.py
+++ b/pyrogram/methods/invite_links/export_chat_invite_link.py
@@ -18,14 +18,14 @@
from typing import Union
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class ExportChatInviteLink(Scaffold):
+class ExportChatInviteLink:
async def export_chat_invite_link(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
) -> "types.ChatInviteLink":
"""Generate a new primary invite link for a chat; any previously generated primary link is revoked.
diff --git a/pyrogram/methods/invite_links/get_chat_admin_invite_links.py b/pyrogram/methods/invite_links/get_chat_admin_invite_links.py
index 8687795d..0c266082 100644
--- a/pyrogram/methods/invite_links/get_chat_admin_invite_links.py
+++ b/pyrogram/methods/invite_links/get_chat_admin_invite_links.py
@@ -18,14 +18,14 @@
from typing import Union, Optional, AsyncGenerator
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class GetChatAdminInviteLinks(Scaffold):
+class GetChatAdminInviteLinks:
async def get_chat_admin_invite_links(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
admin_id: Union[int, str],
revoked: bool = False,
diff --git a/pyrogram/methods/invite_links/get_chat_admin_invite_links_count.py b/pyrogram/methods/invite_links/get_chat_admin_invite_links_count.py
index 789f551a..419c76a7 100644
--- a/pyrogram/methods/invite_links/get_chat_admin_invite_links_count.py
+++ b/pyrogram/methods/invite_links/get_chat_admin_invite_links_count.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class GetChatAdminInviteLinksCount(Scaffold):
+class GetChatAdminInviteLinksCount:
async def get_chat_admin_invite_links_count(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
admin_id: Union[int, str],
revoked: bool = False,
diff --git a/pyrogram/methods/invite_links/get_chat_admins_with_invite_links.py b/pyrogram/methods/invite_links/get_chat_admins_with_invite_links.py
index 8b048a58..0f41925a 100644
--- a/pyrogram/methods/invite_links/get_chat_admins_with_invite_links.py
+++ b/pyrogram/methods/invite_links/get_chat_admins_with_invite_links.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw, types
-from pyrogram.scaffold import Scaffold
-class GetChatAdminsWithInviteLinks(Scaffold):
+class GetChatAdminsWithInviteLinks:
async def get_chat_admins_with_invite_links(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
):
"""Get the list of the administrators that have exported invite links in a chat.
diff --git a/pyrogram/methods/invite_links/get_chat_invite_link.py b/pyrogram/methods/invite_links/get_chat_invite_link.py
index a5361bab..0fe0da8e 100644
--- a/pyrogram/methods/invite_links/get_chat_invite_link.py
+++ b/pyrogram/methods/invite_links/get_chat_invite_link.py
@@ -18,14 +18,14 @@
from typing import Union
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class GetChatInviteLink(Scaffold):
+class GetChatInviteLink:
async def get_chat_invite_link(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
invite_link: str,
) -> "types.ChatInviteLink":
diff --git a/pyrogram/methods/invite_links/get_chat_invite_link_members.py b/pyrogram/methods/invite_links/get_chat_invite_link_members.py
index 5d6e9208..8269a346 100644
--- a/pyrogram/methods/invite_links/get_chat_invite_link_members.py
+++ b/pyrogram/methods/invite_links/get_chat_invite_link_members.py
@@ -18,14 +18,14 @@
from typing import Union, Optional, AsyncGenerator
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class GetChatInviteLinkMembers(Scaffold):
+class GetChatInviteLinkMembers:
async def get_chat_invite_link_members(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
invite_link: str,
limit: int = 0
diff --git a/pyrogram/methods/invite_links/get_chat_invite_link_members_count.py b/pyrogram/methods/invite_links/get_chat_invite_link_members_count.py
index a4f5bbb7..c37258fe 100644
--- a/pyrogram/methods/invite_links/get_chat_invite_link_members_count.py
+++ b/pyrogram/methods/invite_links/get_chat_invite_link_members_count.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class GetChatInviteLinkMembersCount(Scaffold):
+class GetChatInviteLinkMembersCount:
async def get_chat_invite_link_members_count(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
invite_link: str
) -> int:
diff --git a/pyrogram/methods/invite_links/revoke_chat_invite_link.py b/pyrogram/methods/invite_links/revoke_chat_invite_link.py
index cb3c39cd..64af8e5f 100644
--- a/pyrogram/methods/invite_links/revoke_chat_invite_link.py
+++ b/pyrogram/methods/invite_links/revoke_chat_invite_link.py
@@ -18,14 +18,14 @@
from typing import Union
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class RevokeChatInviteLink(Scaffold):
+class RevokeChatInviteLink:
async def revoke_chat_invite_link(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
invite_link: str,
) -> "types.ChatInviteLink":
diff --git a/pyrogram/methods/messages/copy_media_group.py b/pyrogram/methods/messages/copy_media_group.py
index 06aa6c20..367cf47c 100644
--- a/pyrogram/methods/messages/copy_media_group.py
+++ b/pyrogram/methods/messages/copy_media_group.py
@@ -19,13 +19,13 @@
from datetime import datetime
from typing import Union, List
+import pyrogram
from pyrogram import types, utils, raw
-from pyrogram.scaffold import Scaffold
-class CopyMediaGroup(Scaffold):
+class CopyMediaGroup:
async def copy_media_group(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
from_chat_id: Union[int, str],
message_id: int,
diff --git a/pyrogram/methods/messages/copy_message.py b/pyrogram/methods/messages/copy_message.py
index ee40945b..94c11d4b 100644
--- a/pyrogram/methods/messages/copy_message.py
+++ b/pyrogram/methods/messages/copy_message.py
@@ -20,15 +20,15 @@ import logging
from datetime import datetime
from typing import Union, List, Optional
+import pyrogram
from pyrogram import types, enums
-from pyrogram.scaffold import Scaffold
log = logging.getLogger(__name__)
-class CopyMessage(Scaffold):
+class CopyMessage:
async def copy_message(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
from_chat_id: Union[int, str],
message_id: int,
diff --git a/pyrogram/methods/messages/delete_messages.py b/pyrogram/methods/messages/delete_messages.py
index b9807dc5..30438944 100644
--- a/pyrogram/methods/messages/delete_messages.py
+++ b/pyrogram/methods/messages/delete_messages.py
@@ -18,13 +18,13 @@
from typing import Union, Iterable
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class DeleteMessages(Scaffold):
+class DeleteMessages:
async def delete_messages(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
message_ids: Union[int, Iterable[int]],
revoke: bool = True
diff --git a/pyrogram/methods/messages/download_media.py b/pyrogram/methods/messages/download_media.py
index c1472e95..d75ba281 100644
--- a/pyrogram/methods/messages/download_media.py
+++ b/pyrogram/methods/messages/download_media.py
@@ -20,22 +20,22 @@ import asyncio
import os
import time
from datetime import datetime
-from typing import Union, Optional
+from typing import Union, Optional, Callable
+import pyrogram
from pyrogram import types
from pyrogram.file_id import FileId, FileType, PHOTO_TYPES
-from pyrogram.scaffold import Scaffold
DEFAULT_DOWNLOAD_DIR = "downloads/"
-class DownloadMedia(Scaffold):
+class DownloadMedia:
async def download_media(
- self,
+ self: "pyrogram.Client",
message: Union["types.Message", str],
file_name: str = DEFAULT_DOWNLOAD_DIR,
block: bool = True,
- progress: callable = None,
+ progress: Callable = None,
progress_args: tuple = ()
) -> Optional[str]:
"""Download the media from a message.
@@ -55,7 +55,7 @@ class DownloadMedia(Scaffold):
Blocks the code execution until the file has been downloaded.
Defaults to True.
- progress (``callable``, *optional*):
+ progress (``Callable``, *optional*):
Pass a callback function to view the file transmission progress.
The function must take *(current, total)* as positional arguments (look at Other Parameters below for a
detailed description) and will be called back each time a new file chunk has been successfully
diff --git a/pyrogram/methods/messages/edit_inline_caption.py b/pyrogram/methods/messages/edit_inline_caption.py
index ed99b62d..3068098e 100644
--- a/pyrogram/methods/messages/edit_inline_caption.py
+++ b/pyrogram/methods/messages/edit_inline_caption.py
@@ -18,13 +18,13 @@
from typing import Optional
+import pyrogram
from pyrogram import types, enums
-from pyrogram.scaffold import Scaffold
-class EditInlineCaption(Scaffold):
+class EditInlineCaption:
async def edit_inline_caption(
- self,
+ self: "pyrogram.Client",
inline_message_id: str,
caption: str,
parse_mode: Optional["enums.ParseMode"] = None,
diff --git a/pyrogram/methods/messages/edit_inline_media.py b/pyrogram/methods/messages/edit_inline_media.py
index 6b8c834a..0613bd73 100644
--- a/pyrogram/methods/messages/edit_inline_media.py
+++ b/pyrogram/methods/messages/edit_inline_media.py
@@ -19,17 +19,17 @@
import os
import re
+import pyrogram
from pyrogram import raw
from pyrogram import types
from pyrogram import utils
from pyrogram.file_id import FileType
-from pyrogram.scaffold import Scaffold
from .inline_session import get_session
-class EditInlineMedia(Scaffold):
+class EditInlineMedia:
async def edit_inline_media(
- self,
+ self: "pyrogram.Client",
inline_message_id: str,
media: "types.InputMedia",
reply_markup: "types.InlineKeyboardMarkup" = None
diff --git a/pyrogram/methods/messages/edit_inline_reply_markup.py b/pyrogram/methods/messages/edit_inline_reply_markup.py
index 614da617..b3760c67 100644
--- a/pyrogram/methods/messages/edit_inline_reply_markup.py
+++ b/pyrogram/methods/messages/edit_inline_reply_markup.py
@@ -16,16 +16,16 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+import pyrogram
from pyrogram import raw
from pyrogram import types
from pyrogram import utils
-from pyrogram.scaffold import Scaffold
from .inline_session import get_session
-class EditInlineReplyMarkup(Scaffold):
+class EditInlineReplyMarkup:
async def edit_inline_reply_markup(
- self,
+ self: "pyrogram.Client",
inline_message_id: str,
reply_markup: "types.InlineKeyboardMarkup" = None
) -> bool:
diff --git a/pyrogram/methods/messages/edit_inline_text.py b/pyrogram/methods/messages/edit_inline_text.py
index af4b5555..ae4cab36 100644
--- a/pyrogram/methods/messages/edit_inline_text.py
+++ b/pyrogram/methods/messages/edit_inline_text.py
@@ -18,16 +18,16 @@
from typing import Optional
+import pyrogram
from pyrogram import raw, enums
from pyrogram import types
from pyrogram import utils
-from pyrogram.scaffold import Scaffold
from .inline_session import get_session
-class EditInlineText(Scaffold):
+class EditInlineText:
async def edit_inline_text(
- self,
+ self: "pyrogram.Client",
inline_message_id: str,
text: str,
parse_mode: Optional["enums.ParseMode"] = None,
diff --git a/pyrogram/methods/messages/edit_message_caption.py b/pyrogram/methods/messages/edit_message_caption.py
index e368d4f5..fc92b02f 100644
--- a/pyrogram/methods/messages/edit_message_caption.py
+++ b/pyrogram/methods/messages/edit_message_caption.py
@@ -18,13 +18,13 @@
from typing import Union, List, Optional
+import pyrogram
from pyrogram import types, enums
-from pyrogram.scaffold import Scaffold
-class EditMessageCaption(Scaffold):
+class EditMessageCaption:
async def edit_message_caption(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
message_id: int,
caption: str,
diff --git a/pyrogram/methods/messages/edit_message_media.py b/pyrogram/methods/messages/edit_message_media.py
index 4e443e71..1593bfb6 100644
--- a/pyrogram/methods/messages/edit_message_media.py
+++ b/pyrogram/methods/messages/edit_message_media.py
@@ -20,16 +20,16 @@ import os
import re
from typing import Union
+import pyrogram
from pyrogram import raw
from pyrogram import types
from pyrogram import utils
from pyrogram.file_id import FileType
-from pyrogram.scaffold import Scaffold
-class EditMessageMedia(Scaffold):
+class EditMessageMedia:
async def edit_message_media(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
message_id: int,
media: "types.InputMedia",
diff --git a/pyrogram/methods/messages/edit_message_reply_markup.py b/pyrogram/methods/messages/edit_message_reply_markup.py
index 2bbe1bc9..91b6fcd3 100644
--- a/pyrogram/methods/messages/edit_message_reply_markup.py
+++ b/pyrogram/methods/messages/edit_message_reply_markup.py
@@ -18,14 +18,14 @@
from typing import Union
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class EditMessageReplyMarkup(Scaffold):
+class EditMessageReplyMarkup:
async def edit_message_reply_markup(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
message_id: int,
reply_markup: "types.InlineKeyboardMarkup" = None,
diff --git a/pyrogram/methods/messages/edit_message_text.py b/pyrogram/methods/messages/edit_message_text.py
index c58429a2..0f409cfe 100644
--- a/pyrogram/methods/messages/edit_message_text.py
+++ b/pyrogram/methods/messages/edit_message_text.py
@@ -18,15 +18,15 @@
from typing import Union, List, Optional
+import pyrogram
from pyrogram import raw, enums
from pyrogram import types
from pyrogram import utils
-from pyrogram.scaffold import Scaffold
-class EditMessageText(Scaffold):
+class EditMessageText:
async def edit_message_text(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
message_id: int,
text: str,
diff --git a/pyrogram/methods/messages/forward_messages.py b/pyrogram/methods/messages/forward_messages.py
index acddd6e6..12ed56aa 100644
--- a/pyrogram/methods/messages/forward_messages.py
+++ b/pyrogram/methods/messages/forward_messages.py
@@ -19,14 +19,14 @@
from datetime import datetime
from typing import Union, Iterable, List
+import pyrogram
from pyrogram import raw, utils
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class ForwardMessages(Scaffold):
+class ForwardMessages:
async def forward_messages(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
from_chat_id: Union[int, str],
message_ids: Union[int, Iterable[int]],
diff --git a/pyrogram/methods/messages/get_discussion_message.py b/pyrogram/methods/messages/get_discussion_message.py
index c7d47261..f1de4592 100644
--- a/pyrogram/methods/messages/get_discussion_message.py
+++ b/pyrogram/methods/messages/get_discussion_message.py
@@ -18,14 +18,14 @@
from typing import Union
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class GetDiscussionMessage(Scaffold):
+class GetDiscussionMessage:
async def get_discussion_message(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
message_id: int,
) -> "types.Message":
diff --git a/pyrogram/methods/messages/get_history.py b/pyrogram/methods/messages/get_history.py
index a461b720..a67d971e 100644
--- a/pyrogram/methods/messages/get_history.py
+++ b/pyrogram/methods/messages/get_history.py
@@ -20,17 +20,17 @@ import logging
from datetime import datetime
from typing import Union, List
+import pyrogram
from pyrogram import raw
from pyrogram import types
from pyrogram import utils
-from pyrogram.scaffold import Scaffold
log = logging.getLogger(__name__)
-class GetHistory(Scaffold):
+class GetHistory:
async def get_history(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
limit: int = 100,
offset: int = 0,
diff --git a/pyrogram/methods/messages/get_history_count.py b/pyrogram/methods/messages/get_history_count.py
index 9facdbeb..a76c10b5 100644
--- a/pyrogram/methods/messages/get_history_count.py
+++ b/pyrogram/methods/messages/get_history_count.py
@@ -19,15 +19,15 @@
import logging
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
log = logging.getLogger(__name__)
-class GetHistoryCount(Scaffold):
+class GetHistoryCount:
async def get_history_count(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str]
) -> int:
"""Get the total count of messages in a chat.
diff --git a/pyrogram/methods/messages/get_media_group.py b/pyrogram/methods/messages/get_media_group.py
index 3b33bfd4..b50d4785 100644
--- a/pyrogram/methods/messages/get_media_group.py
+++ b/pyrogram/methods/messages/get_media_group.py
@@ -19,15 +19,15 @@
import logging
from typing import Union, List
+import pyrogram
from pyrogram import types
-from pyrogram.scaffold import Scaffold
log = logging.getLogger(__name__)
-class GetMediaGroup(Scaffold):
+class GetMediaGroup:
async def get_media_group(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
message_id: int
) -> List["types.Message"]:
diff --git a/pyrogram/methods/messages/get_messages.py b/pyrogram/methods/messages/get_messages.py
index b9c0fbf7..e9e408b5 100644
--- a/pyrogram/methods/messages/get_messages.py
+++ b/pyrogram/methods/messages/get_messages.py
@@ -19,10 +19,10 @@
import logging
from typing import Union, Iterable, List
+import pyrogram
from pyrogram import raw
from pyrogram import types
from pyrogram import utils
-from pyrogram.scaffold import Scaffold
log = logging.getLogger(__name__)
@@ -30,9 +30,9 @@ log = logging.getLogger(__name__)
# TODO: Rewrite using a flag for replied messages and have message_ids non-optional
-class GetMessages(Scaffold):
+class GetMessages:
async def get_messages(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
message_ids: Union[int, Iterable[int]] = None,
reply_to_message_ids: Union[int, Iterable[int]] = None,
diff --git a/pyrogram/methods/messages/iter_history.py b/pyrogram/methods/messages/iter_history.py
index c5eda288..4914cd1d 100644
--- a/pyrogram/methods/messages/iter_history.py
+++ b/pyrogram/methods/messages/iter_history.py
@@ -19,13 +19,13 @@
from datetime import datetime
from typing import Union, Optional, AsyncGenerator
+import pyrogram
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class IterHistory(Scaffold):
+class IterHistory:
async def iter_history(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
limit: int = 0,
offset: int = 0,
diff --git a/pyrogram/methods/messages/read_history.py b/pyrogram/methods/messages/read_history.py
index 881b59ad..66b8bf50 100644
--- a/pyrogram/methods/messages/read_history.py
+++ b/pyrogram/methods/messages/read_history.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class ReadHistory(Scaffold):
+class ReadHistory:
async def read_history(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
max_id: int = 0
) -> bool:
diff --git a/pyrogram/methods/messages/retract_vote.py b/pyrogram/methods/messages/retract_vote.py
index 4baba811..f49807cd 100644
--- a/pyrogram/methods/messages/retract_vote.py
+++ b/pyrogram/methods/messages/retract_vote.py
@@ -18,14 +18,14 @@
from typing import Union
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class RetractVote(Scaffold):
+class RetractVote:
async def retract_vote(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
message_id: int
) -> "types.Poll":
diff --git a/pyrogram/methods/messages/search_global.py b/pyrogram/methods/messages/search_global.py
index 6dff7bf0..3f0d4e9f 100644
--- a/pyrogram/methods/messages/search_global.py
+++ b/pyrogram/methods/messages/search_global.py
@@ -18,15 +18,15 @@
from typing import AsyncGenerator, Optional
+import pyrogram
from pyrogram import raw, enums
from pyrogram import types
from pyrogram import utils
-from pyrogram.scaffold import Scaffold
-class SearchGlobal(Scaffold):
+class SearchGlobal:
async def search_global(
- self,
+ self: "pyrogram.Client",
query: str = "",
filter: "enums.MessagesFilter" = enums.MessagesFilter.ANY,
limit: int = 0,
diff --git a/pyrogram/methods/messages/search_global_count.py b/pyrogram/methods/messages/search_global_count.py
index d8da0163..c848546e 100644
--- a/pyrogram/methods/messages/search_global_count.py
+++ b/pyrogram/methods/messages/search_global_count.py
@@ -16,13 +16,13 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+import pyrogram
from pyrogram import raw, enums
-from pyrogram.scaffold import Scaffold
-class SearchGlobalCount(Scaffold):
+class SearchGlobalCount:
async def search_global_count(
- self,
+ self: "pyrogram.Client",
query: str = "",
filter: "enums.MessagesFilter" = enums.MessagesFilter.ANY,
) -> int:
diff --git a/pyrogram/methods/messages/search_messages.py b/pyrogram/methods/messages/search_messages.py
index 07728193..b448a1c2 100644
--- a/pyrogram/methods/messages/search_messages.py
+++ b/pyrogram/methods/messages/search_messages.py
@@ -18,13 +18,13 @@
from typing import Union, List, AsyncGenerator, Optional
+import pyrogram
from pyrogram import raw, types, utils, enums
-from pyrogram.scaffold import Scaffold
# noinspection PyShadowingBuiltins
async def get_chunk(
- client: Scaffold,
+ client,
chat_id: Union[int, str],
query: str = "",
filter: "enums.MessagesFilter" = enums.MessagesFilter.ANY,
@@ -57,10 +57,10 @@ async def get_chunk(
return await utils.parse_messages(client, r)
-class SearchMessages(Scaffold):
+class SearchMessages:
# noinspection PyShadowingBuiltins
async def search_messages(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
query: str = "",
offset: int = 0,
diff --git a/pyrogram/methods/messages/search_messages_count.py b/pyrogram/methods/messages/search_messages_count.py
index 87e0a745..85c25d06 100644
--- a/pyrogram/methods/messages/search_messages_count.py
+++ b/pyrogram/methods/messages/search_messages_count.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw, enums
-from pyrogram.scaffold import Scaffold
-class SearchMessagesCount(Scaffold):
+class SearchMessagesCount:
async def search_messages_count(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
query: str = "",
filter: "enums.MessagesFilter" = enums.MessagesFilter.ANY,
diff --git a/pyrogram/methods/messages/send_animation.py b/pyrogram/methods/messages/send_animation.py
index 4e6a9f40..2e84fe82 100644
--- a/pyrogram/methods/messages/send_animation.py
+++ b/pyrogram/methods/messages/send_animation.py
@@ -19,20 +19,20 @@
import os
import re
from datetime import datetime
-from typing import Union, BinaryIO, List, Optional
+from typing import Union, BinaryIO, List, Optional, Callable
+import pyrogram
from pyrogram import StopTransmission, enums
from pyrogram import raw
from pyrogram import types
from pyrogram import utils
from pyrogram.errors import FilePartMissing
from pyrogram.file_id import FileType
-from pyrogram.scaffold import Scaffold
-class SendAnimation(Scaffold):
+class SendAnimation:
async def send_animation(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
animation: Union[str, BinaryIO],
caption: str = "",
@@ -54,7 +54,7 @@ class SendAnimation(Scaffold):
"types.ReplyKeyboardRemove",
"types.ForceReply"
] = None,
- progress: callable = None,
+ progress: Callable = None,
progress_args: tuple = ()
) -> Optional["types.Message"]:
"""Send animation files (animation or H.264/MPEG-4 AVC video without sound).
@@ -122,7 +122,7 @@ class SendAnimation(Scaffold):
Additional interface options. An object for an inline keyboard, custom reply keyboard,
instructions to remove reply keyboard or to force a reply from the user.
- progress (``callable``, *optional*):
+ progress (``Callable``, *optional*):
Pass a callback function to view the file transmission progress.
The function must take *(current, total)* as positional arguments (look at Other Parameters below for a
detailed description) and will be called back each time a new file chunk has been successfully
diff --git a/pyrogram/methods/messages/send_audio.py b/pyrogram/methods/messages/send_audio.py
index 6cef5b47..47e914a8 100644
--- a/pyrogram/methods/messages/send_audio.py
+++ b/pyrogram/methods/messages/send_audio.py
@@ -18,21 +18,21 @@
import os
import re
-from typing import Union, BinaryIO, List, Optional
+from datetime import datetime
+from typing import Union, BinaryIO, List, Optional, Callable
+import pyrogram
from pyrogram import StopTransmission, enums
from pyrogram import raw
from pyrogram import types
from pyrogram import utils
from pyrogram.errors import FilePartMissing
from pyrogram.file_id import FileType
-from pyrogram.scaffold import Scaffold
-from datetime import datetime
-class SendAudio(Scaffold):
+class SendAudio:
async def send_audio(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
audio: Union[str, BinaryIO],
caption: str = "",
@@ -53,7 +53,7 @@ class SendAudio(Scaffold):
"types.ReplyKeyboardRemove",
"types.ForceReply"
] = None,
- progress: callable = None,
+ progress: Callable = None,
progress_args: tuple = ()
) -> Optional["types.Message"]:
"""Send audio files.
@@ -119,7 +119,7 @@ class SendAudio(Scaffold):
Additional interface options. An object for an inline keyboard, custom reply keyboard,
instructions to remove reply keyboard or to force a reply from the user.
- progress (``callable``, *optional*):
+ progress (``Callable``, *optional*):
Pass a callback function to view the file transmission progress.
The function must take *(current, total)* as positional arguments (look at Other Parameters below for a
detailed description) and will be called back each time a new file chunk has been successfully
diff --git a/pyrogram/methods/messages/send_cached_media.py b/pyrogram/methods/messages/send_cached_media.py
index 60832553..4763e94d 100644
--- a/pyrogram/methods/messages/send_cached_media.py
+++ b/pyrogram/methods/messages/send_cached_media.py
@@ -19,15 +19,15 @@
from datetime import datetime
from typing import Union, List, Optional
+import pyrogram
from pyrogram import raw, enums
from pyrogram import types
from pyrogram import utils
-from pyrogram.scaffold import Scaffold
-class SendCachedMedia(Scaffold):
+class SendCachedMedia:
async def send_cached_media(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
file_id: str,
caption: str = "",
diff --git a/pyrogram/methods/messages/send_chat_action.py b/pyrogram/methods/messages/send_chat_action.py
index bbff1d44..9145653e 100644
--- a/pyrogram/methods/messages/send_chat_action.py
+++ b/pyrogram/methods/messages/send_chat_action.py
@@ -20,12 +20,11 @@ from typing import Union
import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class SendChatAction(Scaffold):
+class SendChatAction:
async def send_chat_action(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
action: "pyrogram.enums.ChatAction"
) -> bool:
diff --git a/pyrogram/methods/messages/send_contact.py b/pyrogram/methods/messages/send_contact.py
index f9c84f4c..6285b502 100644
--- a/pyrogram/methods/messages/send_contact.py
+++ b/pyrogram/methods/messages/send_contact.py
@@ -19,14 +19,14 @@
from datetime import datetime
from typing import Union
-from pyrogram import raw
+import pyrogram
+from pyrogram import raw, utils
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class SendContact(Scaffold):
+class SendContact:
async def send_contact(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
phone_number: str,
first_name: str,
diff --git a/pyrogram/methods/messages/send_dice.py b/pyrogram/methods/messages/send_dice.py
index 9c7f5d1a..c3a6bb42 100644
--- a/pyrogram/methods/messages/send_dice.py
+++ b/pyrogram/methods/messages/send_dice.py
@@ -16,17 +16,17 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+from datetime import datetime
from typing import Union, Optional
-from pyrogram import raw
+import pyrogram
+from pyrogram import raw, utils
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-from datetime import datetime
-class SendDice(Scaffold):
+class SendDice:
async def send_dice(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
emoji: str = "🎲",
disable_notification: bool = None,
diff --git a/pyrogram/methods/messages/send_document.py b/pyrogram/methods/messages/send_document.py
index 5844d2d2..79f6e160 100644
--- a/pyrogram/methods/messages/send_document.py
+++ b/pyrogram/methods/messages/send_document.py
@@ -19,20 +19,20 @@
import os
import re
from datetime import datetime
-from typing import Union, BinaryIO, List, Optional
+from typing import Union, BinaryIO, List, Optional, Callable
+import pyrogram
from pyrogram import StopTransmission, enums
from pyrogram import raw
from pyrogram import types
from pyrogram import utils
from pyrogram.errors import FilePartMissing
from pyrogram.file_id import FileType
-from pyrogram.scaffold import Scaffold
-class SendDocument(Scaffold):
+class SendDocument:
async def send_document(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
document: Union[str, BinaryIO],
thumb: Union[str, BinaryIO] = None,
@@ -51,7 +51,7 @@ class SendDocument(Scaffold):
"types.ReplyKeyboardRemove",
"types.ForceReply"
] = None,
- progress: callable = None,
+ progress: Callable = None,
progress_args: tuple = ()
) -> Optional["types.Message"]:
"""Send generic files.
@@ -111,7 +111,7 @@ class SendDocument(Scaffold):
Additional interface options. An object for an inline keyboard, custom reply keyboard,
instructions to remove reply keyboard or to force a reply from the user.
- progress (``callable``, *optional*):
+ progress (``Callable``, *optional*):
Pass a callback function to view the file transmission progress.
The function must take *(current, total)* as positional arguments (look at Other Parameters below for a
detailed description) and will be called back each time a new file chunk has been successfully
diff --git a/pyrogram/methods/messages/send_location.py b/pyrogram/methods/messages/send_location.py
index 6c33c1b4..3e9bf37c 100644
--- a/pyrogram/methods/messages/send_location.py
+++ b/pyrogram/methods/messages/send_location.py
@@ -19,14 +19,14 @@
from datetime import datetime
from typing import Union
-from pyrogram import raw
+import pyrogram
+from pyrogram import raw, utils
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class SendLocation(Scaffold):
+class SendLocation:
async def send_location(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
latitude: float,
longitude: float,
diff --git a/pyrogram/methods/messages/send_media_group.py b/pyrogram/methods/messages/send_media_group.py
index 04c91c3b..ccb61361 100644
--- a/pyrogram/methods/messages/send_media_group.py
+++ b/pyrogram/methods/messages/send_media_group.py
@@ -22,19 +22,19 @@ import re
from datetime import datetime
from typing import Union, List
+import pyrogram
from pyrogram import raw
from pyrogram import types
from pyrogram import utils
from pyrogram.file_id import FileType
-from pyrogram.scaffold import Scaffold
log = logging.getLogger(__name__)
-class SendMediaGroup(Scaffold):
+class SendMediaGroup:
# TODO: Add progress parameter
async def send_media_group(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
media: List[Union[
"types.InputMediaPhoto",
diff --git a/pyrogram/methods/messages/send_message.py b/pyrogram/methods/messages/send_message.py
index 34063625..70544178 100644
--- a/pyrogram/methods/messages/send_message.py
+++ b/pyrogram/methods/messages/send_message.py
@@ -16,18 +16,17 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+from datetime import datetime
from typing import Union, List, Optional
+import pyrogram
from pyrogram import raw, utils, enums
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-
-from datetime import datetime
-class SendMessage(Scaffold):
+class SendMessage:
async def send_message(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
text: str,
parse_mode: Optional["enums.ParseMode"] = None,
diff --git a/pyrogram/methods/messages/send_photo.py b/pyrogram/methods/messages/send_photo.py
index bf7b482c..5cacfb39 100644
--- a/pyrogram/methods/messages/send_photo.py
+++ b/pyrogram/methods/messages/send_photo.py
@@ -19,7 +19,7 @@
import os
import re
from datetime import datetime
-from typing import Union, BinaryIO, List, Optional
+from typing import Union, BinaryIO, List, Optional, Callable
import pyrogram
from pyrogram import raw, enums
@@ -27,12 +27,11 @@ from pyrogram import types
from pyrogram import utils
from pyrogram.errors import FilePartMissing
from pyrogram.file_id import FileType
-from pyrogram.scaffold import Scaffold
-class SendPhoto(Scaffold):
+class SendPhoto:
async def send_photo(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
photo: Union[str, BinaryIO],
caption: str = "",
@@ -49,7 +48,7 @@ class SendPhoto(Scaffold):
"types.ReplyKeyboardRemove",
"types.ForceReply"
] = None,
- progress: callable = None,
+ progress: Callable = None,
progress_args: tuple = ()
) -> Optional["types.Message"]:
"""Send photos.
@@ -99,7 +98,7 @@ class SendPhoto(Scaffold):
Additional interface options. An object for an inline keyboard, custom reply keyboard,
instructions to remove reply keyboard or to force a reply from the user.
- progress (``callable``, *optional*):
+ progress (``Callable``, *optional*):
Pass a callback function to view the file transmission progress.
The function must take *(current, total)* as positional arguments (look at Other Parameters below for a
detailed description) and will be called back each time a new file chunk has been successfully
diff --git a/pyrogram/methods/messages/send_poll.py b/pyrogram/methods/messages/send_poll.py
index a02c5266..10545256 100644
--- a/pyrogram/methods/messages/send_poll.py
+++ b/pyrogram/methods/messages/send_poll.py
@@ -19,14 +19,14 @@
from datetime import datetime
from typing import Union, List
-from pyrogram import raw
+import pyrogram
+from pyrogram import raw, utils
from pyrogram import types, enums
-from pyrogram.scaffold import Scaffold
-class SendPoll(Scaffold):
+class SendPoll:
async def send_poll(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
question: str,
options: List[str],
diff --git a/pyrogram/methods/messages/send_reaction.py b/pyrogram/methods/messages/send_reaction.py
index 9e6c353c..b096934f 100644
--- a/pyrogram/methods/messages/send_reaction.py
+++ b/pyrogram/methods/messages/send_reaction.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class SendReaction(Scaffold):
+class SendReaction:
async def send_reaction(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
message_id: int,
emoji: str = ""
diff --git a/pyrogram/methods/messages/send_sticker.py b/pyrogram/methods/messages/send_sticker.py
index 76571d99..460cfc63 100644
--- a/pyrogram/methods/messages/send_sticker.py
+++ b/pyrogram/methods/messages/send_sticker.py
@@ -19,20 +19,20 @@
import os
import re
from datetime import datetime
-from typing import Union, BinaryIO, Optional
+from typing import Union, BinaryIO, Optional, Callable
+import pyrogram
from pyrogram import StopTransmission
from pyrogram import raw
from pyrogram import types
from pyrogram import utils
from pyrogram.errors import FilePartMissing
from pyrogram.file_id import FileType
-from pyrogram.scaffold import Scaffold
-class SendSticker(Scaffold):
+class SendSticker:
async def send_sticker(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
sticker: Union[str, BinaryIO],
disable_notification: bool = None,
@@ -45,7 +45,7 @@ class SendSticker(Scaffold):
"types.ReplyKeyboardRemove",
"types.ForceReply"
] = None,
- progress: callable = None,
+ progress: Callable = None,
progress_args: tuple = ()
) -> Optional["types.Message"]:
"""Send static .webp or animated .tgs stickers.
@@ -80,7 +80,7 @@ class SendSticker(Scaffold):
Additional interface options. An object for an inline keyboard, custom reply keyboard,
instructions to remove reply keyboard or to force a reply from the user.
- progress (``callable``, *optional*):
+ progress (``Callable``, *optional*):
Pass a callback function to view the file transmission progress.
The function must take *(current, total)* as positional arguments (look at Other Parameters below for a
detailed description) and will be called back each time a new file chunk has been successfully
diff --git a/pyrogram/methods/messages/send_venue.py b/pyrogram/methods/messages/send_venue.py
index 5293cf01..4dd81f7a 100644
--- a/pyrogram/methods/messages/send_venue.py
+++ b/pyrogram/methods/messages/send_venue.py
@@ -19,14 +19,14 @@
from datetime import datetime
from typing import Union
-from pyrogram import raw
+import pyrogram
+from pyrogram import raw, utils
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class SendVenue(Scaffold):
+class SendVenue:
async def send_venue(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
latitude: float,
longitude: float,
diff --git a/pyrogram/methods/messages/send_video.py b/pyrogram/methods/messages/send_video.py
index 96f2a9c3..9fd85213 100644
--- a/pyrogram/methods/messages/send_video.py
+++ b/pyrogram/methods/messages/send_video.py
@@ -19,20 +19,20 @@
import os
import re
from datetime import datetime
-from typing import Union, BinaryIO, List, Optional
+from typing import Union, BinaryIO, List, Optional, Callable
+import pyrogram
from pyrogram import StopTransmission, enums
from pyrogram import raw
from pyrogram import types
from pyrogram import utils
from pyrogram.errors import FilePartMissing
from pyrogram.file_id import FileType
-from pyrogram.scaffold import Scaffold
-class SendVideo(Scaffold):
+class SendVideo:
async def send_video(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
video: Union[str, BinaryIO],
caption: str = "",
@@ -55,7 +55,7 @@ class SendVideo(Scaffold):
"types.ReplyKeyboardRemove",
"types.ForceReply"
] = None,
- progress: callable = None,
+ progress: Callable = None,
progress_args: tuple = ()
) -> Optional["types.Message"]:
"""Send video files.
@@ -128,7 +128,7 @@ class SendVideo(Scaffold):
Additional interface options. An object for an inline keyboard, custom reply keyboard,
instructions to remove reply keyboard or to force a reply from the user.
- progress (``callable``, *optional*):
+ progress (``Callable``, *optional*):
Pass a callback function to view the file transmission progress.
The function must take *(current, total)* as positional arguments (look at Other Parameters below for a
detailed description) and will be called back each time a new file chunk has been successfully
diff --git a/pyrogram/methods/messages/send_video_note.py b/pyrogram/methods/messages/send_video_note.py
index c2f0a159..b4fd8891 100644
--- a/pyrogram/methods/messages/send_video_note.py
+++ b/pyrogram/methods/messages/send_video_note.py
@@ -18,20 +18,20 @@
import os
from datetime import datetime
-from typing import Union, BinaryIO, Optional
+from typing import Union, BinaryIO, Optional, Callable
+import pyrogram
from pyrogram import StopTransmission
from pyrogram import raw
from pyrogram import types
from pyrogram import utils
from pyrogram.errors import FilePartMissing
from pyrogram.file_id import FileType
-from pyrogram.scaffold import Scaffold
-class SendVideoNote(Scaffold):
+class SendVideoNote:
async def send_video_note(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
video_note: Union[str, BinaryIO],
duration: int = 0,
@@ -47,7 +47,7 @@ class SendVideoNote(Scaffold):
"types.ReplyKeyboardRemove",
"types.ForceReply"
] = None,
- progress: callable = None,
+ progress: Callable = None,
progress_args: tuple = ()
) -> Optional["types.Message"]:
"""Send video messages.
@@ -94,7 +94,7 @@ class SendVideoNote(Scaffold):
Additional interface options. An object for an inline keyboard, custom reply keyboard,
instructions to remove reply keyboard or to force a reply from the user.
- progress (``callable``, *optional*):
+ progress (``Callable``, *optional*):
Pass a callback function to view the file transmission progress.
The function must take *(current, total)* as positional arguments (look at Other Parameters below for a
detailed description) and will be called back each time a new file chunk has been successfully
diff --git a/pyrogram/methods/messages/send_voice.py b/pyrogram/methods/messages/send_voice.py
index 79fefcab..5179866e 100644
--- a/pyrogram/methods/messages/send_voice.py
+++ b/pyrogram/methods/messages/send_voice.py
@@ -19,20 +19,20 @@
import os
import re
from datetime import datetime
-from typing import Union, BinaryIO, List, Optional
+from typing import Union, BinaryIO, List, Optional, Callable
+import pyrogram
from pyrogram import StopTransmission, enums
from pyrogram import raw
from pyrogram import types
from pyrogram import utils
from pyrogram.errors import FilePartMissing
from pyrogram.file_id import FileType
-from pyrogram.scaffold import Scaffold
-class SendVoice(Scaffold):
+class SendVoice:
async def send_voice(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
voice: Union[str, BinaryIO],
caption: str = "",
@@ -49,7 +49,7 @@ class SendVoice(Scaffold):
"types.ReplyKeyboardRemove",
"types.ForceReply"
] = None,
- progress: callable = None,
+ progress: Callable = None,
progress_args: tuple = ()
) -> Optional["types.Message"]:
"""Send audio files.
@@ -97,7 +97,7 @@ class SendVoice(Scaffold):
Additional interface options. An object for an inline keyboard, custom reply keyboard,
instructions to remove reply keyboard or to force a reply from the user.
- progress (``callable``, *optional*):
+ progress (``Callable``, *optional*):
Pass a callback function to view the file transmission progress.
The function must take *(current, total)* as positional arguments (look at Other Parameters below for a
detailed description) and will be called back each time a new file chunk has been successfully
diff --git a/pyrogram/methods/messages/stop_poll.py b/pyrogram/methods/messages/stop_poll.py
index 113f1618..3fdba750 100644
--- a/pyrogram/methods/messages/stop_poll.py
+++ b/pyrogram/methods/messages/stop_poll.py
@@ -18,14 +18,14 @@
from typing import Union
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class StopPoll(Scaffold):
+class StopPoll:
async def stop_poll(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
message_id: int,
reply_markup: "types.InlineKeyboardMarkup" = None
diff --git a/pyrogram/methods/messages/vote_poll.py b/pyrogram/methods/messages/vote_poll.py
index d6753a27..70a50365 100644
--- a/pyrogram/methods/messages/vote_poll.py
+++ b/pyrogram/methods/messages/vote_poll.py
@@ -18,14 +18,14 @@
from typing import Union, List
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class VotePoll(Scaffold):
+class VotePoll:
async def vote_poll(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
message_id: id,
options: Union[int, List[int]]
diff --git a/pyrogram/methods/password/change_cloud_password.py b/pyrogram/methods/password/change_cloud_password.py
index f950c65a..a0e82963 100644
--- a/pyrogram/methods/password/change_cloud_password.py
+++ b/pyrogram/methods/password/change_cloud_password.py
@@ -18,14 +18,14 @@
import os
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
from pyrogram.utils import compute_password_hash, compute_password_check, btoi, itob
-class ChangeCloudPassword(Scaffold):
+class ChangeCloudPassword:
async def change_cloud_password(
- self,
+ self: "pyrogram.Client",
current_password: str,
new_password: str,
new_hint: str = ""
diff --git a/pyrogram/methods/password/enable_cloud_password.py b/pyrogram/methods/password/enable_cloud_password.py
index 7073af59..840acfdd 100644
--- a/pyrogram/methods/password/enable_cloud_password.py
+++ b/pyrogram/methods/password/enable_cloud_password.py
@@ -18,14 +18,14 @@
import os
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
from pyrogram.utils import compute_password_hash, btoi, itob
-class EnableCloudPassword(Scaffold):
+class EnableCloudPassword:
async def enable_cloud_password(
- self,
+ self: "pyrogram.Client",
password: str,
hint: str = "",
email: str = None
diff --git a/pyrogram/methods/password/remove_cloud_password.py b/pyrogram/methods/password/remove_cloud_password.py
index 18ae31e5..1a1c9a0b 100644
--- a/pyrogram/methods/password/remove_cloud_password.py
+++ b/pyrogram/methods/password/remove_cloud_password.py
@@ -16,14 +16,14 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
from pyrogram.utils import compute_password_check
-class RemoveCloudPassword(Scaffold):
+class RemoveCloudPassword:
async def remove_cloud_password(
- self,
+ self: "pyrogram.Client",
password: str
) -> bool:
"""Turn off the Two-Step Verification security feature (Cloud Password) on your account.
diff --git a/pyrogram/methods/users/block_user.py b/pyrogram/methods/users/block_user.py
index 0efda2b9..b1d96537 100644
--- a/pyrogram/methods/users/block_user.py
+++ b/pyrogram/methods/users/block_user.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class BlockUser(Scaffold):
+class BlockUser:
async def block_user(
- self,
+ self: "pyrogram.Client",
user_id: Union[int, str]
) -> bool:
"""Block a user.
diff --git a/pyrogram/methods/users/delete_profile_photos.py b/pyrogram/methods/users/delete_profile_photos.py
index 64f3ce77..a1df82eb 100644
--- a/pyrogram/methods/users/delete_profile_photos.py
+++ b/pyrogram/methods/users/delete_profile_photos.py
@@ -18,15 +18,15 @@
from typing import List, Union
+import pyrogram
from pyrogram import raw
from pyrogram import utils
from pyrogram.file_id import FileType
-from pyrogram.scaffold import Scaffold
-class DeleteProfilePhotos(Scaffold):
+class DeleteProfilePhotos:
async def delete_profile_photos(
- self,
+ self: "pyrogram.Client",
photo_ids: Union[str, List[str]]
) -> bool:
"""Delete your own profile photos.
diff --git a/pyrogram/methods/users/get_common_chats.py b/pyrogram/methods/users/get_common_chats.py
index 7969647a..e083e3c9 100644
--- a/pyrogram/methods/users/get_common_chats.py
+++ b/pyrogram/methods/users/get_common_chats.py
@@ -18,13 +18,16 @@
from typing import Union
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class GetCommonChats(Scaffold):
- async def get_common_chats(self, user_id: Union[int, str]) -> list:
+class GetCommonChats:
+ async def get_common_chats(
+ self: "pyrogram.Client",
+ user_id: Union[int, str]
+ ) -> list:
"""Get the common chats you have with a user.
Parameters:
diff --git a/pyrogram/methods/users/get_me.py b/pyrogram/methods/users/get_me.py
index b7ebf2d7..17ffe3b8 100644
--- a/pyrogram/methods/users/get_me.py
+++ b/pyrogram/methods/users/get_me.py
@@ -16,13 +16,15 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class GetMe(Scaffold):
- async def get_me(self) -> "types.User":
+class GetMe:
+ async def get_me(
+ self: "pyrogram.Client"
+ ) -> "types.User":
"""Get your own user identity.
Returns:
diff --git a/pyrogram/methods/users/get_profile_photos.py b/pyrogram/methods/users/get_profile_photos.py
index fb8c75c4..62341550 100644
--- a/pyrogram/methods/users/get_profile_photos.py
+++ b/pyrogram/methods/users/get_profile_photos.py
@@ -18,15 +18,15 @@
from typing import Union, List
+import pyrogram
from pyrogram import raw
from pyrogram import types
from pyrogram import utils
-from pyrogram.scaffold import Scaffold
-class GetProfilePhotos(Scaffold):
+class GetProfilePhotos:
async def get_profile_photos(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
offset: int = 0,
limit: int = 100
diff --git a/pyrogram/methods/users/get_profile_photos_count.py b/pyrogram/methods/users/get_profile_photos_count.py
index dcb7ee4b..c0065dd7 100644
--- a/pyrogram/methods/users/get_profile_photos_count.py
+++ b/pyrogram/methods/users/get_profile_photos_count.py
@@ -18,12 +18,15 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class GetProfilePhotosCount(Scaffold):
- async def get_profile_photos_count(self, chat_id: Union[int, str]) -> int:
+class GetProfilePhotosCount:
+ async def get_profile_photos_count(
+ self: "pyrogram.Client",
+ chat_id: Union[int, str]
+ ) -> int:
"""Get the total count of profile pictures for a user.
Parameters:
diff --git a/pyrogram/methods/users/get_users.py b/pyrogram/methods/users/get_users.py
index 43ae0084..0e9c9614 100644
--- a/pyrogram/methods/users/get_users.py
+++ b/pyrogram/methods/users/get_users.py
@@ -19,14 +19,14 @@
import asyncio
from typing import Iterable, Union, List
+import pyrogram
from pyrogram import raw
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class GetUsers(Scaffold):
+class GetUsers:
async def get_users(
- self,
+ self: "pyrogram.Client",
user_ids: Union[Iterable[Union[int, str]], int, str]
) -> Union["types.User", List["types.User"]]:
"""Get information about a user.
diff --git a/pyrogram/methods/users/iter_profile_photos.py b/pyrogram/methods/users/iter_profile_photos.py
index eda77a88..88c02c3a 100644
--- a/pyrogram/methods/users/iter_profile_photos.py
+++ b/pyrogram/methods/users/iter_profile_photos.py
@@ -18,13 +18,13 @@
from typing import Union, AsyncGenerator, Optional
+import pyrogram
from pyrogram import types
-from pyrogram.scaffold import Scaffold
-class IterProfilePhotos(Scaffold):
+class IterProfilePhotos:
async def iter_profile_photos(
- self,
+ self: "pyrogram.Client",
chat_id: Union[int, str],
offset: int = 0,
limit: int = 0,
diff --git a/pyrogram/methods/users/set_profile_photo.py b/pyrogram/methods/users/set_profile_photo.py
index 9b1c5c04..a68db7cd 100644
--- a/pyrogram/methods/users/set_profile_photo.py
+++ b/pyrogram/methods/users/set_profile_photo.py
@@ -18,13 +18,13 @@
from typing import Union, BinaryIO
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class SetProfilePhoto(Scaffold):
+class SetProfilePhoto:
async def set_profile_photo(
- self,
+ self: "pyrogram.Client",
*,
photo: Union[str, BinaryIO] = None,
video: Union[str, BinaryIO] = None
diff --git a/pyrogram/methods/users/set_username.py b/pyrogram/methods/users/set_username.py
index 881f2ae6..eeffc25f 100644
--- a/pyrogram/methods/users/set_username.py
+++ b/pyrogram/methods/users/set_username.py
@@ -18,13 +18,13 @@
from typing import Optional
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class SetUsername(Scaffold):
+class SetUsername:
async def set_username(
- self,
+ self: "pyrogram.Client",
username: Optional[str]
) -> bool:
"""Set your own username.
diff --git a/pyrogram/methods/users/unblock_user.py b/pyrogram/methods/users/unblock_user.py
index 4218bb1e..433105ac 100644
--- a/pyrogram/methods/users/unblock_user.py
+++ b/pyrogram/methods/users/unblock_user.py
@@ -18,13 +18,13 @@
from typing import Union
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class UnblockUser(Scaffold):
+class UnblockUser:
async def unblock_user(
- self,
+ self: "pyrogram.Client",
user_id: Union[int, str]
) -> bool:
"""Unblock a user.
diff --git a/pyrogram/methods/users/update_profile.py b/pyrogram/methods/users/update_profile.py
index 4dc81204..c77c8b4b 100644
--- a/pyrogram/methods/users/update_profile.py
+++ b/pyrogram/methods/users/update_profile.py
@@ -16,13 +16,13 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
-class UpdateProfile(Scaffold):
+class UpdateProfile:
async def update_profile(
- self,
+ self: "pyrogram.Client",
first_name: str = None,
last_name: str = None,
bio: str = None
diff --git a/pyrogram/methods/utilities/add_handler.py b/pyrogram/methods/utilities/add_handler.py
index d0ef15ff..12b41bfe 100644
--- a/pyrogram/methods/utilities/add_handler.py
+++ b/pyrogram/methods/utilities/add_handler.py
@@ -16,13 +16,17 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+import pyrogram
from pyrogram.handlers import DisconnectHandler
from pyrogram.handlers.handler import Handler
-from pyrogram.scaffold import Scaffold
-class AddHandler(Scaffold):
- def add_handler(self, handler: "Handler", group: int = 0):
+class AddHandler:
+ def add_handler(
+ self: "pyrogram.Client",
+ handler: "Handler",
+ group: int = 0
+ ):
"""Register an update handler.
You can register multiple handlers, but at most one handler within a group will be used for a single update.
diff --git a/pyrogram/methods/utilities/export_session_string.py b/pyrogram/methods/utilities/export_session_string.py
index cd1741bd..8177c456 100644
--- a/pyrogram/methods/utilities/export_session_string.py
+++ b/pyrogram/methods/utilities/export_session_string.py
@@ -16,11 +16,13 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
-from pyrogram.scaffold import Scaffold
+import pyrogram
-class ExportSessionString(Scaffold):
- async def export_session_string(self):
+class ExportSessionString:
+ async def export_session_string(
+ self: "pyrogram.Client"
+ ):
"""Export the current authorized session as a serialized string.
Session strings are useful for storing in-memory authorized sessions in a portable, serialized string.
diff --git a/pyrogram/methods/utilities/remove_handler.py b/pyrogram/methods/utilities/remove_handler.py
index 12be00b4..fca4a879 100644
--- a/pyrogram/methods/utilities/remove_handler.py
+++ b/pyrogram/methods/utilities/remove_handler.py
@@ -16,13 +16,17 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+import pyrogram
from pyrogram.handlers import DisconnectHandler
from pyrogram.handlers.handler import Handler
-from pyrogram.scaffold import Scaffold
-class RemoveHandler(Scaffold):
- def remove_handler(self, handler: "Handler", group: int = 0):
+class RemoveHandler:
+ def remove_handler(
+ self: "pyrogram.Client",
+ handler: "Handler",
+ group: int = 0
+ ):
"""Remove a previously-registered update handler.
Make sure to provide the right group where the handler was added in. You can use the return value of the
diff --git a/pyrogram/methods/utilities/restart.py b/pyrogram/methods/utilities/restart.py
index e750137f..66c24608 100644
--- a/pyrogram/methods/utilities/restart.py
+++ b/pyrogram/methods/utilities/restart.py
@@ -16,11 +16,14 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
-from pyrogram.scaffold import Scaffold
+import pyrogram
-class Restart(Scaffold):
- async def restart(self, block: bool = True):
+class Restart:
+ async def restart(
+ self: "pyrogram.Client",
+ block: bool = True
+ ):
"""Restart the Client.
This method will first call :meth:`~pyrogram.Client.stop` and then :meth:`~pyrogram.Client.start` in a row in
diff --git a/pyrogram/methods/utilities/run.py b/pyrogram/methods/utilities/run.py
index 40decbbd..6247b936 100644
--- a/pyrogram/methods/utilities/run.py
+++ b/pyrogram/methods/utilities/run.py
@@ -19,12 +19,15 @@
import asyncio
import inspect
+import pyrogram
from pyrogram.methods.utilities.idle import idle
-from pyrogram.scaffold import Scaffold
-class Run(Scaffold):
- def run(self, coroutine=None):
+class Run:
+ def run(
+ self: "pyrogram.Client",
+ coroutine=None
+ ):
"""Start the client, idle the main script and finally stop the client.
This is a convenience method that calls :meth:`~pyrogram.Client.start`, :meth:`~pyrogram.idle` and
diff --git a/pyrogram/methods/utilities/start.py b/pyrogram/methods/utilities/start.py
index a8144d3f..61ce87a2 100644
--- a/pyrogram/methods/utilities/start.py
+++ b/pyrogram/methods/utilities/start.py
@@ -18,14 +18,16 @@
import logging
+import pyrogram
from pyrogram import raw
-from pyrogram.scaffold import Scaffold
log = logging.getLogger(__name__)
-class Start(Scaffold):
- async def start(self):
+class Start:
+ async def start(
+ self: "pyrogram.Client"
+ ):
"""Start the client.
This method connects the client to Telegram and, in case of new sessions, automatically manages the full
diff --git a/pyrogram/methods/utilities/stop.py b/pyrogram/methods/utilities/stop.py
index 3536caa1..92b99fc5 100644
--- a/pyrogram/methods/utilities/stop.py
+++ b/pyrogram/methods/utilities/stop.py
@@ -16,11 +16,14 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
-from pyrogram.scaffold import Scaffold
+import pyrogram
-class Stop(Scaffold):
- async def stop(self, block: bool = True):
+class Stop:
+ async def stop(
+ self: "pyrogram.Client",
+ block: bool = True
+ ):
"""Stop the Client.
This method disconnects the client from Telegram and stops the underlying tasks.
diff --git a/pyrogram/methods/utilities/stop_transmission.py b/pyrogram/methods/utilities/stop_transmission.py
index 70bd58d4..0639eab8 100644
--- a/pyrogram/methods/utilities/stop_transmission.py
+++ b/pyrogram/methods/utilities/stop_transmission.py
@@ -17,10 +17,9 @@
# along with Pyrogram. If not, see .
import pyrogram
-from pyrogram.scaffold import Scaffold
-class StopTransmission(Scaffold):
+class StopTransmission:
def stop_transmission(self):
"""Stop downloading or uploading a file.
diff --git a/pyrogram/scaffold.py b/pyrogram/scaffold.py
deleted file mode 100644
index d87d1522..00000000
--- a/pyrogram/scaffold.py
+++ /dev/null
@@ -1,201 +0,0 @@
-# Pyrogram - Telegram MTProto API Client Library for Python
-# Copyright (C) 2017-present Dan
-#
-# This file is part of Pyrogram.
-#
-# Pyrogram 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.
-#
-# Pyrogram 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 Pyrogram. If not, see .
-
-import asyncio
-import os
-import platform
-import re
-import sys
-from io import StringIO
-from mimetypes import MimeTypes
-from pathlib import Path
-
-import pyrogram
-from pyrogram import __version__, enums
-from pyrogram.parser import Parser
-from pyrogram.session.internals import MsgId
-from .mime_types import mime_types
-
-
-class Scaffold:
- APP_VERSION = f"Pyrogram {__version__}"
- DEVICE_MODEL = f"{platform.python_implementation()} {platform.python_version()}"
- SYSTEM_VERSION = f"{platform.system()} {platform.release()}"
-
- LANG_CODE = "en"
-
- PARENT_DIR = Path(sys.argv[0]).parent
-
- INVITE_LINK_RE = re.compile(r"^(?:https?://)?(?:www\.)?(?:t(?:elegram)?\.(?:org|me|dog)/(?:joinchat/|\+))([\w-]+)$")
- WORKERS = min(32, os.cpu_count() + 4)
- WORKDIR = PARENT_DIR
- CONFIG_FILE = PARENT_DIR / "config.ini"
-
- mimetypes = MimeTypes()
- mimetypes.readfp(StringIO(mime_types))
-
- def __init__(self):
- try:
- asyncio.get_event_loop()
- except RuntimeError:
- # This happens when creating Client instances inside different threads that don't have an event loop.
- # Set the main event loop in this thread.
- asyncio.set_event_loop(pyrogram.main_event_loop)
-
- self.session_name = None
- self.api_id = None
- self.api_hash = None
- self.app_version = None
- self.device_model = None
- self.system_version = None
- self.lang_code = None
- self.ipv6 = None
- self.proxy = None
- self.test_mode = None
- self.bot_token = None
- self.phone_number = None
- self.phone_code = None
- self.password = None
- self.force_sms = None
- self.workers = None
- self.workdir = None
- self.config_file = None
- self.plugins = None
- self.parse_mode = None
- self.no_updates = None
- self.takeout = None
- self.sleep_threshold = None
-
- self.executor = None
-
- self.storage = None
-
- self.rnd_id = MsgId
-
- self.parser = Parser(self)
- self.parse_mode = enums.ParseMode.DEFAULT
-
- self.session = None
-
- self.media_sessions = {}
- self.media_sessions_lock = asyncio.Lock()
-
- self.is_connected = None
- self.is_initialized = None
-
- self.no_updates = None
- self.takeout_id = None
-
- self.dispatcher = None
-
- self.disconnect_handler = None
-
- self.loop = None
-
- async def send(self, *args, **kwargs):
- pass
-
- async def resolve_peer(self, *args, **kwargs):
- pass
-
- def fetch_peers(self, *args, **kwargs):
- pass
-
- def add_handler(self, *args, **kwargs):
- pass
-
- async def save_file(self, *args, **kwargs):
- pass
-
- async def get_messages(self, *args, **kwargs):
- pass
-
- async def get_history(self, *args, **kwargs):
- pass
-
- async def get_dialogs(self, *args, **kwargs):
- pass
-
- async def get_chat_members(self, *args, **kwargs):
- pass
-
- async def get_chat_members_count(self, *args, **kwargs):
- pass
-
- async def answer_inline_query(self, *args, **kwargs):
- pass
-
- async def get_profile_photos(self, *args, **kwargs):
- pass
-
- async def edit_message_text(self, *args, **kwargs):
- pass
-
- async def edit_inline_text(self, *args, **kwargs):
- pass
-
- async def edit_message_media(self, *args, **kwargs):
- pass
-
- async def edit_inline_media(self, *args, **kwargs):
- pass
-
- async def edit_message_reply_markup(self, *args, **kwargs):
- pass
-
- async def edit_inline_reply_markup(self, *args, **kwargs):
- pass
-
- def guess_mime_type(self, *args, **kwargs):
- pass
-
- def guess_extension(self, *args, **kwargs):
- pass
-
- def load_config(self, *args, **kwargs):
- pass
-
- def load_session(self, *args, **kwargs):
- pass
-
- def load_plugins(self, *args, **kwargs):
- pass
-
- async def handle_download(self, *args, **kwargs):
- pass
-
- async def start(self, *args, **kwargs):
- pass
-
- async def stop(self, *args, **kwargs):
- pass
-
- async def connect(self, *args, **kwargs):
- pass
-
- async def authorize(self, *args, **kwargs):
- pass
-
- async def disconnect(self, *args, **kwargs):
- pass
-
- async def initialize(self, *args, **kwargs):
- pass
-
- async def terminate(self, *args, **kwargs):
- pass
diff --git a/pyrogram/types/inline_mode/inline_query_result_audio.py b/pyrogram/types/inline_mode/inline_query_result_audio.py
index 06ab5f94..a3902100 100644
--- a/pyrogram/types/inline_mode/inline_query_result_audio.py
+++ b/pyrogram/types/inline_mode/inline_query_result_audio.py
@@ -16,7 +16,7 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
-from typing import Union, List, Optional
+from typing import List, Optional
import pyrogram
from pyrogram import raw, types, utils, enums
diff --git a/pyrogram/types/messages_and_media/__init__.py b/pyrogram/types/messages_and_media/__init__.py
index 944d7e6e..cbed4f0f 100644
--- a/pyrogram/types/messages_and_media/__init__.py
+++ b/pyrogram/types/messages_and_media/__init__.py
@@ -28,6 +28,7 @@ from .message_entity import MessageEntity
from .photo import Photo
from .poll import Poll
from .poll_option import PollOption
+from .reaction import Reaction
from .sticker import Sticker
from .stripped_thumbnail import StrippedThumbnail
from .thumbnail import Thumbnail
@@ -36,7 +37,6 @@ from .video import Video
from .video_note import VideoNote
from .voice import Voice
from .webpage import WebPage
-from .reaction import Reaction
__all__ = [
"Animation", "Audio", "Contact", "Document", "Game", "Location", "Message", "MessageEntity", "Photo", "Thumbnail",
diff --git a/pyrogram/types/messages_and_media/message.py b/pyrogram/types/messages_and_media/message.py
index 56ffd691..e9f3cab6 100644
--- a/pyrogram/types/messages_and_media/message.py
+++ b/pyrogram/types/messages_and_media/message.py
@@ -19,7 +19,7 @@
import logging
from datetime import datetime
from functools import partial
-from typing import List, Match, Union, BinaryIO, Optional
+from typing import List, Match, Union, BinaryIO, Optional, Callable
import pyrogram
from pyrogram import raw, enums
@@ -867,7 +867,7 @@ class Message(Object, Update):
reply_to_message_id: int = None,
schedule_date: datetime = None,
protect_content: bool = None,
- reply_markup = None
+ reply_markup=None
) -> "Message":
"""Bound method *reply_text* of :obj:`~pyrogram.types.Message`.
@@ -970,7 +970,7 @@ class Message(Object, Update):
"types.ForceReply"
] = None,
reply_to_message_id: int = None,
- progress: callable = None,
+ progress: Callable = None,
progress_args: tuple = ()
) -> "Message":
"""Bound method *reply_animation* :obj:`~pyrogram.types.Message`.
@@ -1037,7 +1037,7 @@ class Message(Object, Update):
Additional interface options. An object for an inline keyboard, custom reply keyboard,
instructions to remove reply keyboard or to force a reply from the user.
- progress (``callable``, *optional*):
+ progress (``Callable``, *optional*):
Pass a callback function to view the file transmission progress.
The function must take *(current, total)* as positional arguments (look at Other Parameters below for a
detailed description) and will be called back each time a new file chunk has been successfully
@@ -1109,7 +1109,7 @@ class Message(Object, Update):
"types.ReplyKeyboardRemove",
"types.ForceReply"
] = None,
- progress: callable = None,
+ progress: Callable = None,
progress_args: tuple = ()
) -> "Message":
"""Bound method *reply_audio* of :obj:`~pyrogram.types.Message`.
@@ -1176,7 +1176,7 @@ class Message(Object, Update):
Additional interface options. An object for an inline keyboard, custom reply keyboard,
instructions to remove reply keyboard or to force a reply from the user.
- progress (``callable``, *optional*):
+ progress (``Callable``, *optional*):
Pass a callback function to view the file transmission progress.
The function must take *(current, total)* as positional arguments (look at Other Parameters below for a
detailed description) and will be called back each time a new file chunk has been successfully
@@ -1457,7 +1457,7 @@ class Message(Object, Update):
"types.ReplyKeyboardRemove",
"types.ForceReply"
] = None,
- progress: callable = None,
+ progress: Callable = None,
progress_args: tuple = ()
) -> "Message":
"""Bound method *reply_document* of :obj:`~pyrogram.types.Message`.
@@ -1527,7 +1527,7 @@ class Message(Object, Update):
Additional interface options. An object for an inline keyboard, custom reply keyboard,
instructions to remove reply keyboard or to force a reply from the user.
- progress (``callable``, *optional*):
+ progress (``Callable``, *optional*):
Pass a callback function to view the file transmission progress.
The function must take *(current, total)* as positional arguments (look at Other Parameters below for a
detailed description) and will be called back each time a new file chunk has been successfully
@@ -1865,7 +1865,7 @@ class Message(Object, Update):
"types.ReplyKeyboardRemove",
"types.ForceReply"
] = None,
- progress: callable = None,
+ progress: Callable = None,
progress_args: tuple = ()
) -> "Message":
"""Bound method *reply_photo* of :obj:`~pyrogram.types.Message`.
@@ -1922,7 +1922,7 @@ class Message(Object, Update):
Additional interface options. An object for an inline keyboard, custom reply keyboard,
instructions to remove reply keyboard or to force a reply from the user.
- progress (``callable``, *optional*):
+ progress (``Callable``, *optional*):
Pass a callback function to view the file transmission progress.
The function must take *(current, total)* as positional arguments (look at Other Parameters below for a
detailed description) and will be called back each time a new file chunk has been successfully
@@ -2088,7 +2088,7 @@ class Message(Object, Update):
"types.ReplyKeyboardRemove",
"types.ForceReply"
] = None,
- progress: callable = None,
+ progress: Callable = None,
progress_args: tuple = ()
) -> "Message":
"""Bound method *reply_sticker* of :obj:`~pyrogram.types.Message`.
@@ -2130,7 +2130,7 @@ class Message(Object, Update):
Additional interface options. An object for an inline keyboard, custom reply keyboard,
instructions to remove reply keyboard or to force a reply from the user.
- progress (``callable``, *optional*):
+ progress (``Callable``, *optional*):
Pass a callback function to view the file transmission progress.
The function must take *(current, total)* as positional arguments (look at Other Parameters below for a
detailed description) and will be called back each time a new file chunk has been successfully
@@ -2295,7 +2295,7 @@ class Message(Object, Update):
"types.ReplyKeyboardRemove",
"types.ForceReply"
] = None,
- progress: callable = None,
+ progress: Callable = None,
progress_args: tuple = ()
) -> "Message":
"""Bound method *reply_video* of :obj:`~pyrogram.types.Message`.
@@ -2370,7 +2370,7 @@ class Message(Object, Update):
Additional interface options. An object for an inline keyboard, custom reply keyboard,
instructions to remove reply keyboard or to force a reply from the user.
- progress (``callable``, *optional*):
+ progress (``Callable``, *optional*):
Pass a callback function to view the file transmission progress.
The function must take *(current, total)* as positional arguments (look at Other Parameters below for a
detailed description) and will be called back each time a new file chunk has been successfully
@@ -2440,7 +2440,7 @@ class Message(Object, Update):
"types.ReplyKeyboardRemove",
"types.ForceReply"
] = None,
- progress: callable = None,
+ progress: Callable = None,
progress_args: tuple = ()
) -> "Message":
"""Bound method *reply_video_note* of :obj:`~pyrogram.types.Message`.
@@ -2494,7 +2494,7 @@ class Message(Object, Update):
Additional interface options. An object for an inline keyboard, custom reply keyboard,
instructions to remove reply keyboard or to force a reply from the user.
- progress (``callable``, *optional*):
+ progress (``Callable``, *optional*):
Pass a callback function to view the file transmission progress.
The function must take *(current, total)* as positional arguments (look at Other Parameters below for a
detailed description) and will be called back each time a new file chunk has been successfully
@@ -2559,7 +2559,7 @@ class Message(Object, Update):
"types.ReplyKeyboardRemove",
"types.ForceReply"
] = None,
- progress: callable = None,
+ progress: Callable = None,
progress_args: tuple = ()
) -> "Message":
"""Bound method *reply_voice* of :obj:`~pyrogram.types.Message`.
@@ -2614,7 +2614,7 @@ class Message(Object, Update):
Additional interface options. An object for an inline keyboard, custom reply keyboard,
instructions to remove reply keyboard or to force a reply from the user.
- progress (``callable``, *optional*):
+ progress (``Callable``, *optional*):
Pass a callback function to view the file transmission progress.
The function must take *(current, total)* as positional arguments (look at Other Parameters below for a
detailed description) and will be called back each time a new file chunk has been successfully
@@ -3321,7 +3321,7 @@ class Message(Object, Update):
self,
file_name: str = "",
block: bool = True,
- progress: callable = None,
+ progress: Callable = None,
progress_args: tuple = ()
) -> str:
"""Bound method *download* of :obj:`~pyrogram.types.Message`.
@@ -3348,7 +3348,7 @@ class Message(Object, Update):
Blocks the code execution until the file has been downloaded.
Defaults to True.
- progress (``callable``, *optional*):
+ progress (``Callable``, *optional*):
Pass a callback function to view the file transmission progress.
The function must take *(current, total)* as positional arguments (look at Other Parameters below for a
detailed description) and will be called back each time a new file chunk has been successfully
diff --git a/pyrogram/types/messages_and_media/video_note.py b/pyrogram/types/messages_and_media/video_note.py
index 450d536d..3e6b40d0 100644
--- a/pyrogram/types/messages_and_media/video_note.py
+++ b/pyrogram/types/messages_and_media/video_note.py
@@ -16,6 +16,7 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+from datetime import datetime
from typing import List
import pyrogram
@@ -23,7 +24,6 @@ from pyrogram import raw, utils
from pyrogram import types
from pyrogram.file_id import FileId, FileType, FileUniqueId, FileUniqueType
from ..object import Object
-from datetime import datetime
class VideoNote(Object):
diff --git a/pyrogram/types/object.py b/pyrogram/types/object.py
index 601bcd6e..caf18373 100644
--- a/pyrogram/types/object.py
+++ b/pyrogram/types/object.py
@@ -24,12 +24,7 @@ from json import dumps
import pyrogram
-class Meta(type, metaclass=type("", (type,), {"__str__": lambda _: "~hi"})):
- def __str__(self):
- return f""
-
-
-class Object(metaclass=Meta):
+class Object:
def __init__(self, client: "pyrogram.Client" = None):
self._client = client
diff --git a/pyrogram/types/user_and_chats/chat_event.py b/pyrogram/types/user_and_chats/chat_event.py
index fa539be8..a5292c64 100644
--- a/pyrogram/types/user_and_chats/chat_event.py
+++ b/pyrogram/types/user_and_chats/chat_event.py
@@ -254,10 +254,10 @@ class ChatEvent(Object):
@staticmethod
async def _parse(
- client: "pyrogram.Client",
- event: "raw.base.ChannelAdminLogEvent",
- users: List["raw.base.User"],
- chats: List["raw.base.Chat"]
+ client: "pyrogram.Client",
+ event: "raw.base.ChannelAdminLogEvent",
+ users: List["raw.base.User"],
+ chats: List["raw.base.Chat"]
):
users = {i.id: i for i in users}
chats = {i.id: i for i in chats}
diff --git a/pyrogram/types/user_and_chats/chat_member.py b/pyrogram/types/user_and_chats/chat_member.py
index 06f45b8d..9b585d7c 100644
--- a/pyrogram/types/user_and_chats/chat_member.py
+++ b/pyrogram/types/user_and_chats/chat_member.py
@@ -108,8 +108,8 @@ class ChatMember(Object):
@staticmethod
def _parse(
- client: "pyrogram.Client",
- member: Union["raw.base.ChatParticipant", "raw.base.ChannelParticipant"],
+ client: "pyrogram.Client",
+ member: Union["raw.base.ChatParticipant", "raw.base.ChannelParticipant"],
users: Dict[int, "raw.base.User"],
chats: Dict[int, "raw.base.Chat"]
) -> "ChatMember":
diff --git a/pyrogram/utils.py b/pyrogram/utils.py
index 60f6ca9d..b3f04e60 100644
--- a/pyrogram/utils.py
+++ b/pyrogram/utils.py
@@ -297,7 +297,7 @@ async def parse_text_entities(
text: str,
parse_mode: enums.ParseMode,
entities: List["types.MessageEntity"]
-) -> Dict[str, raw.base.MessageEntity]:
+) -> Dict[str, Union[str, List[raw.base.MessageEntity]]]:
if entities:
# Inject the client instance because parsing user mentions requires it
for entity in entities: