from typing import Any from aiohttp import ClientSession from discord import User from libbot.cache.manager import create_cache_client from libbot.pycord.classes import PycordBot as LibPycordBot from classes import PycordUser # from modules.tracking.dhl import update_tracks_dhl class PycordBot(LibPycordBot): def __init__(self, *args, **kwargs) -> None: super().__init__(*args, **kwargs) self._set_cache_engine() self.client_session = ClientSession() if self.scheduler is None: return # Scheduler job for DHL parcel tracking # self.scheduler.add_job( # update_tracks_dhl, # trigger="cron", # hour=self.config["modules"]["tracking"]["fetch_hours"], # args=[self, self.client_session], # ) def _set_cache_engine(self) -> None: if "cache" in self.config and self.config["cache"]["type"] is not None: self.cache = create_cache_client(self.config, self.config["cache"]["type"]) async def find_user(self, user: int | User) -> PycordUser: """Find User by its ID or User object. Args: user (int | User): ID or User object to extract ID from Returns: PycordUser: User object Raises: UserNotFoundException: User was not found and creation was not allowed """ return ( await PycordUser.from_id(user, cache=self.cache) if isinstance(user, int) else await PycordUser.from_id(user.id, cache=self.cache) ) async def start(self, *args: Any, **kwargs: Any) -> None: await super().start(*args, **kwargs) async def close(self, **kwargs) -> None: await self.client_session.close() if self.scheduler is not None: self.scheduler.shutdown() await super().close(**kwargs)