67 lines
3.4 KiB
Python
67 lines
3.4 KiB
Python
import discord
|
||
from discord.ext import commands
|
||
from random import randint
|
||
|
||
def setup(client):
|
||
client.add_cog(Help(client))
|
||
|
||
class Help(commands.Cog):
|
||
"""Listes des commandes et/ou catégories."""
|
||
|
||
def __init__(self, client):
|
||
self.client = client
|
||
self.client.remove_command("help")
|
||
|
||
@commands.command(name='help')
|
||
async def _help(self, ctx, *cog):
|
||
"""Affiche toutes les commandes du bot.\n ➡ Syntaxe: .help [catégorie]"""
|
||
if not cog:
|
||
"""Liste des Cog"""
|
||
halp=discord.Embed(title = 'Liste des catégories et commandes sans catégorie',
|
||
description = f'Utilisez `{ctx.prefix}help [catégorie]` pour en savoir plus sur elles et leur commande.',
|
||
color = randint(0, 0xFFFFFF))
|
||
for name_cog in self.client.cogs:
|
||
liste_cmds = ""
|
||
nb_cmds = 0
|
||
for cmds in self.client.get_cog(name_cog).get_commands():
|
||
if not cmds.hidden:
|
||
liste_cmds += f", `{ctx.prefix}{cmds.name}`"
|
||
nb_cmds += 1
|
||
if name_cog != "Help":
|
||
halp.add_field(name = f'**{name_cog} — {nb_cmds}**', value = liste_cmds[2:], inline = False)
|
||
cmds_desc = ''
|
||
for y in self.client.walk_commands():
|
||
if not y.cog_name and not y.hidden:
|
||
cmds_desc += (f'{ctx.prefix}{y.name} - {y.help}\n ')
|
||
|
||
if len(cmds_desc) > 1:
|
||
halp.add_field(name = 'Commandes sans catégorie', value = cmds_desc[0:len(cmds_desc)-1], inline = False)
|
||
await ctx.message.add_reaction(emoji = '✅')
|
||
await ctx.send(embed = halp)
|
||
else:
|
||
"""Avertissement si il y a trop d'arguments dans la variable cog"""
|
||
if len(cog) > 1:
|
||
halp = discord.Embed(title = 'Erreur !', description = "Tu as renseigné trop d'arguments !", color = 0xC41B1B)
|
||
await ctx.send(embed = halp)
|
||
else:
|
||
"""Liste des commandes avec cogs."""
|
||
cog = [item.capitalize() for item in cog]
|
||
found = False
|
||
for x in self.client.cogs:
|
||
for y in cog:
|
||
if x == y:
|
||
halp = discord.Embed(title = f'{cog[0]} - Liste des commandes', description = self.client.cogs[cog[0]].__doc__, color = randint(0, 0xFFFFFF))
|
||
for c in self.client.get_cog(y).get_commands():
|
||
if not c.hidden:
|
||
cmds_help = str(c.help).split("\n")
|
||
del cmds_help[0]
|
||
backslash = '\n'
|
||
halp.add_field(name = f"`{ctx.prefix}{c.name}` - {str(c.help).split(backslash)[0]}", value = f"{''.join(cmds_help)}\u200b", inline = False)
|
||
found = True
|
||
if not found:
|
||
"""Rappel si le cog n'existe pas."""
|
||
await ctx.message.add_reaction(emoji = '❌')
|
||
halp = discord.Embed(title = 'Erreur !', description = f"Qu'est ce que {cog[0]} ?", color = 0xC41B1B)
|
||
else:
|
||
await ctx.message.add_reaction(emoji = '✅')
|
||
await ctx.send('', embed = halp)
|