Expose silent parameter when sending messages

This commit is contained in:
Lonami Exo 2018-07-11 10:16:21 +02:00
parent 71309c886e
commit e902304360
2 changed files with 34 additions and 10 deletions

View File

@ -334,7 +334,8 @@ class MessageMethods(UploadMethods, ButtonMethods, MessageParseMethods):
async def send_message( async def send_message(
self, entity, message='', *, reply_to=None, self, entity, message='', *, reply_to=None,
parse_mode=utils.Default, link_preview=True, file=None, parse_mode=utils.Default, link_preview=True, file=None,
force_document=False, clear_draft=False, buttons=None): force_document=False, clear_draft=False, buttons=None,
silent=None):
""" """
Sends the given message to the specified entity (user/chat/channel). Sends the given message to the specified entity (user/chat/channel).
@ -390,6 +391,11 @@ class MessageMethods(UploadMethods, ButtonMethods, MessageParseMethods):
you have signed in as a bot. You can also pass your own you have signed in as a bot. You can also pass your own
:tl:`ReplyMarkup` here. :tl:`ReplyMarkup` here.
silent (`bool`, optional):
Whether the message should notify people in a broadcast
channel or not. Defaults to ``False``, which means it will
notify them. Set it to ``True`` to alter this behaviour.
Returns: Returns:
The sent `custom.Message <telethon.tl.custom.message.Message>`. The sent `custom.Message <telethon.tl.custom.message.Message>`.
""" """
@ -431,10 +437,13 @@ class MessageMethods(UploadMethods, ButtonMethods, MessageParseMethods):
else: else:
markup = self._build_reply_markup(buttons) markup = self._build_reply_markup(buttons)
if silent is None:
silent = message.silent
request = functions.messages.SendMessageRequest( request = functions.messages.SendMessageRequest(
peer=entity, peer=entity,
message=message.message or '', message=message.message or '',
silent=message.silent, silent=silent,
reply_to_msg_id=reply_id, reply_to_msg_id=reply_id,
reply_markup=markup, reply_markup=markup,
entities=message.entities, entities=message.entities,
@ -453,6 +462,7 @@ class MessageMethods(UploadMethods, ButtonMethods, MessageParseMethods):
no_webpage=not link_preview, no_webpage=not link_preview,
reply_to_msg_id=utils.get_message_id(reply_to), reply_to_msg_id=utils.get_message_id(reply_to),
clear_draft=clear_draft, clear_draft=clear_draft,
silent=silent,
reply_markup=self._build_reply_markup(buttons) reply_markup=self._build_reply_markup(buttons)
) )
@ -471,7 +481,8 @@ class MessageMethods(UploadMethods, ButtonMethods, MessageParseMethods):
return self._get_response_message(request, result, entity) return self._get_response_message(request, result, entity)
async def forward_messages(self, entity, messages, from_peer=None): async def forward_messages(self, entity, messages, from_peer=None,
*, silent=None):
""" """
Forwards the given message(s) to the specified entity. Forwards the given message(s) to the specified entity.
@ -487,6 +498,11 @@ class MessageMethods(UploadMethods, ButtonMethods, MessageParseMethods):
of the ``Message`` class, this *must* be specified in of the ``Message`` class, this *must* be specified in
order for the forward to work. order for the forward to work.
silent (`bool`, optional):
Whether the message should notify people in a broadcast
channel or not. Defaults to ``False``, which means it will
notify them. Set it to ``True`` to alter this behaviour.
Returns: Returns:
The list of forwarded `telethon.tl.custom.message.Message`, The list of forwarded `telethon.tl.custom.message.Message`,
or a single one if a list wasn't provided as input. or a single one if a list wasn't provided as input.
@ -514,7 +530,8 @@ class MessageMethods(UploadMethods, ButtonMethods, MessageParseMethods):
req = functions.messages.ForwardMessagesRequest( req = functions.messages.ForwardMessagesRequest(
from_peer=from_peer, from_peer=from_peer,
id=[m if isinstance(m, int) else m.id for m in messages], id=[m if isinstance(m, int) else m.id for m in messages],
to_peer=entity to_peer=entity,
silent=silent
) )
result = await self(req) result = await self(req)
if isinstance(result, (types.Updates, types.UpdatesCombined)): if isinstance(result, (types.Updates, types.UpdatesCombined)):

View File

