2025-05-07 16:44:50 +02:00
|
|
|
import discord
|
2025-05-09 21:43:55 +02:00
|
|
|
import asyncio
|
|
|
|
import logging
|
|
|
|
import os
|
2025-05-07 16:44:50 +02:00
|
|
|
from bot.handlers.message_handler import MessageHandler
|
2025-05-09 21:43:55 +02:00
|
|
|
from bot.cogs.cog_manager import CogManager
|
|
|
|
from config import TOKEN
|
2025-05-07 16:44:50 +02:00
|
|
|
|
2025-05-09 21:43:55 +02:00
|
|
|
class SelfBot(discord.Client):
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
|
super().__init__(*args, **kwargs)
|
|
|
|
|
|
|
|
# Basic initialization
|
2025-05-07 16:44:50 +02:00
|
|
|
self.horsin = []
|
2025-05-09 21:43:55 +02:00
|
|
|
self.tracked_channels = []
|
|
|
|
self.loaded_commands = {}
|
2025-05-07 16:44:50 +02:00
|
|
|
|
|
|
|
# Initialize handlers
|
|
|
|
self.message_handler = MessageHandler(self)
|
|
|
|
|
2025-05-09 21:43:55 +02:00
|
|
|
# Initialize cog manager
|
2025-05-09 21:23:50 +02:00
|
|
|
self.cog_manager = CogManager(self)
|
|
|
|
|
2025-05-07 16:44:50 +02:00
|
|
|
async def on_ready(self):
|
2025-05-09 21:43:55 +02:00
|
|
|
"""Called when the bot is ready and connected"""
|
|
|
|
print(f'Logged in as {self.user.name}#{self.user.discriminator}')
|
|
|
|
|
|
|
|
# Load all cogs
|
|
|
|
num_cogs = self.cog_manager.load_all_cogs()
|
|
|
|
print(f"Loaded {num_cogs} cogs")
|
|
|
|
|
|
|
|
# Register event listeners from cogs
|
|
|
|
self.register_cog_events()
|
|
|
|
|
|
|
|
def register_cog_events(self):
|
|
|
|
"""Register event handlers from cogs"""
|
|
|
|
for cog_name, cog in self.cog_manager.cogs.items():
|
|
|
|
for name, method in inspect.getmembers(cog, inspect.ismethod):
|
|
|
|
if name.startswith('on_'):
|
|
|
|
self.add_listener(method, name=name)
|
2025-05-07 16:44:50 +02:00
|
|
|
|
|
|
|
async def on_message(self, message):
|
2025-05-09 21:43:55 +02:00
|
|
|
"""Called when a message is sent"""
|
2025-05-07 16:44:50 +02:00
|
|
|
await self.message_handler.handle_message(message)
|
|
|
|
|
|
|
|
async def on_message_delete(self, message):
|
2025-05-09 21:43:55 +02:00
|
|
|
"""Called when a message is deleted"""
|
|
|
|
# This will be handled by TrackingCog now
|
|
|
|
pass
|
2025-05-07 16:44:50 +02:00
|
|
|
|
|
|
|
async def on_message_edit(self, before, after):
|
2025-05-09 21:43:55 +02:00
|
|
|
"""Called when a message is edited"""
|
|
|
|
# This will be handled by TrackingCog now
|
|
|
|
pass
|
2025-05-07 16:44:50 +02:00
|
|
|
|
|
|
|
def reload_commands(self):
|
2025-05-09 21:43:55 +02:00
|
|
|
"""Reload user-defined commands and cogs"""
|
|
|
|
self.loaded_commands = {}
|
|
|
|
self.cog_manager.unload_all_cogs()
|
|
|
|
num_cogs = self.cog_manager.load_all_cogs()
|
|
|
|
print(f"Reloaded {num_cogs} cogs")
|