Files
TSSBOT/start_bot.py
T
2026-05-14 14:03:59 -07:00

67 lines
1.8 KiB
Python

#!/usr/bin/env python3
"""Entry point for TSSBOT. Connects to Discord and idles until commands land."""
import asyncio
import logging
import os
import signal
import sys
from pathlib import Path
# Make TSSBOT root and BOTS/SHARED importable.
_HERE = Path(__file__).resolve().parent
sys.path.insert(0, str(_HERE))
sys.path.insert(0, str(_HERE.parent / "SHARED"))
import discord
from discord.ext import commands
from dotenv import load_dotenv
load_dotenv(dotenv_path=_HERE / ".env")
# Imported after load_dotenv so STORAGE_VOL_PATH is read from .env.
from BOT.storage import init_tss_dbs # noqa: E402
logging.basicConfig(
level=logging.INFO,
format="[%(asctime)s] [%(levelname)s] [tssbot] %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
)
log = logging.getLogger("tssbot")
def _handle_signal(signum, _frame):
log.info(f"received signal {signum}, exiting")
sys.exit(0)
TOKEN = os.environ.get("DISCORD_KEY", "").strip()
intents = discord.Intents.default()
intents.message_content = False
intents.reactions = True
intents.messages = True
bot = commands.Bot(command_prefix="!", intents=intents)
@bot.event
async def on_ready():
log.info(f"logged in as {bot.user} (id={bot.user.id if bot.user else '?'})")
log.info(f"connected to {len(bot.guilds)} guild(s)")
await bot.change_presence(
activity=discord.CustomActivity(name="Soon...")
)
if __name__ == "__main__":
signal.signal(signal.SIGTERM, _handle_signal)
signal.signal(signal.SIGINT, _handle_signal)
if not TOKEN:
log.error("DISCORD_KEY not set in TSSBOT/.env — aborting")
sys.exit(1)
try:
asyncio.run(init_tss_dbs())
except Exception as e:
log.error(f"failed to initialise TSS databases: {e}")
sys.exit(1)
bot.run(TOKEN, log_handler=None)