help for group commands

This commit is contained in:
ddorn 2020-04-29 13:42:49 +02:00
parent f55084e33e
commit 731cae29bd
4 changed files with 50 additions and 8 deletions

View File

@ -47,7 +47,7 @@ class MiscCog(Cog, name="Divers"):
msg = random.choice(jokes) msg = random.choice(jokes)
await ctx.send(msg) await ctx.send(msg)
@command(name="help-test", aliases=["h"]) @command(name="help", aliases=["h"])
async def help_test(self, ctx: Context, *args): async def help_test(self, ctx: Context, *args):
"""Affiche ce message""" """Affiche ce message"""
@ -99,11 +99,12 @@ class MiscCog(Cog, name="Divers"):
name = " ".join(args) name = " ".join(args)
comm: Command = self.bot.get_command(name) comm: Command = self.bot.get_command(name)
if comm is None: if comm is None:
await ctx.send( return await ctx.send(
f"La commande `!{name}` n'existe pas. " f"La commande `!{name}` n'existe pas. "
f"Utilise `!help` pour une liste des commandes." f"Utilise `!help` pour une liste des commandes."
) )
return elif isinstance(comm, Group):
return await self.send_group_help(ctx, comm)
embed = discord.Embed( embed = discord.Embed(
title=f"Aide pour la commande `!{comm.qualified_name}`", title=f"Aide pour la commande `!{comm.qualified_name}`",
@ -123,6 +124,41 @@ class MiscCog(Cog, name="Divers"):
await ctx.send(embed=embed) await ctx.send(embed=embed)
async def send_group_help(self, ctx, group: Group):
embed = discord.Embed(
title=f"Aide pour le groupe de commandes `!{group.qualified_name}`",
description=group.help,
color=0xFFA500,
)
comms = await self.filter_commands(ctx, group.commands, sort=True)
if not comms:
embed.add_field(
name="Désolé", value="Il n'y a aucune commande pour toi ici."
)
else:
names = ["!" + c.qualified_name for c in comms]
width = max(map(len, names))
names = [name.rjust(width) for name in names]
short_help = [c.short_doc for c in comms]
lines = [f"`{n}` - {h}" for n, h in zip(names, short_help)]
c: Command
text = "\n".join(lines)
embed.add_field(name="Sous-commandes", value=text, inline=False)
if group.aliases:
aliases = ", ".join(f"`{a}`" for a in group.aliases)
embed.add_field(name="Alias", value=aliases, inline=True)
if group.signature:
embed.add_field(
name="Usage", value=f"`!{group.qualified_name} {group.signature}`"
)
embed.set_footer(text="Suggestion ? Problème ? Envoie un message à @Diego")
await ctx.send(embed=embed)
def _name(self, command: Command): def _name(self, command: Command):
return f"`!{command.qualified_name}`" return f"`!{command.qualified_name}`"
@ -152,7 +188,7 @@ class MiscCog(Cog, name="Divers"):
""" """
if sort and key is None: if sort and key is None:
key = lambda c: c.name key = lambda c: c.qualified_name
iterator = ( iterator = (
commands if self.show_hidden else filter(lambda c: not c.hidden, commands) commands if self.show_hidden else filter(lambda c: not c.hidden, commands)

View File

@ -13,7 +13,8 @@ Team = namedtuple("Team", ["name", "trigram", "tournoi", "secret", "status"])
class TeamsCog(Cog, name="Teams"): class TeamsCog(Cog, name="Teams"):
def __init__(self): def __init__(self, bot: Bot):
self.bot = bot
self.teams = self.load_teams() self.teams = self.load_teams()
def load_teams(self): def load_teams(self):
@ -35,10 +36,12 @@ class TeamsCog(Cog, name="Teams"):
teams.append((team, role)) teams.append((team, role))
return teams return teams
@group(name="team") @group(name="team", invoke_without_command=True)
async def team(self, ctx): async def team(self, ctx):
"""Groupe de commandes pour la gestion des équipes.""" """Groupe de commandes pour la gestion des équipes."""
await ctx.invoke(self.bot.get_command("help"), "team")
@team.command(name="create") @team.command(name="create")
async def create_team(self, ctx: Context, trigram, team_secret): async def create_team(self, ctx: Context, trigram, team_secret):
""" """
@ -234,4 +237,4 @@ class TeamsCog(Cog, name="Teams"):
def setup(bot: Bot): def setup(bot: Bot):
bot.add_cog(TeamsCog()) bot.add_cog(TeamsCog(bot))

View File

@ -655,7 +655,9 @@ class TirageCog(Cog, name="Tirages"):
@group(name="draw", aliases=["d", "tirage"], invoke_without_command=True) @group(name="draw", aliases=["d", "tirage"], invoke_without_command=True)
async def draw_group(self, ctx: Context) -> None: async def draw_group(self, ctx: Context) -> None:
"""Groupe de commandes pour les tirages. Détails: `!help draw`""" """Groupe de commandes pour les tirages."""
await ctx.invoke(self.bot.get_command("help"), "draw")
@draw_group.command( @draw_group.command(
name="start", usage="équipe1 équipe2 équipe3 (équipe4)", name="start", usage="équipe1 équipe2 équipe3 (équipe4)",

View File

@ -61,6 +61,7 @@ async def on_command_error(ctx: Context, error, *args, **kwargs):
await ctx.send(msg) await ctx.send(msg)
bot.remove_command("help")
bot.load_extension("src.cogs.tirages") bot.load_extension("src.cogs.tirages")
bot.load_extension("src.cogs.teams") bot.load_extension("src.cogs.teams")
bot.load_extension("src.cogs.dev") bot.load_extension("src.cogs.dev")