def __load_modules(self) -> tuple: all_modules = [] sys_modules = [] user_modules = [] sys_module_paths = sorted( glob(join(dirname(__file__), "modules", "*.py"))) user_module_paths = sorted( glob(join(dirname(__file__), "modules_user", "*.py"))) for module in sys_module_paths: if isfile(module) and module.endswith(".py"): filename = basename(module)[:-3] all_modules.append(filename) try: if filename not in self.__not_load_modules: sys_modules.append(filename) except: sys_modules.append(filename) for module in user_module_paths: if isfile(module) and module.endswith(".py"): filename = basename(module)[:-3] all_modules.append(filename) if filename not in sys_modules: user_modules.append(filename) elif not SAFEMODE: log.warning(f"Module '{filename}' not loaded as " "present in sys already") return (all_modules, sys_modules, user_modules)
def __load_modules(self) -> tuple: all_modules = [] sys_modules = [] user_modules = [] if OS and OS.startswith("win"): sys_module_paths = sorted( glob(dirname(__file__) + "\\modules\\*.py")) user_module_paths = sorted( glob(dirname(__file__) + "\\modules_user\\*.py")) else: sys_module_paths = sorted( glob(dirname(__file__) + "/modules/*.py")) user_module_paths = sorted( glob(dirname(__file__) + "/modules_user/*.py")) for module in sys_module_paths: if isfile(module) and module.endswith(".py"): filename = basename(module)[:-3] all_modules.append(filename) try: if not filename in self.__not_load_modules: sys_modules.append(filename) except: sys_modules.append(filename) for module in user_module_paths: if isfile(module) and module.endswith(".py"): filename = basename(module)[:-3] all_modules.append(filename) if not filename in sys_modules: user_modules.append(filename) else: log.warning( f"Module '{filename}' not loaded as present in sys already" ) return (all_modules, sys_modules, user_modules)
def start_modules(): if SAFEMODE: log.info("Starting system modules only") else: log.info("Starting modules") modules = _Modules() try: modules.import_load_modules() except KeyboardInterrupt: raise KeyboardInterrupt except (BaseException, Exception) as e: log.critical(f"Failed to start modules: {e}", exc_info=True) load_modules_count = modules.loaded_modules() sum_modules = len(getAllModules()) if not load_modules_count: log.warning("No modules started!") elif load_modules_count > 0: log.info(f"Modules ({load_modules_count}/{sum_modules}) " "started and ready!") return
async def ungkicker(request): if not GBAN: await request.edit("`You haven't enable the gban router in config.py!`") return message = request.pattern_match.group(1) args = message.split() response = '' user = await fetch_user(request, full_user=True, get_chat=False) if str(type(user)) != '<class \'telethon.tl.types.UserFull\'>': await request.edit("`I am gonna gkick myself because my owner is an idiot (give me a proper username ffs!)`") return user = str(user.user.id) if len(args) >= 2 and not request.reply_to_msg_id: reason = str(message.split(' ', 1)[1]) elif len(args) == 1 and not request.reply_to_msg_id: reason = "" elif len(args) == 0 and not request.reply_to_msg_id: await request.edit("`Lemme gkick you for not giving a proper username!`") return else: reason = message gbantext = '/gkick ' + user + ' ' + reason for i in GBAN_BOT_IDS: async with tgclient.conversation(i) as conv: await conv.send_message(gbantext) x = None try: x = await conv.get_response() except Timeout: log.warning("@" + i + " took too much to respond, likely it is offline!\n") if x: response += i + ': ' + x.text.replace("**", "").replace("`", "").replace("tg://user?id=", "") + '\n\n' else: response += i + " took too much time to respond, likely it is offline!\n" await request.edit("`" + response + "`") return
def loaded_modules(self) -> int: return self.__load_modules_count if __name__ == "__main__": try: if SAFEMODE: log.info("Loading resources and system modules") else: log.info("Loading resources and modules") modules = _Modules() modules.import_load_modules() load_modules_count = modules.loaded_modules() sum_modules = len(getAllModules()) if not load_modules_count: log.warning("No module(s) loaded!") elif load_modules_count > 0: log.info(f"Modules ({load_modules_count}/{sum_modules}) loaded and ready") log.info("Starting Telegram client") with tgclient: me = tgclient.loop.run_until_complete(tgclient.get_me()) log.info("You're running %s v%s as %s (ID: %s)", PROJECT, VERSION, me.first_name, me.id) tgclient.run_until_disconnected() except KeyboardInterrupt: log.info("Keyboard interruption. Exiting...") except Exception as e: log.critical(f"Unable to start HyperUBot: {e}", exc_info=True) try: # reboot reasons perf_reboot = getConfig("REBOOT", False)