from __future__ import annotations from Database.x_classes import AccountRating, DownloadMode, ErrorID from tweety.exceptions_ import UserNotFound, UserProtected from typing import TYPE_CHECKING if TYPE_CHECKING: from runtimeBotData import RuntimeBotData class TwitterContainer(): id : int name : str rating : str discord_channel_id : int = 0 discord_thread_id : int = 0 download_mode : int = 0 def __init__(self, name : str, rating = AccountRating.NSFW, discord_channel_id = 0, discord_thread_id = 0, download_mode = DownloadMode.NO_DOWNLOAD, id = 0, **kwargs): self.id = id self.name = name self.rating = rating.upper() self.discord_channel_id = discord_channel_id self.discord_thread_id = discord_thread_id self.download_mode = download_mode async def UpdateMediaPosts(self, botData : RuntimeBotData): all_posts = botData.db.get_all_post_ids(self.id) newest_post = 1 if len(all_posts) == 0 else max(all_posts) posts = [] try: async for tweet in botData.twApi.get_tweets(user_name = self.name, bottom_id = newest_post, all_posts = all_posts): posts.append(tweet) except (UserProtected, UserNotFound) as ex: print("User dead: ", self.name, ex) return ErrorID.ACCOUNT_DEAD, [] except Exception as ex: print("Error in ", self.name, ex) return ErrorID.ACCOUNT_SKIP, [] return ErrorID.SUCCESS, posts