@ -31,7 +31,8 @@ class UploadMethods(ButtonMethods, MessageParseMethods, UserMethods):
self, entity, file, *, caption='', force_document=False, self, entity, file, *, caption='', force_document=False,
progress_callback=None, reply_to=None, attributes=None, progress_callback=None, reply_to=None, attributes=None,
thumb=None, allow_cache=True, parse_mode=utils.Default, thumb=None, allow_cache=True, parse_mode=utils.Default,
voice_note=False, video_note=False, buttons=None, **kwargs): voice_note=False, video_note=False, buttons=None, silent=None,
**kwargs):
""" """
Sends a file to the specified entity. Sends a file to the specified entity.
@ -106,6 +107,11 @@ class UploadMethods(ButtonMethods, MessageParseMethods, UserMethods):
you have signed in as a bot. You can also pass your own you have signed in as a bot. You can also pass your own
:tl:`ReplyMarkup` here. :tl:`ReplyMarkup` here.
silent (`bool`, optional):
Whether the message should notify people in a broadcast
channel or not. Defaults to ``False``, which means it will
notify them. Set it to ``True`` to alter this behaviour.
Notes: Notes:
If the ``hachoir3`` package (``hachoir`` module) is installed, If the ``hachoir3`` package (``hachoir`` module) is installed,
it will be used to determine metadata from audio and video files. it will be used to determine metadata from audio and video files.
@ -134,7 +140,7 @@ class UploadMethods(ButtonMethods, MessageParseMethods, UserMethods):
result += await self._send_album( result += await self._send_album(
entity, images[:10], caption=caption, entity, images[:10], caption=caption,
progress_callback=progress_callback, reply_to=reply_to, progress_callback=progress_callback, reply_to=reply_to,
parse_mode=parse_mode parse_mode=parse_mode, silent=silent
) )
images = images[10:] images = images[10:]
@ -144,7 +150,8 @@ class UploadMethods(ButtonMethods, MessageParseMethods, UserMethods):
caption=caption, force_document=force_document, caption=caption, force_document=force_document,
progress_callback=progress_callback, reply_to=reply_to, progress_callback=progress_callback, reply_to=reply_to,
attributes=attributes, thumb=thumb, voice_note=voice_note, attributes=attributes, thumb=thumb, voice_note=voice_note,
video_note=video_note, buttons=buttons, **kwargs video_note=video_note, buttons=buttons, silent=silent,
**kwargs
)) ))
return result return result
@ -170,7 +177,7 @@ class UploadMethods(ButtonMethods, MessageParseMethods, UserMethods):
markup = self._build_reply_markup(buttons) markup = self._build_reply_markup(buttons)
request = functions.messages.SendMediaRequest( request = functions.messages.SendMediaRequest(
entity, media, reply_to_msg_id=reply_to, message=caption, entity, media, reply_to_msg_id=reply_to, message=caption,
entities=msg_entities, reply_markup=markup entities=msg_entities, reply_markup=markup, silent=silent
) )
msg = self._get_response_message(request, await self(request), entity) msg = self._get_response_message(request, await self(request), entity)
self._cache_media(msg, file, file_handle, force_document=force_document) self._cache_media(msg, file, file_handle, force_document=force_document)
@ -179,7 +186,7 @@ class UploadMethods(ButtonMethods, MessageParseMethods, UserMethods):
async def _send_album(self, entity, files, caption='', async def _send_album(self, entity, files, caption='',
progress_callback=None, reply_to=None, progress_callback=None, reply_to=None,
parse_mode=utils.Default): parse_mode=utils.Default, silent=None):
"""Specialized version of .send_file for albums""" """Specialized version of .send_file for albums"""
# We don't care if the user wants to avoid cache, we will use it # 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 # anyway. Why? The cached version will be exactly the same thing
@ -222,7 +229,7 @@ class UploadMethods(ButtonMethods, MessageParseMethods, UserMethods):
# Now we can construct the multi-media request # Now we can construct the multi-media request
result = await self(functions.messages.SendMultiMediaRequest( result = await self(functions.messages.SendMultiMediaRequest(
entity, reply_to_msg_id=reply_to, multi_media=media entity, reply_to_msg_id=reply_to, multi_media=media, silent=silent
)) ))
return [ return [
self._get_response_message(update.id, result, entity) self._get_response_message(update.id, result, entity)