selfbot-legacy/bot/selfbot.py
2025-05-09 22:43:55 +03:00

61 lines
2 KiB
Python

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")