mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-15 19:13:31 +01:00
memberMap on guild chunks, fire voice channel changes (fix #177)
This commit is contained in:
@@ -1783,7 +1783,7 @@ var InternalClient = (function () {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _Constants.PacketType.VOICE_STATE_UPDATE:
|
case _Constants.PacketType.VOICE_STATE_UPDATE:
|
||||||
|
console.log(data);
|
||||||
var user = self.users.get("id", data.user_id);
|
var user = self.users.get("id", data.user_id);
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = self.servers.get("id", data.guild_id);
|
||||||
|
|
||||||
@@ -1828,6 +1828,16 @@ var InternalClient = (function () {
|
|||||||
|
|
||||||
var user = _ref7;
|
var user = _ref7;
|
||||||
|
|
||||||
|
server.memberMap[user.user.id] = {
|
||||||
|
roles: user.roles.map(function (pid) {
|
||||||
|
return server.roles.get("id", pid);
|
||||||
|
}),
|
||||||
|
mute: user.mute,
|
||||||
|
self_mute: false,
|
||||||
|
deaf: user.deaf,
|
||||||
|
self_deaf: false,
|
||||||
|
joinedAt: Date.parse(user.joined_at)
|
||||||
|
};
|
||||||
server.members.add(self.users.add(new _StructuresUser2["default"](user.user, client)));
|
server.members.add(self.users.add(new _StructuresUser2["default"](user.user, client)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ var Server = (function (_Equality) {
|
|||||||
this.icon = data.icon;
|
this.icon = data.icon;
|
||||||
this.afkTimeout = data.afkTimeout;
|
this.afkTimeout = data.afkTimeout;
|
||||||
this.afkChannelID = data.afk_channel_id || data.afkChannelID;
|
this.afkChannelID = data.afk_channel_id || data.afkChannelID;
|
||||||
this.memberMap = {};
|
this.memberMap = data.memberMap || {};
|
||||||
this.memberCount = data.member_count || data.memberCount;
|
this.memberCount = data.member_count || data.memberCount;
|
||||||
this.large = data.large || this.memberCount > 250;
|
this.large = data.large || this.memberCount > 250;
|
||||||
|
|
||||||
@@ -170,7 +170,7 @@ var Server = (function (_Equality) {
|
|||||||
Server.prototype.detailsOf = function detailsOf(user) {
|
Server.prototype.detailsOf = function detailsOf(user) {
|
||||||
user = this.client.internal.resolver.resolveUser(user);
|
user = this.client.internal.resolver.resolveUser(user);
|
||||||
if (user) {
|
if (user) {
|
||||||
return this.memberMap[user.id];
|
return this.memberMap[user.id] || {};
|
||||||
} else {
|
} else {
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
@@ -211,14 +211,20 @@ var Server = (function (_Equality) {
|
|||||||
|
|
||||||
Server.prototype.eventVoiceJoin = function eventVoiceJoin(user, channel) {
|
Server.prototype.eventVoiceJoin = function eventVoiceJoin(user, channel) {
|
||||||
// removes from other speaking channels first
|
// removes from other speaking channels first
|
||||||
this.eventVoiceLeave(user);
|
var oldChannel = this.eventVoiceLeave(user);
|
||||||
|
if (oldChannel.id) {
|
||||||
|
this.client.emit("voiceLeave", oldChannel, user);
|
||||||
|
}
|
||||||
|
|
||||||
channel.members.add(user);
|
channel.members.add(user);
|
||||||
user.voiceChannel = channel;
|
user.voiceChannel = channel;
|
||||||
|
this.client.emit("voiceJoin", channel, user);
|
||||||
};
|
};
|
||||||
|
|
||||||
Server.prototype.eventVoiceStateUpdate = function eventVoiceStateUpdate(channel, user, data) {
|
Server.prototype.eventVoiceStateUpdate = function eventVoiceStateUpdate(channel, user, data) {
|
||||||
// removes from other speaking channels first
|
if (!user.voiceChannel || user.voiceChannel.id !== channel.id) {
|
||||||
|
return this.eventVoiceJoin(user, channel);
|
||||||
|
}
|
||||||
if (!this.memberMap[user.id]) {
|
if (!this.memberMap[user.id]) {
|
||||||
this.memberMap[user.id] = {};
|
this.memberMap[user.id] = {};
|
||||||
}
|
}
|
||||||
@@ -232,11 +238,10 @@ var Server = (function (_Equality) {
|
|||||||
this.memberMap[user.id].self_mute = data.self_mute;
|
this.memberMap[user.id].self_mute = data.self_mute;
|
||||||
this.memberMap[user.id].deaf = data.deaf;
|
this.memberMap[user.id].deaf = data.deaf;
|
||||||
this.memberMap[user.id].self_deaf = data.self_deaf;
|
this.memberMap[user.id].self_deaf = data.self_deaf;
|
||||||
if ((oldState.mute != data.mute || oldState.self_mute != data.self_mute || oldState.deaf != data.deaf || oldState.self_deaf != data.self_deaf) && oldState.mute !== undefined) {
|
if (oldState.mute !== undefined && (oldState.mute != data.mute || oldState.self_mute != data.self_mute || oldState.deaf != data.deaf || oldState.self_deaf != data.self_deaf)) {
|
||||||
this.client.emit("voiceStateUpdate", channel, user, oldState, this.memberMap[user.id]);
|
this.client.emit("voiceStateUpdate", channel, user, oldState, this.memberMap[user.id]);
|
||||||
} else {
|
} else {
|
||||||
this.eventVoiceJoin(user, channel);
|
this.eventVoiceJoin(user, channel);
|
||||||
this.client.emit("voiceJoin", channel, user);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1548,7 +1548,6 @@ export default class InternalClient {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PacketType.VOICE_STATE_UPDATE:
|
case PacketType.VOICE_STATE_UPDATE:
|
||||||
|
|
||||||
var user = self.users.get("id", data.user_id);
|
var user = self.users.get("id", data.user_id);
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = self.servers.get("id", data.guild_id);
|
||||||
|
|
||||||
@@ -1581,6 +1580,14 @@ export default class InternalClient {
|
|||||||
var testtime = new Date().getTime();
|
var testtime = new Date().getTime();
|
||||||
|
|
||||||
for (var user of data.members) {
|
for (var user of data.members) {
|
||||||
|
server.memberMap[user.user.id] = {
|
||||||
|
roles: user.roles.map(pid => server.roles.get("id", pid)),
|
||||||
|
mute: user.mute,
|
||||||
|
self_mute: false,
|
||||||
|
deaf: user.deaf,
|
||||||
|
self_deaf: false,
|
||||||
|
joinedAt: Date.parse(user.joined_at)
|
||||||
|
};
|
||||||
server.members.add(self.users.add(new User(user.user, client)));
|
server.members.add(self.users.add(new User(user.user, client)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ export default class Server extends Equality {
|
|||||||
this.icon = data.icon;
|
this.icon = data.icon;
|
||||||
this.afkTimeout = data.afkTimeout;
|
this.afkTimeout = data.afkTimeout;
|
||||||
this.afkChannelID = data.afk_channel_id || data.afkChannelID;
|
this.afkChannelID = data.afk_channel_id || data.afkChannelID;
|
||||||
this.memberMap = {};
|
this.memberMap = data.memberMap || {};
|
||||||
this.memberCount = data.member_count || data.memberCount;
|
this.memberCount = data.member_count || data.memberCount;
|
||||||
this.large = data.large || this.memberCount > 250;
|
this.large = data.large || this.memberCount > 250;
|
||||||
|
|
||||||
@@ -105,7 +105,7 @@ export default class Server extends Equality {
|
|||||||
detailsOf(user) {
|
detailsOf(user) {
|
||||||
user = this.client.internal.resolver.resolveUser(user);
|
user = this.client.internal.resolver.resolveUser(user);
|
||||||
if (user) {
|
if (user) {
|
||||||
return this.memberMap[user.id];
|
return this.memberMap[user.id] || {};
|
||||||
} else {
|
} else {
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
@@ -174,14 +174,20 @@ export default class Server extends Equality {
|
|||||||
|
|
||||||
eventVoiceJoin(user, channel) {
|
eventVoiceJoin(user, channel) {
|
||||||
// removes from other speaking channels first
|
// removes from other speaking channels first
|
||||||
this.eventVoiceLeave(user);
|
var oldChannel = this.eventVoiceLeave(user);
|
||||||
|
if (oldChannel.id) {
|
||||||
|
this.client.emit("voiceLeave", oldChannel, user);
|
||||||
|
}
|
||||||
|
|
||||||
channel.members.add(user);
|
channel.members.add(user);
|
||||||
user.voiceChannel = channel;
|
user.voiceChannel = channel;
|
||||||
|
this.client.emit("voiceJoin", channel, user);
|
||||||
}
|
}
|
||||||
|
|
||||||
eventVoiceStateUpdate(channel, user, data) {
|
eventVoiceStateUpdate(channel, user, data) {
|
||||||
// removes from other speaking channels first
|
if (!user.voiceChannel || user.voiceChannel.id !== channel.id) {
|
||||||
|
return this.eventVoiceJoin(user, channel);
|
||||||
|
}
|
||||||
if (!this.memberMap[user.id]) {
|
if (!this.memberMap[user.id]) {
|
||||||
this.memberMap[user.id] = {};
|
this.memberMap[user.id] = {};
|
||||||
}
|
}
|
||||||
@@ -195,13 +201,11 @@ export default class Server extends Equality {
|
|||||||
this.memberMap[user.id].self_mute = data.self_mute;
|
this.memberMap[user.id].self_mute = data.self_mute;
|
||||||
this.memberMap[user.id].deaf = data.deaf;
|
this.memberMap[user.id].deaf = data.deaf;
|
||||||
this.memberMap[user.id].self_deaf = data.self_deaf;
|
this.memberMap[user.id].self_deaf = data.self_deaf;
|
||||||
if ((oldState.mute != data.mute || oldState.self_mute != data.self_mute
|
if (oldState.mute !== undefined && (oldState.mute != data.mute || oldState.self_mute != data.self_mute
|
||||||
|| oldState.deaf != data.deaf || oldState.self_deaf != data.self_deaf)
|
|| oldState.deaf != data.deaf || oldState.self_deaf != data.self_deaf)) {
|
||||||
&& oldState.mute !== undefined) {
|
|
||||||
this.client.emit("voiceStateUpdate", channel, user, oldState, this.memberMap[user.id]);
|
this.client.emit("voiceStateUpdate", channel, user, oldState, this.memberMap[user.id]);
|
||||||
} else {
|
} else {
|
||||||
this.eventVoiceJoin(user, channel);
|
this.eventVoiceJoin(user, channel);
|
||||||
this.client.emit("voiceJoin", channel, user);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user