jarvis-bot/jarvis/client/__init__.py

38 lines
1.3 KiB
Python

"""Custom JARVIS client."""
import logging
from typing import TYPE_CHECKING
from jarvis_core.util.ansi import Fore, Format, fmt
from naff.models.naff.context import Context, InteractionContext, PrefixedContext
from nafftrack.client import StatsClient
from jarvis.client.errors import ErrorMixin
from jarvis.client.events import EventMixin
from jarvis.client.tasks import TaskMixin
if TYPE_CHECKING:
from aioredis import Redis
KEY_FMT = fmt(Fore.GRAY)
VAL_FMT = fmt(Fore.WHITE)
CMD_FMT = fmt(Fore.GREEN, Format.BOLD)
class Jarvis(StatsClient, ErrorMixin, EventMixin, TaskMixin):
def __init__(self, redis: "Redis", *args, **kwargs): # noqa: ANN002 ANN003
super().__init__(*args, **kwargs)
self.redis = redis
self.logger = logging.getLogger(__name__)
self.phishing_domains = []
self.pre_run_callback = self._prerun
self.synced = False
async def _prerun(self, ctx: Context, *args, **kwargs) -> None:
name = ctx.invoke_target
cargs = ""
if isinstance(ctx, InteractionContext) and ctx.target_id:
kwargs["context target"] = ctx.target
cargs = " ".join(f"{k}:{v}" for k, v in kwargs.items())
elif isinstance(ctx, PrefixedContext):
cargs = " ".join(args)
self.logger.debug(f"Running command `{name}` with args: {cargs or 'None'}")