GUILD_MEMBER_LIST_UPDATE

This commit is contained in:
honeytequila 2021-05-27 09:28:19 -03:00
parent 11d891f819
commit 910dd9a22b
3 changed files with 104 additions and 2343 deletions

2282
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -13,7 +13,7 @@
"author": "Fosscord", "author": "Fosscord",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@fosscord/server-util": "^1.3.3", "@fosscord/server-util": "^1.3.7",
"ajv": "^8.5.0", "ajv": "^8.5.0",
"dotenv": "^8.2.0", "dotenv": "^8.2.0",
"jsonwebtoken": "^8.5.1", "jsonwebtoken": "^8.5.1",

View File

@ -1,13 +1,5 @@
// @ts-nocheck WIP // @ts-nocheck WIP
import { import { db, getPermission, MemberModel, MongooseCache, PublicUserProjection, RoleModel, toObject } from "@fosscord/server-util";
db,
getPermission,
MemberModel,
MongooseCache,
PublicUserProjection,
RoleModel,
toObject,
} from "@fosscord/server-util";
import { LazyRequest } from "../schema/LazyRequest"; import { LazyRequest } from "../schema/LazyRequest";
import { OPCODES, Payload } from "../util/Constants"; import { OPCODES, Payload } from "../util/Constants";
import { Send } from "../util/Send"; import { Send } from "../util/Send";
@ -31,9 +23,10 @@ export async function onLazyRequest(this: WebSocket, { d }: Payload) {
.aggregate([ .aggregate([
{ {
$match: { $match: {
guild_id, guild_id
// id: { $ne: guild_id }
// hoist: true // TODO: also match @everyone role // hoist: true // TODO: also match @everyone role
}, }
}, },
{ $sort: { position: 1 } }, { $sort: { position: 1 } },
{ {
@ -47,20 +40,17 @@ export async function onLazyRequest(this: WebSocket, { d }: Payload) {
$lookup: { $lookup: {
from: "users", from: "users",
let: { user_id: "$id" }, let: { user_id: "$id" },
pipeline: [ pipeline: [{ $match: { $expr: { $eq: ["$id", "$$user_id"] } } }, { $project: PublicUserProjection }],
{ $match: { $expr: { $eq: ["$id", "$$user_id"] } } }, as: "user"
{ $project: PublicUserProjection }, }
],
as: "user",
},
}, },
{ {
$unwind: "$user", $unwind: "$user"
}, }
], ],
as: "members", as: "members"
}, }
}, }
]) ])
.toArray() .toArray()
); );
@ -73,10 +63,11 @@ export async function onLazyRequest(this: WebSocket, { d }: Payload) {
items.push({ items.push({
group: { group: {
count: role.members.length, count: role.members.length,
id: role.id, id: role.id === guild_id ? "online" : role.name
}, }
}); });
for (const member of role.members) { for (const member of role.members) {
member.roles.remove(guild_id);
items.push({ member }); items.push({ member });
} }
} }
@ -90,14 +81,14 @@ export async function onLazyRequest(this: WebSocket, { d }: Payload) {
{ {
range: [0, 99], range: [0, 99],
op: "SYNC", op: "SYNC",
items: items, items
}, }
], ],
online_count: member_count, // TODO count online count online_count: member_count, // TODO count online count
member_count, member_count,
id: "everyone", id: "everyone",
guild_id, guild_id,
groups, groups
}, }
}); });
} }