summaryrefslogtreecommitdiff
path: root/ATRI/plugins/code_runner.py
diff options
context:
space:
mode:
authorKyomotoi <[email protected]>2021-07-08 22:09:00 +0800
committerKyomotoi <[email protected]>2021-07-08 22:09:00 +0800
commitbe2747e4d4b820ca0f1f988d3b77a628da26fe7b (patch)
treee1a59dd79ecd973a7d704568dcdc018f1f1b651a /ATRI/plugins/code_runner.py
parenta4e1b9d1581d756ef79ad063d1c0bd6b2fd13c1d (diff)
downloadATRI-be2747e4d4b820ca0f1f988d3b77a628da26fe7b.tar.gz
ATRI-be2747e4d4b820ca0f1f988d3b77a628da26fe7b.tar.bz2
ATRI-be2747e4d4b820ca0f1f988d3b77a628da26fe7b.zip
🔖♻️🐛🔧🔥📝 更新版本:YHN-001-A03
🔖 更新版本至:YHN-001-A03 ✨ 新增插件: - 涩图 - 闲聊(文爱 ♻️ 重构: - Service - 所有插件 🐛 修复部分小bug 🔧 暂时移除部分设置 🔥 删除: - 插件:nsfw、wife。日后加回 - 插件 essential 中部分内容 📝 更新README
Diffstat (limited to 'ATRI/plugins/code_runner.py')
-rw-r--r--ATRI/plugins/code_runner.py111
1 files changed, 0 insertions, 111 deletions
diff --git a/ATRI/plugins/code_runner.py b/ATRI/plugins/code_runner.py
deleted file mode 100644
index 363815f..0000000
--- a/ATRI/plugins/code_runner.py
+++ /dev/null
@@ -1,111 +0,0 @@
-"""
-Idea from: https://github.com/cczu-osa/aki
-"""
-import json
-from nonebot.adapters.cqhttp import Bot, MessageEvent
-
-from ATRI.rule import is_in_service
-from ATRI.service import Service as sv
-from ATRI.utils.request import post_bytes
-from ATRI.exceptions import RequestError
-
-
-RUN_API_URL_FORMAT = "https://glot.io/run/{}?version=latest"
-SUPPORTED_LANGUAGES = {
- "assembly": {"ext": "asm"},
- "bash": {"ext": "sh"},
- "c": {"ext": "c"},
- "clojure": {"ext": "clj"},
- "coffeescript": {"ext": "coffe"},
- "cpp": {"ext": "cpp"},
- "csharp": {"ext": "cs"},
- "erlang": {"ext": "erl"},
- "fsharp": {"ext": "fs"},
- "go": {"ext": "go"},
- "groovy": {"ext": "groovy"},
- "haskell": {"ext": "hs"},
- "java": {"ext": "java", "name": "Main"},
- "javascript": {"ext": "js"},
- "julia": {"ext": "jl"},
- "kotlin": {"ext": "kt"},
- "lua": {"ext": "lua"},
- "perl": {"ext": "pl"},
- "php": {"ext": "php"},
- "python": {"ext": "py"},
- "ruby": {"ext": "rb"},
- "rust": {"ext": "rs"},
- "scala": {"ext": "scala"},
- "swift": {"ext": "swift"},
- "typescript": {"ext": "ts"},
-}
-
-
-__doc__ = """
-在线运行代码
-权限组:所有人
-用法:
- /code (lang) (code)
-示例:
- /code python
- print('Hello world!')
-"""
-
-code_runner = sv.on_command(cmd="/code", docs=__doc__, rule=is_in_service("code"))
-
-
-@code_runner.handle()
-async def _code_runner(bot: Bot, event: MessageEvent) -> None:
- msg = str(event.message).split("\n")
-
- if msg[0] == "list":
- msg0 = "咱现在支持的语言如下:\n"
- msg0 += ", ".join(map(str, SUPPORTED_LANGUAGES.keys()))
-
- await code_runner.finish(msg0)
- elif not msg[0]:
- await code_runner.finish("请键入/help以获取更多支持...")
-
- laug = msg[0].replace("\r", "")
- if laug not in SUPPORTED_LANGUAGES:
- await code_runner.finish("该语言暂不支持...")
-
- del msg[0]
- code = "\n".join(map(str, msg))
- try:
- req = await post_bytes(
- RUN_API_URL_FORMAT.format(laug),
- json={
- "files": [
- {
- "name": (
- SUPPORTED_LANGUAGES[laug].get("name", "main")
- + f".{SUPPORTED_LANGUAGES[laug]['ext']}"
- ),
- "content": code,
- }
- ],
- "stdin": "",
- "command": "",
- },
- )
- except RequestError:
- raise RequestError("Failed to request!")
-
- payload = json.loads(req)
- sent = False
- for k in ["stdout", "stderr", "error"]:
- v = payload.get(k)
- lines = v.splitlines()
- lines, remained_lines = lines[:10], lines[10:]
- out = "\n".join(lines)
- out, remained_out = out[: 60 * 10], out[60 * 10 :]
-
- if remained_lines or remained_out:
- out += f"\n(太多了太多了...)"
-
- if out:
- await bot.send(event, f"{k}:\n\n{out}")
- sent = True
-
- if not sent:
- await code_runner.finish("Running success! Nothing print.")