From 641b36ee81c3499c5bfe084f8b789f07bb49ef21 Mon Sep 17 00:00:00 2001 From: AlberLC Date: Wed, 12 Jan 2022 06:02:04 +0100 Subject: [PATCH] Update send_medias --- flanabot/bots/flana_bot.py | 19 ++++++++++++++++--- flanabot/constants.py | 3 +++ flanabot/models/chat.py | 5 ++++- flanabot/models/message.py | 7 +++++++ 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/flanabot/bots/flana_bot.py b/flanabot/bots/flana_bot.py index d00838b..967e3bc 100644 --- a/flanabot/bots/flana_bot.py +++ b/flanabot/bots/flana_bot.py @@ -252,7 +252,8 @@ class FlanaBot(MultiBot, ABC): Source.TWITTER: {MediaType.IMAGE: 0, MediaType.AUDIO: 0, MediaType.GIF: 0, MediaType.VIDEO: 0, None: 0, MediaType.ERROR: 0}, Source.INSTAGRAM: {MediaType.IMAGE: 0, MediaType.AUDIO: 0, MediaType.GIF: 0, MediaType.VIDEO: 0, None: 0, MediaType.ERROR: 0}, Source.TIKTOK: {MediaType.IMAGE: 0, MediaType.AUDIO: 0, MediaType.GIF: 0, MediaType.VIDEO: 0, None: 0, MediaType.ERROR: 0}, - Source.REDDIT: {MediaType.IMAGE: 0, MediaType.AUDIO: 0, MediaType.GIF: 0, MediaType.VIDEO: 0, None: 0, MediaType.ERROR: 0} + Source.REDDIT: {MediaType.IMAGE: 0, MediaType.AUDIO: 0, MediaType.GIF: 0, MediaType.VIDEO: 0, None: 0, MediaType.ERROR: 0}, + None: {MediaType.IMAGE: 0, MediaType.AUDIO: 0, MediaType.GIF: 0, MediaType.VIDEO: 0, None: 0, MediaType.ERROR: 0} } for media in medias: medias_count[media.source][media.type_] += 1 @@ -278,7 +279,7 @@ class FlanaBot(MultiBot, ABC): MediaType.ERROR: 'errores'}[media_type] source_medias_sended_info.append(f'{count} {type_text}') if source_medias_sended_info: - medias_sended_info.append(f"{flanautils.join_last_separator(source_medias_sended_info, ', ', ' y ')} de {source.name}") + medias_sended_info.append(f"{flanautils.join_last_separator(source_medias_sended_info, ', ', ' y ')} de {source.name if source else 'algún sitio'}") medias_sended_info_joined = flanautils.join_last_separator(medias_sended_info, ',\n', ' y\n') new_line = ' ' if len(medias_sended_info) == 1 else '\n' @@ -292,7 +293,15 @@ class FlanaBot(MultiBot, ABC): async def _search_and_send_medias(self, message: Message, send_song_info=False) -> list[Message]: sended_media_messages = [] - if medias := await self._search_medias(message): + bot_state_message: Message | None = None + + if self.is_bot_mentioned(message) or not message.chat.is_group: + bot_state_message = await self.send(random.choice(constants.SCRAPING_PHRASES), message) + + medias = await self._search_medias(message) + if bot_state_message: + await self.delete_message(bot_state_message) + if medias: sended_media_messages, _ = await self.send_medias(medias, message, send_song_info) return sended_media_messages @@ -758,6 +767,10 @@ class FlanaBot(MultiBot, ABC): sended_info_message = await self.send(f'{message.author.name} compartió{self._medias_sended_info(medias)}', message) for media in medias: + if not media.content: + fails += 1 + continue + if media.song_info: message.song_infos.add(media.song_info) message.save() diff --git a/flanabot/constants.py b/flanabot/constants.py index b1a22c3..efdf321 100644 --- a/flanabot/constants.py +++ b/flanabot/constants.py @@ -98,3 +98,6 @@ KEYWORDS = { 'solano', 'storm', 'sun', 'temperatura', 'tempo', 'tiempo', 'tormenta', 've', 'ventisca', 'weather', 'wetter') } + +SCRAPING_PHRASES = ('Analizando...', 'Buscando...', 'Hackeando internet... 👀', 'Rebuscando en la web...', + 'Robando cosas...', 'Scrapeando...', 'Scraping...') diff --git a/flanabot/models/chat.py b/flanabot/models/chat.py index a38d34d..273cc2a 100644 --- a/flanabot/models/chat.py +++ b/flanabot/models/chat.py @@ -1,7 +1,9 @@ -from dataclasses import dataclass +from dataclasses import dataclass, field from multibot import Chat as MultiBotChat +from flanabot.models.user import User + @dataclass(eq=False) class Chat(MultiBotChat): @@ -11,6 +13,7 @@ class Chat(MultiBotChat): 'auto_delete_original': True, 'auto_scraping': True, 'auto_weather_chart': True} + users: list[User] = field(default_factory=list) def __post_init__(self): super().__post_init__() diff --git a/flanabot/models/message.py b/flanabot/models/message.py index 05713de..4f42a96 100644 --- a/flanabot/models/message.py +++ b/flanabot/models/message.py @@ -1,14 +1,21 @@ from __future__ import annotations # todo0 remove in 3.11 from dataclasses import dataclass, field +from typing import Iterable from flanautils import Media, OrderedSet from multibot import Message as MultiBotMessage +from flanabot.models.chat import Chat +from flanabot.models.user import User from flanabot.models.weather_chart import WeatherChart @dataclass(eq=False) class Message(MultiBotMessage): + author: User = None + mentions: Iterable[User] = field(default_factory=list) + chat: Chat = None + replied_message: Message = None weather_chart: WeatherChart = None song_infos: OrderedSet[Media] = field(default_factory=OrderedSet)