Beispiel #1
0
def main():
    start_modules()
    log.info("HyperUBot is going online")
    run_client()
    log.info("HyperUBot is offline")
    check_reboot()
    return
Beispiel #2
0
def run_client():
    try:
        log.info("Starting Telegram client")
        with tgclient:
            me = tgclient.loop.run_until_complete(tgclient.get_me())
            log.info(f"You're running {PROJECT} v{VERSION} as "
                     f"{me.first_name} (ID: {me.id})")
            tgclient.run_until_disconnected()
    except KeyboardInterrupt:
        raise KeyboardInterrupt
    except (BaseException, Exception) as e:
        log.critical(f"Client has stopped: {e}", exc_info=True)
    return
Beispiel #3
0
def check_reboot():
    perf_reboot = getConfig("REBOOT", False)
    start_recovery = getConfig("START_RECOVERY", False)
    try:
        if perf_reboot or start_recovery:
            py_exec = (executable
                       if " " not in executable else '"' + executable + '"')
            if perf_reboot:  # preferred if True
                if getConfig("REBOOT_SAFEMODE"):
                    log.info("Rebooting into safe mode...")
                    tcmd = [py_exec, "-m", "userbot", "-safemode"]
                else:
                    log.info("Performing normal reboot...")
                    tcmd = [py_exec, "-m", "userbot"]
            elif start_recovery:
                commit_id = getConfig("UPDATE_COMMIT_ID")
                if commit_id:
                    log.info("Starting auto update in recovery...")
                    tcmd = [py_exec, "recovery.py", "-autoupdate", commit_id]
                else:
                    log.info("Rebooting into recovery...")
                    tcmd = [py_exec, "recovery.py"]
            shutdown_logging()
            execle(py_exec, *tcmd, environ)
    except KeyboardInterrupt:
        raise KeyboardInterrupt
    except (BaseException, Exception) as e:
        if start_recovery:
            log.critical(f"Failed to reboot HyperUBot into recovery: {e}",
                         exc_info=True)
        else:
            log.critical(f"Failed to reboot HyperUBot: {e}",
                         exc_info=True)
    return
Beispiel #4
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
Beispiel #5
0
    except (BaseException, Exception) as e:
        if start_recovery:
            log.critical(f"Failed to reboot HyperUBot into recovery: {e}",
                         exc_info=True)
        else:
            log.critical(f"Failed to reboot HyperUBot: {e}",
                         exc_info=True)
    return


def main():
    start_modules()
    log.info("HyperUBot is going online")
    run_client()
    log.info("HyperUBot is offline")
    check_reboot()
    return


if __name__ == "__main__":
    try:
        main()
    except KeyboardInterrupt:
        log.info("Keyboard interruption. Exiting...")
    except (BaseException, Exception) as e:
        log.critical(f"HyperUBot has stopped: {e}", exc_info=True)
        quit(1)
    finally:
        shutdown_logging()
    quit()
Beispiel #6
0
                            self.__load_modules_count += 1
                        else:
                            update_load_modules(module, False)
                update_user_modules(module)
        except Exception as e:
            log.critical(f"Failed to load modules [CORE]: {e}", exc_info=True)
            quit(1)
        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()
Beispiel #7
0
                        self.__load_modules_count += 1
                    else:
                        LOAD_MODULES[module] = False
                USER_MODULES.append(module)
            return True
        except ModuleNotFoundError as mnfe:
            log.error(f"Unable to load module: {mnfe}", exc_info=True)
        return False

    def loaded_modules(self) -> int:
        return self.__load_modules_count


if __name__ == "__main__":
    try:
        log.info("Loading resources and modules")
        modules = _Modules()
        if not modules.import_load_modules():
            quit(1)
        load_modules_count = modules.loaded_modules()
        sum_modules = len(ALL_MODULES)
        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,