Skip to content
10 changes: 7 additions & 3 deletions interactions/api/http/member.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ async def get_member(self, guild_id: int, member_id: int) -> Optional[dict]:
)
)

member = Member(**res, _client=self)
member = Member(**res, _client=self, guild_id=Snowflake(guild_id))
guild = self.cache[Guild].get(Snowflake(guild_id))
if guild.members is None:
guild.members = [member]
Expand Down Expand Up @@ -68,9 +68,13 @@ async def get_list_of_members(
res = await self._req.request(Route("GET", f"/guilds/{guild_id}/members"), params=payload)
guild = self.cache[Guild].get(Snowflake(guild_id))
if guild.members is None:
guild.members = [Member(**_res, _client=self) for _res in res]
guild.members = [
Member(**_res, _client=self, guild_id=Snowflake(guild_id)) for _res in res
]
else:
for member in [Member(**_res, _client=self) for _res in res]:
for member in [
Member(**_res, _client=self, guild_id=Snowflake(guild_id)) for _res in res
]:
for index, _member in enumerate(guild.members):
if _member.id == member.id:
guild.members[index] = member
Expand Down
15 changes: 10 additions & 5 deletions interactions/api/models/guild.py
Original file line number Diff line number Diff line change
Expand Up @@ -361,6 +361,11 @@ def __attrs_post_init__(self): # sourcery skip: last-if-guard
if not self.presences:
self.presences = guild.presences

if self.members:
for member in self.members:
if not member._extras.get("guild_id"):
member._extras["guild_id"] = self.id

def __repr__(self) -> str:
return self.name

Expand Down Expand Up @@ -578,7 +583,7 @@ async def get_member(
guild_id=int(self.id),
member_id=int(member_id),
)
member = Member(**res, _client=self._client)
member = Member(**res, _client=self._client, guild_id=self.id)
if self.members is None:
self.members = []
for index, _member in enumerate(self.members):
Expand Down Expand Up @@ -1098,7 +1103,7 @@ async def modify_member(
reason=reason,
)

_member = Member(**res, _client=self._client)
_member = Member(**res, _client=self._client, guild_id=self.id)
if self.members is None:
self.members = []
for index, member in enumerate(self.members):
Expand Down Expand Up @@ -2038,7 +2043,7 @@ async def get_list_of_members(
res = await self._client.get_list_of_members(
guild_id=int(self.id), limit=limit, after=_after
)
_members = [Member(**member, _client=self._client) for member in res]
_members = [Member(**member, _client=self._client, guild_id=self.id) for member in res]
if self.members is None:
self.members = []
for member in _members:
Expand All @@ -2062,7 +2067,7 @@ async def search_members(self, query: str, limit: Optional[int] = 1) -> List[Mem
res = await self._client.search_guild_members(
guild_id=int(self.id), query=query, limit=limit
)
return [Member(**member, _client=self._client) for member in res]
return [Member(**member, _client=self._client, guild_id=self.id) for member in res]

async def get_all_members(self) -> List[Member]:
"""
Expand All @@ -2089,7 +2094,7 @@ async def get_all_members(self) -> List[Member]:
guild_id=int(self.id), limit=100, after=int(_last_member.id)
)
_all_members.extend(_members)
self.members = [Member(**_, _client=self._client) for _ in _all_members]
self.members = [Member(**_, _client=self._client, guild_id=self.id) for _ in _all_members]
return self.members

async def get_webhooks(self) -> List[Webhook]:
Expand Down
Loading