Add upgraded Member to Message.mentions in case of no cache.
This commit is contained in:
parent
5f272fa151
commit
bbc50c92d0
@ -192,6 +192,17 @@ class Member(discord.abc.Messageable, _BaseUser):
|
|||||||
data['user'] = author._to_minimal_user_json()
|
data['user'] = author._to_minimal_user_json()
|
||||||
return cls(data=data, guild=message.guild, state=message._state)
|
return cls(data=data, guild=message.guild, state=message._state)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _try_upgrade(cls, *, data, guild, state):
|
||||||
|
# A User object with a 'member' key
|
||||||
|
try:
|
||||||
|
member_data = data.pop('member')
|
||||||
|
except KeyError:
|
||||||
|
return state.store_user(member_data)
|
||||||
|
else:
|
||||||
|
member_data['user'] = data
|
||||||
|
return cls(data=member_data, guild=guild, state=state)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _from_presence_update(cls, *, data, guild, state):
|
def _from_presence_update(cls, *, data, guild, state):
|
||||||
clone = cls(data=data, guild=guild, state=state)
|
clone = cls(data=data, guild=guild, state=state)
|
||||||
|
@ -412,16 +412,20 @@ class Message:
|
|||||||
self.author = Member._from_message(message=self, data=member)
|
self.author = Member._from_message(message=self, data=member)
|
||||||
|
|
||||||
def _handle_mentions(self, mentions):
|
def _handle_mentions(self, mentions):
|
||||||
self.mentions = []
|
self.mentions = r = []
|
||||||
if self.guild is None:
|
guild = self.guild
|
||||||
self.mentions = [self._state.store_user(m) for m in mentions]
|
state = self._state
|
||||||
|
if guild is None:
|
||||||
|
self.mentions = [state.store_user(m) for m in mentions]
|
||||||
return
|
return
|
||||||
|
|
||||||
for mention in filter(None, mentions):
|
for mention in filter(None, mentions):
|
||||||
id_search = int(mention['id'])
|
id_search = int(mention['id'])
|
||||||
member = self.guild.get_member(id_search)
|
member = guild.get_member(id_search)
|
||||||
if member is not None:
|
if member is not None:
|
||||||
self.mentions.append(member)
|
r.append(member)
|
||||||
|
else:
|
||||||
|
r.append(Member._try_upgrade(data=mention, guild=guild, state=state))
|
||||||
|
|
||||||
def _handle_mention_roles(self, role_mentions):
|
def _handle_mention_roles(self, role_mentions):
|
||||||
self.role_mentions = []
|
self.role_mentions = []
|
||||||
|
Loading…
x
Reference in New Issue
Block a user