mirror of
https://github.com/pyrogram/pyrogram
synced 2025-09-01 14:55:12 +00:00
Merge branch 'develop' into asyncio
# Conflicts: # pyrogram/__init__.py # pyrogram/client/client.py # pyrogram/session/session.py
This commit is contained in:
@@ -16,44 +16,22 @@
|
||||
# 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 asyncio
|
||||
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.12.0.develop"
|
||||
__license__ = "GNU Lesser General Public License v3 or later (LGPLv3+)"
|
||||
__copyright__ = "Copyright (C) 2017-2019 Dan Tès <https://github.com/delivrance>".replace(
|
||||
"\xe8", "e" if sys.getfilesystemencoding() != "utf-8" else "\xe8"
|
||||
)
|
||||
|
||||
try:
|
||||
import uvloop
|
||||
except ImportError:
|
||||
pass
|
||||
else:
|
||||
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
|
||||
uvloop.install()
|
||||
|
||||
__copyright__ = "Copyright (C) 2017-2019 Dan Tès <https://github.com/delivrance>".replace(
|
||||
"\xe8",
|
||||
"e" if sys.getfilesystemencoding() != "utf-8" else "\xe8"
|
||||
)
|
||||
__license__ = "GNU Lesser General Public License v3 or later (LGPLv3+)"
|
||||
__version__ = "0.12.0.asyncio"
|
||||
|
||||
from .api.errors import Error
|
||||
from .client.types import (
|
||||
Audio, Chat, ChatMember, ChatMembers, ChatPhoto, Contact, Document, InputMedia, InputMediaPhoto,
|
||||
InputMediaVideo, InputMediaDocument, InputMediaAudio, InputMediaAnimation, InputPhoneContact,
|
||||
Location, Message, MessageEntity, Dialog, Dialogs, Photo, PhotoSize, Sticker, User, UserStatus,
|
||||
UserProfilePhotos, Venue, Animation, Video, VideoNote, Voice, CallbackQuery, Messages, ForceReply,
|
||||
InlineKeyboardButton, InlineKeyboardMarkup, KeyboardButton, ReplyKeyboardMarkup, ReplyKeyboardRemove,
|
||||
InlineQuery, InlineQueryResult, InlineQueryResultArticle, InputMessageContent, InputTextMessageContent,
|
||||
InlineKeyboardButton, InlineKeyboardMarkup, KeyboardButton, ReplyKeyboardMarkup, ReplyKeyboardRemove, Poll,
|
||||
PollOption, ChatPreview, StopPropagation, ContinuePropagation, Game, CallbackGame, GameHighScore, GameHighScores,
|
||||
ChatPermissions
|
||||
)
|
||||
from .client import (
|
||||
Client, ChatAction, ParseMode, Emoji,
|
||||
MessageHandler, DeletedMessagesHandler, CallbackQueryHandler,
|
||||
RawUpdateHandler, DisconnectHandler, UserStatusHandler, Filters,
|
||||
InlineQueryHandler
|
||||
)
|
||||
from .errors import RPCError
|
||||
from .client import *
|
||||
from .client.handlers import *
|
||||
from .client.types import *
|
||||
|
@@ -39,18 +39,9 @@ class Object:
|
||||
def __str__(self) -> str:
|
||||
return dumps(self, indent=4, default=default, ensure_ascii=False)
|
||||
|
||||
def __bool__(self) -> bool:
|
||||
return True
|
||||
|
||||
def __eq__(self, other) -> bool:
|
||||
return self.__dict__ == other.__dict__
|
||||
|
||||
def __len__(self) -> int:
|
||||
return len(self.write())
|
||||
|
||||
def __call__(self):
|
||||
pass
|
||||
|
||||
def __getitem__(self, item):
|
||||
return getattr(self, item)
|
||||
|
||||
|
@@ -19,9 +19,7 @@
|
||||
from .client import Client
|
||||
from .ext import BaseClient, ChatAction, Emoji, ParseMode
|
||||
from .filters import Filters
|
||||
from .handlers import (
|
||||
MessageHandler, DeletedMessagesHandler,
|
||||
CallbackQueryHandler, RawUpdateHandler,
|
||||
DisconnectHandler, UserStatusHandler,
|
||||
InlineQueryHandler
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"Client", "BaseClient", "ChatAction", "Emoji", "ParseMode", "Filters",
|
||||
]
|
||||
|
@@ -41,7 +41,7 @@ from typing import Union, List
|
||||
|
||||
from pyrogram.api import functions, types
|
||||
from pyrogram.api.core import Object
|
||||
from pyrogram.api.errors import (
|
||||
from pyrogram.errors import (
|
||||
PhoneMigrate, NetworkMigrate, PhoneNumberInvalid,
|
||||
PhoneNumberUnoccupied, PhoneCodeInvalid, PhoneCodeHashEmpty,
|
||||
PhoneCodeExpired, PhoneCodeEmpty, SessionPasswordNeeded,
|
||||
@@ -49,14 +49,13 @@ from pyrogram.api.errors import (
|
||||
VolumeLocNotFound, UserMigrate, FileIdInvalid, ChannelPrivate, PhoneNumberOccupied,
|
||||
PasswordRecoveryNa, PasswordEmpty
|
||||
)
|
||||
from pyrogram.client.handlers import DisconnectHandler
|
||||
from pyrogram.client.handlers.handler import Handler
|
||||
from pyrogram.client.methods.password.utils import compute_check
|
||||
from pyrogram.crypto import AES
|
||||
from pyrogram.session import Auth, Session
|
||||
from .dispatcher import Dispatcher
|
||||
from .ext import BaseClient, Syncer, utils
|
||||
from .ext.utils import ainput
|
||||
from .handlers import DisconnectHandler
|
||||
from .ext import utils, Syncer, BaseClient, Dispatcher
|
||||
from .methods import Methods
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
@@ -274,7 +273,7 @@ class Client(Methods, BaseClient):
|
||||
Requires no parameters.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
``ConnectionError`` in case you try to start an already started Client.
|
||||
"""
|
||||
if self.is_started:
|
||||
@@ -436,7 +435,7 @@ class Client(Methods, BaseClient):
|
||||
Pass a coroutine to run it until is complete.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
run = asyncio.get_event_loop().run_until_complete
|
||||
|
||||
@@ -1044,7 +1043,7 @@ class Client(Methods, BaseClient):
|
||||
Timeout in seconds.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
if not self.is_started:
|
||||
raise ConnectionError("Client has not been started")
|
||||
@@ -1334,7 +1333,7 @@ class Client(Methods, BaseClient):
|
||||
On success, the resolved peer id is returned in form of an InputPeer object.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
``KeyError`` in case the peer doesn't exist in the internal database.
|
||||
"""
|
||||
try:
|
||||
@@ -1437,7 +1436,7 @@ class Client(Methods, BaseClient):
|
||||
On success, the uploaded file is returned in form of an InputFile object.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
|
||||
async def worker(session):
|
||||
|
@@ -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 .dispatcher import Dispatcher
|
@@ -18,6 +18,7 @@
|
||||
|
||||
from .base_client import BaseClient
|
||||
from .chat_action import ChatAction
|
||||
from .dispatcher import Dispatcher
|
||||
from .emoji import Emoji
|
||||
from .parse_mode import ParseMode
|
||||
from .syncer import Syncer
|
||||
|
@@ -22,7 +22,6 @@ from collections import OrderedDict
|
||||
|
||||
import pyrogram
|
||||
from pyrogram.api import types
|
||||
from ..ext import utils
|
||||
from ..handlers import (
|
||||
CallbackQueryHandler, MessageHandler, DeletedMessagesHandler,
|
||||
UserStatusHandler, RawUpdateHandler, InlineQueryHandler
|
@@ -23,3 +23,8 @@ from .inline_query_handler import InlineQueryHandler
|
||||
from .message_handler import MessageHandler
|
||||
from .raw_update_handler import RawUpdateHandler
|
||||
from .user_status_handler import UserStatusHandler
|
||||
|
||||
__all__ = [
|
||||
"MessageHandler", "DeletedMessagesHandler", "CallbackQueryHandler", "RawUpdateHandler", "DisconnectHandler",
|
||||
"UserStatusHandler", "InlineQueryHandler"
|
||||
]
|
||||
|
@@ -57,7 +57,7 @@ class AnswerCallbackQuery(BaseClient):
|
||||
True, on success.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
return await self.send(
|
||||
functions.messages.SetBotCallbackAnswer(
|
||||
|
@@ -52,7 +52,7 @@ class GetGameHighScores(BaseClient):
|
||||
On success, a :obj:`GameHighScores <pyrogram.GameHighScores>` object is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
# TODO: inline_message_id
|
||||
|
||||
|
@@ -19,7 +19,7 @@
|
||||
from typing import Union
|
||||
|
||||
from pyrogram.api import functions, types
|
||||
from pyrogram.api.errors import UnknownError
|
||||
from pyrogram.errors import UnknownError
|
||||
from pyrogram.client.ext import BaseClient
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ class GetInlineBotResults(BaseClient):
|
||||
On Success, :obj:`BotResults <pyrogram.api.types.messages.BotResults>` is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
``TimeoutError`` if the bot fails to answer within 10 seconds
|
||||
"""
|
||||
# TODO: Don't return the raw type
|
||||
|
@@ -49,7 +49,7 @@ class RequestCallbackAnswer(BaseClient):
|
||||
or as an alert.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
``TimeoutError`` if the bot fails to answer within 10 seconds.
|
||||
"""
|
||||
return await self.send(
|
||||
|
@@ -63,7 +63,7 @@ class SendGame(BaseClient):
|
||||
On success, the sent :obj:`Message` is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
r = await self.send(
|
||||
functions.messages.SendMedia(
|
||||
|
@@ -61,7 +61,7 @@ class SendInlineBotResult(BaseClient):
|
||||
On success, the sent Message is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
return await self.send(
|
||||
functions.messages.SendInlineBotResult(
|
||||
|
@@ -67,7 +67,7 @@ class SetGameScore(BaseClient):
|
||||
otherwise returns True.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
:class:`BotScoreNotModified` if the new score is not greater than the user's current score in the chat and force is False.
|
||||
"""
|
||||
r = await self.send(
|
||||
|
@@ -43,7 +43,7 @@ class DeleteChatPhoto(BaseClient):
|
||||
True on success.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
``ValueError`` if a chat_id belongs to user.
|
||||
"""
|
||||
peer = await self.resolve_peer(chat_id)
|
||||
|
@@ -40,7 +40,7 @@ class ExportChatInviteLink(BaseClient):
|
||||
On success, the exported invite link as string is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
peer = await self.resolve_peer(chat_id)
|
||||
|
||||
|
@@ -42,7 +42,7 @@ class GetChat(BaseClient):
|
||||
On success, a :obj:`Chat <pyrogram.Chat>` object is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
``ValueError`` in case the chat invite link refers to a chat you haven't joined yet.
|
||||
"""
|
||||
match = self.INVITE_LINK_RE.match(str(chat_id))
|
||||
|
@@ -19,7 +19,8 @@
|
||||
from typing import Union
|
||||
|
||||
import pyrogram
|
||||
from pyrogram.api import functions, types, errors
|
||||
from pyrogram.api import functions, types
|
||||
from pyrogram.errors import UserNotParticipant
|
||||
from ...ext import BaseClient
|
||||
|
||||
|
||||
@@ -44,7 +45,7 @@ class GetChatMember(BaseClient):
|
||||
On success, a :obj:`ChatMember <pyrogram.ChatMember>` object is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
chat_id = await self.resolve_peer(chat_id)
|
||||
user_id = await self.resolve_peer(user_id)
|
||||
@@ -60,7 +61,7 @@ class GetChatMember(BaseClient):
|
||||
if member.user.is_self:
|
||||
return member
|
||||
else:
|
||||
raise errors.UserNotParticipant
|
||||
raise UserNotParticipant
|
||||
elif isinstance(chat_id, types.InputPeerChannel):
|
||||
r = await self.send(
|
||||
functions.channels.GetParticipant(
|
||||
|
@@ -84,7 +84,7 @@ class GetChatMembers(BaseClient):
|
||||
On success, a :obj:`ChatMembers` object is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
``ValueError`` if you used an invalid filter or a chat_id that belongs to a user.
|
||||
"""
|
||||
peer = await self.resolve_peer(chat_id)
|
||||
|
@@ -37,7 +37,7 @@ class GetChatMembersCount(BaseClient):
|
||||
On success, an integer is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
``ValueError`` if a chat_id belongs to user.
|
||||
"""
|
||||
peer = await self.resolve_peer(chat_id)
|
||||
|
@@ -38,7 +38,7 @@ class GetChatPreview(BaseClient):
|
||||
Either :obj:`Chat` or :obj:`ChatPreview`, depending on whether you already joined the chat or not.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
``ValueError`` in case of an invalid invite_link.
|
||||
"""
|
||||
match = self.INVITE_LINK_RE.match(invite_link)
|
||||
|
@@ -21,7 +21,7 @@ import logging
|
||||
|
||||
import pyrogram
|
||||
from pyrogram.api import functions, types
|
||||
from pyrogram.api.errors import FloodWait
|
||||
from pyrogram.errors import FloodWait
|
||||
from ...ext import BaseClient
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
@@ -56,7 +56,7 @@ class GetDialogs(BaseClient):
|
||||
On success, a :obj:`Dialogs` object is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
|
||||
while True:
|
||||
|
@@ -81,7 +81,7 @@ class IterChatMembers(BaseClient):
|
||||
A generator yielding :obj:`ChatMember <pyrogram.ChatMember>` objects.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
current = 0
|
||||
yielded = set()
|
||||
|
@@ -49,7 +49,7 @@ class IterDialogs(BaseClient):
|
||||
A generator yielding :obj:`Dialog <pyrogram.Dialog>` objects.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
current = 0
|
||||
total = limit or (1 << 31) - 1
|
||||
|
@@ -37,7 +37,7 @@ class JoinChat(BaseClient):
|
||||
On success, a :obj:`Chat <pyrogram.Chat>` object is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
match = self.INVITE_LINK_RE.match(chat_id)
|
||||
|
||||
|
@@ -57,7 +57,7 @@ class KickChatMember(BaseClient):
|
||||
On success, either True or a service :obj:`Message <pyrogram.Message>` will be returned (when applicable).
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
chat_peer = await self.resolve_peer(chat_id)
|
||||
user_peer = await self.resolve_peer(user_id)
|
||||
|
@@ -39,7 +39,7 @@ class LeaveChat(BaseClient):
|
||||
Deletes the group chat dialog after leaving (for simple group chats, not supergroups).
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
peer = await self.resolve_peer(chat_id)
|
||||
|
||||
|
@@ -48,7 +48,7 @@ class PinChatMessage(BaseClient):
|
||||
True on success.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
await self.send(
|
||||
functions.messages.UpdatePinnedMessage(
|
||||
|
@@ -79,7 +79,7 @@ class PromoteChatMember(BaseClient):
|
||||
True on success.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
await self.send(
|
||||
functions.channels.EditAdmin(
|
||||
|
@@ -73,7 +73,7 @@ class RestrictChat(BaseClient):
|
||||
On success, a :obj:`Chat <pyrogram.Chat>` object is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
send_messages = True
|
||||
send_media = True
|
||||
|
@@ -86,7 +86,7 @@ class RestrictChatMember(BaseClient):
|
||||
On success, a :obj:`Chat <pyrogram.Chat>` object is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
send_messages = True
|
||||
send_media = True
|
||||
|
@@ -42,7 +42,7 @@ class SetChatDescription(BaseClient):
|
||||
True on success.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
``ValueError`` if a chat_id doesn't belong to a supergroup or a channel.
|
||||
"""
|
||||
peer = await self.resolve_peer(chat_id)
|
||||
|
@@ -50,7 +50,7 @@ class SetChatPhoto(BaseClient):
|
||||
True on success.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
``ValueError`` if a chat_id belongs to user.
|
||||
"""
|
||||
peer = await self.resolve_peer(chat_id)
|
||||
|
@@ -47,7 +47,7 @@ class SetChatTitle(BaseClient):
|
||||
True on success.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
``ValueError`` if a chat_id belongs to user.
|
||||
"""
|
||||
peer = await self.resolve_peer(chat_id)
|
||||
|
@@ -44,7 +44,7 @@ class UnbanChatMember(BaseClient):
|
||||
True on success.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
await self.send(
|
||||
functions.channels.EditBanned(
|
||||
|
@@ -39,7 +39,7 @@ class UnpinChatMessage(BaseClient):
|
||||
True on success.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
await self.send(
|
||||
functions.messages.UpdatePinnedMessage(
|
||||
|
@@ -42,7 +42,7 @@ class UpdateChatUsername(BaseClient):
|
||||
True on success.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
``ValueError`` if a chat_id belongs to a user or chat.
|
||||
"""
|
||||
|
||||
|
@@ -38,7 +38,7 @@ class AddContacts(BaseClient):
|
||||
On success, the added contacts are returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
imported_contacts = await self.send(
|
||||
functions.contacts.ImportContacts(
|
||||
|
@@ -19,7 +19,7 @@
|
||||
from typing import List
|
||||
|
||||
from pyrogram.api import functions, types
|
||||
from pyrogram.api.errors import PeerIdInvalid
|
||||
from pyrogram.errors import PeerIdInvalid
|
||||
from ...ext import BaseClient
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ class DeleteContacts(BaseClient):
|
||||
True on success.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
contacts = []
|
||||
|
||||
|
@@ -21,7 +21,7 @@ import logging
|
||||
|
||||
import pyrogram
|
||||
from pyrogram.api import functions
|
||||
from pyrogram.api.errors import FloodWait
|
||||
from pyrogram.errors import FloodWait
|
||||
from ...ext import BaseClient
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
@@ -35,7 +35,7 @@ class GetContacts(BaseClient):
|
||||
On success, a list of :obj:`User` objects is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
while True:
|
||||
try:
|
||||
|
@@ -45,7 +45,7 @@ class ClosePoll(BaseClient):
|
||||
On success, True is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
poll = self.get_messages(chat_id, message_id).poll
|
||||
|
||||
|
@@ -31,14 +31,6 @@ class DeleteMessages(BaseClient):
|
||||
) -> bool:
|
||||
"""Use this method to delete messages, including service messages.
|
||||
|
||||
Deleting messages have the following limitations:
|
||||
|
||||
- A message can only be deleted if it was sent less than 48 hours ago.
|
||||
- Users can delete outgoing messages in groups and supergroups.
|
||||
- Users granted *can_post_messages* permissions can delete outgoing messages in channels.
|
||||
- If the user is an administrator of a group, it can delete any message there.
|
||||
- If the user has *can_delete_messages* permission in a supergroup or a channel, it can delete any message there.
|
||||
|
||||
Args:
|
||||
chat_id (``int`` | ``str``):
|
||||
Unique identifier (int) or username (str) of the target chat.
|
||||
@@ -59,7 +51,7 @@ class DeleteMessages(BaseClient):
|
||||
True on success.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
peer = await self.resolve_peer(chat_id)
|
||||
message_ids = list(message_ids) if not isinstance(message_ids, int) else [message_ids]
|
||||
|
@@ -77,7 +77,7 @@ class DownloadMedia(BaseClient):
|
||||
In case the download is deliberately stopped with :meth:`stop_transmission`, None is returned as well.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
``ValueError`` if the message doesn't contain any downloadable media
|
||||
"""
|
||||
error_message = "This message doesn't contain any downloadable media"
|
||||
|
@@ -58,7 +58,7 @@ class EditMessageCaption(BaseClient):
|
||||
On success, the edited :obj:`Message <pyrogram.Message>` is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
style = self.html if parse_mode.lower() == "html" else self.markdown
|
||||
|
||||
|
@@ -23,7 +23,7 @@ from typing import Union
|
||||
|
||||
import pyrogram
|
||||
from pyrogram.api import functions, types
|
||||
from pyrogram.api.errors import FileIdInvalid
|
||||
from pyrogram.errors import FileIdInvalid
|
||||
from pyrogram.client.ext import BaseClient, utils
|
||||
from pyrogram.client.types import (
|
||||
InputMediaPhoto, InputMediaVideo, InputMediaAudio,
|
||||
@@ -66,7 +66,7 @@ class EditMessageMedia(BaseClient):
|
||||
On success, the edited :obj:`Message <pyrogram.Message>` is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
style = self.html if media.parse_mode.lower() == "html" else self.markdown
|
||||
caption = media.caption
|
||||
|
@@ -49,7 +49,7 @@ class EditMessageReplyMarkup(BaseClient):
|
||||
:obj:`Message <pyrogram.Message>` is returned, otherwise True is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
|
||||
r = await self.send(
|
||||
|
@@ -62,7 +62,7 @@ class EditMessageText(BaseClient):
|
||||
On success, the edited :obj:`Message <pyrogram.Message>` is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
style = self.html if parse_mode.lower() == "html" else self.markdown
|
||||
|
||||
|
@@ -70,7 +70,7 @@ class ForwardMessages(BaseClient):
|
||||
is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
|
||||
is_iterable = not isinstance(message_ids, int)
|
||||
|
@@ -22,7 +22,7 @@ from typing import Union
|
||||
|
||||
import pyrogram
|
||||
from pyrogram.api import functions
|
||||
from pyrogram.api.errors import FloodWait
|
||||
from pyrogram.errors import FloodWait
|
||||
from ...ext import BaseClient
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
@@ -70,7 +70,7 @@ class GetHistory(BaseClient):
|
||||
On success, a :obj:`Messages <pyrogram.Messages>` object is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
|
||||
while True:
|
||||
|
@@ -22,7 +22,7 @@ from typing import Union, Iterable
|
||||
|
||||
import pyrogram
|
||||
from pyrogram.api import functions, types
|
||||
from pyrogram.api.errors import FloodWait
|
||||
from pyrogram.errors import FloodWait
|
||||
from ...ext import BaseClient
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
@@ -63,7 +63,7 @@ class GetMessages(BaseClient):
|
||||
*reply_to_message_ids* was an integer, the single requested :obj:`Message <pyrogram.Message>` is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
ids, ids_type = (
|
||||
(message_ids, types.InputMessageID) if message_ids
|
||||
|
@@ -67,7 +67,7 @@ class IterHistory(BaseClient):
|
||||
A generator yielding :obj:`Message <pyrogram.Message>` objects.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
offset_id = offset_id or (1 if reverse else 0)
|
||||
current = 0
|
||||
|
@@ -43,7 +43,7 @@ class RetractVote(BaseClient):
|
||||
On success, True is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
self.send(
|
||||
functions.messages.SendVote(
|
||||
|
@@ -23,7 +23,7 @@ from typing import Union
|
||||
|
||||
import pyrogram
|
||||
from pyrogram.api import functions, types
|
||||
from pyrogram.api.errors import FileIdInvalid, FilePartMissing
|
||||
from pyrogram.errors import FileIdInvalid, FilePartMissing
|
||||
from pyrogram.client.ext import BaseClient, utils
|
||||
|
||||
|
||||
@@ -125,7 +125,7 @@ class SendAnimation(BaseClient):
|
||||
In case the upload is deliberately stopped with :meth:`stop_transmission`, None is returned instead.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
file = None
|
||||
style = self.html if parse_mode.lower() == "html" else self.markdown
|
||||
|
@@ -23,7 +23,7 @@ from typing import Union
|
||||
|
||||
import pyrogram
|
||||
from pyrogram.api import functions, types
|
||||
from pyrogram.api.errors import FileIdInvalid, FilePartMissing
|
||||
from pyrogram.errors import FileIdInvalid, FilePartMissing
|
||||
from pyrogram.client.ext import BaseClient, utils
|
||||
|
||||
|
||||
@@ -126,7 +126,7 @@ class SendAudio(BaseClient):
|
||||
In case the upload is deliberately stopped with :meth:`stop_transmission`, None is returned instead.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
file = None
|
||||
style = self.html if parse_mode.lower() == "html" else self.markdown
|
||||
|
@@ -22,7 +22,7 @@ from typing import Union
|
||||
|
||||
import pyrogram
|
||||
from pyrogram.api import functions, types
|
||||
from pyrogram.api.errors import FileIdInvalid
|
||||
from pyrogram.errors import FileIdInvalid
|
||||
from pyrogram.client.ext import BaseClient, utils
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@ class SendCachedMedia(BaseClient):
|
||||
On success, the sent :obj:`Message <pyrogram.Message>` is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
style = self.html if parse_mode.lower() == "html" else self.markdown
|
||||
|
||||
|
@@ -51,7 +51,7 @@ class SendChatAction(BaseClient):
|
||||
On success, True is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
``ValueError`` if the provided string is not a valid ChatAction.
|
||||
"""
|
||||
|
||||
|
@@ -74,7 +74,7 @@ class SendContact(BaseClient):
|
||||
On success, the sent :obj:`Message <pyrogram.Message>` is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
r = await self.send(
|
||||
functions.messages.SendMedia(
|
||||
|
@@ -23,7 +23,7 @@ from typing import Union
|
||||
|
||||
import pyrogram
|
||||
from pyrogram.api import functions, types
|
||||
from pyrogram.api.errors import FileIdInvalid, FilePartMissing
|
||||
from pyrogram.errors import FileIdInvalid, FilePartMissing
|
||||
from pyrogram.client.ext import BaseClient, utils
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@ class SendDocument(BaseClient):
|
||||
In case the upload is deliberately stopped with :meth:`stop_transmission`, None is returned instead.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
file = None
|
||||
style = self.html if parse_mode.lower() == "html" else self.markdown
|
||||
|
@@ -67,7 +67,7 @@ class SendLocation(BaseClient):
|
||||
On success, the sent :obj:`Message <pyrogram.Message>` is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
r = await self.send(
|
||||
functions.messages.SendMedia(
|
||||
|
@@ -25,7 +25,7 @@ import asyncio
|
||||
|
||||
import pyrogram
|
||||
from pyrogram.api import functions, types
|
||||
from pyrogram.api.errors import FileIdInvalid, FloodWait
|
||||
from pyrogram.errors import FileIdInvalid, FloodWait
|
||||
from pyrogram.client.ext import BaseClient, utils
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
@@ -64,7 +64,7 @@ class SendMediaGroup(BaseClient):
|
||||
single messages sent.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
multi_media = []
|
||||
|
||||
|
@@ -73,7 +73,7 @@ class SendMessage(BaseClient):
|
||||
On success, the sent :obj:`Message` is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
style = self.html if parse_mode.lower() == "html" else self.markdown
|
||||
message, entities = style.parse(text).values()
|
||||
|
@@ -23,7 +23,7 @@ from typing import Union
|
||||
|
||||
import pyrogram
|
||||
from pyrogram.api import functions, types
|
||||
from pyrogram.api.errors import FileIdInvalid, FilePartMissing
|
||||
from pyrogram.errors import FileIdInvalid, FilePartMissing
|
||||
from pyrogram.client.ext import BaseClient, utils
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@ class SendPhoto(BaseClient):
|
||||
In case the upload is deliberately stopped with :meth:`stop_transmission`, None is returned instead.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
file = None
|
||||
style = self.html if parse_mode.lower() == "html" else self.markdown
|
||||
|
@@ -67,7 +67,7 @@ class SendPoll(BaseClient):
|
||||
On success, the sent :obj:`Message <pyrogram.Message>` is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
r = self.send(
|
||||
functions.messages.SendMedia(
|
||||
|
@@ -23,7 +23,7 @@ from typing import Union
|
||||
|
||||
import pyrogram
|
||||
from pyrogram.api import functions, types
|
||||
from pyrogram.api.errors import FileIdInvalid, FilePartMissing
|
||||
from pyrogram.errors import FileIdInvalid, FilePartMissing
|
||||
from pyrogram.client.ext import BaseClient, utils
|
||||
|
||||
|
||||
@@ -96,7 +96,7 @@ class SendSticker(BaseClient):
|
||||
In case the upload is deliberately stopped with :meth:`stop_transmission`, None is returned instead.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
file = None
|
||||
|
||||
|
@@ -84,7 +84,7 @@ class SendVenue(BaseClient):
|
||||
On success, the sent :obj:`Message <pyrogram.Message>` is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
r = await self.send(
|
||||
functions.messages.SendMedia(
|
||||
|
@@ -23,7 +23,7 @@ from typing import Union
|
||||
|
||||
import pyrogram
|
||||
from pyrogram.api import functions, types
|
||||
from pyrogram.api.errors import FileIdInvalid, FilePartMissing
|
||||
from pyrogram.errors import FileIdInvalid, FilePartMissing
|
||||
from pyrogram.client.ext import BaseClient, utils
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ class SendVideo(BaseClient):
|
||||
In case the upload is deliberately stopped with :meth:`stop_transmission`, None is returned instead.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
file = None
|
||||
style = self.html if parse_mode.lower() == "html" else self.markdown
|
||||
|
@@ -23,7 +23,7 @@ from typing import Union
|
||||
|
||||
import pyrogram
|
||||
from pyrogram.api import functions, types
|
||||
from pyrogram.api.errors import FileIdInvalid, FilePartMissing
|
||||
from pyrogram.errors import FileIdInvalid, FilePartMissing
|
||||
from pyrogram.client.ext import BaseClient, utils
|
||||
|
||||
|
||||
@@ -111,7 +111,7 @@ class SendVideoNote(BaseClient):
|
||||
In case the upload is deliberately stopped with :meth:`stop_transmission`, None is returned instead.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
file = None
|
||||
|
||||
|
@@ -23,7 +23,7 @@ from typing import Union
|
||||
|
||||
import pyrogram
|
||||
from pyrogram.api import functions, types
|
||||
from pyrogram.api.errors import FileIdInvalid, FilePartMissing
|
||||
from pyrogram.errors import FileIdInvalid, FilePartMissing
|
||||
from pyrogram.client.ext import BaseClient, utils
|
||||
|
||||
|
||||
@@ -110,7 +110,7 @@ class SendVoice(BaseClient):
|
||||
In case the upload is deliberately stopped with :meth:`stop_transmission`, None is returned instead.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
file = None
|
||||
style = self.html if parse_mode.lower() == "html" else self.markdown
|
||||
|
@@ -47,7 +47,7 @@ class VotePoll(BaseClient):
|
||||
On success, True is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
poll = self.get_messages(chat_id, message_id).poll
|
||||
|
||||
|
@@ -46,7 +46,7 @@ class ChangeCloudPassword(BaseClient):
|
||||
True on success.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
``ValueError`` in case there is no cloud password to change.
|
||||
"""
|
||||
r = await self.send(functions.account.GetPassword())
|
||||
|
@@ -48,7 +48,7 @@ class EnableCloudPassword(BaseClient):
|
||||
True on success.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
``ValueError`` in case there is already a cloud password enabled.
|
||||
"""
|
||||
r = await self.send(functions.account.GetPassword())
|
||||
|
@@ -36,7 +36,7 @@ class RemoveCloudPassword(BaseClient):
|
||||
True on success.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
``ValueError`` in case there is no cloud password to remove.
|
||||
"""
|
||||
r = await self.send(functions.account.GetPassword())
|
||||
|
@@ -40,7 +40,7 @@ class DeleteUserProfilePhotos(BaseClient):
|
||||
True on success.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
id = id if isinstance(id, list) else [id]
|
||||
input_photos = []
|
||||
|
@@ -29,7 +29,7 @@ class GetMe(BaseClient):
|
||||
Basic information about the user or bot in form of a :obj:`User` object
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
return pyrogram.User._parse(
|
||||
self,
|
||||
|
@@ -50,7 +50,7 @@ class GetUserProfilePhotos(BaseClient):
|
||||
On success, a :obj:`UserProfilePhotos` object is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
return pyrogram.UserProfilePhotos._parse(
|
||||
self,
|
||||
|
@@ -44,7 +44,7 @@ class GetUsers(BaseClient):
|
||||
*user_ids* was an integer or string, the single requested :obj:`User` is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
is_iterable = not isinstance(user_ids, (int, str))
|
||||
user_ids = list(user_ids) if is_iterable else [user_ids]
|
||||
|
@@ -39,7 +39,7 @@ class SetUserProfilePhoto(BaseClient):
|
||||
True on success.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
|
||||
return bool(
|
||||
|
@@ -41,7 +41,7 @@ class UpdateUsername(BaseClient):
|
||||
True on success.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
|
||||
return bool(
|
||||
|
@@ -16,28 +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/>.
|
||||
|
||||
from .bots import (
|
||||
ForceReply, InlineKeyboardButton, InlineKeyboardMarkup,
|
||||
KeyboardButton, ReplyKeyboardMarkup, ReplyKeyboardRemove, CallbackGame,
|
||||
GameHighScore, GameHighScores, CallbackQuery
|
||||
)
|
||||
from .inline_mode import (
|
||||
InlineQuery, InlineQueryResult, InlineQueryResultArticle
|
||||
)
|
||||
from .input_media import (
|
||||
InputMedia, InputMediaAudio, InputPhoneContact, InputMediaVideo, InputMediaPhoto,
|
||||
InputMediaDocument, InputMediaAnimation
|
||||
)
|
||||
from .input_message_content import (
|
||||
InputMessageContent, InputTextMessageContent
|
||||
)
|
||||
from .messages_and_media import (
|
||||
Audio, Contact, Document, Animation, Location, Photo, PhotoSize,
|
||||
Sticker, Venue, Video, VideoNote, Voice, UserProfilePhotos,
|
||||
Message, Messages, MessageEntity, Poll, PollOption, Game
|
||||
)
|
||||
from .update import StopPropagation, ContinuePropagation
|
||||
from .user_and_chats import (
|
||||
Chat, ChatMember, ChatMembers, ChatPhoto,
|
||||
Dialog, Dialogs, User, UserStatus, ChatPreview, ChatPermissions
|
||||
)
|
||||
from .bots import *
|
||||
from .inline_mode import *
|
||||
from .input_media import *
|
||||
from .input_message_content import *
|
||||
from .messages_and_media import *
|
||||
from .update import *
|
||||
from .user_and_chats import *
|
||||
|
@@ -26,3 +26,8 @@ from .inline_keyboard_markup import InlineKeyboardMarkup
|
||||
from .keyboard_button import KeyboardButton
|
||||
from .reply_keyboard_markup import ReplyKeyboardMarkup
|
||||
from .reply_keyboard_remove import ReplyKeyboardRemove
|
||||
|
||||
__all__ = [
|
||||
"CallbackGame", "CallbackQuery", "ForceReply", "GameHighScore", "GameHighScores", "InlineKeyboardButton",
|
||||
"InlineKeyboardMarkup", "KeyboardButton", "ReplyKeyboardMarkup", "ReplyKeyboardRemove"
|
||||
]
|
||||
|
@@ -19,3 +19,7 @@
|
||||
from .inline_query import InlineQuery
|
||||
from .inline_query_result import InlineQueryResult
|
||||
from .inline_query_result_article import InlineQueryResultArticle
|
||||
|
||||
__all__ = [
|
||||
"InlineQuery", "InlineQueryResult", "InlineQueryResultArticle"
|
||||
]
|
||||
|
@@ -20,7 +20,7 @@ import binascii
|
||||
import struct
|
||||
|
||||
from pyrogram.api import types
|
||||
from pyrogram.api.errors import FileIdInvalid
|
||||
from pyrogram.errors import FileIdInvalid
|
||||
from pyrogram.client.ext import utils, BaseClient
|
||||
from pyrogram.client.style import HTML, Markdown
|
||||
from pyrogram.client.types.pyrogram_type import PyrogramType
|
||||
|
@@ -23,3 +23,8 @@ from .input_media_document import InputMediaDocument
|
||||
from .input_media_photo import InputMediaPhoto
|
||||
from .input_media_video import InputMediaVideo
|
||||
from .input_phone_contact import InputPhoneContact
|
||||
|
||||
__all__ = [
|
||||
"InputMedia", "InputMediaAnimation", "InputMediaAudio", "InputMediaDocument", "InputMediaPhoto", "InputMediaVideo",
|
||||
"InputPhoneContact"
|
||||
]
|
||||
|
@@ -18,3 +18,7 @@
|
||||
|
||||
from .input_message_content import InputMessageContent
|
||||
from .input_text_message_content import InputTextMessageContent
|
||||
|
||||
__all__ = [
|
||||
"InputMessageContent", "InputTextMessageContent"
|
||||
]
|
||||
|
@@ -35,3 +35,8 @@ from .venue import Venue
|
||||
from .video import Video
|
||||
from .video_note import VideoNote
|
||||
from .voice import Voice
|
||||
|
||||
__all__ = [
|
||||
"Animation", "Audio", "Contact", "Document", "Game", "Location", "Message", "MessageEntity", "Messages", "Photo",
|
||||
"PhotoSize", "Poll", "PollOption", "Sticker", "UserProfilePhotos", "Venue", "Video", "VideoNote", "Voice"
|
||||
]
|
||||
|
@@ -21,7 +21,7 @@ from typing import List, Match, Union
|
||||
|
||||
import pyrogram
|
||||
from pyrogram.api import types
|
||||
from pyrogram.api.errors import MessageIdsEmpty
|
||||
from pyrogram.errors import MessageIdsEmpty
|
||||
from pyrogram.client.ext import ChatAction, ParseMode
|
||||
from pyrogram.client.types.input_media import InputMedia
|
||||
from .contact import Contact
|
||||
@@ -79,6 +79,9 @@ class Message(PyrogramType, Update):
|
||||
forward_from (:obj:`User <pyrogram.User>`, *optional*):
|
||||
For forwarded messages, sender of the original message.
|
||||
|
||||
forward_from_name (``str``, *optional*):
|
||||
For messages forwarded from users who have hidden their accounts, name of the user.
|
||||
|
||||
forward_from_chat (:obj:`Chat <pyrogram.Chat>`, *optional*):
|
||||
For messages forwarded from channels, information about the original channel.
|
||||
|
||||
@@ -264,12 +267,12 @@ class Message(PyrogramType, Update):
|
||||
# TODO: Add game missing field. Also invoice, successful_payment, connected_website
|
||||
|
||||
__slots__ = [
|
||||
"message_id", "date", "chat", "from_user", "forward_from", "forward_from_chat", "forward_from_message_id",
|
||||
"forward_signature", "forward_date", "reply_to_message", "mentioned", "empty", "service", "media", "edit_date",
|
||||
"media_group_id", "author_signature", "text", "entities", "caption_entities", "audio", "document", "photo",
|
||||
"sticker", "animation", "game", "video", "voice", "video_note", "caption", "contact", "location", "venue",
|
||||
"web_page", "poll", "new_chat_members", "left_chat_member", "new_chat_title", "new_chat_photo",
|
||||
"delete_chat_photo", "group_chat_created", "supergroup_chat_created", "channel_chat_created",
|
||||
"message_id", "date", "chat", "from_user", "forward_from", "forward_from_name", "forward_from_chat",
|
||||
"forward_from_message_id", "forward_signature", "forward_date", "reply_to_message", "mentioned", "empty",
|
||||
"service", "media", "edit_date", "media_group_id", "author_signature", "text", "entities", "caption_entities",
|
||||
"audio", "document", "photo", "sticker", "animation", "game", "video", "voice", "video_note", "caption",
|
||||
"contact", "location", "venue", "web_page", "poll", "new_chat_members", "left_chat_member", "new_chat_title",
|
||||
"new_chat_photo", "delete_chat_photo", "group_chat_created", "supergroup_chat_created", "channel_chat_created",
|
||||
"migrate_to_chat_id", "migrate_from_chat_id", "pinned_message", "game_high_score", "views", "via_bot",
|
||||
"outgoing", "matches", "command", "reply_markup"
|
||||
]
|
||||
@@ -283,6 +286,7 @@ class Message(PyrogramType, Update):
|
||||
chat: Chat = None,
|
||||
from_user: User = None,
|
||||
forward_from: User = None,
|
||||
forward_from_name: str = None,
|
||||
forward_from_chat: Chat = None,
|
||||
forward_from_message_id: int = None,
|
||||
forward_signature: str = None,
|
||||
@@ -344,6 +348,7 @@ class Message(PyrogramType, Update):
|
||||
self.chat = chat
|
||||
self.from_user = from_user
|
||||
self.forward_from = forward_from
|
||||
self.forward_from_name = forward_from_name
|
||||
self.forward_from_chat = forward_from_chat
|
||||
self.forward_from_message_id = forward_from_message_id
|
||||
self.forward_signature = forward_signature
|
||||
@@ -482,18 +487,21 @@ class Message(PyrogramType, Update):
|
||||
entities = list(filter(lambda x: x is not None, entities))
|
||||
|
||||
forward_from = None
|
||||
forward_from_name = None
|
||||
forward_from_chat = None
|
||||
forward_from_message_id = None
|
||||
forward_signature = None
|
||||
forward_date = None
|
||||
|
||||
forward_header = message.fwd_from
|
||||
forward_header = message.fwd_from # type: types.MessageFwdHeader
|
||||
|
||||
if forward_header:
|
||||
forward_date = forward_header.date
|
||||
|
||||
if forward_header.from_id:
|
||||
forward_from = User._parse(client, users[forward_header.from_id])
|
||||
elif forward_header.from_name:
|
||||
forward_from_name = forward_header.from_name
|
||||
else:
|
||||
forward_from_chat = Chat._parse_channel_chat(client, chats[forward_header.channel_id])
|
||||
forward_from_message_id = forward_header.channel_post
|
||||
@@ -599,6 +607,7 @@ class Message(PyrogramType, Update):
|
||||
caption_entities=entities or None if media is not None else None,
|
||||
author_signature=message.post_author,
|
||||
forward_from=forward_from,
|
||||
forward_from_name=forward_from_name,
|
||||
forward_from_chat=forward_from_chat,
|
||||
forward_from_message_id=forward_from_message_id,
|
||||
forward_signature=forward_signature,
|
||||
@@ -699,7 +708,7 @@ class Message(PyrogramType, Update):
|
||||
On success, the sent Message is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>`
|
||||
:class:`RPCError <pyrogram.RPCError>`
|
||||
"""
|
||||
if quote is None:
|
||||
quote = self.chat.type != "private"
|
||||
@@ -828,7 +837,7 @@ class Message(PyrogramType, Update):
|
||||
In case the upload is deliberately stopped with :meth:`stop_transmission`, None is returned instead.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>`
|
||||
:class:`RPCError <pyrogram.RPCError>`
|
||||
"""
|
||||
if quote is None:
|
||||
quote = self.chat.type != "private"
|
||||
@@ -963,7 +972,7 @@ class Message(PyrogramType, Update):
|
||||
In case the upload is deliberately stopped with :meth:`stop_transmission`, None is returned instead.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>`
|
||||
:class:`RPCError <pyrogram.RPCError>`
|
||||
"""
|
||||
if quote is None:
|
||||
quote = self.chat.type != "private"
|
||||
@@ -1051,7 +1060,7 @@ class Message(PyrogramType, Update):
|
||||
On success, the sent :obj:`Message <pyrogram.Message>` is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>`
|
||||
:class:`RPCError <pyrogram.RPCError>`
|
||||
"""
|
||||
if quote is None:
|
||||
quote = self.chat.type != "private"
|
||||
@@ -1105,7 +1114,7 @@ class Message(PyrogramType, Update):
|
||||
On success, True is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
``ValueError`` if the provided string is not a valid ChatAction.
|
||||
"""
|
||||
return await self._client.send_chat_action(
|
||||
@@ -1180,7 +1189,7 @@ class Message(PyrogramType, Update):
|
||||
On success, the sent :obj:`Message <pyrogram.Message>` is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
if quote is None:
|
||||
quote = self.chat.type != "private"
|
||||
@@ -1298,7 +1307,7 @@ class Message(PyrogramType, Update):
|
||||
In case the upload is deliberately stopped with :meth:`stop_transmission`, None is returned instead.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
if quote is None:
|
||||
quote = self.chat.type != "private"
|
||||
@@ -1372,7 +1381,7 @@ class Message(PyrogramType, Update):
|
||||
On success, the sent :obj:`Message` is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
if quote is None:
|
||||
quote = self.chat.type != "private"
|
||||
@@ -1440,7 +1449,7 @@ class Message(PyrogramType, Update):
|
||||
On success, the sent Message is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
if quote is None:
|
||||
quote = self.chat.type != "private"
|
||||
@@ -1515,7 +1524,7 @@ class Message(PyrogramType, Update):
|
||||
On success, the sent :obj:`Message <pyrogram.Message>` is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
if quote is None:
|
||||
quote = self.chat.type != "private"
|
||||
@@ -1578,7 +1587,7 @@ class Message(PyrogramType, Update):
|
||||
single messages sent.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
if quote is None:
|
||||
quote = self.chat.type != "private"
|
||||
@@ -1691,7 +1700,7 @@ class Message(PyrogramType, Update):
|
||||
In case the upload is deliberately stopped with :meth:`stop_transmission`, None is returned instead.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
if quote is None:
|
||||
quote = self.chat.type != "private"
|
||||
@@ -1770,7 +1779,7 @@ class Message(PyrogramType, Update):
|
||||
On success, the sent :obj:`Message <pyrogram.Message>` is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
if quote is None:
|
||||
quote = self.chat.type != "private"
|
||||
@@ -1869,7 +1878,7 @@ class Message(PyrogramType, Update):
|
||||
In case the upload is deliberately stopped with :meth:`stop_transmission`, None is returned instead.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
if quote is None:
|
||||
quote = self.chat.type != "private"
|
||||
@@ -1964,7 +1973,7 @@ class Message(PyrogramType, Update):
|
||||
On success, the sent :obj:`Message <pyrogram.Message>` is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
if quote is None:
|
||||
quote = self.chat.type != "private"
|
||||
@@ -2100,7 +2109,7 @@ class Message(PyrogramType, Update):
|
||||
In case the upload is deliberately stopped with :meth:`stop_transmission`, None is returned instead.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
if quote is None:
|
||||
quote = self.chat.type != "private"
|
||||
@@ -2222,7 +2231,7 @@ class Message(PyrogramType, Update):
|
||||
In case the upload is deliberately stopped with :meth:`stop_transmission`, None is returned instead.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
if quote is None:
|
||||
quote = self.chat.type != "private"
|
||||
@@ -2339,7 +2348,7 @@ class Message(PyrogramType, Update):
|
||||
In case the upload is deliberately stopped with :meth:`stop_transmission`, None is returned instead.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
if quote is None:
|
||||
quote = self.chat.type != "private"
|
||||
@@ -2408,7 +2417,7 @@ class Message(PyrogramType, Update):
|
||||
On success, the edited :obj:`Message <pyrogram.Message>` is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
return await self._client.edit_message_text(
|
||||
chat_id=self.chat.id,
|
||||
@@ -2463,7 +2472,7 @@ class Message(PyrogramType, Update):
|
||||
On success, the edited :obj:`Message <pyrogram.Message>` is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
return await self._client.edit_message_caption(
|
||||
chat_id=self.chat.id,
|
||||
@@ -2502,7 +2511,7 @@ class Message(PyrogramType, Update):
|
||||
On success, the edited :obj:`Message <pyrogram.Message>` is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
return await self._client.edit_message_media(
|
||||
chat_id=self.chat.id,
|
||||
@@ -2538,7 +2547,7 @@ class Message(PyrogramType, Update):
|
||||
:obj:`Message <pyrogram.Message>` is returned, otherwise True is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
:class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
|
||||
"""
|
||||
return await self._client.edit_message_reply_markup(
|
||||
chat_id=self.chat.id,
|
||||
@@ -2593,7 +2602,7 @@ class Message(PyrogramType, Update):
|
||||
On success, the forwarded Message is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>`
|
||||
:class:`RPCError <pyrogram.RPCError>`
|
||||
"""
|
||||
if as_copy:
|
||||
if self.service:
|
||||
@@ -2723,7 +2732,7 @@ class Message(PyrogramType, Update):
|
||||
True on success.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>`
|
||||
:class:`RPCError <pyrogram.RPCError>`
|
||||
"""
|
||||
await self._client.delete_messages(
|
||||
chat_id=self.chat.id,
|
||||
@@ -2788,7 +2797,7 @@ class Message(PyrogramType, Update):
|
||||
button.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>`
|
||||
:class:`RPCError <pyrogram.RPCError>`
|
||||
``ValueError``: If the provided index or position is out of range or the button label was not found
|
||||
``TimeoutError``: If, after clicking an inline button, the bot fails to answer within 10 seconds
|
||||
"""
|
||||
@@ -2889,7 +2898,7 @@ class Message(PyrogramType, Update):
|
||||
On success, the absolute path of the downloaded file as string is returned, None otherwise.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>`
|
||||
:class:`RPCError <pyrogram.RPCError>`
|
||||
``ValueError``: If the message doesn't contain any downloadable media
|
||||
"""
|
||||
return await self._client.download_media(
|
||||
@@ -2926,7 +2935,7 @@ class Message(PyrogramType, Update):
|
||||
True on success.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>`
|
||||
:class:`RPCError <pyrogram.RPCError>`
|
||||
"""
|
||||
return await self._client.pin_chat_message(
|
||||
chat_id=self.chat.id,
|
||||
|
@@ -153,7 +153,7 @@ class Messages(PyrogramType, Update):
|
||||
On success, a :class:`Messages <pyrogram.Messages>` containing forwarded messages is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>`
|
||||
:class:`RPCError <pyrogram.RPCError>`
|
||||
"""
|
||||
forwarded_messages = []
|
||||
|
||||
|
@@ -22,7 +22,7 @@ from async_lru import alru_cache
|
||||
|
||||
import pyrogram
|
||||
from pyrogram.api import types, functions
|
||||
from pyrogram.api.errors import StickersetInvalid
|
||||
from pyrogram.errors import StickersetInvalid
|
||||
from .photo_size import PhotoSize
|
||||
from ..pyrogram_type import PyrogramType
|
||||
from ...ext.utils import encode
|
||||
|
@@ -26,3 +26,8 @@ from .dialog import Dialog
|
||||
from .dialogs import Dialogs
|
||||
from .user import User
|
||||
from .user_status import UserStatus
|
||||
|
||||
__all__ = [
|
||||
"Chat", "ChatMember", "ChatMembers", "ChatPermissions", "ChatPhoto", "ChatPreview", "Dialog", "Dialogs", "User",
|
||||
"UserStatus"
|
||||
]
|
||||
|
@@ -17,4 +17,4 @@
|
||||
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from .exceptions import *
|
||||
from .error import UnknownError
|
||||
from .rpc_error import UnknownError
|
@@ -19,11 +19,11 @@
|
||||
import re
|
||||
from importlib import import_module
|
||||
|
||||
from pyrogram.api.types import RpcError
|
||||
from pyrogram.api.types import RpcError as RawRPCError
|
||||
from .exceptions.all import exceptions
|
||||
|
||||
|
||||
class Error(Exception):
|
||||
class RPCError(Exception):
|
||||
"""This is the base exception class for all Telegram API related errors.
|
||||
For a finer grained control, see the specific errors below.
|
||||
"""
|
||||
@@ -32,7 +32,7 @@ class Error(Exception):
|
||||
NAME = None
|
||||
MESSAGE = None
|
||||
|
||||
def __init__(self, x: int or RpcError = None, query_type: type = None):
|
||||
def __init__(self, x: int or RawRPCError = None, query_type: type = None):
|
||||
super().__init__("[{} {}]: {}".format(
|
||||
self.CODE,
|
||||
self.ID or self.NAME,
|
||||
@@ -50,7 +50,7 @@ class Error(Exception):
|
||||
f.write("{}\t{}\t{}\n".format(x.error_code, x.error_message, query_type))
|
||||
|
||||
@staticmethod
|
||||
def raise_it(rpc_error: RpcError, query_type: type):
|
||||
def raise_it(rpc_error: RawRPCError, query_type: type):
|
||||
code = rpc_error.error_code
|
||||
|
||||
if code not in exceptions:
|
||||
@@ -66,12 +66,12 @@ class Error(Exception):
|
||||
x = x.group(1) if x is not None else x
|
||||
|
||||
raise getattr(
|
||||
import_module("pyrogram.api.errors"),
|
||||
import_module("pyrogram.errors"),
|
||||
exceptions[code][id]
|
||||
)(x=x)
|
||||
|
||||
|
||||
class UnknownError(Error):
|
||||
class UnknownError(RPCError):
|
||||
"""This object represents an Unknown Error, that is, an error which
|
||||
Pyrogram does not know anything about, yet.
|
||||
"""
|
@@ -27,7 +27,7 @@ from pyrogram import __copyright__, __license__, __version__
|
||||
from pyrogram.api import functions, types
|
||||
from pyrogram.api.all import layer
|
||||
from pyrogram.api.core import Object, MsgContainer, Int, Long, FutureSalt, FutureSalts
|
||||
from pyrogram.api.errors import Error, InternalServerError, AuthKeyDuplicated
|
||||
from pyrogram.errors import RPCError, InternalServerError, AuthKeyDuplicated
|
||||
from pyrogram.connection import Connection
|
||||
from pyrogram.crypto import MTProto
|
||||
from .internals import MsgId, MsgFactory
|
||||
@@ -157,7 +157,7 @@ class Session:
|
||||
except AuthKeyDuplicated as e:
|
||||
await self.stop()
|
||||
raise e
|
||||
except (OSError, TimeoutError, Error):
|
||||
except (OSError, TimeoutError, RPCError):
|
||||
await self.stop()
|
||||
except Exception as e:
|
||||
await self.stop()
|
||||
@@ -293,7 +293,7 @@ class Session:
|
||||
ping_id=0, disconnect_delay=self.WAIT_TIMEOUT + 10
|
||||
), False
|
||||
)
|
||||
except (OSError, TimeoutError, Error):
|
||||
except (OSError, TimeoutError, RPCError):
|
||||
pass
|
||||
|
||||
log.info("PingTask stopped")
|
||||
@@ -322,7 +322,7 @@ class Session:
|
||||
|
||||
try:
|
||||
self.current_salt = (await self._send(functions.GetFutureSalts(num=1))).salts[0]
|
||||
except (OSError, TimeoutError, Error):
|
||||
except (OSError, TimeoutError, RPCError):
|
||||
self.connection.close()
|
||||
break
|
||||
|
||||
@@ -381,7 +381,7 @@ class Session:
|
||||
if result is None:
|
||||
raise TimeoutError
|
||||
elif isinstance(result, types.RpcError):
|
||||
Error.raise_it(result, type(data))
|
||||
RPCError.raise_it(result, type(data))
|
||||
elif isinstance(result, types.BadMsgNotification):
|
||||
raise Exception(self.BAD_MSG_DESCRIPTION.get(
|
||||
result.error_code,
|
||||
|
Reference in New Issue
Block a user