Пример #1
0
 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)
Пример #2
0
 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)
Пример #3
0
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
Пример #4
0
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
Пример #5
0
    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)