aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar ToxicKidz <[email protected]>2021-03-12 19:17:39 -0500
committerGravatar ToxicKidz <[email protected]>2021-03-12 19:17:39 -0500
commitcc72d484115a8acebf0fafe8bb332817168d3acd (patch)
treefd5ac32633bf9eac9ec0f1f8428014c48d9e5101
parentchange ctx.send_help to ctx.invoke(help_command) (diff)
make utility invoke_help_command function
-rw-r--r--bot/exts/christmas/advent_of_code/_cog.py4
-rw-r--r--bot/exts/evergreen/emoji.py4
-rw-r--r--bot/exts/evergreen/game.py4
-rw-r--r--bot/exts/evergreen/minesweeper.py4
-rw-r--r--bot/exts/evergreen/movie.py4
-rw-r--r--bot/exts/evergreen/snakes/_snakes_cog.py4
-rw-r--r--bot/exts/evergreen/space.py4
-rw-r--r--bot/exts/evergreen/status_codes.py4
-rw-r--r--bot/exts/utils/extensions.py14
-rw-r--r--bot/exts/valentines/be_my_valentine.py4
-rw-r--r--bot/utils/extensions.py12
11 files changed, 35 insertions, 27 deletions
diff --git a/bot/exts/christmas/advent_of_code/_cog.py b/bot/exts/christmas/advent_of_code/_cog.py
index bf008ee9..6ba5c2af 100644
--- a/bot/exts/christmas/advent_of_code/_cog.py
+++ b/bot/exts/christmas/advent_of_code/_cog.py
@@ -12,6 +12,7 @@ from bot.constants import (
)
from bot.exts.christmas.advent_of_code import _helpers
from bot.utils.decorators import InChannelCheckFailure, in_month, whitelist_override, with_role
+from bot.utils.extensions import invoke_help_command
log = logging.getLogger(__name__)
@@ -51,8 +52,7 @@ class AdventOfCode(commands.Cog):
async def adventofcode_group(self, ctx: commands.Context) -> None:
"""All of the Advent of Code commands."""
if not ctx.invoked_subcommand:
- help_command = self.bot.get_command("help")
- await ctx.invoke(help_command, ctx.command.name)
+ await invoke_help_command(ctx, ctx.command.name)
@adventofcode_group.command(
name="subscribe",
diff --git a/bot/exts/evergreen/emoji.py b/bot/exts/evergreen/emoji.py
index 40bf83e8..042e539d 100644
--- a/bot/exts/evergreen/emoji.py
+++ b/bot/exts/evergreen/emoji.py
@@ -11,6 +11,7 @@ from discord.ext import commands
from bot.constants import Colours, ERROR_REPLIES
from bot.utils.pagination import LinePaginator
from bot.utils.time import time_since
+from bot.utils.extensions import invoke_help_command
log = logging.getLogger(__name__)
@@ -75,8 +76,7 @@ class Emojis(commands.Cog):
if emoji is not None:
await ctx.invoke(self.info_command, emoji)
else:
- help_command = self.bot.get_command("help")
- await ctx.invoke(help_command, ctx.command.name)
+ await invoke_help_command(ctx, ctx.command.name)
@emoji_group.command(name="count", aliases=("c",))
async def count_command(self, ctx: commands.Context, *, category_query: str = None) -> None:
diff --git a/bot/exts/evergreen/game.py b/bot/exts/evergreen/game.py
index d49a8858..ab4cae77 100644
--- a/bot/exts/evergreen/game.py
+++ b/bot/exts/evergreen/game.py
@@ -16,6 +16,7 @@ from bot.bot import Bot
from bot.constants import STAFF_ROLES, Tokens
from bot.utils.decorators import with_role
from bot.utils.pagination import ImagePaginator, LinePaginator
+from bot.utils.extensions import invoke_help_command
# Base URL of IGDB API
BASE_URL = "https://api.igdb.com/v4"
@@ -234,8 +235,7 @@ class Games(Cog):
"""
# When user didn't specified genre, send help message
if genre is None:
- help_command = self.bot.get_command("help")
- await ctx.invoke(help_command, ctx.command.name)
+ await invoke_help_command(ctx, ctx.command.name)
return
# Capitalize genre for check
diff --git a/bot/exts/evergreen/minesweeper.py b/bot/exts/evergreen/minesweeper.py
index 06a75c2b..cfe7150e 100644
--- a/bot/exts/evergreen/minesweeper.py
+++ b/bot/exts/evergreen/minesweeper.py
@@ -8,6 +8,7 @@ from discord.ext import commands
from bot.constants import Client
from bot.utils.exceptions import UserNotPlayingError
+from bot.utils.extensions import invoke_help_command
MESSAGE_MAPPING = {
0: ":stop_button:",
@@ -83,8 +84,7 @@ class Minesweeper(commands.Cog):
@commands.group(name='minesweeper', aliases=('ms',), invoke_without_command=True)
async def minesweeper_group(self, ctx: commands.Context) -> None:
"""Commands for Playing Minesweeper."""
- help_command = ctx.bot.get_command("help")
- await ctx.invoke(help_command, ctx.command.name)
+ await invoke_help_command(ctx, ctx.command.name)
@staticmethod
def get_neighbours(x: int, y: int) -> typing.Generator[typing.Tuple[int, int], None, None]:
diff --git a/bot/exts/evergreen/movie.py b/bot/exts/evergreen/movie.py
index 238ab038..9aa3aea7 100644
--- a/bot/exts/evergreen/movie.py
+++ b/bot/exts/evergreen/movie.py
@@ -10,6 +10,7 @@ from discord.ext.commands import Bot, Cog, Context, group
from bot.constants import Tokens
from bot.utils.pagination import ImagePaginator
+from bot.utils.extensions import invoke_help_command
# Define base URL of TMDB
BASE_URL = "https://api.themoviedb.org/3/"
@@ -73,8 +74,7 @@ class Movie(Cog):
try:
result = await self.get_movies_list(self.http_session, MovieGenres[genre].value, 1)
except KeyError:
- help_command = self.bot.get_command("help")
- await ctx.invoke(help_command, ctx.command.name)
+ await invoke_help_command(ctx, ctx.command.name)
return
# Check if "results" is in result. If not, throw error.
diff --git a/bot/exts/evergreen/snakes/_snakes_cog.py b/bot/exts/evergreen/snakes/_snakes_cog.py
index 819a98b2..d0e60819 100644
--- a/bot/exts/evergreen/snakes/_snakes_cog.py
+++ b/bot/exts/evergreen/snakes/_snakes_cog.py
@@ -22,6 +22,7 @@ from bot.constants import ERROR_REPLIES, Tokens
from bot.exts.evergreen.snakes import _utils as utils
from bot.exts.evergreen.snakes._converter import Snake
from bot.utils.decorators import locked
+from bot.utils.extensions import invoke_help_command
log = logging.getLogger(__name__)
@@ -440,8 +441,7 @@ class Snakes(Cog):
@group(name='snakes', aliases=('snake',), invoke_without_command=True)
async def snakes_group(self, ctx: Context) -> None:
"""Commands from our first code jam."""
- help_command = self.bot.get_command("help")
- await ctx.invoke(help_command, ctx.command.name)
+ await invoke_help_command(ctx, ctx.command.name)
@bot_has_permissions(manage_messages=True)
@snakes_group.command(name='antidote')
diff --git a/bot/exts/evergreen/space.py b/bot/exts/evergreen/space.py
index e388e13f..305d6721 100644
--- a/bot/exts/evergreen/space.py
+++ b/bot/exts/evergreen/space.py
@@ -10,6 +10,7 @@ from discord.ext.commands import BadArgument, Cog, Context, Converter, group
from bot.bot import Bot
from bot.constants import Tokens
+from bot.utils.extensions import invoke_help_command
logger = logging.getLogger(__name__)
@@ -63,8 +64,7 @@ class Space(Cog):
@group(name="space", invoke_without_command=True)
async def space(self, ctx: Context) -> None:
"""Head command that contains commands about space."""
- help_command = self.bot.get_command("help")
- await ctx.invoke(help_command, ctx.command.name)
+ await invoke_help_command(ctx, ctx.command.name)
@space.command(name="apod")
async def apod(self, ctx: Context, date: Optional[str] = None) -> None:
diff --git a/bot/exts/evergreen/status_codes.py b/bot/exts/evergreen/status_codes.py
index d06724eb..a037e117 100644
--- a/bot/exts/evergreen/status_codes.py
+++ b/bot/exts/evergreen/status_codes.py
@@ -2,6 +2,7 @@ from http import HTTPStatus
import discord
from discord.ext import commands
+from bot.utils.extensions import invoke_help_command
HTTP_DOG_URL = "https://httpstatusdogs.com/img/{code}.jpg"
HTTP_CAT_URL = "https://http.cat/{code}.jpg"
@@ -17,8 +18,7 @@ class HTTPStatusCodes(commands.Cog):
async def http_status_group(self, ctx: commands.Context) -> None:
"""Group containing dog and cat http status code commands."""
if not ctx.invoked_subcommand:
- help_command = self.bot.get_command("help")
- await ctx.invoke(help_command, ctx.command.name)
+ await invoke_help_command(ctx, ctx.command.name)
@http_status_group.command(name='cat')
async def http_cat(self, ctx: commands.Context, code: int) -> None:
diff --git a/bot/exts/utils/extensions.py b/bot/exts/utils/extensions.py
index f7ff2396..9c126a7b 100644
--- a/bot/exts/utils/extensions.py
+++ b/bot/exts/utils/extensions.py
@@ -11,7 +11,7 @@ from bot import exts
from bot.bot import Bot
from bot.constants import Client, Emojis, MODERATION_ROLES, Roles
from bot.utils.checks import with_role_check
-from bot.utils.extensions import EXTENSIONS, unqualify
+from bot.utils.extensions import EXTENSIONS, unqualify, invoke_help_command
from bot.utils.pagination import LinePaginator
log = logging.getLogger(__name__)
@@ -77,8 +77,7 @@ class Extensions(commands.Cog):
@group(name="extensions", aliases=("ext", "exts", "c", "cogs"), invoke_without_command=True)
async def extensions_group(self, ctx: Context) -> None:
"""Load, unload, reload, and list loaded extensions."""
- help_command = self.bot.get_command("help")
- await ctx.invoke(help_command, ctx.command.name)
+ await invoke_help_command(ctx, ctx.command.name)
@extensions_group.command(name="load", aliases=("l",))
async def load_command(self, ctx: Context, *extensions: Extension) -> None:
@@ -88,8 +87,7 @@ class Extensions(commands.Cog):
If '\*' or '\*\*' is given as the name, all unloaded extensions will be loaded.
""" # noqa: W605
if not extensions:
- help_command = self.bot.get_command("help")
- await ctx.invoke(help_command, "extensions", ctx.command.name)
+ await invoke_help_command(ctx, "extensions", ctx.command.name)
return
if "*" in extensions or "**" in extensions:
@@ -106,8 +104,7 @@ class Extensions(commands.Cog):
If '\*' or '\*\*' is given as the name, all loaded extensions will be unloaded.
""" # noqa: W605
if not extensions:
- help_command = self.bot.get_command("help")
- await ctx.invoke(help_command, "extensions", ctx.command.name)
+ await invoke_help_command(ctx, "extensions", ctx.command.name)
return
blacklisted = "\n".join(UNLOAD_BLACKLIST & set(extensions))
@@ -133,8 +130,7 @@ class Extensions(commands.Cog):
If '\*\*' is given as the name, all extensions, including unloaded ones, will be reloaded.
""" # noqa: W605
if not extensions:
- help_command = self.bot.get_command("help")
- await ctx.invoke(help_command, "extensions", ctx.command.name)
+ await invoke_help_command(ctx, "extensions", ctx.command.name)
return
if "**" in extensions:
diff --git a/bot/exts/valentines/be_my_valentine.py b/bot/exts/valentines/be_my_valentine.py
index 59bd42d3..d5cc8644 100644
--- a/bot/exts/valentines/be_my_valentine.py
+++ b/bot/exts/valentines/be_my_valentine.py
@@ -10,6 +10,7 @@ from discord.ext.commands.cooldowns import BucketType
from bot.constants import Channels, Colours, Lovefest, Month
from bot.utils.decorators import in_month
+from bot.utils.extensions import invoke_help_command
log = logging.getLogger(__name__)
@@ -43,8 +44,7 @@ class BeMyValentine(commands.Cog):
2) use the command \".lovefest unsub\" to get rid of the lovefest role.
"""
if not ctx.invoked_subcommand:
- help_command = self.bot.get_command("help")
- await ctx.invoke(help_command, ctx.command.name)
+ await invoke_help_command(ctx, ctx.command.name)
@lovefest_role.command(name="sub")
async def add_role(self, ctx: commands.Context) -> None:
diff --git a/bot/utils/extensions.py b/bot/utils/extensions.py
index 50350ea8..56f6dd00 100644
--- a/bot/utils/extensions.py
+++ b/bot/utils/extensions.py
@@ -4,6 +4,7 @@ import pkgutil
from typing import Iterator, NoReturn
from bot import exts
+from discord.ext.commands import Context
def unqualify(name: str) -> str:
@@ -31,4 +32,15 @@ def walk_extensions() -> Iterator[str]:
yield module.name
+async def invoke_help_command(ctx: Context, *commands: str) -> None:
+ """Invoke the help command, and will use the default help command
+ if the help exten is not loaded.
+ """
+
+ if 'bot.exts.evergreen.help' in ctx.bot.extensions:
+ help_command = ctx.bot.get_command('help')
+ await ctx.invoke(help_command, *commands)
+ return
+ await ctx.send_help(''.join(commands))
+
EXTENSIONS = frozenset(walk_extensions())