djs-selfbot-v11
Version:
Selfbot module Discord
43 lines (40 loc) • 1.57 kB
JavaScript
const Collection = require('../../../../util/Collection');
const { Events } = require('../../../../util/Constants');
const AbstractHandler = require('./AbstractHandler');
// Uncomment in v12
// const Collection = require('../../../../util/Collection');
class GuildMemberListUpdate extends AbstractHandler {
handle(packet) {
const client = this.packetManager.client;
const data = packet.d;
const guild = client.guilds.get(data.guild_id);
if (!guild) return;
const members = new Collection();
// Get Member from side Discord Channel (online counting if large server)
for (const object of data.ops) {
if (object.op == 'SYNC') {
for (const member_ of object.items) {
const member = member_.member;
if (!member) continue;
members.set(member.user.id, guild._addMember(member, false));
if (member.presence) {
guild._setPresence(Object.assign(member.presence, { guild }));
}
}
} else if (object.op == 'INVALIDATE') {
client.emit(Events.DEBUG, `Invalidate [${object.range[0]}, ${object.range[1]}]`);
} else if (object.op == 'UPDATE' || object.op == 'INSERT') {
const member = object.item.member;
if (!member) continue;
members.set(member.user.id, guild._addMember(member, false));
if (member.presence) {
guild._setPresence(member.user.id, member.presence)
}
} else if (object.op == 'DELETE') {
// Nothing;
}
}
client.emit(Events.GUILD_MEMBER_LIST_UPDATE, members, guild, data);
}
}
module.exports = GuildMemberListUpdate;