import time import random import traceback from main import BOTCONFIG from colorama import Fore from lib_not_dr.loggers import config logger = config.get_logger("safe_eval") def safe_eval(code: str) -> str: try: # code = code.replace('help', '坏东西!\n') # code = code.replace('bytes', '坏东西!\n') # code = code.replace('encode', '坏东西!\n') # code = code.replace('decode', '坏东西!\n') # code = code.replace('compile', '屑的!\n') # code = code.replace('globals', '拿不到!\n') code = code.replace("os", "坏东西!\n") code = code.replace("sys", "坏东西!\n") # code = code.replace('input', '坏东西!\n') # code = code.replace('__', '啊哈!\n') # code = code.replace('import', '很坏!\n') code = code.replace(" kill", "别跑!\n") code = code.replace(" rm ", "别跑!\n") code = code.replace("exit", "好坏!\n") code = code.replace("eval", "啊哈!\n") code = code.replace("exec", "抓住!\n") start_time = time.time() try: import os import math import decimal global_val = { "time": time, "math": math, "decimal": decimal, "random": random, "__import__": "", "globals": "", "compile": "", "help": "", "exit": "", "input": "", "return": "别惦记你那个 return 了", "getattr": "", "setattr": "", } os.system = "不许" result = str(eval(code, global_val, {})) limit = 500 if len(result) > limit: result = result[:limit] except: result = traceback.format_exc() end_time = time.time() result = result.replace(BOTCONFIG.private_key, "***") result = result.replace(BOTCONFIG.host, "***") logger.info(f"{Fore.MAGENTA}safe_eval: {result}") if result == "6" or result == 6: result = "他确实等于 6" result = f"{code}\neval result:\n{result}\n耗时: {end_time - start_time} s" return result except: error = traceback.format_exc() result = f"error:\n{error}" return result