From fe8fc54836a33121eba308922019eab75a92879d Mon Sep 17 00:00:00 2001 From: salmonik Date: Sun, 19 Apr 2026 15:45:17 +0200 Subject: readd main.py Signed-off-by: salmonik --- main.py | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 main.py (limited to 'main.py') diff --git a/main.py b/main.py new file mode 100644 index 0000000..1f5e3f6 --- /dev/null +++ b/main.py @@ -0,0 +1,95 @@ +# 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, + format="%(levelname)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.voice", + ] + + 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) -- cgit v1.2.3