Add !rust in modules/rust_eval.py
This commit is contained in:
parent
383767c7fb
commit
0b975b72de
1 changed files with 40 additions and 0 deletions
40
modules/rust_eval.py
Normal file
40
modules/rust_eval.py
Normal file
|
@ -0,0 +1,40 @@
|
|||
import json, socket
|
||||
from src import ModuleManager, utils
|
||||
|
||||
EVAL_URL = "https://play.rust-lang.org/execute"
|
||||
FN_TEMPLATE = """
|
||||
fn main() {
|
||||
println!(\"{:?}\", {
|
||||
%s
|
||||
});
|
||||
}
|
||||
"""
|
||||
|
||||
class Module(ModuleManager.BaseModule):
|
||||
_name = "Rust"
|
||||
@utils.hook("received.command.rust", min_args=1)
|
||||
def eval(self, event):
|
||||
"""
|
||||
:help: Evaluate a rust statement
|
||||
:usage: <statement>
|
||||
"""
|
||||
try:
|
||||
page = utils.http.get_url(EVAL_URL, post_data=json.dumps({
|
||||
"code": FN_TEMPLATE % event["args"],
|
||||
"channel": "nightly",
|
||||
"crateType": "bin",
|
||||
"mode": "debug",
|
||||
"tests": False,
|
||||
"execute": True,
|
||||
"target": "ast",
|
||||
"backtrace": False
|
||||
}), method="POST", json=True)
|
||||
except socket.timeout:
|
||||
event["stderr"].write("%s: eval timed out" %
|
||||
event["user"].nickname)
|
||||
return
|
||||
|
||||
if page["success"]:
|
||||
event["stdout"].write(page["stdout"])
|
||||
else:
|
||||
event["stderr"].write(page["stderr"])
|
Loading…
Reference in a new issue