from discord.ext.commands import Cog, Context, command from arthur.apis.netcup.ssh import rce_as_a_service from arthur.bot import KingArthur class RemoteCommands(Cog): """We love RCE.""" def __init__(self, bot: KingArthur) -> None: self.bot = bot @command(name="rce") async def rce(self, ctx: Context, *, command: str) -> None: """Ed is the standard text editor.""" if not ctx.guild: return if not await ctx.bot.is_owner(ctx.author): await ctx.message.add_reaction("❌") return response = await rce_as_a_service(command) if not response.stderr or not response.stdout: await ctx.send("Successfully ran with no output!") return await ctx.send(f"```{response.stderr}```\n```{response.stdout}```") async def setup(bot: KingArthur) -> None: """Add cog to bot.""" await bot.add_cog(RemoteCommands(bot))