diff --git a/frank/modules/__init__.py b/frank/modules/__init__.py index 5374cbc..801d111 100644 --- a/frank/modules/__init__.py +++ b/frank/modules/__init__.py @@ -1 +1,6 @@ -from .test import TestMod +from .help import HelpMod + + +__all__ = [ + 'HelpMod', +] diff --git a/frank/modules/help.py b/frank/modules/help.py new file mode 100644 index 0000000..2ddcbbb --- /dev/null +++ b/frank/modules/help.py @@ -0,0 +1,65 @@ +# =====IMPORTS===== +# Future imports +from __future__ import annotations + +# Third-party imports +import discord + +# Own imports +from suzybot.frank import Module, default, command + +# Typing imports +from typing import TYPE_CHECKING +if TYPE_CHECKING: + # Built-in imports + from typing import List + + # Third-party imports + from discord.abc import User, Messageable + + +class HelpMod(Module): + """ + This module sends a help message in a given channel with info about all + other modules. + """ + + PREFIX = 'help' + NAME = 'help' + HELP = 'Shows help info about all modules' + + def pre_start(self): + self.theme = discord.Color.dark_green() + + @default(help_str='Show help about all modules.') + async def send_all(self, author: User, channel: Messageable, mid: int): + embed = discord.Embed(colour=self.theme) + embed.set_author(name='Suzy') + + for mod in self._client._modules: + embed.add_field(name=mod.NAME, value=mod.HELP, inline=False) + + await channel.send(embed=embed) + + @command(cmd='.+', help_str='Show help about a certain module.') + async def show_module_help(self, cmd: List[str], author: User, + channel: Messageable, mid: int): + # Exit if no arguments are given + if not cmd: + return + + mod_name = cmd[0].lower() + mod = next((mod for mod in self._client._modules + if mod.NAME.lower() == mod_name), None) + + if mod: + embed = discord.Embed(colour=self.theme) + + if mod._DEFAULT: + embed.add_field(name='default', value=mod._help, inline=False) + + for cmd in mod._COMMANDS: + embed.add_field(name=cmd._command, value=mod._help, + inline=False) + + await channel.send(embed=embed) diff --git a/frank/modules/test.py b/frank/modules/test.py deleted file mode 100644 index e87d3bf..0000000 --- a/frank/modules/test.py +++ /dev/null @@ -1,12 +0,0 @@ -from typing import List -from .. import Module - - -class TestMod(Module): - PREFIX = "test" - NAME = "test" - - async def command(self, cmd: List[str]): - if cmd[0] == "test": - channel = self._client.get_channel(self._config["channel_id"]) - await channel.send("psycho frank is in the house")