11import html
2+ import io
23import sys
34import traceback
45
@@ -18,26 +19,38 @@ def eval_command(c, msg):
1819 )
1920 return 0
2021 code = msg .text .html [len ("/eval " ):]
22+ old_stdout = sys .stdout
23+ redirected_stdout = sys .stdout = io .StringIO ()
24+
2125 try :
22- result = eval (code ). rstrip ( " \n " )
26+ eval_result = eval (code )
2327 except Exception as e :
24- result = "" .join (traceback .format_exception (e , e , sys .exc_info ()[2 ]))
28+ eval_result = ""
29+ tb = "" .join (traceback .format_exception (e , e , sys .exc_info ()[2 ])).rstrip ("\n " )
30+ else :
31+ tb = ""
32+
33+ sys .stdout = old_stdout
34+ stdout_value = redirected_stdout .getvalue ().rstrip ("\n " )
35+ result = stdout_value + ("\n " + tb if tb else "" )
36+
2537 try :
2638 if len (code + str (result )) > 2000 :
2739 msg .edit_text ("Uploading to nekobin..." )
2840 msg .edit_text (
29- "<b>Code:</b>\n {pasted}\n \n <b>Result:</b>\n {pasted}" .format (
41+ "<b>Code:</b>\n {pasted}\n \n <b>Eval Result:</b> \n {pasted} \n \n <b> Result:</b>\n {pasted}" .format (
3042 pasted = 'Too long! <a href="https://nekobin.com/{url}">Pasted</a>' .format (
3143 url = Nekobin .paste (
32- "Code:\n {}\n \n Result:\n {}" .format (str (code ), str (result ))
44+ "Code:\n {}\n \n Eval Result:\n {}\n \n Result:\n {}" .format (str (code ), str (eval_result ),
45+ str (result ))
3346 )
3447 )
3548 )
3649 )
3750 else :
3851 msg .edit_text (
39- "<b>Code:</b>\n <code>{}</code>\n \n <b>Result:</b>\n <code>{}</code>" .format (
40- html .escape (str (code )[: 1000 ] ), html .escape (str (result )[: 2000 ] )
52+ "<b>Code:</b>\n <code>{}</code>\n \n <b>Eval Result:</b> \n {} \n \n <b> Result:</b>\n <code>{}</code>" .format (
53+ html .escape (str (code )), html .escape (eval_result ), html . escape ( str (result ))
4154 ),
4255 parse_mode = "html" ,
4356 )
0 commit comments