From 531a02a2a178ed2792fadad0a30df05e5b45bf8c Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Tue, 10 Jul 2018 13:11:56 +0200 Subject: [PATCH] Support buttons when sending a file too --- telethon/client/messages.py | 5 +++-- telethon/client/telegramclient.py | 2 +- telethon/client/uploads.py | 17 +++++++++++++---- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/telethon/client/messages.py b/telethon/client/messages.py index cb563f7e..84cb6e02 100644 --- a/telethon/client/messages.py +++ b/telethon/client/messages.py @@ -15,7 +15,7 @@ from ..tl import types, functions, custom __log__ = logging.getLogger(__name__) -class MessageMethods(ButtonMethods, UploadMethods, MessageParseMethods): +class MessageMethods(UploadMethods, ButtonMethods, MessageParseMethods): # region Public methods @@ -396,7 +396,8 @@ class MessageMethods(ButtonMethods, UploadMethods, MessageParseMethods): if file is not None: return await self.send_file( entity, file, caption=message, reply_to=reply_to, - parse_mode=parse_mode, force_document=force_document + parse_mode=parse_mode, force_document=force_document, + buttons=buttons ) elif not message: raise ValueError( diff --git a/telethon/client/telegramclient.py b/telethon/client/telegramclient.py index fa50ec6e..e10dc43f 100644 --- a/telethon/client/telegramclient.py +++ b/telethon/client/telegramclient.py @@ -7,7 +7,7 @@ from . import ( class TelegramClient( AuthMethods, DownloadMethods, DialogMethods, ChatMethods, - MessageMethods, ButtonMethods, UpdateMethods, UploadMethods, + MessageMethods, UploadMethods, ButtonMethods, UpdateMethods, MessageParseMethods, UserMethods ): pass diff --git a/telethon/client/uploads.py b/telethon/client/uploads.py index 52cc8203..c987e464 100644 --- a/telethon/client/uploads.py +++ b/telethon/client/uploads.py @@ -9,6 +9,7 @@ from mimetypes import guess_type from .messageparse import MessageParseMethods from .users import UserMethods +from .buttons import ButtonMethods from .. import utils, helpers from ..tl import types, functions, custom @@ -22,7 +23,7 @@ except ImportError: __log__ = logging.getLogger(__name__) -class UploadMethods(MessageParseMethods, UserMethods): +class UploadMethods(ButtonMethods, MessageParseMethods, UserMethods): # region Public methods @@ -30,7 +31,7 @@ class UploadMethods(MessageParseMethods, UserMethods): self, entity, file, *, caption='', force_document=False, progress_callback=None, reply_to=None, attributes=None, thumb=None, allow_cache=True, parse_mode=utils.Default, - voice_note=False, video_note=False, **kwargs): + voice_note=False, video_note=False, buttons=None, **kwargs): """ Sends a file to the specified entity. @@ -98,6 +99,13 @@ class UploadMethods(MessageParseMethods, UserMethods): Set `allow_cache` to ``False`` if you sent the same file without this setting before for it to work. + buttons (`list`, `custom.Button `, + :tl:`KeyboardButton`): + The matrix (list of lists), row list or button to be shown + after sending the message. This parameter will only work if + you have signed in as a bot. You can also pass your own + :tl:`ReplyMarkup` here. + Notes: If the ``hachoir3`` package (``hachoir`` module) is installed, it will be used to determine metadata from audio and video files. @@ -136,7 +144,7 @@ class UploadMethods(MessageParseMethods, UserMethods): caption=caption, force_document=force_document, progress_callback=progress_callback, reply_to=reply_to, attributes=attributes, thumb=thumb, voice_note=voice_note, - video_note=video_note, **kwargs + video_note=video_note, buttons=buttons, **kwargs )) return result @@ -159,9 +167,10 @@ class UploadMethods(MessageParseMethods, UserMethods): voice_note=voice_note, video_note=video_note ) + markup = self._build_reply_markup(buttons) request = functions.messages.SendMediaRequest( entity, media, reply_to_msg_id=reply_to, message=caption, - entities=msg_entities + entities=msg_entities, reply_markup=markup ) msg = self._get_response_message(request, await self(request), entity) self._cache_media(msg, file, file_handle, force_document=force_document)