<filename>core/ext/ctx.py
import datetime
import typing

import aiobungie
import aiohttp
import asyncpg
from discord.ext import commands


class Context(commands.Context):

    command: typing.ClassVar[commands.core.Command]

    def __init__(self, **kwargs) -> None:
        super().__init__(**kwargs)

    def __repr__(self) -> str:
        return "<Context>"

    @property
    def http(self) -> aiohttp.ClientSession:
        return self.bot.session

    @property
    def bungie(self) -> aiobungie.Client:
        return self.bot.bungie

    @property
    def pool(self) -> asyncpg.Pool:
        return self.bot.pool

    @property
    def time(self) -> str:
        return datetime.datetime.utcnow().strftime("%A, %d %Y/%m, %H:%M:%S %p")

    async def send_help(
        self, command: typing.Optional[commands.core.Command] = None
    ) -> None:
        cmd = self.bot.get_command("help")
        command = command or self.command.qualified_name
        await self.invoke(cmd, command=command)

<filename>core/ext/ctx.py
import datetime
import typing

import aiobungie
import aiohttp
import asyncpg
from discord.ext import commands


class Context(commands.Context):

    command: typing.ClassVar[commands.core.Command]

    def __init__(self, **kwargs) -> None:
        super().__init__(**kwargs)

    def __repr__(self) -> str:
        return "<Context>"

    @property
    def http(self) -> aiohttp.ClientSession:
        return self.bot.session

    @property
    def bungie(self) -> aiobungie.Client:
        return self.bot.bungie

    @property
    def pool(self) -> asyncpg.Pool:
        return self.bot.pool

    @property
    def time(self) -> str:
        return datetime.datetime.utcnow().strftime("%A, %d %Y/%m, %H:%M:%S %p")

    async def send_help(
        self, command: typing.Optional[commands.core.Command] = None
    ) -> None:
        cmd = self.bot.get_command("help")
        command = command or self.command.qualified_name
        await self.invoke(cmd, command=command)
