from interactions import Extension, listen, Status, Activity, ActivityType
from interactions.api.events import Startup, Error

class EventExtension(Extension):
    """Listens to miscellaneous events."""

    @listen(Startup)
    async def startup(self, _):
        """Log and sets status when it logs in."""
        name = self.bot.user.username
        userid = str(self.bot.user.id)
        logged_in_message = f"Logged in as {name}, {userid}"
        self.bot.log(logged_in_message, level=25)
        command_list = ",".join([str(i.name) for i in self.bot.application_commands])
        self.bot.log(f"Commands: {command_list}")
        activity = Activity("custom", ActivityType.CUSTOM, state="Type `/help` for commands")
        await self.bot.change_presence(activity=activity, status=Status.ONLINE)

    @listen(Error)
    async def error(self, err: Error):
        self.bot.log(f"Error at {err.source}", level=25)