2
0
mirror of https://github.com/pyrogram/pyrogram synced 2025-08-30 13:57:54 +00:00

Merge develop -> asyncio

This commit is contained in:
Dan
2019-08-16 22:38:11 +02:00
13 changed files with 75 additions and 2460 deletions

View File

@@ -1,7 +1,6 @@
---
name: Bug Report
about: Create a bug report affecting the library
labels: "bug"
---
<!-- WARNING: Ignoring this template could lead to the issue being closed as incomplete -->

View File

@@ -56,7 +56,7 @@ ground up in Python and C. It enables you to easily create custom apps for both
### Requirements
- Python 3.4 or higher.
- Python 3.5.3 or higher.
- A [Telegram API key](https://docs.pyrogram.org/intro/setup#api-keys).
### Installing

View File

@@ -201,6 +201,7 @@ def pyrogram_api():
iter_dialogs
get_dialogs_count
update_chat_username
get_common_chats
archive_chats
unarchive_chats
add_chat_members

View File

@@ -9,7 +9,7 @@ We recommend using the latest versions of both Python 3 and pip.
.. important::
Pyrogram supports **Python 3** only, starting from version 3.4. **PyPy** is supported too.
Pyrogram supports **Python 3** only, starting from version 3.5.3. **PyPy** is supported too.
Install Pyrogram
----------------

View File

@@ -291,8 +291,11 @@ Load/Unload Plugins at Runtime
In the previous section we've explained how to specify which plugins to load and which to ignore before your Client
starts. Here we'll show, instead, how to unload and load again a previously registered plugin at runtime.
Each function decorated with the usual ``on_message`` decorator (or any other decorator that deals with Telegram updates
) will be modified in such a way that, when you reference them later on, they will be actually pointing to a tuple of
Each function decorated with the usual ``on_message`` decorator (or any other decorator that deals with Telegram
updates) will be modified in such a way that a special ``handler`` attribute pointing to a tuple of
*(handler: Handler, group: int)* is attached to the function object itself.
when you reference them later on, they will be actually pointing to a tuple of
*(handler: Handler, group: int)*. The actual callback function is therefore stored inside the handler's *callback*
attribute. Here's an example:

View File

@@ -24,7 +24,7 @@ what you should do next:
- **Windows**: Install `Visual C++ 2015 Build Tools <http://landinghub.visualstudio.com/visual-cpp-build-tools>`_.
- **macOS**: A pop-up will automatically ask you to install the command line developer tools.
- **Linux**: Install a proper C compiler (``gcc``, ``clang``) and the Python header files (``python3-dev``).
- **Termux (Android)**: Install ``clang`` and ``python-dev`` packages.
- **Termux (Android)**: Install ``clang`` package.
.. _TgCrypto: https://github.com/pyrogram/tgcrypto

View File

@@ -16,19 +16,10 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
import sys
if sys.version_info[:3] in [(3, 5, 0), (3, 5, 1), (3, 5, 2)]:
from .vendor import typing
# Monkey patch the standard "typing" module because Python versions from 3.5.0 to 3.5.2 have a broken one.
sys.modules["typing"] = typing
__version__ = "0.16.0.asyncio-dev"
__license__ = "GNU Lesser General Public License v3 or later (LGPLv3+)"
__copyright__ = "Copyright (C) 2017-2019 Dan <https://github.com/delivrance>"
from .errors import RPCError
from .client import *
from .client.handlers import *
from .client.types import *

View File

@@ -18,6 +18,7 @@
from .block_user import BlockUser
from .delete_profile_photos import DeleteProfilePhotos
from .get_common_chats import GetCommonChats
from .get_me import GetMe
from .get_profile_photos import GetProfilePhotos
from .get_profile_photos_count import GetProfilePhotosCount
@@ -30,6 +31,7 @@ from .update_username import UpdateUsername
class Users(
BlockUser,
GetCommonChats,
GetProfilePhotos,
SetProfilePhoto,
DeleteProfilePhotos,

View File

@@ -0,0 +1,62 @@
# Pyrogram - Telegram MTProto API Client Library for Python
# Copyright (C) 2017-2019 Dan Tès <https://github.com/delivrance>
#
# 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 <http://www.gnu.org/licenses/>.
from typing import Union
import pyrogram
from pyrogram.api import functions, types
from ...ext import BaseClient
class GetCommonChats(BaseClient):
def get_common_chats(self, user_id: Union[int, str]) -> list:
"""Get the common chats you have with a user.
Parameters:
user_id (``int`` | ``str``):
Unique identifier (int) or username (str) of the target chat.
For your personal cloud (Saved Messages) you can simply use "me" or "self".
For a contact that exists in your Telegram address book you can use his phone number (str).
Returns:
List of :obj:`Chat`: On success, a list of the common chats is returned.
Raises:
ValueError: If the user_id doesn't belong to a user.
Example:
.. code-block:: python
common = app.get_common_chats("haskell")
print(common)
"""
peer = self.resolve_peer(user_id)
if isinstance(peer, types.InputPeerUser):
r = self.send(
functions.messages.GetCommonChats(
user_id=peer,
max_id=0,
limit=100,
)
)
return pyrogram.List([pyrogram.Chat._parse_chat(self, x) for x in r.chats])
raise ValueError('The user_id "{}" doesn\'t belong to a user'.format(user_id))

View File

@@ -1,19 +0,0 @@
# Pyrogram - Telegram MTProto API Client Library for Python
# Copyright (C) 2017-2019 Dan Tès <https://github.com/delivrance>
#
# 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 <http://www.gnu.org/licenses/>.
from .typing import typing

View File

@@ -1,17 +0,0 @@
# Pyrogram - Telegram MTProto API Client Library for Python
# Copyright (C) 2017-2019 Dan Tès <https://github.com/delivrance>
#
# 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 <http://www.gnu.org/licenses/>.

File diff suppressed because it is too large Load Diff

View File

@@ -146,7 +146,6 @@ setup(
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
@@ -168,7 +167,7 @@ setup(
"Source": "https://github.com/pyrogram/pyrogram",
"Documentation": "https://docs.pyrogram.org",
},
python_requires="~=3.4",
python_requires="~=3.5",
packages=find_packages(exclude=["compiler*"]),
package_data={
"pyrogram.client.ext": ["mime.types"],