@@ -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