mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-20 05:23:31 +01:00
Attempting gateway v4
This commit is contained in:
@@ -86,6 +86,7 @@ var _UtilTokenCacher = require("../Util/TokenCacher");
|
|||||||
|
|
||||||
var _UtilTokenCacher2 = _interopRequireDefault(_UtilTokenCacher);
|
var _UtilTokenCacher2 = _interopRequireDefault(_UtilTokenCacher);
|
||||||
|
|
||||||
|
var GATEWAY_VERSION = 4;
|
||||||
var zlib;
|
var zlib;
|
||||||
var libVersion = require('../../package.json').version;
|
var libVersion = require('../../package.json').version;
|
||||||
|
|
||||||
@@ -1795,45 +1796,29 @@ var InternalClient = (function () {
|
|||||||
InternalClient.prototype.createWS = function createWS(url) {
|
InternalClient.prototype.createWS = function createWS(url) {
|
||||||
var _this36 = this;
|
var _this36 = this;
|
||||||
|
|
||||||
var self = this;
|
|
||||||
var client = self.client;
|
|
||||||
|
|
||||||
if (this.websocket) {
|
if (this.websocket) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (!url.endsWith("/")) {
|
||||||
|
url += "/";
|
||||||
|
}
|
||||||
|
url += "?encoding=json&v=" + GATEWAY_VERSION;
|
||||||
|
|
||||||
this.websocket = new _ws2["default"](url);
|
this.websocket = new _ws2["default"](url);
|
||||||
|
|
||||||
this.websocket.onopen = function () {
|
this.websocket.onopen = function () {
|
||||||
var data = {
|
if (_this36.sessionID) {
|
||||||
op: 2,
|
_this36.resume();
|
||||||
d: {
|
} else {
|
||||||
token: self.token,
|
_this36.identify();
|
||||||
v: 3,
|
|
||||||
compress: self.client.options.compress,
|
|
||||||
large_threshold: self.client.options.largeThreshold,
|
|
||||||
properties: {
|
|
||||||
"$os": process.platform,
|
|
||||||
"$browser": "discord.js",
|
|
||||||
"$device": "discord.js",
|
|
||||||
"$referrer": "",
|
|
||||||
"$referring_domain": ""
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
if (self.client.options.shard) {
|
|
||||||
data.d.shard = self.client.options.shard;
|
|
||||||
}
|
|
||||||
|
|
||||||
self.sendWS(data);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
this.websocket.onclose = function (event) {
|
this.websocket.onclose = function (event) {
|
||||||
self.websocket = null;
|
_this36.websocket = null;
|
||||||
self.state = _ConnectionState2["default"].DISCONNECTED;
|
_this36.state = _ConnectionState2["default"].DISCONNECTED;
|
||||||
if (event && event.code) {
|
if (event && event.code) {
|
||||||
client.emit("warn", "WS close: " + event.code);
|
_this36.client.emit("warn", "WS close: " + event.code);
|
||||||
var err;
|
var err;
|
||||||
if (event.code === 4001) {
|
if (event.code === 4001) {
|
||||||
err = new Error("Gateway received invalid OP code");
|
err = new Error("Gateway received invalid OP code");
|
||||||
@@ -1848,7 +1833,7 @@ var InternalClient = (function () {
|
|||||||
}if (event.code === 4006 || event.code === 4009) {
|
}if (event.code === 4006 || event.code === 4009) {
|
||||||
err = new Error("Invalid session");
|
err = new Error("Invalid session");
|
||||||
} else if (event.code === 4007) {
|
} else if (event.code === 4007) {
|
||||||
_this36.seq = 0;
|
_this36.sequence = 0;
|
||||||
err = new Error("Invalid sequence number");
|
err = new Error("Invalid sequence number");
|
||||||
} else if (event.code === 4008) {
|
} else if (event.code === 4008) {
|
||||||
err = new Error("Gateway connection was ratelimited");
|
err = new Error("Gateway connection was ratelimited");
|
||||||
@@ -1856,17 +1841,17 @@ var InternalClient = (function () {
|
|||||||
err = new Error("Invalid shard key");
|
err = new Error("Invalid shard key");
|
||||||
}
|
}
|
||||||
if (err) {
|
if (err) {
|
||||||
client.emit("error", err);
|
_this36.client.emit("error", err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
self.disconnected(_this36.client.options.autoReconnect);
|
_this36.disconnected(_this36.client.options.autoReconnect);
|
||||||
};
|
};
|
||||||
|
|
||||||
this.websocket.onerror = function (e) {
|
this.websocket.onerror = function (e) {
|
||||||
client.emit("error", e);
|
_this36.client.emit("error", e);
|
||||||
self.websocket = null;
|
_this36.websocket = null;
|
||||||
self.state = _ConnectionState2["default"].DISCONNECTED;
|
_this36.state = _ConnectionState2["default"].DISCONNECTED;
|
||||||
self.disconnected(_this36.client.options.autoReconnect);
|
_this36.disconnected(_this36.client.options.autoReconnect);
|
||||||
};
|
};
|
||||||
|
|
||||||
this.websocket.onmessage = function (e) {
|
this.websocket.onmessage = function (e) {
|
||||||
@@ -1875,108 +1860,183 @@ var InternalClient = (function () {
|
|||||||
e.data = zlib.inflateSync(e.data).toString();
|
e.data = zlib.inflateSync(e.data).toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
var packet, data;
|
var packet;
|
||||||
try {
|
try {
|
||||||
packet = JSON.parse(e.data);
|
packet = JSON.parse(e.data);
|
||||||
data = packet.d;
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
client.emit("error", e);
|
_this36.client.emit("error", e);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
client.emit("raw", packet);
|
_this36.client.emit("raw", packet);
|
||||||
switch (packet.t) {
|
|
||||||
|
|
||||||
|
if (packet.s) {
|
||||||
|
_this36.sequence = packet.s;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (packet.op) {
|
||||||
|
case 0:
|
||||||
|
_this36.processPacket(packet);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
_this36.heartbeat();
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
_this36.disconnected(true);
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
_this36.sessionID = null;
|
||||||
|
_this36.sequence = 0;
|
||||||
|
_this36.identify();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
InternalClient.prototype.resume = function resume() {
|
||||||
|
var data = {
|
||||||
|
op: 6,
|
||||||
|
d: {
|
||||||
|
token: this.token,
|
||||||
|
session_id: this.sessionID,
|
||||||
|
seq: this.sequence
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.sendWS(data);
|
||||||
|
};
|
||||||
|
|
||||||
|
InternalClient.prototype.identify = function identify() {
|
||||||
|
var data = {
|
||||||
|
op: 2,
|
||||||
|
d: {
|
||||||
|
token: this.token,
|
||||||
|
v: GATEWAY_VERSION,
|
||||||
|
compress: this.client.options.compress,
|
||||||
|
large_threshold: this.client.options.largeThreshold,
|
||||||
|
properties: {
|
||||||
|
"$os": process.platform,
|
||||||
|
"$browser": "discord.js",
|
||||||
|
"$device": "discord.js",
|
||||||
|
"$referrer": "",
|
||||||
|
"$referring_domain": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (this.client.options.shard) {
|
||||||
|
data.d.shard = this.client.options.shard;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.sendWS(data);
|
||||||
|
};
|
||||||
|
|
||||||
|
InternalClient.prototype.heartbeat = function heartbeat() {
|
||||||
|
this.sendWS({ op: 1, d: Date.now() });
|
||||||
|
};
|
||||||
|
|
||||||
|
InternalClient.prototype.processPacket = function processPacket(packet) {
|
||||||
|
var _this37 = this;
|
||||||
|
|
||||||
|
var client = this.client;
|
||||||
|
var data = packet.d;
|
||||||
|
switch (packet.t) {
|
||||||
|
case _Constants.PacketType.RESUME:
|
||||||
case _Constants.PacketType.READY:
|
case _Constants.PacketType.READY:
|
||||||
var startTime = Date.now();
|
this.intervals.kai = setInterval(function () {
|
||||||
self.intervals.kai = setInterval(function () {
|
return _this37.heartbeat();
|
||||||
return self.sendWS({ op: 1, d: Date.now() });
|
|
||||||
}, data.heartbeat_interval);
|
}, data.heartbeat_interval);
|
||||||
|
|
||||||
self.user = self.users.add(new _StructuresUser2["default"](data.user, client));
|
if (packet.t === _Constants.PacketType.RESUME) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
_this36.forceFetchCount = {};
|
this.sessionID = data.session_id;
|
||||||
_this36.forceFetchQueue = [];
|
var startTime = Date.now();
|
||||||
_this36.forceFetchLength = 1;
|
|
||||||
_this36.autoReconnectInterval = 1000;
|
this.user = this.users.add(new _StructuresUser2["default"](data.user, client));
|
||||||
_this36.sessionID = data.session_id;
|
|
||||||
|
this.forceFetchCount = {};
|
||||||
|
this.forceFetchQueue = [];
|
||||||
|
this.forceFetchLength = 1;
|
||||||
|
this.autoReconnectInterval = 1000;
|
||||||
|
|
||||||
data.guilds.forEach(function (server) {
|
data.guilds.forEach(function (server) {
|
||||||
if (!server.unavailable) {
|
if (!server.unavailable) {
|
||||||
server = self.servers.add(new _StructuresServer2["default"](server, client));
|
server = _this37.servers.add(new _StructuresServer2["default"](server, client));
|
||||||
if (self.client.options.forceFetchUsers && server.members && server.members.length < server.memberCount) {
|
if (_this37.client.options.forceFetchUsers && server.members && server.members.length < server.memberCount) {
|
||||||
self.getGuildMembers(server.id, Math.ceil(server.memberCount / 1000));
|
_this37.getGuildMembers(server.id, Math.ceil(server.memberCount / 1000));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
client.emit("debug", "server " + server.id + " was unavailable, could not create (ready)");
|
client.emit("debug", "server " + server.id + " was unavailable, could not create (ready)");
|
||||||
self.unavailableServers.add(server);
|
_this37.unavailableServers.add(server);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
data.private_channels.forEach(function (pm) {
|
data.private_channels.forEach(function (pm) {
|
||||||
self.private_channels.add(new _StructuresPMChannel2["default"](pm, client));
|
_this37.private_channels.add(new _StructuresPMChannel2["default"](pm, client));
|
||||||
});
|
});
|
||||||
if (!data.user.bot) {
|
if (!data.user.bot) {
|
||||||
// bots dont have friends
|
// bots dont have friends
|
||||||
data.relationships.forEach(function (friend) {
|
data.relationships.forEach(function (friend) {
|
||||||
if (friend.type === 1) {
|
if (friend.type === 1) {
|
||||||
// is a friend
|
// is a friend
|
||||||
self.friends.add(new _StructuresUser2["default"](friend.user, client));
|
_this37.friends.add(new _StructuresUser2["default"](friend.user, client));
|
||||||
} else if (friend.type === 2) {
|
} else if (friend.type === 2) {
|
||||||
// incoming friend requests
|
// incoming friend requests
|
||||||
self.blocked_users.add(new _StructuresUser2["default"](friend.user, client));
|
_this37.blocked_users.add(new _StructuresUser2["default"](friend.user, client));
|
||||||
} else if (friend.type === 3) {
|
} else if (friend.type === 3) {
|
||||||
// incoming friend requests
|
// incoming friend requests
|
||||||
self.incoming_friend_requests.add(new _StructuresUser2["default"](friend.user, client));
|
_this37.incoming_friend_requests.add(new _StructuresUser2["default"](friend.user, client));
|
||||||
} else if (friend.type === 4) {
|
} else if (friend.type === 4) {
|
||||||
// outgoing friend requests
|
// outgoing friend requests
|
||||||
self.outgoing_friend_requests.add(new _StructuresUser2["default"](friend.user, client));
|
_this37.outgoing_friend_requests.add(new _StructuresUser2["default"](friend.user, client));
|
||||||
} else {
|
} else {
|
||||||
client.emit("warn", "unknown friend type " + friend.type);
|
client.emit("warn", "unknown friend type " + friend.type);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
self.friends = null;
|
this.friends = null;
|
||||||
self.blocked_users = null;
|
this.blocked_users = null;
|
||||||
self.incoming_friend_requests = null;
|
this.incoming_friend_requests = null;
|
||||||
self.outgoing_friend_requests = null;
|
this.outgoing_friend_requests = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// add notes to users
|
// add notes to users
|
||||||
if (data.notes) {
|
if (data.notes) {
|
||||||
for (note in data.notes) {
|
for (note in data.notes) {
|
||||||
var user = self.users.get("id", note);
|
var user = this.users.get("id", note);
|
||||||
if (user) {
|
if (user) {
|
||||||
var newUser = user;
|
var newUser = user;
|
||||||
newUser.note = data.notes[note];
|
newUser.note = data.notes[note];
|
||||||
|
|
||||||
self.users.update(user, newUser);
|
this.users.update(user, newUser);
|
||||||
} else {
|
} else {
|
||||||
client.emit("warn", "note in ready packet but user not cached");
|
client.emit("warn", "note in ready packet but user not cached");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.state = _ConnectionState2["default"].READY;
|
this.state = _ConnectionState2["default"].READY;
|
||||||
|
|
||||||
client.emit("debug", "ready packet took " + (Date.now() - startTime) + "ms to process");
|
client.emit("debug", "ready packet took " + (Date.now() - startTime) + "ms to process");
|
||||||
client.emit("debug", "ready with " + self.servers.length + " servers, " + self.unavailableServers.length + " unavailable servers, " + self.channels.length + " channels and " + self.users.length + " users cached.");
|
client.emit("debug", "ready with " + this.servers.length + " servers, " + this.unavailableServers.length + " unavailable servers, " + this.channels.length + " channels and " + this.users.length + " users cached.");
|
||||||
|
|
||||||
self.restartServerCreateTimeout();
|
this.restartServerCreateTimeout();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case _Constants.PacketType.MESSAGE_CREATE:
|
case _Constants.PacketType.MESSAGE_CREATE:
|
||||||
// format: https://discordapi.readthedocs.org/en/latest/reference/channels/messages.html#message-format
|
// format: https://discordapi.readthedocs.org/en/latest/reference/channels/messages.html#message-format
|
||||||
var channel = self.channels.get("id", data.channel_id) || self.private_channels.get("id", data.channel_id);
|
var channel = this.channels.get("id", data.channel_id) || this.private_channels.get("id", data.channel_id);
|
||||||
if (channel) {
|
if (channel) {
|
||||||
var msg = channel.messages.add(new _StructuresMessage2["default"](data, channel, client));
|
var msg = channel.messages.add(new _StructuresMessage2["default"](data, channel, client));
|
||||||
channel.lastMessageID = msg.id;
|
channel.lastMessageID = msg.id;
|
||||||
|
|
||||||
if (self.messageAwaits[channel.id + msg.author.id]) {
|
if (this.messageAwaits[channel.id + msg.author.id]) {
|
||||||
self.messageAwaits[channel.id + msg.author.id].map(function (fn) {
|
this.messageAwaits[channel.id + msg.author.id].map(function (fn) {
|
||||||
return fn(msg);
|
return fn(msg);
|
||||||
});
|
});
|
||||||
self.messageAwaits[channel.id + msg.author.id] = null;
|
this.messageAwaits[channel.id + msg.author.id] = null;
|
||||||
client.emit("message", msg, true); //2nd param is isAwaitedMessage
|
client.emit("message", msg, true); //2nd param is isAwaitedMessage
|
||||||
} else {
|
} else {
|
||||||
client.emit("message", msg);
|
client.emit("message", msg);
|
||||||
@@ -1986,7 +2046,7 @@ var InternalClient = (function () {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _Constants.PacketType.MESSAGE_DELETE:
|
case _Constants.PacketType.MESSAGE_DELETE:
|
||||||
var channel = self.channels.get("id", data.channel_id) || self.private_channels.get("id", data.channel_id);
|
var channel = this.channels.get("id", data.channel_id) || this.private_channels.get("id", data.channel_id);
|
||||||
if (channel) {
|
if (channel) {
|
||||||
// potentially blank
|
// potentially blank
|
||||||
var msg = channel.messages.get("id", data.id);
|
var msg = channel.messages.get("id", data.id);
|
||||||
@@ -2002,7 +2062,7 @@ var InternalClient = (function () {
|
|||||||
break;
|
break;
|
||||||
case _Constants.PacketType.MESSAGE_UPDATE:
|
case _Constants.PacketType.MESSAGE_UPDATE:
|
||||||
// format https://discordapi.readthedocs.org/en/latest/reference/channels/messages.html#message-format
|
// format https://discordapi.readthedocs.org/en/latest/reference/channels/messages.html#message-format
|
||||||
var channel = self.channels.get("id", data.channel_id) || self.private_channels.get("id", data.channel_id);
|
var channel = this.channels.get("id", data.channel_id) || this.private_channels.get("id", data.channel_id);
|
||||||
if (channel) {
|
if (channel) {
|
||||||
// potentially blank
|
// potentially blank
|
||||||
var msg = channel.messages.get("id", data.id);
|
var msg = channel.messages.get("id", data.id);
|
||||||
@@ -2032,28 +2092,28 @@ var InternalClient = (function () {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _Constants.PacketType.SERVER_CREATE:
|
case _Constants.PacketType.SERVER_CREATE:
|
||||||
var server = self.servers.get("id", data.id);
|
var server = this.servers.get("id", data.id);
|
||||||
if (!server) {
|
if (!server) {
|
||||||
if (!data.unavailable) {
|
if (!data.unavailable) {
|
||||||
server = self.servers.add(new _StructuresServer2["default"](data, client));
|
server = this.servers.add(new _StructuresServer2["default"](data, client));
|
||||||
if (client.readyTime) {
|
if (client.readyTime) {
|
||||||
client.emit("serverCreated", server);
|
client.emit("serverCreated", server);
|
||||||
}
|
}
|
||||||
if (self.client.options.forceFetchUsers && server.large && server.members.length < server.memberCount) {
|
if (this.client.options.forceFetchUsers && server.large && server.members.length < server.memberCount) {
|
||||||
self.getGuildMembers(server.id, Math.ceil(server.memberCount / 1000));
|
this.getGuildMembers(server.id, Math.ceil(server.memberCount / 1000));
|
||||||
}
|
}
|
||||||
var unavailable = self.unavailableServers.get("id", server.id);
|
var unavailable = this.unavailableServers.get("id", server.id);
|
||||||
if (unavailable) {
|
if (unavailable) {
|
||||||
self.unavailableServers.remove(unavailable);
|
this.unavailableServers.remove(unavailable);
|
||||||
}
|
}
|
||||||
self.restartServerCreateTimeout();
|
this.restartServerCreateTimeout();
|
||||||
} else {
|
} else {
|
||||||
client.emit("debug", "server was unavailable, could not create");
|
client.emit("debug", "server was unavailable, could not create");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _Constants.PacketType.SERVER_DELETE:
|
case _Constants.PacketType.SERVER_DELETE:
|
||||||
var server = self.servers.get("id", data.id);
|
var server = this.servers.get("id", data.id);
|
||||||
if (server) {
|
if (server) {
|
||||||
if (!data.unavailable) {
|
if (!data.unavailable) {
|
||||||
client.emit("serverDeleted", server);
|
client.emit("serverDeleted", server);
|
||||||
@@ -2072,10 +2132,10 @@ var InternalClient = (function () {
|
|||||||
|
|
||||||
var channel = _ref7;
|
var channel = _ref7;
|
||||||
|
|
||||||
self.channels.remove(channel);
|
this.channels.remove(channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.servers.remove(server);
|
this.servers.remove(server);
|
||||||
|
|
||||||
for (var _iterator8 = server.members, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {
|
for (var _iterator8 = server.members, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {
|
||||||
var _ref8;
|
var _ref8;
|
||||||
@@ -2092,7 +2152,7 @@ var InternalClient = (function () {
|
|||||||
var user = _ref8;
|
var user = _ref8;
|
||||||
|
|
||||||
var found = false;
|
var found = false;
|
||||||
for (var _iterator9 = self.servers, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {
|
for (var _iterator9 = this.servers, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {
|
||||||
var _ref9;
|
var _ref9;
|
||||||
|
|
||||||
if (_isArray9) {
|
if (_isArray9) {
|
||||||
@@ -2112,19 +2172,19 @@ var InternalClient = (function () {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!found) {
|
if (!found) {
|
||||||
self.users.remove(user);
|
this.users.remove(user);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
client.emit("debug", "server was unavailable, could not update");
|
client.emit("debug", "server was unavailable, could not update");
|
||||||
}
|
}
|
||||||
self.buckets["bot:msg:guild:" + packet.d.id] = self.buckets["dmsg:" + packet.d.id] = self.buckets["bdmsg:" + packet.d.id] = self.buckets["guild_member:" + packet.d.id] = self.buckets["guild_member_nick:" + packet.d.id] = undefined;
|
this.buckets["bot:msg:guild:" + packet.d.id] = this.buckets["dmsg:" + packet.d.id] = this.buckets["bdmsg:" + packet.d.id] = this.buckets["guild_member:" + packet.d.id] = this.buckets["guild_member_nick:" + packet.d.id] = undefined;
|
||||||
} else {
|
} else {
|
||||||
client.emit("warn", "server was deleted but it was not in the cache");
|
client.emit("warn", "server was deleted but it was not in the cache");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _Constants.PacketType.SERVER_UPDATE:
|
case _Constants.PacketType.SERVER_UPDATE:
|
||||||
var server = self.servers.get("id", data.id);
|
var server = this.servers.get("id", data.id);
|
||||||
if (server) {
|
if (server) {
|
||||||
// server exists
|
// server exists
|
||||||
data.members = data.members || [];
|
data.members = data.members || [];
|
||||||
@@ -2138,31 +2198,31 @@ var InternalClient = (function () {
|
|||||||
client.emit("debug", "received server update but server already updated");
|
client.emit("debug", "received server update but server already updated");
|
||||||
} else {
|
} else {
|
||||||
client.emit("serverUpdated", new _StructuresServer2["default"](server, client), newserver);
|
client.emit("serverUpdated", new _StructuresServer2["default"](server, client), newserver);
|
||||||
self.servers.update(server, newserver);
|
this.servers.update(server, newserver);
|
||||||
}
|
}
|
||||||
} else if (!server) {
|
} else if (!server) {
|
||||||
client.emit("warn", "server was updated but it was not in the cache");
|
client.emit("warn", "server was updated but it was not in the cache");
|
||||||
self.servers.add(new _StructuresServer2["default"](data, client));
|
this.servers.add(new _StructuresServer2["default"](data, client));
|
||||||
client.emit("serverCreated", server);
|
client.emit("serverCreated", server);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _Constants.PacketType.CHANNEL_CREATE:
|
case _Constants.PacketType.CHANNEL_CREATE:
|
||||||
|
|
||||||
var channel = self.channels.get("id", data.id);
|
var channel = this.channels.get("id", data.id);
|
||||||
|
|
||||||
if (!channel) {
|
if (!channel) {
|
||||||
|
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = this.servers.get("id", data.guild_id);
|
||||||
if (server) {
|
if (server) {
|
||||||
var chan = null;
|
var chan = null;
|
||||||
if (data.type === "text") {
|
if (data.type === "text") {
|
||||||
chan = self.channels.add(new _StructuresTextChannel2["default"](data, client, server));
|
chan = this.channels.add(new _StructuresTextChannel2["default"](data, client, server));
|
||||||
} else {
|
} else {
|
||||||
chan = self.channels.add(new _StructuresVoiceChannel2["default"](data, client, server));
|
chan = this.channels.add(new _StructuresVoiceChannel2["default"](data, client, server));
|
||||||
}
|
}
|
||||||
client.emit("channelCreated", server.channels.add(chan));
|
client.emit("channelCreated", server.channels.add(chan));
|
||||||
} else if (data.is_private) {
|
} else if (data.is_private) {
|
||||||
client.emit("channelCreated", self.private_channels.add(new _StructuresPMChannel2["default"](data, client)));
|
client.emit("channelCreated", this.private_channels.add(new _StructuresPMChannel2["default"](data, client)));
|
||||||
} else {
|
} else {
|
||||||
client.emit("warn", "channel created but server does not exist");
|
client.emit("warn", "channel created but server does not exist");
|
||||||
}
|
}
|
||||||
@@ -2172,15 +2232,15 @@ var InternalClient = (function () {
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case _Constants.PacketType.CHANNEL_DELETE:
|
case _Constants.PacketType.CHANNEL_DELETE:
|
||||||
var channel = self.channels.get("id", data.id) || self.private_channels.get("id", data.id);
|
var channel = this.channels.get("id", data.id) || this.private_channels.get("id", data.id);
|
||||||
if (channel) {
|
if (channel) {
|
||||||
|
|
||||||
if (channel.server) {
|
if (channel.server) {
|
||||||
// accounts for PMs
|
// accounts for PMs
|
||||||
channel.server.channels.remove(channel);
|
channel.server.channels.remove(channel);
|
||||||
self.channels.remove(channel);
|
this.channels.remove(channel);
|
||||||
} else {
|
} else {
|
||||||
self.private_channels.remove(channel);
|
this.private_channels.remove(channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
client.emit("channelDeleted", channel);
|
client.emit("channelDeleted", channel);
|
||||||
@@ -2189,12 +2249,12 @@ var InternalClient = (function () {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _Constants.PacketType.CHANNEL_UPDATE:
|
case _Constants.PacketType.CHANNEL_UPDATE:
|
||||||
var channel = self.channels.get("id", data.id) || self.private_channels.get("id", data.id);
|
var channel = this.channels.get("id", data.id) || this.private_channels.get("id", data.id);
|
||||||
if (channel) {
|
if (channel) {
|
||||||
|
|
||||||
if (channel instanceof _StructuresPMChannel2["default"]) {
|
if (channel instanceof _StructuresPMChannel2["default"]) {
|
||||||
//PM CHANNEL
|
//PM CHANNEL
|
||||||
client.emit("channelUpdated", new _StructuresPMChannel2["default"](channel, client), self.private_channels.update(channel, new _StructuresPMChannel2["default"](data, client)));
|
client.emit("channelUpdated", new _StructuresPMChannel2["default"](channel, client), this.private_channels.update(channel, new _StructuresPMChannel2["default"](data, client)));
|
||||||
} else {
|
} else {
|
||||||
if (channel.server) {
|
if (channel.server) {
|
||||||
if (channel.type === "text") {
|
if (channel.type === "text") {
|
||||||
@@ -2203,14 +2263,14 @@ var InternalClient = (function () {
|
|||||||
chan.messages = channel.messages;
|
chan.messages = channel.messages;
|
||||||
client.emit("channelUpdated", channel, chan);
|
client.emit("channelUpdated", channel, chan);
|
||||||
channel.server.channels.update(channel, chan);
|
channel.server.channels.update(channel, chan);
|
||||||
self.channels.update(channel, chan);
|
this.channels.update(channel, chan);
|
||||||
} else {
|
} else {
|
||||||
//VOICE CHANNEL
|
//VOICE CHANNEL
|
||||||
data.members = channel.members;
|
data.members = channel.members;
|
||||||
var chan = new _StructuresVoiceChannel2["default"](data, client, channel.server);
|
var chan = new _StructuresVoiceChannel2["default"](data, client, channel.server);
|
||||||
client.emit("channelUpdated", channel, chan);
|
client.emit("channelUpdated", channel, chan);
|
||||||
channel.server.channels.update(channel, chan);
|
channel.server.channels.update(channel, chan);
|
||||||
self.channels.update(channel, chan);
|
this.channels.update(channel, chan);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
client.emit("warn", "channel updated but server non-existant");
|
client.emit("warn", "channel updated but server non-existant");
|
||||||
@@ -2221,7 +2281,7 @@ var InternalClient = (function () {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _Constants.PacketType.SERVER_ROLE_CREATE:
|
case _Constants.PacketType.SERVER_ROLE_CREATE:
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = this.servers.get("id", data.guild_id);
|
||||||
if (server) {
|
if (server) {
|
||||||
client.emit("serverRoleCreated", server.roles.add(new _StructuresRole2["default"](data.role, server, client)), server);
|
client.emit("serverRoleCreated", server.roles.add(new _StructuresRole2["default"](data.role, server, client)), server);
|
||||||
} else {
|
} else {
|
||||||
@@ -2229,7 +2289,7 @@ var InternalClient = (function () {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _Constants.PacketType.SERVER_ROLE_DELETE:
|
case _Constants.PacketType.SERVER_ROLE_DELETE:
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = this.servers.get("id", data.guild_id);
|
||||||
if (server) {
|
if (server) {
|
||||||
var role = server.roles.get("id", data.role_id);
|
var role = server.roles.get("id", data.role_id);
|
||||||
if (role) {
|
if (role) {
|
||||||
@@ -2243,7 +2303,7 @@ var InternalClient = (function () {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _Constants.PacketType.SERVER_ROLE_UPDATE:
|
case _Constants.PacketType.SERVER_ROLE_UPDATE:
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = this.servers.get("id", data.guild_id);
|
||||||
if (server) {
|
if (server) {
|
||||||
var role = server.roles.get("id", data.role.id);
|
var role = server.roles.get("id", data.role.id);
|
||||||
if (role) {
|
if (role) {
|
||||||
@@ -2258,7 +2318,7 @@ var InternalClient = (function () {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _Constants.PacketType.SERVER_MEMBER_ADD:
|
case _Constants.PacketType.SERVER_MEMBER_ADD:
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = this.servers.get("id", data.guild_id);
|
||||||
if (server) {
|
if (server) {
|
||||||
|
|
||||||
server.memberMap[data.user.id] = {
|
server.memberMap[data.user.id] = {
|
||||||
@@ -2273,15 +2333,15 @@ var InternalClient = (function () {
|
|||||||
|
|
||||||
server.memberCount++;
|
server.memberCount++;
|
||||||
|
|
||||||
client.emit("serverNewMember", server, server.members.add(self.users.add(new _StructuresUser2["default"](data.user, client))));
|
client.emit("serverNewMember", server, server.members.add(this.users.add(new _StructuresUser2["default"](data.user, client))));
|
||||||
} else {
|
} else {
|
||||||
client.emit("warn", "server member added but server doesn't exist in cache");
|
client.emit("warn", "server member added but server doesn't exist in cache");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _Constants.PacketType.SERVER_MEMBER_REMOVE:
|
case _Constants.PacketType.SERVER_MEMBER_REMOVE:
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = this.servers.get("id", data.guild_id);
|
||||||
if (server) {
|
if (server) {
|
||||||
var user = self.users.get("id", data.user.id);
|
var user = this.users.get("id", data.user.id);
|
||||||
if (user) {
|
if (user) {
|
||||||
client.emit("serverMemberRemoved", server, user);
|
client.emit("serverMemberRemoved", server, user);
|
||||||
server.memberMap[data.user.id] = null;
|
server.memberMap[data.user.id] = null;
|
||||||
@@ -2295,9 +2355,9 @@ var InternalClient = (function () {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _Constants.PacketType.SERVER_MEMBER_UPDATE:
|
case _Constants.PacketType.SERVER_MEMBER_UPDATE:
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = this.servers.get("id", data.guild_id);
|
||||||
if (server) {
|
if (server) {
|
||||||
var user = self.users.add(new _StructuresUser2["default"](data.user, client));
|
var user = this.users.add(new _StructuresUser2["default"](data.user, client));
|
||||||
if (user) {
|
if (user) {
|
||||||
var oldMember = null;
|
var oldMember = null;
|
||||||
if (server.memberMap[data.user.id]) {
|
if (server.memberMap[data.user.id]) {
|
||||||
@@ -2328,8 +2388,8 @@ var InternalClient = (function () {
|
|||||||
break;
|
break;
|
||||||
case _Constants.PacketType.PRESENCE_UPDATE:
|
case _Constants.PacketType.PRESENCE_UPDATE:
|
||||||
|
|
||||||
var user = self.users.add(new _StructuresUser2["default"](data.user, client));
|
var user = this.users.add(new _StructuresUser2["default"](data.user, client));
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = this.servers.get("id", data.guild_id);
|
||||||
|
|
||||||
if (user && server) {
|
if (user && server) {
|
||||||
|
|
||||||
@@ -2347,7 +2407,7 @@ var InternalClient = (function () {
|
|||||||
|
|
||||||
if (!presenceUser.equalsStrict(user)) {
|
if (!presenceUser.equalsStrict(user)) {
|
||||||
client.emit("presence", user, presenceUser);
|
client.emit("presence", user, presenceUser);
|
||||||
self.users.update(user, presenceUser);
|
this.users.update(user, presenceUser);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
client.emit("warn", "presence update but user/server not in cache");
|
client.emit("warn", "presence update but user/server not in cache");
|
||||||
@@ -2356,7 +2416,7 @@ var InternalClient = (function () {
|
|||||||
break;
|
break;
|
||||||
case _Constants.PacketType.USER_UPDATE:
|
case _Constants.PacketType.USER_UPDATE:
|
||||||
|
|
||||||
var user = self.users.get("id", data.id);
|
var user = this.users.get("id", data.id);
|
||||||
|
|
||||||
if (user) {
|
if (user) {
|
||||||
|
|
||||||
@@ -2364,12 +2424,12 @@ var InternalClient = (function () {
|
|||||||
data.id = data.id || user.id;
|
data.id = data.id || user.id;
|
||||||
data.avatar = data.avatar || user.avatar;
|
data.avatar = data.avatar || user.avatar;
|
||||||
data.discriminator = data.discriminator || user.discriminator;
|
data.discriminator = data.discriminator || user.discriminator;
|
||||||
_this36.email = data.email || _this36.email;
|
this.email = data.email || this.email;
|
||||||
|
|
||||||
var presenceUser = new _StructuresUser2["default"](data, client);
|
var presenceUser = new _StructuresUser2["default"](data, client);
|
||||||
|
|
||||||
client.emit("presence", user, presenceUser);
|
client.emit("presence", user, presenceUser);
|
||||||
self.users.update(user, presenceUser);
|
this.users.update(user, presenceUser);
|
||||||
} else {
|
} else {
|
||||||
client.emit("warn", "user update but user not in cache (this should never happen)");
|
client.emit("warn", "user update but user not in cache (this should never happen)");
|
||||||
}
|
}
|
||||||
@@ -2377,8 +2437,8 @@ var InternalClient = (function () {
|
|||||||
break;
|
break;
|
||||||
case _Constants.PacketType.TYPING:
|
case _Constants.PacketType.TYPING:
|
||||||
|
|
||||||
var user = self.users.get("id", data.user_id);
|
var user = this.users.get("id", data.user_id);
|
||||||
var channel = self.channels.get("id", data.channel_id) || self.private_channels.get("id", data.channel_id);
|
var channel = this.channels.get("id", data.channel_id) || this.private_channels.get("id", data.channel_id);
|
||||||
|
|
||||||
if (user && channel) {
|
if (user && channel) {
|
||||||
if (user.typing.since) {
|
if (user.typing.since) {
|
||||||
@@ -2402,8 +2462,8 @@ var InternalClient = (function () {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _Constants.PacketType.SERVER_BAN_ADD:
|
case _Constants.PacketType.SERVER_BAN_ADD:
|
||||||
var user = self.users.get("id", data.user.id);
|
var user = this.users.get("id", data.user.id);
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = this.servers.get("id", data.guild_id);
|
||||||
|
|
||||||
if (user && server) {
|
if (user && server) {
|
||||||
client.emit("userBanned", user, server);
|
client.emit("userBanned", user, server);
|
||||||
@@ -2412,8 +2472,8 @@ var InternalClient = (function () {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _Constants.PacketType.SERVER_BAN_REMOVE:
|
case _Constants.PacketType.SERVER_BAN_REMOVE:
|
||||||
var user = self.users.get("id", data.user.id);
|
var user = this.users.get("id", data.user.id);
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = this.servers.get("id", data.guild_id);
|
||||||
|
|
||||||
if (user && server) {
|
if (user && server) {
|
||||||
client.emit("userUnbanned", user, server);
|
client.emit("userUnbanned", user, server);
|
||||||
@@ -2422,10 +2482,10 @@ var InternalClient = (function () {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _Constants.PacketType.USER_NOTE_UPDATE:
|
case _Constants.PacketType.USER_NOTE_UPDATE:
|
||||||
if (_this36.user.bot) {
|
if (this.user.bot) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var user = self.users.get("id", data.id);
|
var user = this.users.get("id", data.id);
|
||||||
var oldNote = user.note;
|
var oldNote = user.note;
|
||||||
var note = data.note || null;
|
var note = data.note || null;
|
||||||
|
|
||||||
@@ -2436,21 +2496,21 @@ var InternalClient = (function () {
|
|||||||
|
|
||||||
client.emit("noteUpdated", user, oldNote);
|
client.emit("noteUpdated", user, oldNote);
|
||||||
|
|
||||||
self.users.update(user, updatedUser);
|
this.users.update(user, updatedUser);
|
||||||
} else {
|
} else {
|
||||||
client.emit("warn", "note updated but user not in cache");
|
client.emit("warn", "note updated but user not in cache");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _Constants.PacketType.VOICE_STATE_UPDATE:
|
case _Constants.PacketType.VOICE_STATE_UPDATE:
|
||||||
var user = self.users.get("id", data.user_id);
|
var user = this.users.get("id", data.user_id);
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = this.servers.get("id", data.guild_id);
|
||||||
var connection = self.voiceConnections.get("server", server);
|
var connection = this.voiceConnections.get("server", server);
|
||||||
|
|
||||||
if (user && server) {
|
if (user && server) {
|
||||||
|
|
||||||
if (data.channel_id) {
|
if (data.channel_id) {
|
||||||
// in voice channel
|
// in voice channel
|
||||||
var channel = self.channels.get("id", data.channel_id);
|
var channel = this.channels.get("id", data.channel_id);
|
||||||
if (channel && channel.type === "voice") {
|
if (channel && channel.type === "voice") {
|
||||||
server.eventVoiceStateUpdate(channel, user, data);
|
server.eventVoiceStateUpdate(channel, user, data);
|
||||||
} else {
|
} else {
|
||||||
@@ -2464,13 +2524,13 @@ var InternalClient = (function () {
|
|||||||
client.emit("warn", "voice state update but user or server not in cache");
|
client.emit("warn", "voice state update but user or server not in cache");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (user && user.id === self.user.id) {
|
if (user && user.id === this.user.id) {
|
||||||
// only for detecting self user movements for connections.
|
// only for detecting self user movements for connections.
|
||||||
var connection = self.voiceConnections.get("server", server);
|
var connection = this.voiceConnections.get("server", server);
|
||||||
// existing connection, perhaps channel moved
|
// existing connection, perhaps channel moved
|
||||||
if (connection && connection.voiceChannel && connection.voiceChannel.id !== data.channel_id) {
|
if (connection && connection.voiceChannel && connection.voiceChannel.id !== data.channel_id) {
|
||||||
// moved, update info
|
// moved, update info
|
||||||
connection.voiceChannel = self.channels.get("id", data.channel_id);
|
connection.voiceChannel = this.channels.get("id", data.channel_id);
|
||||||
client.emit("voiceMoved", connection.voiceChannel); // Moved to a new channel
|
client.emit("voiceMoved", connection.voiceChannel); // Moved to a new channel
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2478,7 +2538,7 @@ var InternalClient = (function () {
|
|||||||
break;
|
break;
|
||||||
case _Constants.PacketType.SERVER_MEMBERS_CHUNK:
|
case _Constants.PacketType.SERVER_MEMBERS_CHUNK:
|
||||||
|
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = this.servers.get("id", data.guild_id);
|
||||||
|
|
||||||
if (server) {
|
if (server) {
|
||||||
|
|
||||||
@@ -2507,15 +2567,15 @@ var InternalClient = (function () {
|
|||||||
joinedAt: Date.parse(user.joined_at),
|
joinedAt: Date.parse(user.joined_at),
|
||||||
nick: user.nick || null
|
nick: user.nick || null
|
||||||
};
|
};
|
||||||
server.members.add(self.users.add(new _StructuresUser2["default"](user.user, client)));
|
server.members.add(this.users.add(new _StructuresUser2["default"](user.user, client)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (self.forceFetchCount.hasOwnProperty(server.id)) {
|
if (this.forceFetchCount.hasOwnProperty(server.id)) {
|
||||||
if (self.forceFetchCount[server.id] <= 1) {
|
if (this.forceFetchCount[server.id] <= 1) {
|
||||||
delete self.forceFetchCount[server.id];
|
delete this.forceFetchCount[server.id];
|
||||||
self.checkReady();
|
this.checkReady();
|
||||||
} else {
|
} else {
|
||||||
self.forceFetchCount[server.id]--;
|
this.forceFetchCount[server.id]--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2526,81 +2586,81 @@ var InternalClient = (function () {
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case _Constants.PacketType.FRIEND_ADD:
|
case _Constants.PacketType.FRIEND_ADD:
|
||||||
if (_this36.user.bot) {
|
if (this.user.bot) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (data.type === 1) {
|
if (data.type === 1) {
|
||||||
// accepted/got accepted a friend request
|
// accepted/got accepted a friend request
|
||||||
var inUser = self.incoming_friend_requests.get("id", data.id);
|
var inUser = this.incoming_friend_requests.get("id", data.id);
|
||||||
if (inUser) {
|
if (inUser) {
|
||||||
// client accepted another user
|
// client accepted another user
|
||||||
self.incoming_friend_requests.remove(self.friends.add(new _StructuresUser2["default"](data.user, client)));
|
this.incoming_friend_requests.remove(this.friends.add(new _StructuresUser2["default"](data.user, client)));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var outUser = self.outgoing_friend_requests.get("id", data.id);
|
var outUser = this.outgoing_friend_requests.get("id", data.id);
|
||||||
if (outUser) {
|
if (outUser) {
|
||||||
// another user accepted the client
|
// another user accepted the client
|
||||||
self.outgoing_friend_requests.remove(self.friends.add(new _StructuresUser2["default"](data.user, client)));
|
this.outgoing_friend_requests.remove(this.friends.add(new _StructuresUser2["default"](data.user, client)));
|
||||||
client.emit("friendRequestAccepted", outUser);
|
client.emit("friendRequestAccepted", outUser);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if (data.type === 2) {
|
} else if (data.type === 2) {
|
||||||
// client received block
|
// client received block
|
||||||
self.blocked_users.add(new _StructuresUser2["default"](data.user, client));
|
this.blocked_users.add(new _StructuresUser2["default"](data.user, client));
|
||||||
} else if (data.type === 3) {
|
} else if (data.type === 3) {
|
||||||
// client received friend request
|
// client received friend request
|
||||||
client.emit("friendRequestReceived", self.incoming_friend_requests.add(new _StructuresUser2["default"](data.user, client)));
|
client.emit("friendRequestReceived", this.incoming_friend_requests.add(new _StructuresUser2["default"](data.user, client)));
|
||||||
} else if (data.type === 4) {
|
} else if (data.type === 4) {
|
||||||
// client sent friend request
|
// client sent friend request
|
||||||
self.outgoing_friend_requests.add(new _StructuresUser2["default"](data.user, client));
|
this.outgoing_friend_requests.add(new _StructuresUser2["default"](data.user, client));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _Constants.PacketType.FRIEND_REMOVE:
|
case _Constants.PacketType.FRIEND_REMOVE:
|
||||||
if (_this36.user.bot) {
|
if (this.user.bot) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var user = self.friends.get("id", data.id);
|
var user = this.friends.get("id", data.id);
|
||||||
if (user) {
|
if (user) {
|
||||||
self.friends.remove(user);
|
this.friends.remove(user);
|
||||||
client.emit("friendRemoved", user);
|
client.emit("friendRemoved", user);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
user = self.blocked_users.get("id", data.id);
|
user = this.blocked_users.get("id", data.id);
|
||||||
if (user) {
|
if (user) {
|
||||||
// they rejected friend request
|
// they rejected friend request
|
||||||
self.blocked_users.remove(user);
|
this.blocked_users.remove(user);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
user = self.incoming_friend_requests.get("id", data.id);
|
user = this.incoming_friend_requests.get("id", data.id);
|
||||||
if (user) {
|
if (user) {
|
||||||
// they rejected outgoing friend request OR client user manually deleted incoming thru web client/other clients
|
// they rejected outgoing friend request OR client user manually deleted incoming thru web client/other clients
|
||||||
var rejectedUser = self.outgoing_friend_requests.get("id", user.id);
|
var rejectedUser = this.outgoing_friend_requests.get("id", user.id);
|
||||||
if (rejectedUser) {
|
if (rejectedUser) {
|
||||||
// other person rejected outgoing
|
// other person rejected outgoing
|
||||||
client.emit("friendRequestRejected", self.outgoing_friend_requests.remove(rejectedUser));
|
client.emit("friendRequestRejected", this.outgoing_friend_requests.remove(rejectedUser));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// incoming deleted manually
|
// incoming deleted manually
|
||||||
self.incoming_friend_requests.remove(user);
|
this.incoming_friend_requests.remove(user);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
user = self.outgoing_friend_requests.get("id", data.id);
|
user = this.outgoing_friend_requests.get("id", data.id);
|
||||||
if (user) {
|
if (user) {
|
||||||
// client cancelled incoming friend request OR client user manually deleted outgoing thru web client/other clients
|
// client cancelled incoming friend request OR client user manually deleted outgoing thru web client/other clients
|
||||||
var incomingCancel = self.incoming_friend_requests.get("id", user.id);
|
var incomingCancel = this.incoming_friend_requests.get("id", user.id);
|
||||||
if (incomingCancel) {
|
if (incomingCancel) {
|
||||||
// client cancelled incoming
|
// client cancelled incoming
|
||||||
self.incoming_friend_requests.remove(user);
|
this.incoming_friend_requests.remove(user);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// outgoing deleted manually
|
// outgoing deleted manually
|
||||||
self.outgoing_friend_requests.remove(user);
|
this.outgoing_friend_requests.remove(user);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -2609,7 +2669,6 @@ var InternalClient = (function () {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
_createClass(InternalClient, [{
|
_createClass(InternalClient, [{
|
||||||
key: "uptime",
|
key: "uptime",
|
||||||
|
|||||||
@@ -137,6 +137,7 @@ Constants.PacketType = {
|
|||||||
MESSAGE_UPDATE: "MESSAGE_UPDATE",
|
MESSAGE_UPDATE: "MESSAGE_UPDATE",
|
||||||
PRESENCE_UPDATE: "PRESENCE_UPDATE",
|
PRESENCE_UPDATE: "PRESENCE_UPDATE",
|
||||||
READY: "READY",
|
READY: "READY",
|
||||||
|
RESUME: "RESUME",
|
||||||
SERVER_BAN_ADD: "GUILD_BAN_ADD",
|
SERVER_BAN_ADD: "GUILD_BAN_ADD",
|
||||||
SERVER_BAN_REMOVE: "GUILD_BAN_REMOVE",
|
SERVER_BAN_REMOVE: "GUILD_BAN_REMOVE",
|
||||||
SERVER_CREATE: "GUILD_CREATE",
|
SERVER_CREATE: "GUILD_CREATE",
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import Invite from "../Structures/Invite";
|
|||||||
import VoiceConnection from "../Voice/VoiceConnection";
|
import VoiceConnection from "../Voice/VoiceConnection";
|
||||||
import TokenCacher from "../Util/TokenCacher";
|
import TokenCacher from "../Util/TokenCacher";
|
||||||
|
|
||||||
|
var GATEWAY_VERSION = 4;
|
||||||
var zlib;
|
var zlib;
|
||||||
var libVersion = require('../../package.json').version;
|
var libVersion = require('../../package.json').version;
|
||||||
|
|
||||||
@@ -1566,45 +1567,29 @@ export default class InternalClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
createWS(url) {
|
createWS(url) {
|
||||||
var self = this;
|
|
||||||
var client = self.client;
|
|
||||||
|
|
||||||
if (this.websocket) {
|
if (this.websocket) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if(!url.endsWith("/")) {
|
||||||
|
url += "/";
|
||||||
|
}
|
||||||
|
url += "?encoding=json&v=" + GATEWAY_VERSION;
|
||||||
|
|
||||||
this.websocket = new WebSocket(url);
|
this.websocket = new WebSocket(url);
|
||||||
|
|
||||||
this.websocket.onopen = () => {
|
this.websocket.onopen = () => {
|
||||||
var data = {
|
if(this.sessionID) {
|
||||||
op: 2,
|
this.resume();
|
||||||
d: {
|
} else {
|
||||||
token: self.token,
|
this.identify();
|
||||||
v: 3,
|
|
||||||
compress: self.client.options.compress,
|
|
||||||
large_threshold : self.client.options.largeThreshold,
|
|
||||||
properties: {
|
|
||||||
"$os": process.platform,
|
|
||||||
"$browser": "discord.js",
|
|
||||||
"$device": "discord.js",
|
|
||||||
"$referrer": "",
|
|
||||||
"$referring_domain": ""
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
if (self.client.options.shard) {
|
|
||||||
data.d.shard = self.client.options.shard;
|
|
||||||
}
|
|
||||||
|
|
||||||
self.sendWS(data);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
this.websocket.onclose = (event) => {
|
this.websocket.onclose = (event) => {
|
||||||
self.websocket = null;
|
this.websocket = null;
|
||||||
self.state = ConnectionState.DISCONNECTED;
|
this.state = ConnectionState.DISCONNECTED;
|
||||||
if(event && event.code) {
|
if(event && event.code) {
|
||||||
client.emit("warn", "WS close: " + event.code);
|
this.client.emit("warn", "WS close: " + event.code);
|
||||||
var err;
|
var err;
|
||||||
if(event.code === 4001) {
|
if(event.code === 4001) {
|
||||||
err = new Error("Gateway received invalid OP code");
|
err = new Error("Gateway received invalid OP code");
|
||||||
@@ -1619,7 +1604,7 @@ export default class InternalClient {
|
|||||||
} if(event.code === 4006 || event.code === 4009) {
|
} if(event.code === 4006 || event.code === 4009) {
|
||||||
err = new Error("Invalid session");
|
err = new Error("Invalid session");
|
||||||
} else if(event.code === 4007) {
|
} else if(event.code === 4007) {
|
||||||
this.seq = 0;
|
this.sequence = 0;
|
||||||
err = new Error("Invalid sequence number");
|
err = new Error("Invalid sequence number");
|
||||||
} else if(event.code === 4008) {
|
} else if(event.code === 4008) {
|
||||||
err = new Error("Gateway connection was ratelimited");
|
err = new Error("Gateway connection was ratelimited");
|
||||||
@@ -1627,17 +1612,17 @@ export default class InternalClient {
|
|||||||
err = new Error("Invalid shard key");
|
err = new Error("Invalid shard key");
|
||||||
}
|
}
|
||||||
if(err) {
|
if(err) {
|
||||||
client.emit("error", err);
|
this.client.emit("error", err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
self.disconnected(this.client.options.autoReconnect);
|
this.disconnected(this.client.options.autoReconnect);
|
||||||
};
|
};
|
||||||
|
|
||||||
this.websocket.onerror = e => {
|
this.websocket.onerror = e => {
|
||||||
client.emit("error", e);
|
this.client.emit("error", e);
|
||||||
self.websocket = null;
|
this.websocket = null;
|
||||||
self.state = ConnectionState.DISCONNECTED;
|
this.state = ConnectionState.DISCONNECTED;
|
||||||
self.disconnected(this.client.options.autoReconnect);
|
this.disconnected(this.client.options.autoReconnect);
|
||||||
};
|
};
|
||||||
|
|
||||||
this.websocket.onmessage = e => {
|
this.websocket.onmessage = e => {
|
||||||
@@ -1646,74 +1631,147 @@ export default class InternalClient {
|
|||||||
e.data = zlib.inflateSync(e.data).toString();
|
e.data = zlib.inflateSync(e.data).toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
var packet, data;
|
var packet;
|
||||||
try {
|
try {
|
||||||
packet = JSON.parse(e.data);
|
packet = JSON.parse(e.data);
|
||||||
data = packet.d;
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
client.emit("error", e);
|
this.client.emit("error", e);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
client.emit("raw", packet);
|
this.client.emit("raw", packet);
|
||||||
|
|
||||||
|
if(packet.s) {
|
||||||
|
this.sequence = packet.s;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch(packet.op) {
|
||||||
|
case 0:
|
||||||
|
this.processPacket(packet);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
this.heartbeat();
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
this.disconnected(true);
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
this.sessionID = null;
|
||||||
|
this.sequence = 0;
|
||||||
|
this.identify();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
resume() {
|
||||||
|
var data = {
|
||||||
|
op: 6,
|
||||||
|
d: {
|
||||||
|
token: this.token,
|
||||||
|
session_id: this.sessionID,
|
||||||
|
seq: this.sequence
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.sendWS(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
identify() {
|
||||||
|
var data = {
|
||||||
|
op: 2,
|
||||||
|
d: {
|
||||||
|
token: this.token,
|
||||||
|
v: GATEWAY_VERSION,
|
||||||
|
compress: this.client.options.compress,
|
||||||
|
large_threshold : this.client.options.largeThreshold,
|
||||||
|
properties: {
|
||||||
|
"$os": process.platform,
|
||||||
|
"$browser": "discord.js",
|
||||||
|
"$device": "discord.js",
|
||||||
|
"$referrer": "",
|
||||||
|
"$referring_domain": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (this.client.options.shard) {
|
||||||
|
data.d.shard = this.client.options.shard;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.sendWS(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
heartbeat() {
|
||||||
|
this.sendWS({ op: 1, d: Date.now() });
|
||||||
|
}
|
||||||
|
|
||||||
|
processPacket(packet) {
|
||||||
|
var client = this.client;
|
||||||
|
var data = packet.d;
|
||||||
switch (packet.t) {
|
switch (packet.t) {
|
||||||
|
case PacketType.RESUME:
|
||||||
case PacketType.READY:
|
case PacketType.READY:
|
||||||
var startTime = Date.now();
|
this.intervals.kai = setInterval(() => this.heartbeat(), data.heartbeat_interval);
|
||||||
self.intervals.kai = setInterval(() => self.sendWS({ op: 1, d: Date.now() }), data.heartbeat_interval);
|
|
||||||
|
|
||||||
self.user = self.users.add(new User(data.user, client));
|
if(packet.t === PacketType.RESUME) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.sessionID = data.session_id;
|
||||||
|
var startTime = Date.now();
|
||||||
|
|
||||||
|
this.user = this.users.add(new User(data.user, client));
|
||||||
|
|
||||||
this.forceFetchCount = {};
|
this.forceFetchCount = {};
|
||||||
this.forceFetchQueue = [];
|
this.forceFetchQueue = [];
|
||||||
this.forceFetchLength = 1;
|
this.forceFetchLength = 1;
|
||||||
this.autoReconnectInterval = 1000;
|
this.autoReconnectInterval = 1000;
|
||||||
this.sessionID = data.session_id;
|
|
||||||
|
|
||||||
data.guilds.forEach(server => {
|
data.guilds.forEach(server => {
|
||||||
if (!server.unavailable) {
|
if (!server.unavailable) {
|
||||||
server = self.servers.add(new Server(server, client));
|
server = this.servers.add(new Server(server, client));
|
||||||
if (self.client.options.forceFetchUsers && server.members && server.members.length < server.memberCount) {
|
if (this.client.options.forceFetchUsers && server.members && server.members.length < server.memberCount) {
|
||||||
self.getGuildMembers(server.id, Math.ceil(server.memberCount / 1000));
|
this.getGuildMembers(server.id, Math.ceil(server.memberCount / 1000));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
client.emit("debug", "server " + server.id + " was unavailable, could not create (ready)");
|
client.emit("debug", "server " + server.id + " was unavailable, could not create (ready)");
|
||||||
self.unavailableServers.add(server);
|
this.unavailableServers.add(server);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
data.private_channels.forEach(pm => {
|
data.private_channels.forEach(pm => {
|
||||||
self.private_channels.add(new PMChannel(pm, client));
|
this.private_channels.add(new PMChannel(pm, client));
|
||||||
});
|
});
|
||||||
if (!data.user.bot) { // bots dont have friends
|
if (!data.user.bot) { // bots dont have friends
|
||||||
data.relationships.forEach(friend => {
|
data.relationships.forEach(friend => {
|
||||||
if (friend.type === 1) { // is a friend
|
if (friend.type === 1) { // is a friend
|
||||||
self.friends.add(new User(friend.user, client));
|
this.friends.add(new User(friend.user, client));
|
||||||
} else if (friend.type === 2) { // incoming friend requests
|
} else if (friend.type === 2) { // incoming friend requests
|
||||||
self.blocked_users.add(new User(friend.user, client));
|
this.blocked_users.add(new User(friend.user, client));
|
||||||
} else if (friend.type === 3) { // incoming friend requests
|
} else if (friend.type === 3) { // incoming friend requests
|
||||||
self.incoming_friend_requests.add(new User(friend.user, client));
|
this.incoming_friend_requests.add(new User(friend.user, client));
|
||||||
} else if (friend.type === 4) { // outgoing friend requests
|
} else if (friend.type === 4) { // outgoing friend requests
|
||||||
self.outgoing_friend_requests.add(new User(friend.user, client));
|
this.outgoing_friend_requests.add(new User(friend.user, client));
|
||||||
} else {
|
} else {
|
||||||
client.emit("warn", "unknown friend type " + friend.type);
|
client.emit("warn", "unknown friend type " + friend.type);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
self.friends = null;
|
this.friends = null;
|
||||||
self.blocked_users = null;
|
this.blocked_users = null;
|
||||||
self.incoming_friend_requests = null;
|
this.incoming_friend_requests = null;
|
||||||
self.outgoing_friend_requests = null;
|
this.outgoing_friend_requests = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// add notes to users
|
// add notes to users
|
||||||
if(data.notes) {
|
if(data.notes) {
|
||||||
for(note in data.notes) {
|
for(note in data.notes) {
|
||||||
var user = self.users.get("id", note);
|
var user = this.users.get("id", note);
|
||||||
if(user) {
|
if(user) {
|
||||||
var newUser = user;
|
var newUser = user;
|
||||||
newUser.note = data.notes[note];
|
newUser.note = data.notes[note];
|
||||||
|
|
||||||
self.users.update(user, newUser);
|
this.users.update(user, newUser);
|
||||||
} else {
|
} else {
|
||||||
client.emit("warn", "note in ready packet but user not cached");
|
client.emit("warn", "note in ready packet but user not cached");
|
||||||
}
|
}
|
||||||
@@ -1721,25 +1779,25 @@ export default class InternalClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
self.state = ConnectionState.READY;
|
this.state = ConnectionState.READY;
|
||||||
|
|
||||||
client.emit("debug", `ready packet took ${Date.now() - startTime}ms to process`);
|
client.emit("debug", `ready packet took ${Date.now() - startTime}ms to process`);
|
||||||
client.emit("debug", `ready with ${self.servers.length} servers, ${self.unavailableServers.length} unavailable servers, ${self.channels.length} channels and ${self.users.length} users cached.`);
|
client.emit("debug", `ready with ${this.servers.length} servers, ${this.unavailableServers.length} unavailable servers, ${this.channels.length} channels and ${this.users.length} users cached.`);
|
||||||
|
|
||||||
self.restartServerCreateTimeout();
|
this.restartServerCreateTimeout();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PacketType.MESSAGE_CREATE:
|
case PacketType.MESSAGE_CREATE:
|
||||||
// format: https://discordapi.readthedocs.org/en/latest/reference/channels/messages.html#message-format
|
// format: https://discordapi.readthedocs.org/en/latest/reference/channels/messages.html#message-format
|
||||||
var channel = self.channels.get("id", data.channel_id) || self.private_channels.get("id", data.channel_id);
|
var channel = this.channels.get("id", data.channel_id) || this.private_channels.get("id", data.channel_id);
|
||||||
if (channel) {
|
if (channel) {
|
||||||
var msg = channel.messages.add(new Message(data, channel, client));
|
var msg = channel.messages.add(new Message(data, channel, client));
|
||||||
channel.lastMessageID = msg.id;
|
channel.lastMessageID = msg.id;
|
||||||
|
|
||||||
if (self.messageAwaits[channel.id + msg.author.id]) {
|
if (this.messageAwaits[channel.id + msg.author.id]) {
|
||||||
self.messageAwaits[channel.id + msg.author.id].map( fn => fn(msg) );
|
this.messageAwaits[channel.id + msg.author.id].map( fn => fn(msg) );
|
||||||
self.messageAwaits[channel.id + msg.author.id] = null;
|
this.messageAwaits[channel.id + msg.author.id] = null;
|
||||||
client.emit("message", msg, true); //2nd param is isAwaitedMessage
|
client.emit("message", msg, true); //2nd param is isAwaitedMessage
|
||||||
} else {
|
} else {
|
||||||
client.emit("message", msg);
|
client.emit("message", msg);
|
||||||
@@ -1749,7 +1807,7 @@ export default class InternalClient {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PacketType.MESSAGE_DELETE:
|
case PacketType.MESSAGE_DELETE:
|
||||||
var channel = self.channels.get("id", data.channel_id) || self.private_channels.get("id", data.channel_id);
|
var channel = this.channels.get("id", data.channel_id) || this.private_channels.get("id", data.channel_id);
|
||||||
if (channel) {
|
if (channel) {
|
||||||
// potentially blank
|
// potentially blank
|
||||||
var msg = channel.messages.get("id", data.id);
|
var msg = channel.messages.get("id", data.id);
|
||||||
@@ -1765,7 +1823,7 @@ export default class InternalClient {
|
|||||||
break;
|
break;
|
||||||
case PacketType.MESSAGE_UPDATE:
|
case PacketType.MESSAGE_UPDATE:
|
||||||
// format https://discordapi.readthedocs.org/en/latest/reference/channels/messages.html#message-format
|
// format https://discordapi.readthedocs.org/en/latest/reference/channels/messages.html#message-format
|
||||||
var channel = self.channels.get("id", data.channel_id) || self.private_channels.get("id", data.channel_id);
|
var channel = this.channels.get("id", data.channel_id) || this.private_channels.get("id", data.channel_id);
|
||||||
if (channel) {
|
if (channel) {
|
||||||
// potentially blank
|
// potentially blank
|
||||||
var msg = channel.messages.get("id", data.id);
|
var msg = channel.messages.get("id", data.id);
|
||||||
@@ -1795,64 +1853,64 @@ export default class InternalClient {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PacketType.SERVER_CREATE:
|
case PacketType.SERVER_CREATE:
|
||||||
var server = self.servers.get("id", data.id);
|
var server = this.servers.get("id", data.id);
|
||||||
if (!server) {
|
if (!server) {
|
||||||
if (!data.unavailable) {
|
if (!data.unavailable) {
|
||||||
server = self.servers.add(new Server(data, client));
|
server = this.servers.add(new Server(data, client));
|
||||||
if (client.readyTime) {
|
if (client.readyTime) {
|
||||||
client.emit("serverCreated", server);
|
client.emit("serverCreated", server);
|
||||||
}
|
}
|
||||||
if (self.client.options.forceFetchUsers && server.large && server.members.length < server.memberCount) {
|
if (this.client.options.forceFetchUsers && server.large && server.members.length < server.memberCount) {
|
||||||
self.getGuildMembers(server.id, Math.ceil(server.memberCount / 1000));
|
this.getGuildMembers(server.id, Math.ceil(server.memberCount / 1000));
|
||||||
}
|
}
|
||||||
var unavailable = self.unavailableServers.get("id", server.id);
|
var unavailable = this.unavailableServers.get("id", server.id);
|
||||||
if (unavailable) {
|
if (unavailable) {
|
||||||
self.unavailableServers.remove(unavailable);
|
this.unavailableServers.remove(unavailable);
|
||||||
}
|
}
|
||||||
self.restartServerCreateTimeout();
|
this.restartServerCreateTimeout();
|
||||||
} else {
|
} else {
|
||||||
client.emit("debug", "server was unavailable, could not create");
|
client.emit("debug", "server was unavailable, could not create");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PacketType.SERVER_DELETE:
|
case PacketType.SERVER_DELETE:
|
||||||
var server = self.servers.get("id", data.id);
|
var server = this.servers.get("id", data.id);
|
||||||
if (server) {
|
if (server) {
|
||||||
if (!data.unavailable) {
|
if (!data.unavailable) {
|
||||||
client.emit("serverDeleted", server);
|
client.emit("serverDeleted", server);
|
||||||
|
|
||||||
for (var channel of server.channels) {
|
for (var channel of server.channels) {
|
||||||
self.channels.remove(channel);
|
this.channels.remove(channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.servers.remove(server);
|
this.servers.remove(server);
|
||||||
|
|
||||||
for (var user of server.members) {
|
for (var user of server.members) {
|
||||||
var found = false;
|
var found = false;
|
||||||
for (var s of self.servers) {
|
for (var s of this.servers) {
|
||||||
if (s.members.get("id", user.id)) {
|
if (s.members.get("id", user.id)) {
|
||||||
found = true;
|
found = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!found) {
|
if (!found) {
|
||||||
self.users.remove(user);
|
this.users.remove(user);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
client.emit("debug", "server was unavailable, could not update");
|
client.emit("debug", "server was unavailable, could not update");
|
||||||
}
|
}
|
||||||
self.buckets["bot:msg:guild:" + packet.d.id] =
|
this.buckets["bot:msg:guild:" + packet.d.id] =
|
||||||
self.buckets["dmsg:" + packet.d.id] =
|
this.buckets["dmsg:" + packet.d.id] =
|
||||||
self.buckets["bdmsg:" + packet.d.id] =
|
this.buckets["bdmsg:" + packet.d.id] =
|
||||||
self.buckets["guild_member:" + packet.d.id] =
|
this.buckets["guild_member:" + packet.d.id] =
|
||||||
self.buckets["guild_member_nick:" + packet.d.id] = undefined;
|
this.buckets["guild_member_nick:" + packet.d.id] = undefined;
|
||||||
} else {
|
} else {
|
||||||
client.emit("warn", "server was deleted but it was not in the cache");
|
client.emit("warn", "server was deleted but it was not in the cache");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PacketType.SERVER_UPDATE:
|
case PacketType.SERVER_UPDATE:
|
||||||
var server = self.servers.get("id", data.id);
|
var server = this.servers.get("id", data.id);
|
||||||
if (server) {
|
if (server) {
|
||||||
// server exists
|
// server exists
|
||||||
data.members = data.members || [];
|
data.members = data.members || [];
|
||||||
@@ -1866,31 +1924,31 @@ export default class InternalClient {
|
|||||||
client.emit("debug", "received server update but server already updated");
|
client.emit("debug", "received server update but server already updated");
|
||||||
} else {
|
} else {
|
||||||
client.emit("serverUpdated", new Server(server, client), newserver);
|
client.emit("serverUpdated", new Server(server, client), newserver);
|
||||||
self.servers.update(server, newserver);
|
this.servers.update(server, newserver);
|
||||||
}
|
}
|
||||||
} else if (!server) {
|
} else if (!server) {
|
||||||
client.emit("warn", "server was updated but it was not in the cache");
|
client.emit("warn", "server was updated but it was not in the cache");
|
||||||
self.servers.add(new Server(data, client));
|
this.servers.add(new Server(data, client));
|
||||||
client.emit("serverCreated", server);
|
client.emit("serverCreated", server);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PacketType.CHANNEL_CREATE:
|
case PacketType.CHANNEL_CREATE:
|
||||||
|
|
||||||
var channel = self.channels.get("id", data.id);
|
var channel = this.channels.get("id", data.id);
|
||||||
|
|
||||||
if (!channel) {
|
if (!channel) {
|
||||||
|
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = this.servers.get("id", data.guild_id);
|
||||||
if (server) {
|
if (server) {
|
||||||
var chan = null;
|
var chan = null;
|
||||||
if (data.type === "text") {
|
if (data.type === "text") {
|
||||||
chan = self.channels.add(new TextChannel(data, client, server));
|
chan = this.channels.add(new TextChannel(data, client, server));
|
||||||
} else {
|
} else {
|
||||||
chan = self.channels.add(new VoiceChannel(data, client, server));
|
chan = this.channels.add(new VoiceChannel(data, client, server));
|
||||||
}
|
}
|
||||||
client.emit("channelCreated", server.channels.add(chan));
|
client.emit("channelCreated", server.channels.add(chan));
|
||||||
} else if (data.is_private) {
|
} else if (data.is_private) {
|
||||||
client.emit("channelCreated", self.private_channels.add(new PMChannel(data, client)));
|
client.emit("channelCreated", this.private_channels.add(new PMChannel(data, client)));
|
||||||
} else {
|
} else {
|
||||||
client.emit("warn", "channel created but server does not exist");
|
client.emit("warn", "channel created but server does not exist");
|
||||||
}
|
}
|
||||||
@@ -1901,14 +1959,14 @@ export default class InternalClient {
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case PacketType.CHANNEL_DELETE:
|
case PacketType.CHANNEL_DELETE:
|
||||||
var channel = self.channels.get("id", data.id) || self.private_channels.get("id", data.id);
|
var channel = this.channels.get("id", data.id) || this.private_channels.get("id", data.id);
|
||||||
if (channel) {
|
if (channel) {
|
||||||
|
|
||||||
if (channel.server) { // accounts for PMs
|
if (channel.server) { // accounts for PMs
|
||||||
channel.server.channels.remove(channel);
|
channel.server.channels.remove(channel);
|
||||||
self.channels.remove(channel);
|
this.channels.remove(channel);
|
||||||
} else {
|
} else {
|
||||||
self.private_channels.remove(channel);
|
this.private_channels.remove(channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
client.emit("channelDeleted", channel);
|
client.emit("channelDeleted", channel);
|
||||||
@@ -1918,13 +1976,13 @@ export default class InternalClient {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PacketType.CHANNEL_UPDATE:
|
case PacketType.CHANNEL_UPDATE:
|
||||||
var channel = self.channels.get("id", data.id) || self.private_channels.get("id", data.id);
|
var channel = this.channels.get("id", data.id) || this.private_channels.get("id", data.id);
|
||||||
if (channel) {
|
if (channel) {
|
||||||
|
|
||||||
if (channel instanceof PMChannel) {
|
if (channel instanceof PMChannel) {
|
||||||
//PM CHANNEL
|
//PM CHANNEL
|
||||||
client.emit("channelUpdated", new PMChannel(channel, client),
|
client.emit("channelUpdated", new PMChannel(channel, client),
|
||||||
self.private_channels.update(channel, new PMChannel(data, client)));
|
this.private_channels.update(channel, new PMChannel(data, client)));
|
||||||
} else {
|
} else {
|
||||||
if (channel.server) {
|
if (channel.server) {
|
||||||
if (channel.type === "text") {
|
if (channel.type === "text") {
|
||||||
@@ -1933,14 +1991,14 @@ export default class InternalClient {
|
|||||||
chan.messages = channel.messages;
|
chan.messages = channel.messages;
|
||||||
client.emit("channelUpdated", channel, chan);
|
client.emit("channelUpdated", channel, chan);
|
||||||
channel.server.channels.update(channel, chan);
|
channel.server.channels.update(channel, chan);
|
||||||
self.channels.update(channel, chan);
|
this.channels.update(channel, chan);
|
||||||
} else {
|
} else {
|
||||||
//VOICE CHANNEL
|
//VOICE CHANNEL
|
||||||
data.members = channel.members;
|
data.members = channel.members;
|
||||||
var chan = new VoiceChannel(data, client, channel.server);
|
var chan = new VoiceChannel(data, client, channel.server);
|
||||||
client.emit("channelUpdated", channel, chan);
|
client.emit("channelUpdated", channel, chan);
|
||||||
channel.server.channels.update(channel, chan);
|
channel.server.channels.update(channel, chan);
|
||||||
self.channels.update(channel, chan);
|
this.channels.update(channel, chan);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
client.emit("warn", "channel updated but server non-existant");
|
client.emit("warn", "channel updated but server non-existant");
|
||||||
@@ -1952,7 +2010,7 @@ export default class InternalClient {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PacketType.SERVER_ROLE_CREATE:
|
case PacketType.SERVER_ROLE_CREATE:
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = this.servers.get("id", data.guild_id);
|
||||||
if (server) {
|
if (server) {
|
||||||
client.emit("serverRoleCreated", server.roles.add(new Role(data.role, server, client)), server);
|
client.emit("serverRoleCreated", server.roles.add(new Role(data.role, server, client)), server);
|
||||||
} else {
|
} else {
|
||||||
@@ -1960,7 +2018,7 @@ export default class InternalClient {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PacketType.SERVER_ROLE_DELETE:
|
case PacketType.SERVER_ROLE_DELETE:
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = this.servers.get("id", data.guild_id);
|
||||||
if (server) {
|
if (server) {
|
||||||
var role = server.roles.get("id", data.role_id);
|
var role = server.roles.get("id", data.role_id);
|
||||||
if (role) {
|
if (role) {
|
||||||
@@ -1974,7 +2032,7 @@ export default class InternalClient {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PacketType.SERVER_ROLE_UPDATE:
|
case PacketType.SERVER_ROLE_UPDATE:
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = this.servers.get("id", data.guild_id);
|
||||||
if (server) {
|
if (server) {
|
||||||
var role = server.roles.get("id", data.role.id);
|
var role = server.roles.get("id", data.role.id);
|
||||||
if (role) {
|
if (role) {
|
||||||
@@ -1989,7 +2047,7 @@ export default class InternalClient {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PacketType.SERVER_MEMBER_ADD:
|
case PacketType.SERVER_MEMBER_ADD:
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = this.servers.get("id", data.guild_id);
|
||||||
if (server) {
|
if (server) {
|
||||||
|
|
||||||
server.memberMap[data.user.id] = {
|
server.memberMap[data.user.id] = {
|
||||||
@@ -2007,7 +2065,7 @@ export default class InternalClient {
|
|||||||
client.emit(
|
client.emit(
|
||||||
"serverNewMember",
|
"serverNewMember",
|
||||||
server,
|
server,
|
||||||
server.members.add(self.users.add(new User(data.user, client)))
|
server.members.add(this.users.add(new User(data.user, client)))
|
||||||
);
|
);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -2015,9 +2073,9 @@ export default class InternalClient {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PacketType.SERVER_MEMBER_REMOVE:
|
case PacketType.SERVER_MEMBER_REMOVE:
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = this.servers.get("id", data.guild_id);
|
||||||
if (server) {
|
if (server) {
|
||||||
var user = self.users.get("id", data.user.id);
|
var user = this.users.get("id", data.user.id);
|
||||||
if (user) {
|
if (user) {
|
||||||
client.emit("serverMemberRemoved", server, user);
|
client.emit("serverMemberRemoved", server, user);
|
||||||
server.memberMap[data.user.id] = null;
|
server.memberMap[data.user.id] = null;
|
||||||
@@ -2031,9 +2089,9 @@ export default class InternalClient {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PacketType.SERVER_MEMBER_UPDATE:
|
case PacketType.SERVER_MEMBER_UPDATE:
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = this.servers.get("id", data.guild_id);
|
||||||
if (server) {
|
if (server) {
|
||||||
var user = self.users.add(new User(data.user, client));
|
var user = this.users.add(new User(data.user, client));
|
||||||
if (user) {
|
if (user) {
|
||||||
var oldMember = null;
|
var oldMember = null;
|
||||||
if (server.memberMap[data.user.id]) {
|
if (server.memberMap[data.user.id]) {
|
||||||
@@ -2064,8 +2122,8 @@ export default class InternalClient {
|
|||||||
break;
|
break;
|
||||||
case PacketType.PRESENCE_UPDATE:
|
case PacketType.PRESENCE_UPDATE:
|
||||||
|
|
||||||
var user = self.users.add(new User(data.user, client));
|
var user = this.users.add(new User(data.user, client));
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = this.servers.get("id", data.guild_id);
|
||||||
|
|
||||||
if (user && server) {
|
if (user && server) {
|
||||||
|
|
||||||
@@ -2083,7 +2141,7 @@ export default class InternalClient {
|
|||||||
|
|
||||||
if (!presenceUser.equalsStrict(user)) {
|
if (!presenceUser.equalsStrict(user)) {
|
||||||
client.emit("presence", user, presenceUser);
|
client.emit("presence", user, presenceUser);
|
||||||
self.users.update(user, presenceUser);
|
this.users.update(user, presenceUser);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -2093,7 +2151,7 @@ export default class InternalClient {
|
|||||||
break;
|
break;
|
||||||
case PacketType.USER_UPDATE:
|
case PacketType.USER_UPDATE:
|
||||||
|
|
||||||
var user = self.users.get("id", data.id);
|
var user = this.users.get("id", data.id);
|
||||||
|
|
||||||
if (user) {
|
if (user) {
|
||||||
|
|
||||||
@@ -2106,7 +2164,7 @@ export default class InternalClient {
|
|||||||
var presenceUser = new User(data, client);
|
var presenceUser = new User(data, client);
|
||||||
|
|
||||||
client.emit("presence", user, presenceUser);
|
client.emit("presence", user, presenceUser);
|
||||||
self.users.update(user, presenceUser);
|
this.users.update(user, presenceUser);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
client.emit("warn", "user update but user not in cache (this should never happen)");
|
client.emit("warn", "user update but user not in cache (this should never happen)");
|
||||||
@@ -2115,8 +2173,8 @@ export default class InternalClient {
|
|||||||
break;
|
break;
|
||||||
case PacketType.TYPING:
|
case PacketType.TYPING:
|
||||||
|
|
||||||
var user = self.users.get("id", data.user_id);
|
var user = this.users.get("id", data.user_id);
|
||||||
var channel = self.channels.get("id", data.channel_id) || self.private_channels.get("id", data.channel_id);
|
var channel = this.channels.get("id", data.channel_id) || this.private_channels.get("id", data.channel_id);
|
||||||
|
|
||||||
if (user && channel) {
|
if (user && channel) {
|
||||||
if (user.typing.since) {
|
if (user.typing.since) {
|
||||||
@@ -2141,8 +2199,8 @@ export default class InternalClient {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PacketType.SERVER_BAN_ADD:
|
case PacketType.SERVER_BAN_ADD:
|
||||||
var user = self.users.get("id", data.user.id);
|
var user = this.users.get("id", data.user.id);
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = this.servers.get("id", data.guild_id);
|
||||||
|
|
||||||
if (user && server) {
|
if (user && server) {
|
||||||
client.emit("userBanned", user, server);
|
client.emit("userBanned", user, server);
|
||||||
@@ -2151,8 +2209,8 @@ export default class InternalClient {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PacketType.SERVER_BAN_REMOVE:
|
case PacketType.SERVER_BAN_REMOVE:
|
||||||
var user = self.users.get("id", data.user.id);
|
var user = this.users.get("id", data.user.id);
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = this.servers.get("id", data.guild_id);
|
||||||
|
|
||||||
if (user && server) {
|
if (user && server) {
|
||||||
client.emit("userUnbanned", user, server);
|
client.emit("userUnbanned", user, server);
|
||||||
@@ -2164,7 +2222,7 @@ export default class InternalClient {
|
|||||||
if(this.user.bot) {
|
if(this.user.bot) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var user = self.users.get("id", data.id);
|
var user = this.users.get("id", data.id);
|
||||||
var oldNote = user.note;
|
var oldNote = user.note;
|
||||||
var note = data.note || null;
|
var note = data.note || null;
|
||||||
|
|
||||||
@@ -2175,22 +2233,22 @@ export default class InternalClient {
|
|||||||
|
|
||||||
client.emit("noteUpdated", user, oldNote);
|
client.emit("noteUpdated", user, oldNote);
|
||||||
|
|
||||||
self.users.update(user, updatedUser);
|
this.users.update(user, updatedUser);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
client.emit("warn", "note updated but user not in cache");
|
client.emit("warn", "note updated but user not in cache");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PacketType.VOICE_STATE_UPDATE:
|
case PacketType.VOICE_STATE_UPDATE:
|
||||||
var user = self.users.get("id", data.user_id);
|
var user = this.users.get("id", data.user_id);
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = this.servers.get("id", data.guild_id);
|
||||||
var connection = self.voiceConnections.get("server", server);
|
var connection = this.voiceConnections.get("server", server);
|
||||||
|
|
||||||
if (user && server) {
|
if (user && server) {
|
||||||
|
|
||||||
if (data.channel_id) {
|
if (data.channel_id) {
|
||||||
// in voice channel
|
// in voice channel
|
||||||
var channel = self.channels.get("id", data.channel_id);
|
var channel = this.channels.get("id", data.channel_id);
|
||||||
if (channel && channel.type === "voice") {
|
if (channel && channel.type === "voice") {
|
||||||
server.eventVoiceStateUpdate(channel, user, data);
|
server.eventVoiceStateUpdate(channel, user, data);
|
||||||
} else {
|
} else {
|
||||||
@@ -2205,12 +2263,12 @@ export default class InternalClient {
|
|||||||
client.emit("warn", "voice state update but user or server not in cache");
|
client.emit("warn", "voice state update but user or server not in cache");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (user && user.id === self.user.id) { // only for detecting self user movements for connections.
|
if (user && user.id === this.user.id) { // only for detecting self user movements for connections.
|
||||||
var connection = self.voiceConnections.get("server", server);
|
var connection = this.voiceConnections.get("server", server);
|
||||||
// existing connection, perhaps channel moved
|
// existing connection, perhaps channel moved
|
||||||
if (connection && connection.voiceChannel && connection.voiceChannel.id !== data.channel_id) {
|
if (connection && connection.voiceChannel && connection.voiceChannel.id !== data.channel_id) {
|
||||||
// moved, update info
|
// moved, update info
|
||||||
connection.voiceChannel = self.channels.get("id", data.channel_id);
|
connection.voiceChannel = this.channels.get("id", data.channel_id);
|
||||||
client.emit("voiceMoved", connection.voiceChannel); // Moved to a new channel
|
client.emit("voiceMoved", connection.voiceChannel); // Moved to a new channel
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2218,7 +2276,7 @@ export default class InternalClient {
|
|||||||
break;
|
break;
|
||||||
case PacketType.SERVER_MEMBERS_CHUNK:
|
case PacketType.SERVER_MEMBERS_CHUNK:
|
||||||
|
|
||||||
var server = self.servers.get("id", data.guild_id);
|
var server = this.servers.get("id", data.guild_id);
|
||||||
|
|
||||||
if (server) {
|
if (server) {
|
||||||
|
|
||||||
@@ -2234,15 +2292,15 @@ export default class InternalClient {
|
|||||||
joinedAt: Date.parse(user.joined_at),
|
joinedAt: Date.parse(user.joined_at),
|
||||||
nick: user.nick || null
|
nick: user.nick || null
|
||||||
};
|
};
|
||||||
server.members.add(self.users.add(new User(user.user, client)));
|
server.members.add(this.users.add(new User(user.user, client)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (self.forceFetchCount.hasOwnProperty(server.id)) {
|
if (this.forceFetchCount.hasOwnProperty(server.id)) {
|
||||||
if (self.forceFetchCount[server.id] <= 1) {
|
if (this.forceFetchCount[server.id] <= 1) {
|
||||||
delete self.forceFetchCount[server.id];
|
delete this.forceFetchCount[server.id];
|
||||||
self.checkReady();
|
this.checkReady();
|
||||||
} else {
|
} else {
|
||||||
self.forceFetchCount[server.id]--;
|
this.forceFetchCount[server.id]--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2258,73 +2316,73 @@ export default class InternalClient {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (data.type === 1) { // accepted/got accepted a friend request
|
if (data.type === 1) { // accepted/got accepted a friend request
|
||||||
var inUser = self.incoming_friend_requests.get("id", data.id);
|
var inUser = this.incoming_friend_requests.get("id", data.id);
|
||||||
if (inUser) {
|
if (inUser) {
|
||||||
// client accepted another user
|
// client accepted another user
|
||||||
self.incoming_friend_requests.remove(self.friends.add(new User(data.user, client)));
|
this.incoming_friend_requests.remove(this.friends.add(new User(data.user, client)));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var outUser = self.outgoing_friend_requests.get("id", data.id);
|
var outUser = this.outgoing_friend_requests.get("id", data.id);
|
||||||
if (outUser) {
|
if (outUser) {
|
||||||
// another user accepted the client
|
// another user accepted the client
|
||||||
self.outgoing_friend_requests.remove(self.friends.add(new User(data.user, client)));
|
this.outgoing_friend_requests.remove(this.friends.add(new User(data.user, client)));
|
||||||
client.emit("friendRequestAccepted", outUser);
|
client.emit("friendRequestAccepted", outUser);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if (data.type === 2) {
|
} else if (data.type === 2) {
|
||||||
// client received block
|
// client received block
|
||||||
self.blocked_users.add(new User(data.user, client));
|
this.blocked_users.add(new User(data.user, client));
|
||||||
} else if (data.type === 3) {
|
} else if (data.type === 3) {
|
||||||
// client received friend request
|
// client received friend request
|
||||||
client.emit("friendRequestReceived", self.incoming_friend_requests.add(new User(data.user, client)));
|
client.emit("friendRequestReceived", this.incoming_friend_requests.add(new User(data.user, client)));
|
||||||
} else if (data.type === 4) {
|
} else if (data.type === 4) {
|
||||||
// client sent friend request
|
// client sent friend request
|
||||||
self.outgoing_friend_requests.add(new User(data.user, client));
|
this.outgoing_friend_requests.add(new User(data.user, client));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PacketType.FRIEND_REMOVE:
|
case PacketType.FRIEND_REMOVE:
|
||||||
if (this.user.bot) {
|
if (this.user.bot) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var user = self.friends.get("id", data.id);
|
var user = this.friends.get("id", data.id);
|
||||||
if (user) {
|
if (user) {
|
||||||
self.friends.remove(user);
|
this.friends.remove(user);
|
||||||
client.emit("friendRemoved", user);
|
client.emit("friendRemoved", user);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
user = self.blocked_users.get("id", data.id);
|
user = this.blocked_users.get("id", data.id);
|
||||||
if (user) { // they rejected friend request
|
if (user) { // they rejected friend request
|
||||||
self.blocked_users.remove(user);
|
this.blocked_users.remove(user);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
user = self.incoming_friend_requests.get("id", data.id);
|
user = this.incoming_friend_requests.get("id", data.id);
|
||||||
if (user) { // they rejected outgoing friend request OR client user manually deleted incoming thru web client/other clients
|
if (user) { // they rejected outgoing friend request OR client user manually deleted incoming thru web client/other clients
|
||||||
var rejectedUser = self.outgoing_friend_requests.get("id", user.id);
|
var rejectedUser = this.outgoing_friend_requests.get("id", user.id);
|
||||||
if (rejectedUser) {
|
if (rejectedUser) {
|
||||||
// other person rejected outgoing
|
// other person rejected outgoing
|
||||||
client.emit("friendRequestRejected", self.outgoing_friend_requests.remove(rejectedUser));
|
client.emit("friendRequestRejected", this.outgoing_friend_requests.remove(rejectedUser));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// incoming deleted manually
|
// incoming deleted manually
|
||||||
self.incoming_friend_requests.remove(user);
|
this.incoming_friend_requests.remove(user);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
user = self.outgoing_friend_requests.get("id", data.id);
|
user = this.outgoing_friend_requests.get("id", data.id);
|
||||||
if (user) { // client cancelled incoming friend request OR client user manually deleted outgoing thru web client/other clients
|
if (user) { // client cancelled incoming friend request OR client user manually deleted outgoing thru web client/other clients
|
||||||
var incomingCancel = self.incoming_friend_requests.get("id", user.id);
|
var incomingCancel = this.incoming_friend_requests.get("id", user.id);
|
||||||
if (incomingCancel) {
|
if (incomingCancel) {
|
||||||
// client cancelled incoming
|
// client cancelled incoming
|
||||||
self.incoming_friend_requests.remove(user);
|
this.incoming_friend_requests.remove(user);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// outgoing deleted manually
|
// outgoing deleted manually
|
||||||
self.outgoing_friend_requests.remove(user);
|
this.outgoing_friend_requests.remove(user);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -2332,6 +2390,5 @@ export default class InternalClient {
|
|||||||
client.emit("unknown", packet);
|
client.emit("unknown", packet);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,6 +90,7 @@ Constants.PacketType = {
|
|||||||
MESSAGE_UPDATE : "MESSAGE_UPDATE",
|
MESSAGE_UPDATE : "MESSAGE_UPDATE",
|
||||||
PRESENCE_UPDATE : "PRESENCE_UPDATE",
|
PRESENCE_UPDATE : "PRESENCE_UPDATE",
|
||||||
READY : "READY",
|
READY : "READY",
|
||||||
|
RESUME : "RESUME",
|
||||||
SERVER_BAN_ADD : "GUILD_BAN_ADD",
|
SERVER_BAN_ADD : "GUILD_BAN_ADD",
|
||||||
SERVER_BAN_REMOVE: "GUILD_BAN_REMOVE",
|
SERVER_BAN_REMOVE: "GUILD_BAN_REMOVE",
|
||||||
SERVER_CREATE : "GUILD_CREATE",
|
SERVER_CREATE : "GUILD_CREATE",
|
||||||
|
|||||||
Reference in New Issue
Block a user