jarvis-bot/jarvis/__init__.py

78 lines
2.1 KiB
Python

"""Main J.A.R.V.I.S. package."""
import logging
from dis_snek import Intents, Snake
from mongoengine import connect
from jarvis import logo # noqa: F401
from jarvis import tasks, utils
from jarvis.config import get_config
from jarvis.events import guild, member, message
jconfig = get_config()
logger = logging.getLogger("discord")
logger.setLevel(logging.getLevelName(jconfig.log_level))
file_handler = logging.FileHandler(filename="jarvis.log", encoding="UTF-8", mode="w")
file_handler.setFormatter(logging.Formatter("[%(asctime)s][%(levelname)s][%(name)s] %(message)s"))
logger.addHandler(file_handler)
intents = Intents.default()
intents.members = True
restart_ctx = None
jarvis = Snake(intents=intents, default_prefix=utils.get_prefix, sync_interactions=jconfig.sync)
__version__ = "2.0.0a0"
@jarvis.add_listener
async def on_ready() -> None:
"""Lepton on_ready override."""
global restart_ctx
print(" Logged in as {0.user}".format(jarvis))
print(" Connected to {} guild(s)".format(len(jarvis.guilds)))
def run() -> None:
"""Run J.A.R.V.I.S."""
connect(
db="ctc2",
alias="ctc2",
authentication_source="admin",
**jconfig.mongo["connect"],
)
connect(
db=jconfig.mongo["database"],
alias="main",
authentication_source="admin",
**jconfig.mongo["connect"],
)
jconfig.get_db_config()
for extension in utils.get_extensions():
jarvis.load_extension(extension)
print(
" https://discord.com/api/oauth2/authorize?client_id="
+ "{}&permissions=8&scope=bot%20applications.commands".format(jconfig.client_id) # noqa: W503
)
jarvis.max_messages = jconfig.max_messages
tasks.init()
# Add event listeners
if jconfig.events:
_ = [
guild.GuildEventHandler(jarvis),
member.MemberEventHandler(jarvis),
message.MessageEventHandler(jarvis),
]
jarvis.run(jconfig.token, bot=True, reconnect=True)
for cog in jarvis.cogs:
session = getattr(cog, "_session", None)
if session:
session.close()
if restart_ctx:
return restart_ctx