mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-10 16:43:31 +01:00
Make presences track users and guilds, emit them in presenceUpdate
This commit is contained in:
@@ -23,6 +23,8 @@ class PresenceUpdateHandler extends AbstractHandler {
|
||||
}
|
||||
|
||||
if (guild) {
|
||||
let oldPresence = guild.presences.get(user.id);
|
||||
if (oldPresence) oldPresence = oldPresence._clone();
|
||||
let member = guild.members.get(user.id);
|
||||
if (!member && data.status !== 'offline') {
|
||||
member = guild.members.add({
|
||||
@@ -35,17 +37,13 @@ class PresenceUpdateHandler extends AbstractHandler {
|
||||
}
|
||||
if (member) {
|
||||
if (client.listenerCount(Events.PRESENCE_UPDATE) === 0) {
|
||||
guild.presences.add(data);
|
||||
guild.presences.add(Object.assign(data, { guild: this }));
|
||||
return;
|
||||
}
|
||||
const oldMember = member._clone();
|
||||
if (member.presence) {
|
||||
oldMember.frozenPresence = member.presence._clone();
|
||||
}
|
||||
guild.presences.add(data);
|
||||
client.emit(Events.PRESENCE_UPDATE, oldMember, member);
|
||||
guild.presences.add(Object.assign(data, { guild: this }));
|
||||
client.emit(Events.PRESENCE_UPDATE, oldPresence, member.presence);
|
||||
} else {
|
||||
guild.presences.add(data);
|
||||
guild.presences.add(Object.assign(data, { guild: this }));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ class ReadyHandler extends AbstractHandler {
|
||||
|
||||
client.ws.heartbeat();
|
||||
|
||||
client.presences.clientPresence.userID = data.user.id;
|
||||
if (!ClientUser) ClientUser = require('../../../../structures/ClientUser');
|
||||
const clientUser = new ClientUser(client, data.user);
|
||||
client.user = clientUser;
|
||||
@@ -17,7 +18,6 @@ class ReadyHandler extends AbstractHandler {
|
||||
|
||||
for (const guild of data.guilds) client.guilds.add(guild);
|
||||
for (const privateDM of data.private_channels) client.channels.add(privateDM);
|
||||
for (const presence of data.presences || []) client.presences.add(presence);
|
||||
|
||||
if (!client.users.has('1')) {
|
||||
client.users.add({
|
||||
|
||||
Reference in New Issue
Block a user