😝

😝

DarkzzAngel
import asyncio
from http import client
import io
import os
import sys
import traceback

from ..helpers.utils import _format
from . import *

try:
    from pyrogram import Client, filters
except:
    install_pip("pyrogram")
    from pyrogram import Client, filters

from pyrogram.types import Message

plugin_category = "tools"

pyro_string = os.environ.get("PYRO_STRING")

Pclient = Client(
    pyro_string,
    api_id=Config.APP_ID,
    api_hash=Config.API_HASH,
)


async def react(self, emoji):
    return await self.client.send_reaction(self.chat.id, self.message_id, emoji)

Message.client = Pclient
Message.react = react


@catub.cat_cmd(
    pattern="peval",
    command=("peval", plugin_category),
    info={
        "header": "Evaluate Pyrogram Code",
        "description": "Evaluate Pyrogram Code",
    },
    require_admin=True,
)
async def _(event):
    try:
        await Pclient.start()
    except:
        pass
    message = await Pclient.get_messages(event.chat_id, event.message.id)
    cmd = "".join(event.message.message.split(maxsplit=1)[1:])
    if not cmd:
        await message.edit("`What should i run ?..`")
        await Pclient.stop()
        return

    catevent = await message.edit("`Running ...`")
    old_stderr = sys.stderr
    old_stdout = sys.stdout
    redirected_output = sys.stdout = io.StringIO()
    redirected_error = sys.stderr = io.StringIO()
    stdout, stderr, exc = None, None, None
    try:
        await aexec(cmd, message)
    except Exception:
        exc = traceback.format_exc()
    stdout = redirected_output.getvalue()
    stderr = redirected_error.getvalue()
    sys.stdout = old_stdout
    sys.stderr = old_stderr
    evaluation = ""
    if exc:
        evaluation = exc
    elif stderr:
        evaluation = stderr
    elif stdout:
        evaluation = stdout
    else:
        evaluation = "Success"
    final_output = (
        f"**•  Eval : **\n```{cmd}``` \n\n**•  Result : **\n```{evaluation}``` \n"
    )
    await message.edit(
        final_output
    )
    if BOTLOG:
        await Pclient.send_message(
            BOTLOG_CHATID,
            "eval command " + cmd + " was executed sucessfully.",
        )
    await Pclient.stop()


async def aexec(code, smessatatus: Message):
    message = event = smessatatus
    def p(_x): return print(_format.yaml_format(_x))
    reply = message.reply_to_message
    exec(
        (
            "async def __aexec(message, event , reply, client, p, chat): "
            + "".join(f"\n {l}" for l in code.split("\n"))
        )
    )

    return await locals()["__aexec"](
        message, event, reply, Pclient, p, message.chat.id
    )

Report Page