From 6a089fd19f4ba4d153073372a14713e9e10ccd2b Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 1 Sep 2019 14:42:09 +0300 Subject: [PATCH] Add message.send_copy method --- aiogram/types/message.py | 101 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 99 insertions(+), 2 deletions(-) diff --git a/aiogram/types/message.py b/aiogram/types/message.py index 0097fe58..ef295714 100644 --- a/aiogram/types/message.py +++ b/aiogram/types/message.py @@ -32,7 +32,6 @@ from .video_note import VideoNote from .voice import Voice from ..utils import helper from ..utils import markdown as md -from ..utils.deprecated import warn_deprecated class Message(base.TelegramObject): @@ -959,7 +958,6 @@ class Message(base.TelegramObject): reply_to_message_id=self.message_id if reply else None, reply_markup=reply_markup) - async def reply_animation(self, animation: typing.Union[base.InputFile, base.String], duration: typing.Union[base.Integer, None] = None, width: typing.Union[base.Integer, None] = None, @@ -1566,6 +1564,105 @@ class Message(base.TelegramObject): """ return await self.chat.pin_message(self.message_id, disable_notification) + async def send_copy( + self: Message, + chat_id: typing.Union[str, int], + with_markup: bool = False, + disable_notification: typing.Optional[bool] = None, + reply_to_message_id: typing.Optional[int] = None, + ) -> Message: + """ + Send copy of current message + + :param chat_id: + :param with_markup: + :param disable_notification: + :param reply_to_message_id: + :return: + """ + bot_instance = self.bot + + kwargs = {"chat_id": chat_id, "parse_mode": ParseMode.HTML} + + if disable_notification is not None: + kwargs["disable_notification"] = disable_notification + if reply_to_message_id is not None: + kwargs["reply_to_message_id"] = reply_to_message_id + if with_markup and self.reply_markup: + kwargs["reply_markup"] = self.reply_markup + + text = self.html_text if (self.text or self.caption) else None + + if self.text: + return await bot_instance.send_message(text=text, **kwargs) + elif self.audio: + return await bot_instance.send_audio( + audio=self.audio.file_id, + caption=text, + title=self.audio.title, + performer=self.audio.performer, + duration=self.audio.duration, + **kwargs + ) + elif self.animation: + return await bot_instance.send_animation( + animation=self.animation.file_id, caption=text, **kwargs + ) + elif self.document: + return await bot_instance.send_document( + document=self.document.file_id, caption=text, **kwargs + ) + elif self.photo: + return await bot_instance.send_photo( + photo=self.photo[-1].file_id, caption=text, **kwargs + ) + elif self.sticker: + kwargs.pop("parse_mode") + return await bot_instance.send_sticker(sticker=self.sticker.file_id, **kwargs) + elif self.video: + return await bot_instance.send_video( + video=self.video.file_id, caption=text, **kwargs + ) + elif self.video_note: + kwargs.pop("parse_mode") + return await bot_instance.send_video_note( + video_note=self.video_note.file_id, **kwargs + ) + elif self.voice: + return await bot_instance.send_voice(voice=self.voice.file_id, **kwargs) + elif self.contact: + kwargs.pop("parse_mode") + return await bot_instance.send_contact( + phone_number=self.contact.phone_number, + first_name=self.contact.first_name, + last_name=self.contact.last_name, + vcard=self.contact.vcard, + **kwargs + ) + elif self.venue: + kwargs.pop("parse_mode") + return await bot_instance.send_venue( + latitude=self.venue.location.latitude, + longitude=self.venue.location.longitude, + title=self.venue.title, + address=self.venue.address, + foursquare_id=self.venue.foursquare_id, + foursquare_type=self.venue.foursquare_type, + **kwargs + ) + elif self.location: + kwargs.pop("parse_mode") + return await bot_instance.send_location( + latitude=self.location.latitude, longitude=self.location.longitude, **kwargs + ) + elif self.poll: + kwargs.pop("parse_mode") + return await bot_instance.send_poll( + question=self.poll.question, options=self.poll.options, **kwargs + ) + else: + raise TypeError("This type of message can't be copied.") + def __int__(self): return self.message_id