def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) logging.info("Client initialised") self.ds = storage.DataStore(config.PICKLE_DUMP_LOCATION) logging.info("Data storage initialised") if platform.system() == "Linux": self.loop.add_signal_handler( signal.SIGTERM, lambda: self.loop.create_task(self.shutdown())) logging.info("Signal handler for SIGTERM registered") self.loop.create_task(notifications.notification_task(self)) discordhealthcheck.start(self)
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) logging.info("Client initialised") logging.info(sys_info()) if platform.system() != "Windows": signals = ( signal.SIGHUP, signal.SIGTERM, signal.SIGINT, signal.SIGQUIT, ) logging.info("Not on Windows, registering signal handlers") for s in signals: self.loop.add_signal_handler( s, lambda sig=s: self.loop.create_task(self.shutdown(sig=sig) )) self.ds = storage.DataStore( self.loop, config.PICKLE_DUMP_LOCATION, user=config.DB_USER, password=config.DB_PASS, host=config.DB_HOST, port=config.DB_PORT, database=config.DB_NAME, ) logging.info("Data storage initialised") self.notification_task = self.loop.create_task( start_notification_loop(self)) self.healthcheck_server = discordhealthcheck.start(self) self.dc_logger: Union[asyncio.Task, None] = None
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) logging.info("Client initialised") if platform.system() != "Windows": signals = ( signal.SIGHUP, signal.SIGTERM, signal.SIGINT, signal.SIGQUIT, ) logging.info("Not on Windows, registering signal handlers") for s in signals: self.loop.add_signal_handler( s, lambda sig=s: self.loop.create_task(self.shutdown(sig=sig)) ) self.ds = storage.DataStore(config.PICKLE_DUMP_LOCATION) logging.info("Data storage initialised") self.notification_task = self.loop.create_task(start_notification_loop(self)) self.healthcheck_server = discordhealthcheck.start(self)
def __init__(self, s3_bucket=False, google_api_key=None, db_host=None, db_pass=None, db_port=None, db_user=None, db_name=None, ): commands.Bot.__init__( self, command_prefix=commands.when_mentioned, case_insensitive=True, owner_id=203285581004931072, allowed_mentions=discord.AllowedMentions( everyone=False, roles=False, users=True, ), intents=get_intents(), ) logger.info("Starting healthcheck server") self.healthcheck_server = discordhealthcheck.start(self) logger.info("Bot entering setup") self.makusu = None self.shared = {} self.temp_dir_pointer = tempfile.TemporaryDirectory() self.shared["temp_dir"] = Path(self.temp_dir_pointer.name) self.shared["default_extensions"] = ["base", "reminders", "picturecommands", "serverlogging", "movement", "evaluations", "listeners", "wikisearch", "ytsearch", "fun", "debugging", "rolegiver", "help", ] self.s3_bucket = s3_bucket if self.s3_bucket: self.s3_bucket_location = S3.get_bucket_location( Bucket=self.s3_bucket )["LocationConstraint"] self.google_api_key = google_api_key self.db_host = db_host self.db_pass = db_pass self.db_port = db_port self.db_user = db_user self.db_name = db_name self.loop.set_debug(True) logger.info( f"Attempting to connect to postgres database at {self.db_host} " f"on port {self.db_port} as user {self.db_user} " f"with db_name {self.db_name}" ) for database_connect_attempt in range(DATABASE_CONNECT_MAX_RETRIES): try: self.db_connection = psycopg2.connect( host=self.db_host, password=self.db_pass, port=self.db_port, user=self.db_user, ) except psycopg2.OperationalError: logger.info( "Couldn't connect to mbdb, retrying in a few seconds") time.sleep(5) continue else: break else: raise psycopg2.OperationalError("Couldn't connect after retries") num_db_tables = util.get_num_tables(self.db_connection) logger.info(f"Started with {num_db_tables} tables") if not num_db_tables: logger.info("Restoring DB from S3") util.restore_db(self.s3_bucket) for extension in self.shared["default_extensions"]: self.load_extension(f"src.{extension}")