From d204db45450961372411538af1e0fbb970980d44 Mon Sep 17 00:00:00 2001 From: louis chauvet Date: Tue, 21 Aug 2018 12:12:06 +0200 Subject: [PATCH] Add a basic help menu --- main.py | 3 +++ modules/help.py | 63 +++++++++++++++++++++++++++++++++++++++++++++++++ traductions.py | 39 +++++++++++++++++++++--------- 3 files changed, 94 insertions(+), 11 deletions(-) create mode 100644 modules/help.py diff --git a/main.py b/main.py index 3fe310a..58f458c 100644 --- a/main.py +++ b/main.py @@ -92,6 +92,8 @@ class Guild: errors = [] if "modules" not in self.config["modules"]: self.config["modules"].append("modules") + if "help" not in self.config["modules"]: + self.config["modules"].append("help") module_to_load = list(set(self.config["modules"])) for module in module_to_load: @@ -118,6 +120,7 @@ class Guild: if not msg.author.bot: for module in self.modules: await module.on_message(msg) + return class FoBot(discord.Client): diff --git a/modules/help.py b/modules/help.py new file mode 100644 index 0000000..1b5acfb --- /dev/null +++ b/modules/help.py @@ -0,0 +1,63 @@ +import discord +import traductions as tr + + +class MainClass: + name = "modules" + + def __init__(self, guild): + self.guild = guild + + async def help(self, msg, command, args): + if len(args) == 0: + texte = "Voici l'aide générale du bot:" + for module in self.guild.config["modules"]: + texte += "\n**" + texte += module + texte += "**: " + texte += tr.tr[self.guild.config["lang"]]["modules"][module]["description"] + texte += "\n\tCommandes: " + texte += ", ".join( + [commande for commande in tr.tr[self.guild.config["lang"]]["modules"][module]["help"].keys()]) + await msg.channel.send(texte) + return + elif len(args[0].split(":")) == 1: + if args[0] in tr.tr[self.guild.config["lang"]]["modules"].keys(): + texte = "Voici l'aide pour le module {module}:".format(module=args[0]) + for commande, aide in tr.tr[self.guild.config["lang"]]["modules"][args[0]]["help"].items(): + texte += "\n**" + texte += commande + texte += "**: " + texte += aide["description"] + await msg.channel.send(texte) + return + else: + # module non existant + await msg.channel.send(tr.tr[self.guild.config["lang"]]["errors"]["ModuleNotFoundError"]["text"] + .format(prefix=self.guild.config["prefix"], module=args[0])) + return + elif len(args[0].split(":")) == 2: + module, fonction = args[0].split(":") + if module in tr.tr[self.guild.config["lang"]]["modules"].keys(): + if fonction in tr.tr[self.guild.config["lang"]]["modules"][module]["help"].keys(): + texte = "Aide de la fonction {command}".format(command=fonction) + for exemple in tr.tr[self.guild.config["lang"]]["modules"][module]["help"][fonction]["examples"]: + texte += "\n" + texte += exemple[0].format(prefix=self.guild.config["prefix"]) + texte += ": " + texte += exemple[1] + await msg.channel.send(texte) + else: + await msg.channe.send(tr.tr[self.guild.config["lang"]]["errors"]["CommandNotFoundError"].format(command=fonction)) + else: + # module non existant + await msg.channel.send(tr.tr[self.guild.config["lang"]]["errors"]["ModuleNotFoundError"]["text"] + .format(prefix=self.guild.config["prefix"], module=module)) + return + + async def on_message(self, msg): + if msg.content.startswith(self.guild.config["prefix"]): + command, *args = msg.content.lstrip(self.guild.config["prefix"]).split(" ") + if command == "help": + await self.help(msg, command, args) + return diff --git a/traductions.py b/traductions.py index 822904d..f1ae12a 100644 --- a/traductions.py +++ b/traductions.py @@ -4,23 +4,23 @@ tr = { "modules": { "modules": { "description": "Permet de gérer les modules.", - "aide": { + "help": { "list_modules": { "description": "Liste tous les modules. Les modules en gras sont activés.", - "exemples": [ + "examples": [ ("`{prefix}list_modules`", "Liste tous les modules"), ], }, "load": { "description": "Permet de charger un ou des modules.", - "exemples": [ + "examples": [ ("`{prefix}load fun`", "Charge le module fun"), ("`{prefix}load fun admin`", "Charge les modules fun et admin"), ], }, "unload": { "description": "Permet de décharger un ou des modules.", - "exemples": [ + "examples": [ ("`{prefix}unload fun`", "Décharge le module fun"), ("`{prefix}unload fun admin`", "Décharge les modules fun et admin"), ], @@ -36,7 +36,7 @@ tr = { }, "config": { "description": "Configuration de foBot, doublez le préfixe pour y accéder.", - "aide": { + "help": { "lang": { "description": "Modifier la langue", "examples": [ @@ -56,10 +56,10 @@ tr = { ], }, "list": { - "title": "Liste des Paramètres disponibles", - "params": { - "prefix": "Le préfixe utilisé sur le serveur", - }, + "description": "Liste des paramètres disponibles", + "examples": [ + ("`{prefix}{prefix}list`", "Liste des paramètres modifiables") + ], }, }, "lang": "La langue {lang} est maintenant utilisée.", @@ -75,6 +75,19 @@ tr = { "add_master_admin": "L'utilisateur {user} est maintenant un administrateur du bot.", "del_master_admin": "L'utilisateur {user} n'est plus un administrateur du bot.", }, + "help": { + "description": "Active la commande d'aide", + "help": { + "help": { + "description": "Permat d'aficher de l'aide", + "examples": [ + ("`{prefix}help`", "Affiche l'aide générale"), + ("`{prefix}help config`", "Liste les commandes disponibles dans le module config"), + ("`{prefix}help config:lang`", "Affiche l'aide avancé de la commande lang u module config"), + ], + }, + }, + }, }, "errors": { "LangNotFoundError": "La langue {lang} est introuvable, tapez {prefix}list_lang pour voir les langues " @@ -83,7 +96,8 @@ tr = { "ModuleNotFoundOrDeactivatedError": { "title": "Erreur", "name": "Erreur lors de la désactivation du module {module}:", - "value": "Celui-ci n'existe pas ou n'es pas activé. Tapez {prefix}list_modules pour voir la liste des modules disponibles.", + "value": "Celui-ci n'existe pas ou n'es pas activé. Tapez {prefix}list_modules pour voir la liste des " + "modules disponibles.", }, "ModuleNotFoundError": { @@ -91,13 +105,16 @@ tr = { "name": "Erreur lors de l'activation du module {module}:", "value": "Celui-ci n'existe pas. Tapez {prefix}list_modules pour voir la liste des modules " "disponibles.", + "text": "Le module {module} n'existe pas, tapez {prefix}list_modules pour voir la liste des modules " + "disponibles.", }, "ForbiddenConfigError": "Ce paramètre ne peut pas être modifié directement.", "UnknownConfigError": "Le paramètre demandé n'existe pas. Utilisez {prefix}list pour lister les paramètres " "modifiables.", "NotEnoughParamError": "Il manque un ou plusieurs parametres à la commande.", "NoMentionsError": "Vous devez mentioner un utilisateur pour le rajouter à la liste des administrateurs " - "du bot." + "du bot.", + "CommandNotFoundError": "La commande {command} n'existe pas." }, }, }