@@ -249,7 +249,11 @@ async def process_options(self, guild: discord.Guild, options: list, auto_conver
249
249
return [x ["value" ] for x in options ]
250
250
if not auto_convert :
251
251
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
+
253
257
types = {
254
258
"user" : 0 ,
255
259
"USER" : 0 ,
@@ -274,9 +278,19 @@ async def process_options(self, guild: discord.Guild, options: list, auto_conver
274
278
to_return .append (selected ["value" ])
275
279
continue
276
280
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" ]))
280
294
return to_return
281
295
282
296
async def on_socket_response (self , msg ):
0 commit comments