aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--main.py95
1 files changed, 95 insertions, 0 deletions
diff --git a/main.py b/main.py
new file mode 100644
index 0000000..1f5e3f6
--- /dev/null
+++ b/main.py
@@ -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
6import asyncio
7import logging
8import os
9import sys
10import argparse
11
12import discord
13from discord.ext import commands
14from dotenv import load_dotenv
15
16from cogs.utils import settings
17
18
19def 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
36loop = asyncio.new_event_loop()
37asyncio.set_event_loop(loop)
38
39intents = discord.Intents.all()
40bot = commands.Bot(intents=intents, loop=loop)
41
42
43@bot.event
44async def on_ready():
45 logger = logging.getLogger(__name__)
46 logger.info("ƁUKASZ SPERMA AKTYWACJA")
47
48 await settings.load_settings()
49
50
51if __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)