mirror of
https://github.com/TeamPGM/PagerMaid-Pyro.git
synced 2024-11-16 16:26:49 +00:00
92 lines
2.8 KiB
Python
92 lines
2.8 KiB
Python
from os.path import exists, sep
|
|
from sys import exit
|
|
from platform import node
|
|
from getpass import getuser
|
|
|
|
from pyrogram.enums import ParseMode
|
|
|
|
from pagermaid.common.system import run_eval
|
|
from pagermaid.listener import listener
|
|
from pagermaid.enums import Message
|
|
from pagermaid.utils import attach_log, execute, lang, upload_attachment
|
|
|
|
|
|
@listener(is_plugin=False, command="sh",
|
|
need_admin=True,
|
|
description=lang('sh_des'),
|
|
parameters=lang('sh_parameters'))
|
|
async def sh(message: Message):
|
|
""" Use the command-line from Telegram. """
|
|
user = getuser()
|
|
command = message.arguments
|
|
hostname = node()
|
|
|
|
if not command:
|
|
await message.edit(lang('arg_error'))
|
|
return
|
|
|
|
message = await message.edit(
|
|
f"`{user}`@{hostname} ~"
|
|
f"\n> `$` {command}"
|
|
)
|
|
|
|
result = await execute(command)
|
|
|
|
if result:
|
|
if len(result) > 4096:
|
|
await attach_log(result, message.chat.id, "output.log", message.id)
|
|
return
|
|
|
|
await message.edit(
|
|
f"`{user}`@{hostname} ~"
|
|
f"\n> `#` {command}"
|
|
f"\n`{result}`"
|
|
)
|
|
else:
|
|
return
|
|
|
|
|
|
@listener(is_plugin=False, command="restart",
|
|
need_admin=True,
|
|
description=lang('restart_des'))
|
|
async def restart(message: Message):
|
|
""" To re-execute PagerMaid. """
|
|
if not message.text[0].isalpha():
|
|
await message.edit(lang('restart_log'))
|
|
exit(0)
|
|
|
|
|
|
@listener(is_plugin=False, command="eval",
|
|
need_admin=True,
|
|
description=lang('eval_des'),
|
|
parameters=lang('eval_parameters'))
|
|
async def sh_eval(message: Message):
|
|
""" Run python commands from Telegram. """
|
|
dev_mode = exists(f"data{sep}dev")
|
|
try:
|
|
assert dev_mode
|
|
cmd = message.text.split(" ", maxsplit=1)[1]
|
|
except (IndexError, AssertionError):
|
|
return await message.edit(lang('eval_need_dev'))
|
|
final_output = await run_eval(cmd, message)
|
|
if len(final_output) > 4096:
|
|
message = await message.edit(f"**>>>** `{cmd}`", parse_mode=ParseMode.MARKDOWN)
|
|
await attach_log(final_output, message.chat.id, "output.log", message.id)
|
|
else:
|
|
await message.edit(final_output)
|
|
|
|
|
|
@listener(is_plugin=False, command="send_log",
|
|
need_admin=True,
|
|
description=lang("send_log_des"))
|
|
async def send_log(message: Message):
|
|
""" Send log to a chat. """
|
|
if not exists("pagermaid.log.txt"):
|
|
return await message.edit(lang("send_log_not_found"))
|
|
await upload_attachment("pagermaid.log.txt",
|
|
message.chat.id,
|
|
message.reply_to_message_id or message.reply_to_top_message_id,
|
|
thumb=f"pagermaid{sep}assets{sep}logo.jpg",
|
|
caption=lang("send_log_caption"))
|
|
await message.safe_delete()
|