aboutsummaryrefslogtreecommitdiffstats
path: root/bot/converters.py
diff options
context:
space:
mode:
Diffstat (limited to 'bot/converters.py')
-rw-r--r--bot/converters.py19
1 files changed, 14 insertions, 5 deletions
diff --git a/bot/converters.py b/bot/converters.py
index 5912e3e61..c9f525dd1 100644
--- a/bot/converters.py
+++ b/bot/converters.py
@@ -9,7 +9,7 @@ import dateutil.tz
import discord
from aiohttp import ClientConnectorError
from dateutil.relativedelta import relativedelta
-from discord.ext.commands import BadArgument, Context, Converter, IDConverter, UserConverter
+from discord.ext.commands import BadArgument, Bot, Context, Converter, IDConverter, UserConverter
from bot.api import ResponseCodeError
from bot.constants import URLs
@@ -81,14 +81,23 @@ class ValidFilterListType(Converter):
passes through the given argument otherwise.
"""
- async def convert(self, ctx: Context, list_type: str) -> str:
- """Checks whether the given string is a valid FilterList type."""
+ @staticmethod
+ async def get_valid_types(bot: Bot) -> list:
+ """
+ Try to get a list of valid filter list types.
+
+ Raise a BadArgument if the API can't respond.
+ """
try:
- valid_types = await ctx.bot.api_client.get('bot/filter-lists/get-types')
+ valid_types = await bot.api_client.get('bot/filter-lists/get-types')
except ResponseCodeError:
raise BadArgument("Cannot validate list_type: Unable to fetch valid types from API.")
- valid_types = [enum for enum, classname in valid_types]
+ return [enum for enum, classname in valid_types]
+
+ async def convert(self, ctx: Context, list_type: str) -> str:
+ """Checks whether the given string is a valid FilterList type."""
+ valid_types = await self.get_valid_types(ctx.bot)
list_type = list_type.upper()
if list_type not in valid_types: