From 34b044daf2096e4eed26428ec9faa75cf09b0620 Mon Sep 17 00:00:00 2001 From: Devesh Pal <69723581+New-dev0@users.noreply.github.com> Date: Mon, 5 Jul 2021 21:05:12 +0530 Subject: [PATCH] Enhancement and fixes (#10) --- telethon/client/chats.py | 2 +- telethon/client/downloads.py | 2 +- telethon/tl/custom/button.py | 13 +++++++++++++ telethon/tl/custom/inlinebuilder.py | 12 ++++++++++-- telethon/tl/custom/participantpermissions.py | 4 ++++ telethon_generator/data/errors.csv | 5 ++++- telethon_generator/data/methods.csv | 7 ++++--- 7 files changed, 37 insertions(+), 8 deletions(-) diff --git a/telethon/client/chats.py b/telethon/client/chats.py index 1137544b..d712f698 100644 --- a/telethon/client/chats.py +++ b/telethon/client/chats.py @@ -829,7 +829,7 @@ class ChatMethods: invite_users: bool = None, pin_messages: bool = None, add_admins: bool = None, - manage_call: bool = True, + manage_call: bool = None, anonymous: bool = None, is_admin: bool = None, title: str = None) -> types.Updates: diff --git a/telethon/client/downloads.py b/telethon/client/downloads.py index 62ba6332..6d7a8d65 100644 --- a/telethon/client/downloads.py +++ b/telethon/client/downloads.py @@ -962,7 +962,7 @@ class DownloadMethods: f = file try: - with aiohttp.ClientSession() as session: + async with aiohttp.ClientSession() as session: # TODO Use progress_callback; get content length from response # https://github.com/telegramdesktop/tdesktop/blob/c7e773dd9aeba94e2be48c032edc9a78bb50234e/Telegram/SourceFiles/ui/images.cpp#L1318-L1319 async with session.get(web.url) as response: diff --git a/telethon/tl/custom/button.py b/telethon/tl/custom/button.py index 134fbec7..7ce6e676 100644 --- a/telethon/tl/custom/button.py +++ b/telethon/tl/custom/button.py @@ -49,6 +49,7 @@ class Button: Returns `True` if the button belongs to an inline keyboard. """ return isinstance(button, ( + types.KeyboardButtonBuy, types.KeyboardButtonCallback, types.KeyboardButtonSwitchInline, types.KeyboardButtonUrl, @@ -163,6 +164,18 @@ class Button: fwd_text=fwd_text ) + @staticmethod + def buy(text): + """ + Create a inline button to Buy a Product. + It can be only used with Invoice. + It should be the first button of the Invoice. + On Not using this, Telegram will Automatically add button to it. + Read More - https://core.telegram.org/api/payments + """ + return types.KeyboardButtonBuy(text) + + @classmethod def text(cls, text, *, resize=None, single_use=None, selective=None): """ diff --git a/telethon/tl/custom/inlinebuilder.py b/telethon/tl/custom/inlinebuilder.py index 03b0068f..9d82003d 100644 --- a/telethon/tl/custom/inlinebuilder.py +++ b/telethon/tl/custom/inlinebuilder.py @@ -72,7 +72,7 @@ class InlineBuilder: # noinspection PyIncorrectDocstring async def article( - self, title, description=None, + self, title, description=None, type="article", *, url=None, thumb=None, content=None, id=None, text=None, parse_mode=(), link_preview=True, geo=None, period=60, contact=None, game=False, buttons=None @@ -98,6 +98,13 @@ class InlineBuilder: The content to be shown for this result. For now it has to be a :tl:`InputWebDocument` if present. + type (`str`, optional): + type of the content to use. Defaults to `article`. + + include_media (`bool`, optional): + Whether the content used to display the result should be + included in the message itself or not. Defaults to `False`. + Example: .. code-block:: python @@ -128,10 +135,11 @@ class InlineBuilder: # voice, document, location, venue, contact, game result = types.InputBotInlineResult( id=id or '', - type='article', + type=type, send_message=await self._message( text=text, parse_mode=parse_mode, link_preview=link_preview, geo=geo, period=period, + media=include_media, contact=contact, game=game, buttons=buttons diff --git a/telethon/tl/custom/participantpermissions.py b/telethon/tl/custom/participantpermissions.py index 7053cda7..c59a05ed 100644 --- a/telethon/tl/custom/participantpermissions.py +++ b/telethon/tl/custom/participantpermissions.py @@ -129,3 +129,7 @@ class ParticipantPermissions: anonymous = property(**_admin_prop('anonymous', """ Whether the administrator will remain anonymous when sending messages. """)) + + manage_call = property(**_admin_prop('manage_call', """ + Whether the user will be able to manage group calls. + """)) diff --git a/telethon_generator/data/errors.csv b/telethon_generator/data/errors.csv index 85571513..0e754315 100644 --- a/telethon_generator/data/errors.csv +++ b/telethon_generator/data/errors.csv @@ -90,6 +90,7 @@ CONNECTION_SYSTEM_EMPTY,400,Connection system empty CONNECTION_SYSTEM_LANG_CODE_EMPTY,400,The system language string was empty during connection CONTACT_ID_INVALID,400,The provided contact ID is invalid CONTACT_NAME_EMPTY,400,The provided contact name cannot be empty +CURRENCY_TOTAL_AMOUNT_INVALID,400, DATA_INVALID,400,Encrypted data invalid DATA_JSON_INVALID,400,The provided JSON data is invalid DATE_EMPTY,400,Date empty @@ -117,6 +118,7 @@ EXTERNAL_URL_INVALID,400,External URL invalid FIELD_NAME_EMPTY,400,The field with the name FIELD_NAME is missing FIELD_NAME_INVALID,400,The field with the name FIELD_NAME is invalid FILEREF_UPGRADE_NEEDED,406,The file reference needs to be refreshed before being used again +FILE_CONTENT_TYPE_INVALID,400, FILE_ID_INVALID,400,"The provided file id is invalid. Make sure all parameters are present, have the correct type and are not empty (ID, access hash, file reference, thumb size ...)" FILE_MIGRATE_X,303,The file to be accessed is currently stored in DC {new_dc} FILE_PARTS_INVALID,400,The number of file parts is invalid @@ -144,6 +146,7 @@ GIF_CONTENT_TYPE_INVALID,400, GIF_ID_INVALID,400,The provided GIF ID is invalid GRAPH_INVALID_RELOAD,400, GRAPH_OUTDATED_RELOAD,400,"Data can't be used for the channel statistics, graphs outdated" +GROUPCALL_ALREADY_DISCARDED,400, GROUPCALL_FORBIDDEN,403, GROUPCALL_JOIN_MISSING,400, GROUPCALL_SSRC_DUPLICATE_MUCH,400, @@ -388,4 +391,4 @@ WEBDOCUMENT_URL_INVALID,400,The given URL cannot be used WEBPAGE_CURL_FAILED,400,Failure while fetching the webpage with cURL WEBPAGE_MEDIA_EMPTY,400,Webpage media empty WORKER_BUSY_TOO_LONG_RETRY,500,Telegram workers are too busy to respond immediately -YOU_BLOCKED_USER,400,You blocked this user \ No newline at end of file +YOU_BLOCKED_USER,400,You blocked this user diff --git a/telethon_generator/data/methods.csv b/telethon_generator/data/methods.csv index 2e96877d..d2979685 100644 --- a/telethon_generator/data/methods.csv +++ b/telethon_generator/data/methods.csv @@ -275,7 +275,7 @@ messages.sendEncrypted,user,CHAT_ID_INVALID DATA_INVALID ENCRYPTION_DECLINED MSG messages.sendEncryptedFile,user,MSG_WAIT_FAILED messages.sendEncryptedService,user,DATA_INVALID ENCRYPTION_DECLINED MSG_WAIT_FAILED USER_IS_BLOCKED messages.sendInlineBotResult,user,CHAT_SEND_INLINE_FORBIDDEN CHAT_WRITE_FORBIDDEN INLINE_RESULT_EXPIRED PEER_ID_INVALID QUERY_ID_EMPTY SCHEDULE_DATE_TOO_LATE SCHEDULE_TOO_MUCH WEBPAGE_CURL_FAILED WEBPAGE_MEDIA_EMPTY -messages.sendMedia,both,BOT_PAYMENTS_DISABLED BOT_POLLS_DISABLED BROADCAST_PUBLIC_VOTERS_FORBIDDEN CHANNEL_INVALID CHANNEL_PRIVATE CHAT_ADMIN_REQUIRED CHAT_SEND_MEDIA_FORBIDDEN CHAT_WRITE_FORBIDDEN EMOTICON_INVALID EXTERNAL_URL_INVALID FILE_PARTS_INVALID FILE_PART_LENGTH_INVALID FILE_REFERENCE_EMPTY FILE_REFERENCE_EXPIRED GAME_BOT_INVALID INPUT_USER_DEACTIVATED MEDIA_CAPTION_TOO_LONG MEDIA_EMPTY PAYMENT_PROVIDER_INVALID PEER_ID_INVALID PHOTO_EXT_INVALID PHOTO_INVALID_DIMENSIONS PHOTO_SAVE_FILE_INVALID POLL_ANSWERS_INVALID POLL_OPTION_DUPLICATE POLL_QUESTION_INVALID QUIZ_CORRECT_ANSWERS_EMPTY QUIZ_CORRECT_ANSWERS_TOO_MUCH QUIZ_CORRECT_ANSWER_INVALID QUIZ_MULTIPLE_INVALID RANDOM_ID_DUPLICATE SCHEDULE_DATE_TOO_LATE SCHEDULE_TOO_MUCH STORAGE_CHECK_FAILED TIMEOUT USER_BANNED_IN_CHANNEL USER_IS_BLOCKED USER_IS_BOT VIDEO_CONTENT_TYPE_INVALID WEBPAGE_CURL_FAILED WEBPAGE_MEDIA_EMPTY +messages.sendMedia,both,BOT_PAYMENTS_DISABLED BOT_POLLS_DISABLED BROADCAST_PUBLIC_VOTERS_FORBIDDEN CHANNEL_INVALID CHANNEL_PRIVATE CHAT_ADMIN_REQUIRED CHAT_SEND_MEDIA_FORBIDDEN CHAT_WRITE_FORBIDDEN CURRENCY_TOTAL_AMOUNT_INVALID EMOTICON_INVALID EXTERNAL_URL_INVALID FILE_PARTS_INVALID FILE_PART_LENGTH_INVALID FILE_REFERENCE_EMPTY FILE_REFERENCE_EXPIRED GAME_BOT_INVALID INPUT_USER_DEACTIVATED MEDIA_CAPTION_TOO_LONG MEDIA_EMPTY PAYMENT_PROVIDER_INVALID PEER_ID_INVALID PHOTO_EXT_INVALID PHOTO_INVALID_DIMENSIONS PHOTO_SAVE_FILE_INVALID POLL_ANSWERS_INVALID POLL_OPTION_DUPLICATE POLL_QUESTION_INVALID QUIZ_CORRECT_ANSWERS_EMPTY QUIZ_CORRECT_ANSWERS_TOO_MUCH QUIZ_CORRECT_ANSWER_INVALID QUIZ_MULTIPLE_INVALID RANDOM_ID_DUPLICATE SCHEDULE_DATE_TOO_LATE SCHEDULE_TOO_MUCH STORAGE_CHECK_FAILED TIMEOUT USER_BANNED_IN_CHANNEL USER_IS_BLOCKED USER_IS_BOT VIDEO_CONTENT_TYPE_INVALID WEBPAGE_CURL_FAILED WEBPAGE_MEDIA_EMPTY messages.sendMessage,both,AUTH_KEY_DUPLICATED BOT_DOMAIN_INVALID BUTTON_DATA_INVALID BUTTON_TYPE_INVALID BUTTON_URL_INVALID CHANNEL_INVALID CHANNEL_PRIVATE CHAT_ADMIN_REQUIRED CHAT_ID_INVALID CHAT_RESTRICTED CHAT_WRITE_FORBIDDEN ENTITIES_TOO_LONG ENTITY_MENTION_USER_INVALID INPUT_USER_DEACTIVATED MESSAGE_EMPTY MESSAGE_TOO_LONG MSG_ID_INVALID PEER_ID_INVALID POLL_OPTION_INVALID RANDOM_ID_DUPLICATE REPLY_MARKUP_INVALID REPLY_MARKUP_TOO_LONG SCHEDULE_BOT_NOT_ALLOWED SCHEDULE_DATE_TOO_LATE SCHEDULE_STATUS_PRIVATE SCHEDULE_TOO_MUCH TIMEOUT USER_BANNED_IN_CHANNEL USER_IS_BLOCKED USER_IS_BOT YOU_BLOCKED_USER messages.sendMultiMedia,both,MULTI_MEDIA_TOO_LONG SCHEDULE_DATE_TOO_LATE SCHEDULE_TOO_MUCH messages.sendScheduledMessages,user, @@ -286,7 +286,7 @@ messages.setBotShippingResults,both,QUERY_ID_INVALID messages.setEncryptedTyping,user,CHAT_ID_INVALID messages.setGameScore,bot,PEER_ID_INVALID USER_BOT_REQUIRED messages.setHistoryTTL,user,CHAT_NOT_MODIFIED TTL_PERIOD_INVALID -messages.setInlineBotResults,bot,ARTICLE_TITLE_EMPTY AUDIO_CONTENT_URL_EMPTY AUDIO_TITLE_EMPTY BUTTON_DATA_INVALID BUTTON_TYPE_INVALID BUTTON_URL_INVALID DOCUMENT_INVALID GIF_CONTENT_TYPE_INVALID MESSAGE_EMPTY NEXT_OFFSET_INVALID PHOTO_CONTENT_TYPE_INVALID PHOTO_CONTENT_URL_EMPTY PHOTO_THUMB_URL_EMPTY QUERY_ID_INVALID REPLY_MARKUP_INVALID RESULT_TYPE_INVALID SEND_MESSAGE_MEDIA_INVALID SEND_MESSAGE_TYPE_INVALID START_PARAM_INVALID STICKER_DOCUMENT_INVALID USER_BOT_INVALID VIDEO_TITLE_EMPTY WEBDOCUMENT_MIME_INVALID WEBDOCUMENT_URL_INVALID +messages.setInlineBotResults,bot,ARTICLE_TITLE_EMPTY AUDIO_CONTENT_URL_EMPTY AUDIO_TITLE_EMPTY BUTTON_DATA_INVALID BUTTON_TYPE_INVALID BUTTON_URL_INVALID DOCUMENT_INVALID FILE_CONTENT_TYPE_INVALID GIF_CONTENT_TYPE_INVALID MESSAGE_EMPTY NEXT_OFFSET_INVALID PHOTO_CONTENT_TYPE_INVALID PHOTO_CONTENT_URL_EMPTY PHOTO_THUMB_URL_EMPTY QUERY_ID_INVALID REPLY_MARKUP_INVALID RESULT_TYPE_INVALID SEND_MESSAGE_MEDIA_INVALID SEND_MESSAGE_TYPE_INVALID START_PARAM_INVALID STICKER_DOCUMENT_INVALID USER_BOT_INVALID VIDEO_TITLE_EMPTY WEBDOCUMENT_MIME_INVALID WEBDOCUMENT_URL_INVALID messages.setInlineGameScore,bot,MESSAGE_ID_INVALID USER_BOT_REQUIRED messages.setTyping,both,CHANNEL_INVALID CHANNEL_PRIVATE CHAT_ID_INVALID CHAT_WRITE_FORBIDDEN PEER_ID_INVALID USER_BANNED_IN_CHANNEL USER_IS_BLOCKED USER_IS_BOT messages.startBot,user,BOT_INVALID PEER_ID_INVALID START_PARAM_EMPTY START_PARAM_INVALID @@ -310,6 +310,7 @@ phone.acceptCall,user,CALL_ALREADY_ACCEPTED CALL_ALREADY_DECLINED CALL_OCCUPY_FA phone.confirmCall,user,CALL_ALREADY_DECLINED CALL_PEER_INVALID phone.createGroupCall,user,SCHEDULE_DATE_INVALID phone.discardCall,user,CALL_ALREADY_ACCEPTED CALL_PEER_INVALID +phone.discardGroupCallRequest,user,GROUPCALL_ALREADY_DISCARDED phone.editGroupCallParticipant,user,USER_VOLUME_INVALID phone.getCallConfig,user, phone.inviteToGroupCall,user,GROUPCALL_FORBIDDEN @@ -351,4 +352,4 @@ upload.saveBigFilePart,both,FILE_PARTS_INVALID FILE_PART_EMPTY FILE_PART_INVALID upload.saveFilePart,both,FILE_PART_EMPTY FILE_PART_INVALID INPUT_FETCH_FAIL SESSION_PASSWORD_NEEDED users.getFullUser,both,TIMEOUT USER_ID_INVALID users.getUsers,both,AUTH_KEY_PERM_EMPTY MEMBER_NO_LOCATION NEED_MEMBER_INVALID SESSION_PASSWORD_NEEDED TIMEOUT -users.setSecureValueErrors,bot, \ No newline at end of file +users.setSecureValueErrors,bot,