diff --git a/jarvis/__init__.py b/jarvis/__init__.py index b7c6f1a..45d3232 100644 --- a/jarvis/__init__.py +++ b/jarvis/__init__.py @@ -18,7 +18,7 @@ file_handler = logging.FileHandler(filename="jarvis.log", encoding="UTF-8", mode file_handler.setFormatter(logging.Formatter("[%(asctime)s][%(levelname)s][%(name)s] %(message)s")) logger.addHandler(file_handler) -intents = Intents.DEFAULT | Intents.MESSAGES | Intents.GUILD_MEMBERS +intents = Intents.DEFAULT | Intents.MESSAGES | Intents.GUILD_MEMBERS | Intents.GUILD_MESSAGES restart_ctx = None diff --git a/jarvis/client.py b/jarvis/client.py index 6d5792f..253abf0 100644 --- a/jarvis/client.py +++ b/jarvis/client.py @@ -4,7 +4,14 @@ import traceback from datetime import datetime from aiohttp import ClientSession -from dis_snek import Context, Snake, listen +from dis_snek import Snake, listen +from dis_snek.models.discord.channel import DMChannel +from dis_snek.models.discord.embed import EmbedField +from dis_snek.models.snek.context import Context, InteractionContext +from jarvis_core.db import q +from jarvis_core.db.models import Setting +from jarvis_core.util import build_embed +from jarvis_core.util.ansi import RESET, Fore, Format, fmt DEFAULT_GUILD = 862402786116763668 DEFAULT_ERROR_CHANNEL = 943395824560394250 @@ -23,6 +30,10 @@ Callback: {callback_kwargs} """ +KEY_FMT = fmt(Fore.GRAY) +VAL_FMT = fmt(Fore.WHITE) +CMD_FMT = fmt(Fore.GREEN, Format.BOLD) + class Jarvis(Snake): @listen() @@ -35,6 +46,32 @@ class Jarvis(Snake): "{}&permissions=8&scope=bot%20applications.commands".format(self.user.id) ) + async def on_command(self, ctx: InteractionContext) -> None: + """Lepton on_command override.""" + if not isinstance(ctx.channel, DMChannel) and ctx.invoked_name not in ["pw"]: + modlog = await Setting.find_one(q(guild=ctx.guild.id, setting="modlog")) + if modlog: + channel = await ctx.guild.fetch_channel(modlog.value) + args = " ".join(f"{KEY_FMT}{k}:{VAL_FMT}{v}{RESET}" for k, v in ctx.kwargs.items()) + fields = [ + EmbedField( + name="Command", + value=f"```ansi\n{CMD_FMT}{ctx.invoked_name}{RESET} {args}\n```", + inline=False, + ), + ] + embed = build_embed( + title="Command Invoked", + description=f"{ctx.author.mention} invoked a command", + fields=fields, + color="#fc9e3f", + ) + embed.set_author(name=ctx.author.username, icon_url=ctx.author.display_avatar.url) + embed.set_footer( + text=f"{ctx.author.username}#{ctx.author.discriminator} | {ctx.author.id}" + ) + await channel.send(embed=embed) + async def on_command_error( self, ctx: Context, error: Exception, *args: list, **kwargs: dict ) -> None: diff --git a/poetry.lock b/poetry.lock index e90ef29..830b51d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -214,7 +214,7 @@ plugins = ["setuptools"] [[package]] name = "jarvis-core" -version = "0.4.1" +version = "0.5.0" description = "" category = "main" optional = false @@ -232,7 +232,7 @@ umongo = "^3.1.0" type = "git" url = "https://git.zevaryx.com/stark-industries/jarvis/jarvis-core.git" reference = "main" -resolved_reference = "20f67444579d36d508def2b47ea826af9bbdd2d7" +resolved_reference = "f392757bb773cfeb9b3f14d581a599d13ee6e891" [[package]] name = "jedi"