File tree Expand file tree Collapse file tree 2 files changed +17
-1
lines changed Expand file tree Collapse file tree 2 files changed +17
-1
lines changed Original file line number Diff line number Diff line change @@ -640,6 +640,16 @@ async def get_or_fetch_user(self, id: int) -> discord.User:
640640 """
641641 return self .get_user (id ) or await self .fetch_user (id )
642642
643+ @staticmethod
644+ async def get_or_fetch_member (guild : discord .Guild , member_id : int ) -> typing .Optional [discord .Member ]:
645+ """
646+ Attempt to get a member from cache; on failure fetch from the API.
647+
648+ Returns:
649+ The :obj:`discord.Member` or :obj:`None` to indicate the member could not be found.
650+ """
651+ return guild .get_member (member_id ) or await guild .fetch_member (member_id )
652+
643653 async def retrieve_emoji (self ) -> typing .Tuple [str , str ]:
644654 sent_emoji = self .config ["sent_emoji" ]
645655 blocked_emoji = self .config ["blocked_emoji" ]
Original file line number Diff line number Diff line change @@ -823,7 +823,13 @@ async def reply(
823823 """Returns List[user_dm_msg] and thread_channel_msg"""
824824 if not message .content and not message .attachments and not message .stickers :
825825 raise MissingRequiredArgument (DummyParam ("msg" ))
826- if not any (g .get_member (self .id ) for g in self .bot .guilds ):
826+ for guild in self .bot .guilds :
827+ try :
828+ if await self .bot .get_or_fetch_member (guild , self .id ):
829+ break
830+ except discord .NotFound :
831+ pass
832+ else :
827833 return await message .channel .send (
828834 embed = discord .Embed (
829835 color = self .bot .error_color ,
You can’t perform that action at this time.
0 commit comments