#!/usr/bin/env python3.12 # pylint: disable=bare-except, invalid-name, import-outside-toplevel import os import logging import importlib from typing import Optional import discord import setproctitle import hypercorn import hypercorn.asyncio from dotenv import load_dotenv from discord.ext import bridge, commands from termcolor import colored from constants import OWNERS, BOT_CHANIDS import api logging.basicConfig(level=logging.INFO, format='%(asctime)s %(message)s', encoding='utf-8') setproctitle.setproctitle('disc-havoc') """Auto Load Cogs""" cogs_list: list[str] = [ 'misc', 'owner', 'sing', 'meme', 'ai', 'karma', 'lovehate', 'quote', 'radio', ] bot_activity = discord.CustomActivity(name="I made cookies!") load_dotenv() intents = discord.Intents.all() intents.message_content = True bot = bridge.Bot(command_prefix=".", intents=intents, owner_ids=OWNERS, activity=bot_activity, help_command=commands.MinimalHelpCommand()) @bot.event async def on_ready() -> None: """Run on Bot Ready""" logging.info("%s online!", bot.user) def load_exts(initialRun: Optional[bool] = True) -> None: """ Load Cogs/Extensions Args: initialRun (Optional[bool]) default: True Returns: None""" load_method = bot.load_extension if initialRun else bot.reload_extension for cog in cogs_list: logging.info("Loading: %s", cog) load_method(f'cogs.{cog}') importlib.reload(api) from api import API # pylint: disable=unused-import api_config = hypercorn.config.Config() api_config.bind = "10.10.10.100:5992" api_instance = api.API(bot) try: bot.fapi_task.cancel() except Exception as e: logging.debug("Failed to cancel fapi_task: %s", str(e)) logging.info("Starting FAPI Task") bot.fapi_task = bot.loop.create_task(hypercorn.asyncio.serve(api_instance.api_app, api_config)) def __init__() -> None: logging.info(colored(f"Log level: {logging.getLevelName(logging.root.level)}", "red", attrs=['reverse'])) bot.BOT_CHANIDS = BOT_CHANIDS bot.load_exts = load_exts bot.load_exts() bot.run(os.getenv('TOKEN')) if __name__ == "__main__": __init__()