main.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import logging
  2. from os.path import exists
  3. def missing_config():
  4. logging.basicConfig(level=logging.DEBUG)
  5. if not exists("local_settings.py"):
  6. logging.error("Settings file not found.")
  7. logging.info("Rename local_settings_example.py to local_settings.py:")
  8. logging.info("")
  9. logging.info(" mv local_settings_example.py local_settings.py")
  10. logging.info("")
  11. logging.error("Settings undefined.")
  12. logging.info("Configure the settings:")
  13. logging.info("")
  14. logging.info(" edit local_settings.py")
  15. logging.info("")
  16. quit()
  17. # Import settings
  18. try:
  19. import local_settings as settings # Environment dependant settings stored in local_settings.py, untracked by .gitinore
  20. except ModuleNotFoundError:
  21. missing_config()
  22. # Set loglevel
  23. try:
  24. logging.basicConfig(level=settings.LOG_LEVEL)
  25. except AttributeError:
  26. missing_config()
  27. # Define database pool
  28. import asyncpg
  29. async def create_db_pool():
  30. try:
  31. bot.pg = await asyncpg.create_pool(
  32. database=settings.DATABASE_NAME,
  33. user=settings.DATABASE_USER,
  34. host=settings.DATABASE_HOST,
  35. password=settings.DATABASE_PASSWORD,
  36. )
  37. except AttributeError:
  38. missing_config()
  39. # Create robot
  40. import discord
  41. from discord.ext import commands
  42. try:
  43. bot = commands.Bot(
  44. command_prefix = settings.COMMAND_PREFIX,
  45. description = "Charlie's Angels bot",
  46. intents = discord.Intents.default(), # Required: Guilds
  47. case_insensitive = True,
  48. )
  49. except AttributeError:
  50. missing_config()
  51. # Create database pool
  52. bot.loop.run_until_complete(create_db_pool())
  53. # Create database tables if they do not exist
  54. from query.initialise_database import init_db
  55. bot.loop.run_until_complete(init_db(bot.pg))
  56. # Load extensions
  57. default_extensions = [
  58. "commands.general",
  59. "commands.games",
  60. "events.general"
  61. ]
  62. for ext in default_extensions:
  63. bot.load_extension(ext)
  64. # Run robot
  65. try:
  66. bot.run(settings.DISCORD_TOKEN)
  67. except AttributeError:
  68. missing_config()