mirror of https://gitlab.com/litecord/litecord.git
allow presences boolean on request guild members
see 5454bdf4e0 for source
This commit is contained in:
parent
57220179bc
commit
6dc591e853
|
|
@ -738,7 +738,7 @@ class GatewayWebsocket:
|
||||||
await self._resume(range(seq, state.seq))
|
await self._resume(range(seq, state.seq))
|
||||||
|
|
||||||
async def _req_guild_members(
|
async def _req_guild_members(
|
||||||
self, guild_id, user_ids: List[int], query: str, limit: int
|
self, guild_id, user_ids: List[int], query: str, limit: int, presences: bool
|
||||||
):
|
):
|
||||||
try:
|
try:
|
||||||
guild_id = int(guild_id)
|
guild_id = int(guild_id)
|
||||||
|
|
@ -760,39 +760,43 @@ class GatewayWebsocket:
|
||||||
if user_ids:
|
if user_ids:
|
||||||
members = await self.storage.get_member_multi(guild_id, user_ids)
|
members = await self.storage.get_member_multi(guild_id, user_ids)
|
||||||
mids = [m["user"]["id"] for m in members]
|
mids = [m["user"]["id"] for m in members]
|
||||||
|
|
||||||
not_found = [uid for uid in user_ids if uid not in mids]
|
not_found = [uid for uid in user_ids if uid not in mids]
|
||||||
|
body = {
|
||||||
|
"guild_id": str(guild_id),
|
||||||
|
"members": members,
|
||||||
|
"not_found": not_found,
|
||||||
|
}
|
||||||
|
else:
|
||||||
|
members = await self.storage.query_members(guild_id, query, limit)
|
||||||
|
mids = [m["user"]["id"] for m in members]
|
||||||
|
body = {"guild_id": str(guild_id), "members": members}
|
||||||
|
|
||||||
await self.dispatch(
|
if presences:
|
||||||
"GUILD_MEMBERS_CHUNK",
|
presences = await self.presence.guild_presences(mids, guild_id)
|
||||||
{"guild_id": str(guild_id), "members": members, "not_found": not_found},
|
body["presences"] = presences
|
||||||
)
|
|
||||||
|
|
||||||
return
|
await self.dispatch("GUILD_MEMBERS_CHUNK", body)
|
||||||
|
|
||||||
# do the search
|
|
||||||
result = await self.storage.query_members(guild_id, query, limit)
|
|
||||||
await self.dispatch(
|
|
||||||
"GUILD_MEMBERS_CHUNK", {"guild_id": str(guild_id), "members": result}
|
|
||||||
)
|
|
||||||
|
|
||||||
async def handle_8(self, payload: Dict):
|
async def handle_8(self, payload: Dict):
|
||||||
"""Handle OP 8 Request Guild Members."""
|
"""Handle OP 8 Request Guild Members."""
|
||||||
data = payload["d"]
|
data = payload["d"]
|
||||||
gids = data["guild_id"]
|
gids = data["guild_id"]
|
||||||
|
|
||||||
uids, query, limit = (
|
uids, query, limit, presences = (
|
||||||
data.get("user_ids", []),
|
data.get("user_ids", []),
|
||||||
data.get("query", ""),
|
data.get("query", ""),
|
||||||
data.get("limit", 0),
|
data.get("limit", 0),
|
||||||
|
data.get("presences", False),
|
||||||
)
|
)
|
||||||
|
|
||||||
if isinstance(gids, str):
|
if isinstance(gids, str):
|
||||||
await self._req_guild_members(gids, uids, query, limit)
|
await self._req_guild_members(gids, uids, query, limit, presences)
|
||||||
return
|
return
|
||||||
|
|
||||||
for gid in gids:
|
for gid in gids:
|
||||||
# ignore uids on multiple guilds
|
# ignore uids on multiple guilds
|
||||||
await self._req_guild_members(gid, [], query, limit)
|
await self._req_guild_members(gid, [], query, limit, presences)
|
||||||
|
|
||||||
async def _guild_sync(self, guild_id: int):
|
async def _guild_sync(self, guild_id: int):
|
||||||
"""Synchronize a guild.
|
"""Synchronize a guild.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue