<gh_stars>1-10
from typing import Union

from discord import Member, Role, User
from discord.ext.commands import Cog, Greedy

from bot.core import group
from bot.utils import config


class Tickets(Cog):
    def __init__(self, bot):
        self.bot = bot
        self.db = bot.db.tickets

    @property
    def config(self):
        return config()['ticketing']

    async def _create_ticket(self, ctx):
        pass

    @group(aliases=['t'])
    async def ticket(self, ctx):
        pass

    @ticket.command(aliases=['post', 'config'])
    async def setup(self, ctx):
        pass

    @ticket.command(aliases=['create'])
    async def new(self, ctx):
        await self._create_ticket(ctx)
        pass

    @ticket.command()
    async def close(self, ctx):
        pass

    @ticket.command()
    async def open(self, ctx):
        pass

    @ticket.command(aliases=['del'])
    async def delete(self, ctx):
        pass

    @ticket.command(aliases=['suspend'])
    async def block(self, ctx, user: Greedy[Union[Member, User]]):
        pass
    
    @ticket.command()
    async def add(self, ctx, entities: Greedy[Union[Member, Role]]):
        pass

    @ticket.command(aliases=['rem'])
    async def remove(self, ctx, entities: Greedy[Union[Member, Role]]):
        pass

    @Cog.listener('on_raw_reaction_add')
    async def reaction_create_ticket(self, payload):
        pass


def setup(bot):
    bot.add_cog(Tickets(bot))