Files
jacobs-bot/app.py

64 lines
1.6 KiB
Python
Executable File

import os
import logging
from dotenv import load_dotenv
import pytz
from apscheduler.schedulers.background import BackgroundScheduler
from discord_logic import bot, setup_discord_bot, send_quote, after_class
# Load environment variables
load_dotenv()
DISCORD_TOKEN = os.getenv("DISCORD_TOKEN")
# Logging.
logging.basicConfig(
filename=f"./logs/jacobs.log",
filemode="at+",
level=logging.DEBUG if os.getenv("DEBUG") == "True" else logging.INFO,
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
)
logger = logging.getLogger(__name__)
setup_discord_bot(bot)
@bot.event
async def on_ready() -> None:
"""Event handler for when the bot is initialized."""
logger.info(f"{bot.user.name} has connected to Discord and is ready.")
print(f"{bot.user.name} is ready.")
# After successful initialization, schedule tasks.
task_scheduler = BackgroundScheduler(timezone=pytz.timezone("EST"))
task_scheduler.add_job(
lambda: bot.loop.create_task(send_quote()),
"cron",
day_of_week="mon-fri",
hour=8,
minute=50,
)
task_scheduler.add_job(
lambda: bot.loop.create_task(send_quote()),
"cron",
day_of_week="mon-fri",
hour="8-14",
minute="*/20",
jitter=180,
)
# I'm commenting this out since it doesn't really make sense to have active senior year.
# task_scheduler.add_job(
# lambda: bot.loop.create_task(after_class()),
# "cron",
# day_of_week="mon-fri",
# hour=10,
# minute=55,
# )
task_scheduler.start()
logger.info("Presumably successfully initialized, starting bot.")
bot.run(DISCORD_TOKEN)