# 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">>> {code_str}
\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))