def __list_all_modules(): from os.path import dirname, basename, isfile import glob # This generates a list of modules in this folder for the * in __main__ to work. mod_paths = glob.glob(dirname(__file__) + "/*.py") all_modules = [basename(f)[:-3] for f in mod_paths if isfile(f) and f.endswith(".py") and not f.endswith('__init__.py')] if LOAD or NO_LOAD: to_load = LOAD if to_load: if not all(any(mod == module_name for module_name in all_modules) for mod in to_load): LOGGER.error("Invalid loadorder names. Quitting.") quit(1) else: to_load = all_modules if NO_LOAD: LOGGER.info("Not loading: {}".format(NO_LOAD)) return [item for item in to_load if item not in NO_LOAD] return to_load return all_modules
def error_handler(update, context): """Log the error and send a telegram message to notify the developer.""" # Log the error before we do anything else, so we can see it even if something breaks. LOGGER.error(msg="Exception while handling an update:", exc_info=context.error) # traceback.format_exception returns the usual python message about an exception, but as a # list of strings rather than a single string, so we have to join them together. tb_list = traceback.format_exception(None, context.error, context.error.__traceback__) tb = "".join(tb_list) # Build the message with some markup and additional information about what happened. message = ("An exception was raised while handling an update\n" "<pre>update = {}</pre>\n\n" "<pre>{}</pre>").format( html.escape( json.dumps(update.to_dict(), indent=2, ensure_ascii=False)), html.escape(tb), ) if len(message) >= 4096: message = message[:4096] # Finally, send the message context.bot.send_message(chat_id=OWNER_ID, text=message, parse_mode=ParseMode.HTML)