1
Fork 0
mirror of https://github.com/wlinator/luminara.git synced 2024-10-02 18:23:12 +00:00
Lumi/main.py
2024-08-29 10:02:50 -04:00

49 lines
1.2 KiB
Python

import asyncio
import sys
import discord
from discord.ext import commands
from loguru import logger
from lib.client import Luminara
from lib.const import CONST
from lib.help import LumiHelp
from services.config_service import GuildConfig
logger.remove()
logger.add(sys.stdout, format=CONST.LOG_FORMAT, colorize=True, level=CONST.LOG_LEVEL)
async def get_prefix(bot: Luminara, message: discord.Message) -> list[str]:
extras = GuildConfig.get_prefix(message)
return commands.when_mentioned_or(*extras)(bot, message)
async def main() -> None:
if not CONST.TOKEN:
logger.error("No token provided")
return
lumi: Luminara = Luminara(
owner_ids=CONST.OWNER_IDS,
intents=discord.Intents.all(),
command_prefix=get_prefix,
allowed_mentions=discord.AllowedMentions(everyone=False),
case_insensitive=True,
strip_after_prefix=True,
help_command=LumiHelp(),
)
try:
await lumi.start(CONST.TOKEN, reconnect=True)
except KeyboardInterrupt:
logger.info("Keyboard interrupt detected. Shutting down...")
finally:
logger.info("Closing resources...")
await lumi.shutdown()
if __name__ == "__main__":
asyncio.run(main())