Skip to content

Commit ae908ae

Browse files
committed
Added error handling at auto convert
1 parent e74fc60 commit ae908ae

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

discord_slash/client.py

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,11 @@ async def process_options(self, guild: discord.Guild, options: list, auto_conver
249249
return [x["value"] for x in options]
250250
if not auto_convert:
251251
return [x["value"] for x in options]
252-
converters = [guild.fetch_member, guild.get_channel, guild.get_role]
252+
converters = [
253+
[guild.get_member, guild.fetch_member],
254+
guild.get_channel,
255+
guild.get_role]
256+
253257
types = {
254258
"user": 0,
255259
"USER": 0,
@@ -274,9 +278,19 @@ async def process_options(self, guild: discord.Guild, options: list, auto_conver
274278
to_return.append(selected["value"])
275279
continue
276280
loaded_converter = converters[types[auto_convert[selected["name"]]]]
277-
to_return.append(await loaded_converter(int(selected["value"]))) \
278-
if iscoroutinefunction(loaded_converter) else \
279-
to_return.append(loaded_converter(int(selected["value"])))
281+
if isinstance(loaded_converter, list):
282+
cache_first = loaded_converter[0](int(selected["value"]))
283+
if cache_first:
284+
to_return.append(cache_first)
285+
continue
286+
loaded_converter = loaded_converter[1]
287+
try:
288+
to_return.append(await loaded_converter(int(selected["value"]))) \
289+
if iscoroutinefunction(loaded_converter) else \
290+
to_return.append(loaded_converter(int(selected["value"])))
291+
except (discord.Forbidden, discord.HTTPException):
292+
self.logger.warning("Failed fetching user! Passing ID instead.")
293+
to_return.append(int(selected["value"]))
280294
return to_return
281295

282296
async def on_socket_response(self, msg):

0 commit comments

Comments
 (0)