diff options
| author | salmonik <raisersoft@proton.me> | 2026-04-19 15:45:17 +0200 |
|---|---|---|
| committer | salmonik <raisersoft@proton.me> | 2026-04-19 15:45:17 +0200 |
| commit | fe8fc54836a33121eba308922019eab75a92879d (patch) | |
| tree | fda7ecc9ecca439eaa6bfbb7144262bfd2c7350a /main.py | |
| parent | chore: update .gitignore, minor README fix (diff) | |
| download | senator-sperma-fe8fc54836a33121eba308922019eab75a92879d.tar.gz senator-sperma-fe8fc54836a33121eba308922019eab75a92879d.zip | |
readd main.py
Signed-off-by: salmonik <raisersoft@proton.me>
Diffstat (limited to '')
| -rw-r--r-- | main.py | 95 |
1 files changed, 95 insertions, 0 deletions
| @@ -0,0 +1,95 @@ | |||
| 1 | # This file is part of Senator Sperma | ||
| 2 | # Licensed under the GPL-3.0 License | ||
| 3 | # Copyright (C) 2026 Salmonik @ salmonik@tuta.io | ||
| 4 | # https://codeberg.org/salmonik/senator-sperma | ||
| 5 | |||
| 6 | import asyncio | ||
| 7 | import logging | ||
| 8 | import os | ||
| 9 | import sys | ||
| 10 | import argparse | ||
| 11 | |||
| 12 | import discord | ||
| 13 | from discord.ext import commands | ||
| 14 | from dotenv import load_dotenv | ||
| 15 | |||
| 16 | from cogs.utils import settings | ||
| 17 | |||
| 18 | |||
| 19 | def setup_logging(debug: bool = False): | ||
| 20 | """Configure logging based on debug flag.""" | ||
| 21 | level = logging.DEBUG if debug else logging.INFO | ||
| 22 | |||
| 23 | class DecryptionFilter(logging.Filter): | ||
| 24 | def filter(self, record): | ||
| 25 | return "Decryption failed" not in record.getMessage() | ||
| 26 | |||
| 27 | logging.basicConfig( | ||
| 28 | level=level, | ||
| 29 | format="%(levelname)s - %(filename)s - %(name)s - %(message)s", | ||
| 30 | handlers=[logging.StreamHandler(sys.stdout)], | ||
| 31 | ) | ||
| 32 | logging.getLogger().addFilter(DecryptionFilter()) | ||
| 33 | |||
| 34 | |||
| 35 | # Create a new event loop and set it as the current loop | ||
| 36 | loop = asyncio.new_event_loop() | ||
| 37 | asyncio.set_event_loop(loop) | ||
| 38 | |||
| 39 | intents = discord.Intents.all() | ||
| 40 | bot = commands.Bot(intents=intents, loop=loop) | ||
| 41 | |||
| 42 | |||
| 43 | @bot.event | ||
| 44 | async def on_ready(): | ||
| 45 | logger = logging.getLogger(__name__) | ||
| 46 | logger.info("ĆUKASZ SPERMA AKTYWACJA") | ||
| 47 | |||
| 48 | await settings.load_settings() | ||
| 49 | |||
| 50 | |||
| 51 | if __name__ == "__main__": | ||
| 52 | parser = argparse.ArgumentParser(description="Run Senator Sperma bot") | ||
| 53 | parser.add_argument("--debug", action="store_true", help="Enable debug logging") | ||
| 54 | args, unknown = parser.parse_known_args() | ||
| 55 | |||
| 56 | load_dotenv() | ||
| 57 | setup_logging(args.debug) | ||
| 58 | |||
| 59 | extensions = [ | ||
| 60 | "cogs.vclogs", | ||
| 61 | "cogs.compression", | ||
| 62 | "cogs.tts", | ||
| 63 | "cogs.web", | ||
| 64 | "cogs.ai", | ||
| 65 | "cogs.conversion", | ||
| 66 | "cogs.math_commands", | ||
| 67 | "cogs.downloader", | ||
| 68 | "cogs.say", | ||
| 69 | "cogs.assistant", | ||
| 70 | "cogs.music.play_commands", | ||
| 71 | "cogs.music.stop", | ||
| 72 | "cogs.music.join", | ||
| 73 | "cogs.search", | ||
| 74 | "cogs.trigger", | ||
| 75 | "cogs.cron", | ||
| 76 | "cogs.qr", | ||
| 77 | "cogs.voice", | ||
| 78 | ] | ||
| 79 | |||
| 80 | try: | ||
| 81 | for i, extension in enumerate(extensions, 1): | ||
| 82 | bot.load_extension(extension) | ||
| 83 | logging.getLogger(__name__).info(f"Loaded {i}/{len(extensions)} extensions") | ||
| 84 | |||
| 85 | token = os.getenv("TOKEN") | ||
| 86 | if not token: | ||
| 87 | raise ValueError( | ||
| 88 | "No token provided. Please set the TOKEN environment variable." | ||
| 89 | ) | ||
| 90 | |||
| 91 | bot.run(token) | ||
| 92 | |||
| 93 | except Exception as e: | ||
| 94 | logging.getLogger(__name__).error(f"Error starting the bot: {e}") | ||
| 95 | sys.exit(1) | ||
