From 57f94aaa4e0793c78533a3a0a4262794a309fbc4 Mon Sep 17 00:00:00 2001 From: AlberLC Date: Tue, 16 Aug 2022 20:55:58 +0200 Subject: [PATCH] Fix scraping with reply --- flanabot/bots/flana_bot.py | 45 ++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/flanabot/bots/flana_bot.py b/flanabot/bots/flana_bot.py index 6606bcb..3c0065f 100644 --- a/flanabot/bots/flana_bot.py +++ b/flanabot/bots/flana_bot.py @@ -307,6 +307,32 @@ class FlanaBot(MultiBot, ABC): return sended_media_messages + async def _scrape_send_and_delete( + self, + message: Message, + audio_only=False, + sended_media_messages: OrderedSet[Media] = None + ) -> OrderedSet[Media]: + if sended_media_messages is None: + sended_media_messages = OrderedSet() + + sended_media_messages += await self._scrape_and_send(message, audio_only) + + if ( + sended_media_messages + and + message.chat.is_group + and + not message.replied_message + and + message.chat.config['auto_delete_original'] + ): + # noinspection PyTypeChecker + BotAction(Action.MESSAGE_DELETED, message, affected_objects=[message, *sended_media_messages]).save() + await self.delete_message(message) + + return sended_media_messages + async def _search_medias(self, message: Message, audio_only=False, timeout_for_media: int | float = None) -> OrderedSet[Media]: medias = OrderedSet() @@ -483,7 +509,7 @@ class FlanaBot(MultiBot, ABC): and not message.chat.config['auto_scraping'] or - not await self._on_scraping(message) + not await self._scrape_send_and_delete(message) ) and ( @@ -649,22 +675,7 @@ class FlanaBot(MultiBot, ABC): if message.replied_message: sended_media_messages += await self._scrape_and_send(message.replied_message, audio_only) - sended_media_messages += await self._scrape_and_send(message, audio_only) - - if ( - sended_media_messages - and - message.chat.is_group - and - not message.replied_message - and - message.chat.config['auto_delete_original'] - ): - # noinspection PyTypeChecker - BotAction(Action.MESSAGE_DELETED, message, affected_objects=[message, *sended_media_messages]).save() - await self.delete_message(message) - - return sended_media_messages + return await self._scrape_send_and_delete(message, audio_only, sended_media_messages) async def _on_scraping_audio(self, message: Message) -> OrderedSet[Media]: return await self._on_scraping(message, audio_only=True)