mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
Userbots on gateway v5
This commit is contained in:
@@ -240,6 +240,9 @@ var InternalClient = (function () {
|
||||
this.unavailableServers = new _UtilCache2["default"]();
|
||||
this.private_channels = new _UtilCache2["default"]();
|
||||
this.autoReconnectInterval = 1000;
|
||||
this.unsyncedGuilds = 0;
|
||||
this.guildSyncQueue = [];
|
||||
this.guildSyncQueueLength = 1;
|
||||
|
||||
this.intervals = {
|
||||
typing: [],
|
||||
@@ -489,8 +492,29 @@ var InternalClient = (function () {
|
||||
});
|
||||
};
|
||||
|
||||
InternalClient.prototype.syncGuild = function syncGuild(guildID) {
|
||||
if (this.guildSyncQueueLength + 3 + guildID.length > 4081) {
|
||||
// 4096 - "{\"op\":12,\"d\":[]}".length + 1 for lazy comma offset
|
||||
this.sendWS({ op: 12, d: this.guildSyncQueue });
|
||||
this.guildSyncQueue = [guildID];
|
||||
this.guildSyncQueueLength = 1 + guildID.length + 3;
|
||||
} else {
|
||||
this.guildSyncQueue.push(guildID);
|
||||
this.guildSyncQueueLength += guildID.length + 3;
|
||||
}
|
||||
};
|
||||
|
||||
InternalClient.prototype.checkReady = function checkReady() {
|
||||
if (!this.readyTime) {
|
||||
if (this.guildSyncQueue.length > 0) {
|
||||
this.sendWS({ op: 12, d: this.guildSyncQueue });
|
||||
this.guildSyncQueue = [];
|
||||
this.guildSyncQueueLength = 1;
|
||||
return;
|
||||
}
|
||||
if (this.unsyncedGuilds > 0) {
|
||||
return;
|
||||
}
|
||||
if (this.forceFetchQueue.length > 0) {
|
||||
this.requestGuildMembers(this.forceFetchQueue);
|
||||
this.forceFetchQueue = [];
|
||||
@@ -1932,6 +1956,10 @@ var InternalClient = (function () {
|
||||
data.guilds.forEach(function (server) {
|
||||
if (!server.unavailable) {
|
||||
server = _this37.servers.add(new _StructuresServer2["default"](server, client));
|
||||
if (client.options.bot === false) {
|
||||
_this37.unsyncedGuilds++;
|
||||
_this37.syncGuild(server.id);
|
||||
}
|
||||
if (_this37.client.options.forceFetchUsers && server.members && server.members.length < server.memberCount) {
|
||||
_this37.getGuildMembers(server.id, Math.ceil(server.memberCount / 1000));
|
||||
}
|
||||
@@ -2079,6 +2107,10 @@ var InternalClient = (function () {
|
||||
if (!server) {
|
||||
if (!data.unavailable) {
|
||||
server = this.servers.add(new _StructuresServer2["default"](data, client));
|
||||
if (client.options.bot === false) {
|
||||
this.unsyncedGuilds++;
|
||||
this.syncGuild(server.id);
|
||||
}
|
||||
if (client.readyTime) {
|
||||
client.emit("serverCreated", server);
|
||||
}
|
||||
@@ -2556,7 +2588,7 @@ var InternalClient = (function () {
|
||||
if (this.forceFetchCount.hasOwnProperty(server.id)) {
|
||||
if (this.forceFetchCount[server.id] <= 1) {
|
||||
delete this.forceFetchCount[server.id];
|
||||
this.checkReady();
|
||||
this.restartServerCreateTimeout();
|
||||
} else {
|
||||
this.forceFetchCount[server.id]--;
|
||||
}
|
||||
@@ -2647,6 +2679,78 @@ var InternalClient = (function () {
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case _Constants.PacketType.SERVER_SYNC:
|
||||
// (╯°□°)╯︵ ┻━┻ thx Discord devs
|
||||
var guild = this.servers.get(data.id);
|
||||
data.members.forEach(function (dataUser) {
|
||||
guild.memberMap[dataUser.user.id] = {
|
||||
roles: dataUser.roles,
|
||||
mute: dataUser.mute,
|
||||
selfMute: dataUser.self_mute,
|
||||
deaf: dataUser.deaf,
|
||||
selfDeaf: dataUser.self_deaf,
|
||||
joinedAt: Date.parse(dataUser.joined_at),
|
||||
nick: dataUser.nick || null
|
||||
};
|
||||
guild.members.add(client.internal.users.add(new _StructuresUser2["default"](dataUser.user, client)));
|
||||
});
|
||||
for (var _iterator11 = data.presences, _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) {
|
||||
var _ref11;
|
||||
|
||||
if (_isArray11) {
|
||||
if (_i11 >= _iterator11.length) break;
|
||||
_ref11 = _iterator11[_i11++];
|
||||
} else {
|
||||
_i11 = _iterator11.next();
|
||||
if (_i11.done) break;
|
||||
_ref11 = _i11.value;
|
||||
}
|
||||
|
||||
var presence = _ref11;
|
||||
|
||||
var user = client.internal.users.get("id", presence.user.id);
|
||||
if (user) {
|
||||
user.status = presence.status;
|
||||
user.game = presence.game;
|
||||
}
|
||||
}
|
||||
if (guild.pendingVoiceStates && guild.pendingVoiceStates.length > 0) {
|
||||
for (var _iterator12 = guild.pendingVoiceStates, _isArray12 = Array.isArray(_iterator12), _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : _iterator12[Symbol.iterator]();;) {
|
||||
var _ref12;
|
||||
|
||||
if (_isArray12) {
|
||||
if (_i12 >= _iterator12.length) break;
|
||||
_ref12 = _iterator12[_i12++];
|
||||
} else {
|
||||
_i12 = _iterator12.next();
|
||||
if (_i12.done) break;
|
||||
_ref12 = _i12.value;
|
||||
}
|
||||
|
||||
var voiceState = _ref12;
|
||||
|
||||
var _user = guild.members.get("id", voiceState.user_id);
|
||||
if (_user) {
|
||||
guild.memberMap[_user.id] = guild.memberMap[_user.id] || {};
|
||||
guild.memberMap[_user.id].mute = voiceState.mute || guild.memberMap[_user.id].mute;
|
||||
guild.memberMap[_user.id].selfMute = voiceState.self_mute === undefined ? guild.memberMap[_user.id].selfMute : voiceState.self_mute;
|
||||
guild.memberMap[_user.id].deaf = voiceState.deaf || guild.memberMap[_user.id].deaf;
|
||||
guild.memberMap[_user.id].selfDeaf = voiceState.self_deaf === undefined ? guild.memberMap[_user.id].selfDeaf : voiceState.self_deaf;
|
||||
var _channel2 = guild.channels.get("id", voiceState.channel_id);
|
||||
if (_channel2) {
|
||||
guild.eventVoiceJoin(_user, _channel2);
|
||||
} else {
|
||||
guild.client.emit("warn", "channel doesn't exist even though GUILD_SYNC expects them to");
|
||||
}
|
||||
} else {
|
||||
guild.client.emit("warn", "user doesn't exist even though GUILD_SYNC expects them to");
|
||||
}
|
||||
}
|
||||
}
|
||||
guild.pendingVoiceStates = null;
|
||||
this.unsyncedGuilds--;
|
||||
this.restartServerCreateTimeout();
|
||||
break;
|
||||
default:
|
||||
client.emit("unknown", packet);
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user