import logging import os import sys import hydra import nextcord from hydra.core.config_store import ConfigStore from nextcord.ext import commands import database_setup.create_database as create_database from classes.nominate_views import NominateView from classes.voting_views import VoteView from config import DakinyConfig cs = ConfigStore.instance() cs.store(name="dakiny_config", node=DakinyConfig) birthday_list: list[int] = [] logger = logging.getLogger("nextcord") logger.setLevel(logging.DEBUG) handler = logging.FileHandler(filename="nextcord.log", encoding="utf-8", mode="w") handler.setFormatter(logging.Formatter("%(asctime)s:%(levelname)s:%(name)s: %(message)s")) logger.addHandler(handler) @hydra.main(config_path="conf", config_name="config") def main(cfg: DakinyConfig): # Allows privledged intents for monitoring members joining, roles editing, and role assignments # These need to be enabled in the developer portal as well intents = nextcord.Intents.default() # Required in order to read messages (eg. prefix commands) intents.message_content = True # To enable the guilds priveleged intent: # intents.guilds = True # To enable the members priveleged intent: intents.members = True bot = commands.Bot(intents=intents) bot.config = cfg # Get the modules of all cogs whose directory structure is ./cogs/ for folder in os.listdir("cogs"): bot.load_extension(f"cogs.{folder}") @bot.listen() async def on_ready(): """When Discord is connected""" assert bot.user is not None create_database # pylint: disable=pointless-statement bot.add_view(NominateView(cfg)) bot.add_view(VoteView()) print(f"{bot.user.name} has connected to Discord!") # Run Discord bot bot.run(bot.config.params.discord_token) if __name__ == "__main__": sys.argv.append("hydra.job.chdir=False") sys.argv.append("hydra/job_logging=none") sys.argv.append("hydra/hydra_logging=none") main() # pylint: disable=no-value-for-parameter