mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2024-11-22 09:26:37 +03:00
Fix send_message not forwarding some args to send_file
This commit is contained in:
parent
82943bd464
commit
acb8518911
|
@ -602,7 +602,6 @@ class MessageMethods:
|
|||
|
||||
clear_draft (`bool`, optional):
|
||||
Whether the existing draft should be cleared or not.
|
||||
Has no effect when sending a file.
|
||||
|
||||
buttons (`list`, `custom.Button <telethon.tl.custom.button.Button>`, :tl:`KeyboardButton`):
|
||||
The matrix (list of lists), row list or button to be shown
|
||||
|
@ -691,7 +690,8 @@ class MessageMethods:
|
|||
return await self.send_file(
|
||||
entity, file, caption=message, reply_to=reply_to,
|
||||
parse_mode=parse_mode, force_document=force_document,
|
||||
buttons=buttons
|
||||
buttons=buttons, clear_draft=clear_draft, silent=silent,
|
||||
schedule=schedule
|
||||
)
|
||||
|
||||
entity = await self.get_input_entity(entity)
|
||||
|
|
|
@ -93,6 +93,7 @@ class UploadMethods:
|
|||
*,
|
||||
caption: typing.Union[str, typing.Sequence[str]] = None,
|
||||
force_document: bool = False,
|
||||
clear_draft: bool = False,
|
||||
progress_callback: 'hints.ProgressCallback' = None,
|
||||
reply_to: 'hints.MessageIDLike' = None,
|
||||
attributes: 'typing.Sequence[types.TypeDocumentAttribute]' = None,
|
||||
|
@ -168,6 +169,9 @@ class UploadMethods:
|
|||
the extension of an image file or a video file, it will be
|
||||
sent as such. Otherwise always as a document.
|
||||
|
||||
clear_draft (`bool`, optional):
|
||||
Whether the existing draft should be cleared or not.
|
||||
|
||||
progress_callback (`callable`, optional):
|
||||
A callback function accepting two parameters:
|
||||
``(sent bytes, total)``.
|
||||
|
@ -296,7 +300,7 @@ class UploadMethods:
|
|||
entity, media[:10], caption=media_captions[:10],
|
||||
progress_callback=progress_callback, reply_to=reply_to,
|
||||
parse_mode=parse_mode, silent=silent, schedule=schedule,
|
||||
supports_streaming=supports_streaming
|
||||
supports_streaming=supports_streaming, clear_draft=clear_draft
|
||||
)
|
||||
media = media[10:]
|
||||
media_captions = media_captions[10:]
|
||||
|
@ -309,6 +313,7 @@ class UploadMethods:
|
|||
attributes=attributes, thumb=thumb, voice_note=voice_note,
|
||||
video_note=video_note, buttons=buttons, silent=silent,
|
||||
supports_streaming=supports_streaming, schedule=schedule,
|
||||
clear_draft=clear_draft,
|
||||
**kwargs
|
||||
))
|
||||
|
||||
|
@ -341,7 +346,7 @@ class UploadMethods:
|
|||
request = functions.messages.SendMediaRequest(
|
||||
entity, media, reply_to_msg_id=reply_to, message=caption,
|
||||
entities=msg_entities, reply_markup=markup, silent=silent,
|
||||
schedule_date=schedule
|
||||
schedule_date=schedule, clear_draft=clear_draft
|
||||
)
|
||||
msg = self._get_response_message(request, await self(request), entity)
|
||||
await self._cache_media(msg, file, file_handle, image=image)
|
||||
|
@ -351,7 +356,7 @@ class UploadMethods:
|
|||
async def _send_album(self: 'TelegramClient', entity, files, caption='',
|
||||
progress_callback=None, reply_to=None,
|
||||
parse_mode=(), silent=None, schedule=None,
|
||||
supports_streaming=None):
|
||||
supports_streaming=None, clear_draft=None):
|
||||
"""Specialized version of .send_file for albums"""
|
||||
# We don't care if the user wants to avoid cache, we will use it
|
||||
# anyway. Why? The cached version will be exactly the same thing
|
||||
|
@ -413,7 +418,7 @@ class UploadMethods:
|
|||
# Now we can construct the multi-media request
|
||||
request = functions.messages.SendMultiMediaRequest(
|
||||
entity, reply_to_msg_id=reply_to, multi_media=media,
|
||||
silent=silent, schedule_date=schedule
|
||||
silent=silent, schedule_date=schedule, clear_draft=clear_draft
|
||||
)
|
||||
result = await self(request)
|
||||
|
||||
|
|
0
tests/telethon/client/__init__.py
Normal file
0
tests/telethon/client/__init__.py
Normal file
40
tests/telethon/client/test_messages.py
Normal file
40
tests/telethon/client/test_messages.py
Normal file
|
@ -0,0 +1,40 @@
|
|||
import inspect
|
||||
|
||||
import pytest
|
||||
|
||||
from telethon import TelegramClient
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_send_message_with_file_forwards_args():
|
||||
arguments = {}
|
||||
sentinel = object()
|
||||
|
||||
for value, name in enumerate(inspect.signature(TelegramClient.send_message).parameters):
|
||||
if name in {'self', 'entity', 'file'}:
|
||||
continue # positional
|
||||
|
||||
if name in {'message'}:
|
||||
continue # renamed
|
||||
|
||||
if name in {'link_preview'}:
|
||||
continue # make no sense in send_file
|
||||
|
||||
arguments[name] = value
|
||||
|
||||
class MockedClient(TelegramClient):
|
||||
# noinspection PyMissingConstructor
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
async def send_file(self, entity, file, **kwargs):
|
||||
assert entity == 'a'
|
||||
assert file == 'b'
|
||||
for k, v in arguments.items():
|
||||
assert k in kwargs
|
||||
assert kwargs[k] == v
|
||||
|
||||
return sentinel
|
||||
|
||||
client = MockedClient()
|
||||
assert (await client.send_message('a', file='b', **arguments)) == sentinel
|
Loading…
Reference in New Issue
Block a user