mirror of
https://github.com/TeamPGM/PagerMaid_Plugins_Pyro.git
synced 2024-11-16 14:21:10 +00:00
76 lines
2.2 KiB
Python
76 lines
2.2 KiB
Python
# python3
|
|
# -*- coding: utf-8 -*-
|
|
# @Time : 2021/11/22 14:17
|
|
# @Author : yzyyz
|
|
# @Email : youzyyz1384@qq.com
|
|
# @File : run.py
|
|
# @Software: PyCharm
|
|
import re
|
|
import httpx
|
|
|
|
from pagermaid.listener import listener
|
|
from pagermaid.enums import Message, AsyncClient
|
|
|
|
codeType = {
|
|
'py': ['python', 'py'],
|
|
'cpp': ['cpp', 'cpp'],
|
|
'java': ['java', 'java'],
|
|
'php': ['php', 'php'],
|
|
'js': ['javascript', 'js'],
|
|
'c': ['c', 'c'],
|
|
'c#': ['csharp', 'cs'],
|
|
'go': ['go', 'go'],
|
|
'asm': ['assembly', 'asm']
|
|
}
|
|
|
|
|
|
async def run(string: str, client: AsyncClient):
|
|
string = string.replace('&', '&').replace('[', '[').replace(']', ']')
|
|
try:
|
|
a = re.findall(r'(py|php|java|cpp|js|c#|c|go|asm)\s?(-i)?\s?(\w*)?(\n|\r)((?:.|\n)+)', string)[0]
|
|
print(a)
|
|
except Exception:
|
|
return "输入有误汪\n目前仅支持c/cpp/c#/py/php/go/java/js"
|
|
lang, code_str = a[0], a[4]
|
|
if "-i" in string:
|
|
data_json = {
|
|
"files": [
|
|
{
|
|
"name": f"main.{codeType[lang][1]}",
|
|
"content": code_str
|
|
}
|
|
],
|
|
"stdin": a[2],
|
|
"command": ""
|
|
}
|
|
else:
|
|
data_json = {
|
|
"files": [
|
|
{
|
|
"name": f"main.{codeType[lang][1]}",
|
|
"content": code_str
|
|
}
|
|
],
|
|
"stdin": "",
|
|
"command": ""
|
|
}
|
|
headers = {
|
|
"Authorization": "Token 0123456-789a-bcde-f012-3456789abcde",
|
|
"content-type": "application/"
|
|
}
|
|
res = await client.post(
|
|
url=f'https://glot.io/run/{codeType[lang][0]}?version=latest',
|
|
headers=headers,
|
|
json=data_json
|
|
)
|
|
if res.status_code != 200:
|
|
return "请求失败了呐~~~"
|
|
if res.json()['stdout'] == "":
|
|
return res.json()['stderr'].strip()
|
|
return f"<b>>>></b> <code>{code_str}</code> \n{res.json()['stdout']}"
|
|
|
|
|
|
@listener(command="code", description="运行代码", parameters="[语言] [-i] [inputText]\n[代码]")
|
|
async def code(message: Message, client: AsyncClient):
|
|
await message.edit(await run(message.arguments, client))
|