def migrate_chats(update: Update, context: CallbackContext): msg = update.effective_message if msg.migrate_to_chat_id: old_chat = update.effective_chat.id new_chat = msg.migrate_to_chat_id elif msg.migrate_from_chat_id: old_chat = msg.migrate_from_chat_id new_chat = update.effective_chat.id else: return LOGGER.info("Migrating from %s, to %s", str(old_chat), str(new_chat)) for mod in MIGRATEABLE: mod.__migrate__(old_chat, new_chat) LOGGER.info("Successfully migrated!") raise DispatcherHandlerStop
def __list_all_modules(): import glob from os.path import basename, dirname, isfile import os path = r'./Yone/Plugins/' list_of_files = [] for root, dirs, files in os.walk(path): for file in files: list_of_files.append(os.path.join(root, file)) # This generates a list of modules in this folder for the * in __help__ to work. all_modules = [ basename(name)[:-3] for name in list_of_files if isfile(name) and name.endswith(".py") and not name.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) all_modules = sorted(set(all_modules) - set(to_load)) to_load = list(all_modules) + to_load else: to_load = all_modules if NO_LOAD: LOGGER.info(f"Not loading: {NO_LOAD}") return [item for item in to_load if item not in NO_LOAD] return to_load return all_modules
def main(): if SUPPORT_CHAT is not None and isinstance(SUPPORT_CHAT, str): try: stringz = "My dear Owner , I'm Working Again. Thanks to make me live." dispatcher.bot.sendMessage(f"@{OWNER_ID}", stringz) except Unauthorized: LOGGER.warning( "Bot isnt able to send message to support_chat, go and check!") except BadRequest as e: LOGGER.warning(e.message) start_handler = CommandHandler("start", start, pass_args=True, run_async=True) help_handler = CommandHandler("help", get_help, run_async=True) help_callback_handler = CallbackQueryHandler(help_button, pattern=r"help_.*", run_async=True) admin_help_callback_handler = CallbackQueryHandler(admin_help_button, pattern=r"admin_.*", run_async=True) user_help_callback_handler = CallbackQueryHandler(user_help_button, pattern=r"user_.*", run_async=True) tools_help_callback_handler = CallbackQueryHandler(tools_help_button, pattern=r"tools_.*", run_async=True) about_callback_handler = CallbackQueryHandler(yone_about_callback, pattern=r"yone_", run_async=True) settings_handler = CommandHandler("settings", get_settings, run_async=True) settings_callback_handler = CallbackQueryHandler(settings_button, pattern=r"stngs_", run_async=True) migrate_handler = MessageHandler(Filters.status_update.migrate, migrate_chats, run_async=True) # dispatcher.add_handler(test_handler) dispatcher.add_handler(start_handler) dispatcher.add_handler(help_handler) dispatcher.add_handler(about_callback_handler) dispatcher.add_handler(settings_handler) dispatcher.add_handler(help_callback_handler) dispatcher.add_handler(admin_help_callback_handler) dispatcher.add_handler(user_help_callback_handler) dispatcher.add_handler(tools_help_callback_handler) dispatcher.add_handler(settings_callback_handler) dispatcher.add_handler(migrate_handler) if WEBHOOK: LOGGER.info("Using webhooks.") updater.start_webhook(listen="0.0.0.0", port=PORT, url_path=TOKEN) if CERT_PATH: updater.bot.set_webhook(url=URL + TOKEN, certificate=open(CERT_PATH, "rb")) else: updater.bot.set_webhook(url=URL + TOKEN) else: LOGGER.info("Using long polling.") updater.start_polling(allowed_updates=Update.ALL_TYPES, timeout=15, read_latency=4, drop_pending_updates=True) if len(argv) not in (1, 3, 4): telethn.disconnect() else: telethn.run_until_disconnected() updater.idle()
if WEBHOOK: LOGGER.info("Using webhooks.") updater.start_webhook(listen="0.0.0.0", port=PORT, url_path=TOKEN) if CERT_PATH: updater.bot.set_webhook(url=URL + TOKEN, certificate=open(CERT_PATH, "rb")) else: updater.bot.set_webhook(url=URL + TOKEN) else: LOGGER.info("Using long polling.") updater.start_polling(allowed_updates=Update.ALL_TYPES, timeout=15, read_latency=4, drop_pending_updates=True) if len(argv) not in (1, 3, 4): telethn.disconnect() else: telethn.run_until_disconnected() updater.idle() if __name__ == "__main__": LOGGER.info("Successfully loaded modules: " + str(ALL_MODULES)) telethn.start(bot_token=TOKEN) main()
all_modules = [ basename(name)[:-3] for name in list_of_files if isfile(name) and name.endswith(".py") and not name.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) all_modules = sorted(set(all_modules) - set(to_load)) to_load = list(all_modules) + to_load else: to_load = all_modules if NO_LOAD: LOGGER.info(f"Not loading: {NO_LOAD}") return [item for item in to_load if item not in NO_LOAD] return to_load return all_modules ALL_MODULES = __list_all_modules() LOGGER.info("Modules to load: %s", str(ALL_MODULES)) __all__ = ALL_MODULES + ["ALL_MODULES"]
def start() -> scoped_session: engine = create_engine(DB_URI, client_encoding="utf8") log.info("[PostgreSQL] Connecting to database......") BASE.metadata.bind = engine BASE.metadata.create_all(engine) return scoped_session(sessionmaker(bind=engine, autoflush=False))
from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker, scoped_session from Yone import DB_URI, LOGGER as log if DB_URI and DB_URI.startswith("postgres://"): DB_URI = DB_URI.replace("postgres://", "postgresql://", 1) def start() -> scoped_session: engine = create_engine(DB_URI, client_encoding="utf8") log.info("[PostgreSQL] Connecting to database......") BASE.metadata.bind = engine BASE.metadata.create_all(engine) return scoped_session(sessionmaker(bind=engine, autoflush=False)) BASE = declarative_base() try: SESSION = start() except Exception as e: log.exception(f'[PostgreSQL] Failed to connect due to {e}') exit() log.info("[PostgreSQL] Connection successful, session started.")