import os import sentry_sdk from sentry_sdk.integrations.asyncio import AsyncioIntegration from sentry_sdk.integrations.pymongo import PyMongoIntegration from sentry_sdk.integrations.aiohttp import AioHttpIntegration from sentry_sdk.integrations.loguru import LoguruIntegration from typing import Any, cast from dotenv import load_dotenv, find_dotenv from discord import AutoShardedBot from discord.ext import commands, tasks from RUNA.Modules.Logging import Logging load_dotenv(find_dotenv()) class Runa(AutoShardedBot): def __init__(self, *args: Any, **kwargs: Any): super().__init__(*args, **kwargs) # self.debug_guilds = [1090621667778244638,1015236495910649926,957142859629342790,1125370139165081612,1170310470503247993] def run(self, *args: Any, **kwargs: Any) -> None: kwargs.update({"token": os.getenv("TOKEN")}) super().run(*args, **kwargs) def load_cogs(bot: AutoShardedBot) -> None: for filename in os.listdir("RUNA/Cogs"): if filename.endswith(".py"): bot.load_extension(f"RUNA.Cogs.{filename[:-3]}") def apply_uvloop() -> None: try: import uvloop import asyncio except ImportError: pass else: uvloop.install() asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) def init_sentry_sdk(dsn: str) -> None: sentry_sdk.init( dsn=dsn, integrations=[ AsyncioIntegration(), PyMongoIntegration(), AioHttpIntegration(), LoguruIntegration() ] )