def register(**args): pattern = args.get("pattern") r_pattern = r"^[/]" if pattern is not None and not pattern.startswith("(?i)"): args["pattern"] = "(?i)" + pattern args["pattern"] = pattern.replace("^/", r_pattern, 1) stack = inspect.stack() previous_stack_frame = stack[1] file_test = Path(previous_stack_frame.filename) file_test = file_test.stem.replace(".py", "") reg = re.compile("(.*)") if pattern is not None: try: cmd = re.search(reg, pattern) try: cmd = cmd.group(1).replace("$", "").replace("\\", "").replace("^", "") except BaseException: pass try: CMD_LIST[file_test].append(cmd) except BaseException: CMD_LIST.update({file_test: [cmd]}) except BaseException: pass def decorator(func): async def wrapper(check): if check.edit_date: return if check.fwd_from: return if check.is_group or check.is_private: pass else: print("i don't work in channels") return users = gbanned.find({}) for c in users: if check.sender_id == c["user"]: return try: await func(check) try: LOAD_PLUG[file_test].append(func) except Exception: LOAD_PLUG.update({file_test: [func]}) except BaseException: return else: pass tbot.add_event_handler(wrapper, events.NewMessage(**args)) return wrapper return decorator
def register(**args): args["func"] = lambda e: e.via_bot_id is None stack = inspect.stack() previous_stack_frame = stack[1] file_test = Path(previous_stack_frame.filename) file_test = file_test.stem.replace(".py", "") pattern = args.get("pattern", None) disable_edited = args.get("disable_edited", True) allow_sudo = args.get("allow_sudo", False) if pattern is not None and not pattern.startswith("(?i)"): args["pattern"] = "(?i)" + pattern if "disable_edited" in args: del args["disable_edited"] reg = re.compile("(.*)") if pattern is not None: try: cmd = re.search(reg, pattern) try: cmd = cmd.group(1).replace("$", "").replace("\\", "").replace("^", "") except BaseException: pass try: CMD_LIST[file_test].append(cmd) except BaseException: CMD_LIST.update({file_test: [cmd]}) except BaseException: pass if allow_sudo: args["from_users"] = list(Config.SUDO_USERS) # Mutually exclusive with outgoing (can only set one of either). args["incoming"] = True del args["allow_sudo"] # error handling condition check elif "incoming" in args and not args["incoming"]: args["outgoing"] = True # add blacklist chats, UB should not respond in these chats args["blacklist_chats"] = True black_list_chats = list(Config.UB_BLACK_LIST_CHAT) if len(black_list_chats) > 0: args["chats"] = black_list_chats def decorator(func): if not disable_edited: bot.add_event_handler(func, events.MessageEdited(**args)) bot.add_event_handler(func, events.NewMessage(**args)) try: LOAD_PLUG[file_test].append(func) except Exception: LOAD_PLUG.update({file_test: [func]}) return func return decorator
def admin_cmd(pattern=None, command=None, **args): args["func"] = lambda e: e.via_bot_id is None stack = inspect.stack() global SUDO_USERS previous_stack_frame = stack[1] file_test = Path(previous_stack_frame.filename) file_test = file_test.stem.replace(".py", "") allow_sudo = args.get("allow_sudo", False) # get the pattern from the decorator if pattern is not None: if pattern.startswith(r"\#"): # special fix for snip.py args["pattern"] = re.compile(pattern) elif pattern.startswith(r"^"): args["pattern"] = re.compile(pattern) cmd = pattern.replace("$", "").replace("^", "").replace("\\", "") try: CMD_LIST[file_test].append(cmd) except BaseException: CMD_LIST.update({file_test: [cmd]}) else: if len(Config.COMMAND_HAND_LER) == 2: catreg = "^" + Config.COMMAND_HAND_LER reg = Config.COMMAND_HAND_LER[1] elif len(Config.COMMAND_HAND_LER) == 1: catreg = "^\\" + Config.COMMAND_HAND_LER reg = Config.COMMAND_HAND_LER args["pattern"] = re.compile(catreg + pattern) if command is not None: cmd = reg + command else: cmd = ((reg + pattern).replace("$", "").replace("\\", "").replace( "^", "")) try: CMD_LIST[file_test].append(cmd) except BaseException: CMD_LIST.update({file_test: [cmd]}) args["outgoing"] = True # should this command be available for other users? if allow_sudo: args["from_users"] = list(SUDO_USERS) # Mutually exclusive with outgoing (can only set one of either). args["incoming"] = True del args["allow_sudo"] # error handling condition check elif "incoming" in args and not args["incoming"]: args["outgoing"] = True # add blacklist chats, UB should not respond in these chats args["blacklist_chats"] = True black_list_chats = list(Config.UB_BLACK_LIST_CHAT) if len(black_list_chats) > 0: args["chats"] = black_list_chats # add blacklist chats, UB should not respond in these chats if "allow_edited_updates" in args and args["allow_edited_updates"]: args["allow_edited_updates"] del args["allow_edited_updates"] # check if the plugin should listen for outgoing 'messages' return events.NewMessage(**args)