😝
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
)