# This file is part of Senator Sperma # Licensed under the GPL-3.0 License # Copyright (C) 2026 Salmonik @ salmonik@tuta.io # https://codeberg.org/salmonik/senator-sperma import asyncio import logging import os import sys import argparse import discord from discord.ext import commands from dotenv import load_dotenv from cogs.utils import settings def setup_logging(debug: bool = False): """Configure logging based on debug flag.""" level = logging.DEBUG if debug else logging.INFO class DecryptionFilter(logging.Filter): def filter(self, record): return "Decryption failed" not in record.getMessage() logging.basicConfig( level=level, datefmt="%m-%d %H:%M:%S", format="%(levelname)s - %(asctime)s - %(filename)s - %(name)s - %(message)s", handlers=[logging.StreamHandler(sys.stdout)], ) logging.getLogger().addFilter(DecryptionFilter()) # Create a new event loop and set it as the current loop loop = asyncio.new_event_loop() asyncio.set_event_loop(loop) intents = discord.Intents.all() bot = commands.Bot(intents=intents, loop=loop) @bot.event async def on_ready(): logger = logging.getLogger(__name__) logger.info("ƁUKASZ SPERMA AKTYWACJA") await settings.load_settings() if __name__ == "__main__": parser = argparse.ArgumentParser(description="Run Senator Sperma bot") parser.add_argument("--debug", action="store_true", help="Enable debug logging") args, unknown = parser.parse_known_args() load_dotenv() setup_logging(args.debug) extensions = [ "cogs.vclogs", "cogs.compression", "cogs.tts", "cogs.web", "cogs.ai", "cogs.conversion", "cogs.math_commands", "cogs.downloader", "cogs.say", "cogs.assistant", "cogs.music.play_commands", "cogs.music.stop", "cogs.music.join", "cogs.search", "cogs.trigger", "cogs.cron", "cogs.qr", "cogs.uploader", ] try: for i, extension in enumerate(extensions, 1): bot.load_extension(extension) logging.getLogger(__name__).info(f"Loaded {i}/{len(extensions)} extensions") token = os.getenv("TOKEN") if not token: raise ValueError( "No token provided. Please set the TOKEN environment variable." ) bot.run(token) except Exception as e: logging.getLogger(__name__).error(f"Error starting the bot: {e}") sys.exit(1)