diff --git a/flanabot/bots/flana_bot.py b/flanabot/bots/flana_bot.py index 4fd4683..9c8e3e4 100644 --- a/flanabot/bots/flana_bot.py +++ b/flanabot/bots/flana_bot.py @@ -1,3 +1,5 @@ +__all__ = ['FlanaBot'] + import asyncio import datetime import random @@ -10,6 +12,7 @@ import flanaapis.geolocation.functions import flanaapis.weather.functions import flanautils import plotly.graph_objects +import pymongo from flanaapis import InstagramLoginError, MediaNotFoundError, Place, PlaceNotFoundError, WeatherEmoji, instagram, tiktok, twitter from flanautils import Media, MediaType, NotFoundError, OrderedSet, Source, TimeUnits, TraceMetadata, return_if_first_empty from multibot import Action, BadRoleError, BotAction, MultiBot, SendError, User, admin, bot_mentioned, constants as multibot_constants, group, ignore_self_message, inline, reply @@ -184,6 +187,7 @@ class FlanaBot(MultiBot, ABC): config = message.chat.config buttons_texts = [f"{'✔' if v else '❌'} {k}" for k, v in config.items()] + # noinspection PyTypeChecker return flanautils.chunks(buttons_texts, 3) @return_if_first_empty(exclude_self_types='FlanaBot', globals_=globals()) @@ -460,14 +464,18 @@ class FlanaBot(MultiBot, ABC): @inline(False) async def _on_recover_message(self, message: Message): if message.replied_message: - message_deleted_bot_action = BotAction.find_one({'action': bytes(Action.MESSAGE_DELETED), 'chat': message.chat.object_id, 'affected_objects': message.replied_message.object_id}) + message_deleted_bot_action = BotAction.find_one({'action': Action.MESSAGE_DELETED.value, 'chat': message.chat.object_id, 'affected_objects': message.replied_message.object_id}) elif self.is_bot_mentioned(message): - message_deleted_bot_action = BotAction.find_one({'action': bytes(Action.MESSAGE_DELETED), 'chat': message.chat.object_id, 'date': {'$gt': datetime.datetime.now(datetime.timezone.utc) - constants.RECOVERY_DELETED_MESSAGE_BEFORE}}) + message_deleted_bot_action = BotAction.find_one({ + 'action': Action.MESSAGE_DELETED.value, + 'chat': message.chat.object_id, + 'date': {'$gt': datetime.datetime.now(datetime.timezone.utc) - constants.RECOVERY_DELETED_MESSAGE_BEFORE} + }, sort_keys=(('date', pymongo.DESCENDING),)) else: return if not message_deleted_bot_action: - await self.send_error(random.choice(constants.RECOVER_PHRASES), message) + await self.send_error('No hay nada que recuperar.', message) return affected_object_ids = [affected_message_object_id for affected_message_object_id in message_deleted_bot_action.affected_objects] @@ -475,8 +483,6 @@ class FlanaBot(MultiBot, ABC): for deleted_message in deleted_messages: await self.send(deleted_message.text, message) - message_deleted_bot_action.delete() - async def _on_scraping(self, message: Message, delete_original: bool = None) -> OrderedSet[Media]: sended_media_messages = await self._search_and_send_medias(message.replied_message) if message.replied_message else OrderedSet() sended_media_messages += await self._search_and_send_medias(message) @@ -758,10 +764,7 @@ class FlanaBot(MultiBot, ABC): message.song_infos.add(media.song_info) message.save() - try: - bot_message = await self.send(media, message) - except SendError as e: - await self._manage_exceptions(e, message) + if not (bot_message := await self.send(media, message)): fails += 1 else: sended_media_messages.append(bot_message) diff --git a/flanabot/bots/flana_disc_bot.py b/flanabot/bots/flana_disc_bot.py index ff9fc59..2ac106d 100644 --- a/flanabot/bots/flana_disc_bot.py +++ b/flanabot/bots/flana_disc_bot.py @@ -1,3 +1,5 @@ +__all__ = ['FlanaDiscBot'] + import asyncio import os diff --git a/flanabot/bots/flana_tele_bot.py b/flanabot/bots/flana_tele_bot.py index 2a3eb5e..6a2f473 100644 --- a/flanabot/bots/flana_tele_bot.py +++ b/flanabot/bots/flana_tele_bot.py @@ -1,5 +1,7 @@ from __future__ import annotations # todo0 remove in 3.11 +__all__ = ['whitelisted_event', 'FlanaTeleBot'] + import functools import os from typing import Callable diff --git a/flanabot/constants.py b/flanabot/constants.py index 8d694ad..ce5852d 100644 --- a/flanabot/constants.py +++ b/flanabot/constants.py @@ -71,14 +71,5 @@ KEYWORDS = { 'wetter') } -RECOVER_PHRASES = ( - 'No hay nada que recuperar.', - 'Ya lo he recuperado y enviado, así que callate ya.', - 'Ya lo he recuperado y enviado, así que mejor estás antento antes de dar por culo.', - 'Ya lo he recuperado y enviado, no lo voy a hacer dos veces.', - 'Ya lo he recuperado y enviado. A ver si leemos más y jodemos menos.', - 'Ya lo he reenviado.' -) - SCRAPING_PHRASES = ('Analizando...', 'Buscando...', 'Hackeando internet... 👀', 'Rebuscando en la web...', 'Robando cosas...', 'Scrapeando...', 'Scraping...') diff --git a/flanabot/main.py b/flanabot/main.py index 2e4dfc8..15faa5d 100644 --- a/flanabot/main.py +++ b/flanabot/main.py @@ -5,7 +5,7 @@ import flanautils os.environ |= flanautils.find_environment_variables('../.env') import asyncio - +from multibot import TwitchBot from flanabot.bots.flana_disc_bot import FlanaDiscBot from flanabot.bots.flana_tele_bot import FlanaTeleBot @@ -13,10 +13,24 @@ from flanabot.bots.flana_tele_bot import FlanaTeleBot async def main(): flana_disc_bot = FlanaDiscBot() flana_tele_bot = FlanaTeleBot() + t = TwitchBot( + bot_token=os.environ['TWITCH_ACCESS_TOKEN'], + initial_channels=['flanaganvaquero'], + owner_name='flanaganvaquero' + ) + + @t.register(always=True) + async def asd(message): + await t.send('@flanaganvaquero adios', message, reply_to=message) + # await message.chat.original_object._ws.reply(message.id, f"PRIVMSG #{message.author.name.lower()} :awdwhkajwd\r\n") + # await message.original_object.channel.reply('asd') + # m = await t.send('hola', message, reply_to=message.id) + # await t.send('me respondo a mi mismo', message, reply_to=m) await asyncio.gather( flana_disc_bot.start(), - flana_tele_bot.start() + flana_tele_bot.start(), + t.start() ) diff --git a/flanabot/models/chat.py b/flanabot/models/chat.py index f1a7b68..0d141d4 100644 --- a/flanabot/models/chat.py +++ b/flanabot/models/chat.py @@ -1,3 +1,5 @@ +__all__ = ['Chat'] + from dataclasses import dataclass from multibot.models import Chat as MultiBotChat diff --git a/flanabot/models/enums.py b/flanabot/models/enums.py index 8812e6d..90f04f9 100644 --- a/flanabot/models/enums.py +++ b/flanabot/models/enums.py @@ -1,3 +1,5 @@ +__all__ = ['ButtonsMessageType'] + from enum import auto from flanautils import FlanaEnum diff --git a/flanabot/models/message.py b/flanabot/models/message.py index 0acd49f..b737761 100644 --- a/flanabot/models/message.py +++ b/flanabot/models/message.py @@ -1,5 +1,7 @@ from __future__ import annotations # todo0 remove in 3.11 +__all__ = ['Message'] + from dataclasses import dataclass, field from typing import Iterable diff --git a/flanabot/models/weather_chart.py b/flanabot/models/weather_chart.py index 00cb52a..e9abbbb 100644 --- a/flanabot/models/weather_chart.py +++ b/flanabot/models/weather_chart.py @@ -1,3 +1,5 @@ +__all__ = ['Direction', 'WeatherChart'] + import datetime from dataclasses import dataclass, field diff --git a/requirements.txt b/requirements.txt index 7fc835a..98ade22 100644 --- a/requirements.txt +++ b/requirements.txt @@ -54,7 +54,7 @@ tenacity==8.0.1 TikTokApi==4.1.0 trio==0.19.0 trio-websocket==0.9.2 -twitchio==2.1.4 +twitchio==2.3.0 typing_extensions==4.0.1 ujson==5.1.0 urllib3==1.26.8