def register(**args): """ Register a new event. """ 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) 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 not pattern == None: try: cmd = re.search(reg, pattern) try: cmd = cmd.group(1).replace("$", "").replace("\\", "").replace("^", "") except: pass try: CMD_LIST[file_test].append(cmd) except: CMD_LIST.update({file_test: [cmd]}) except: pass 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 as e: LOAD_PLUG.update({file_test: [func]}) return func return decorator
def sudo_cmd(pattern=None, **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", "") allow_sudo = args.get("allow_sudo", False) # get the pattern from the decorator if pattern is not None: if pattern.startswith("\#"): # special fix for snip.py args["pattern"] = re.compile(pattern) else: args["pattern"] = re.compile(sudo_hndlr + pattern) cmd = sudo_hndlr + pattern try: CMD_LIST[file_test].append(cmd) except: CMD_LIST.update({file_test: [cmd]}) args["outgoing"] = True # should this command be available for other users? if allow_sudo: args["from_users"] = list(Var.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 allow_edited_updates = False if "allow_edited_updates" in args and args["allow_edited_updates"]: allow_edited_updates = args["allow_edited_updates"] del args["allow_edited_updates"] # check if the plugin should listen for outgoing 'messages' is_message_enabled = True return events.NewMessage(**args)
def command(**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", "") if 1 == 0: return print("geys at its best") else: pattern = args.get("pattern", None) allow_sudo = args.get("allow_sudo", None) allow_edited_updates = args.get('allow_edited_updates', False) args["incoming"] = args.get("incoming", False) args["outgoing"] = True if bool(args["incoming"]): args["outgoing"] = False try: if pattern is not None and not pattern.startswith('(?i)'): args['pattern'] = '(?i)' + pattern except: pass reg = re.compile('(.*)') if not pattern == None: try: cmd = re.search(reg, pattern) try: cmd = cmd.group(1).replace("$", "").replace("\\", "").replace( "^", "") except: pass try: CMD_LIST[file_test].append(cmd) except: CMD_LIST.update({file_test: [cmd]}) except: pass if allow_sudo: args["from_users"] = list(Var.SUDO_USERS) # Mutually exclusive with outgoing (can only set one of either). args["incoming"] = True del allow_sudo try: del args["allow_sudo"] except: pass if "allow_edited_updates" in args: del args['allow_edited_updates'] def decorator(func): if allow_edited_updates: bot.add_event_handler(func, events.MessageEdited(**args)) bot.add_event_handler(func, events.NewMessage(**args)) try: LOAD_PLUG[file_test].append(func) except: LOAD_PLUG.update({file_test: [func]}) return func return decorator