import discord import asyncio import logging import os from bot.handlers.message_handler import MessageHandler from bot.cogs.cog_manager import CogManager from config import TOKEN class SelfBot(discord.Client): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # Basic initialization self.horsin = [] self.tracked_channels = [] self.loaded_commands = {} # Initialize handlers self.message_handler = MessageHandler(self) # Initialize cog manager self.cog_manager = CogManager(self) async def on_ready(self): """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) async def on_message(self, message): """Called when a message is sent""" await self.message_handler.handle_message(message) async def on_message_delete(self, message): """Called when a message is deleted""" # This will be handled by TrackingCog now pass async def on_message_edit(self, before, after): """Called when a message is edited""" # This will be handled by TrackingCog now pass def reload_commands(self): """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")