mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
Fixed server update listener
This commit is contained in:
@@ -543,7 +543,31 @@ var InternalClient = (function () {
|
||||
client.emit("warn", "server was deleted but it was not in the cache");
|
||||
}
|
||||
break;
|
||||
|
||||
case PacketType.SERVER_UPDATE:
|
||||
var server = self.servers.get("id", data.id);
|
||||
if (server && !server.inasync) {
|
||||
// server exists
|
||||
server.inasync = true;
|
||||
data.members = data.members || [];
|
||||
data.channels = data.channels || [];
|
||||
var newserver = new Server(data, self);
|
||||
newserver.members = server.members;
|
||||
newserver.memberMap = server.memberMap;
|
||||
newserver.channels = server.channels;
|
||||
if (newserver.equalsStrict(server)) {
|
||||
// already the same don't do anything
|
||||
client.emit("debug", "received server update but server already updated");
|
||||
} else {
|
||||
self.servers.update(server, newserver);
|
||||
client.emit("serverUpdated", server, newserver);
|
||||
}
|
||||
server.inasync = false;
|
||||
} else if (!server) {
|
||||
client.emit("warn", "server was updated but it was not in the cache");
|
||||
self.servers.add(new Server(data, self));
|
||||
client.emit("serverCreated", server);
|
||||
}
|
||||
break;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@@ -103,7 +103,9 @@ var PacketType = {
|
||||
MESSAGE_CREATE: "MESSAGE_CREATE",
|
||||
MESSAGE_UPDATE: "MESSAGE_UPDATE",
|
||||
MESSAGE_DELETE: "MESSAGE_DELETE",
|
||||
SERVER_CREATE: "GUILD_CREATE"
|
||||
SERVER_CREATE: "GUILD_CREATE",
|
||||
SERVER_DELETE: "GUILD_DELETE",
|
||||
SERVER_UPDATE: "GUILD_UPDATE"
|
||||
};
|
||||
|
||||
exports.API_ENDPOINT = API;
|
||||
|
||||
@@ -13,7 +13,6 @@ var Message = (function () {
|
||||
|
||||
this.channel = channel;
|
||||
this.client = client;
|
||||
console.log("update", data);
|
||||
this.nonce = data.nonce;
|
||||
this.attachments = data.attachments;
|
||||
this.tts = data.tts;
|
||||
|
||||
@@ -14,6 +14,8 @@ var TextChannel = require("./TextChannel.js");
|
||||
var VoiceChannel = require("./VoiceChannel.js");
|
||||
var Role = require("./Role.js");
|
||||
|
||||
var strictKeys = ["region", "ownerID", "name", "id", "icon", "afkTimeout", "afkChannelID"];
|
||||
|
||||
var Server = (function (_Equality) {
|
||||
_inherits(Server, _Equality);
|
||||
|
||||
@@ -69,6 +71,32 @@ var Server = (function (_Equality) {
|
||||
return this.name;
|
||||
};
|
||||
|
||||
Server.prototype.equalsStrict = function equalsStrict(obj) {
|
||||
if (obj instanceof Server) {
|
||||
for (var _iterator = strictKeys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
|
||||
var _ref;
|
||||
|
||||
if (_isArray) {
|
||||
if (_i >= _iterator.length) break;
|
||||
_ref = _iterator[_i++];
|
||||
} else {
|
||||
_i = _iterator.next();
|
||||
if (_i.done) break;
|
||||
_ref = _i.value;
|
||||
}
|
||||
|
||||
var key = _ref;
|
||||
|
||||
if (obj[key] !== this[key]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
_createClass(Server, [{
|
||||
key: "iconURL",
|
||||
get: function get() {
|
||||
|
||||
@@ -69,8 +69,9 @@ var Cache = (function (_Array) {
|
||||
};
|
||||
|
||||
Cache.prototype.update = function update(old, data) {
|
||||
var index = this.get(this.discrim, old);
|
||||
if (~index) {
|
||||
var item = this.get(this.discrim, old[this.discrim]);
|
||||
if (item) {
|
||||
var index = this.indexOf(item);
|
||||
this[index] = data;
|
||||
return this[index];
|
||||
} else {
|
||||
@@ -83,7 +84,7 @@ var Cache = (function (_Array) {
|
||||
if (~index) {
|
||||
this.splice(index, 1);
|
||||
} else {
|
||||
var item = this.get(this.discrim, data.id);
|
||||
var item = this.get(this.discrim, data[this.discrim]);
|
||||
if (item) {
|
||||
this.splice(this.indexOf(item), 1);
|
||||
}
|
||||
|
||||
@@ -27,6 +27,11 @@ var Equality = (function () {
|
||||
return false;
|
||||
};
|
||||
|
||||
Equality.prototype.equalsStrict = function equalsStrict(object) {
|
||||
// override per class type
|
||||
return;
|
||||
};
|
||||
|
||||
_createClass(Equality, [{
|
||||
key: "eqDiscriminator",
|
||||
get: function get() {
|
||||
|
||||
@@ -8,6 +8,9 @@ var a = new module.exports.Client();
|
||||
a.on("debug", function (m) {
|
||||
return console.log("[debug]", m);
|
||||
});
|
||||
a.on("warn", function (m) {
|
||||
return console.log("[warn]", m);
|
||||
});
|
||||
|
||||
a.on("message", function (m) {
|
||||
if (m.content === "$$$") a.internal.createServer("H a h").then(function (srv) {
|
||||
@@ -15,6 +18,9 @@ a.on("message", function (m) {
|
||||
a.reply(m, srv);
|
||||
});
|
||||
});
|
||||
a.on("serverUpdated", function (oldsrv, newsrv) {
|
||||
console.log(oldsrv.name, "v", newsrv.name);
|
||||
});
|
||||
|
||||
a.login(process.env["discordEmail"], process.env["discordPass"])["catch"](function (e) {
|
||||
return console.log(e);
|
||||
|
||||
@@ -561,7 +561,31 @@ class InternalClient {
|
||||
client.emit("warn", "server was deleted but it was not in the cache");
|
||||
}
|
||||
break;
|
||||
|
||||
case PacketType.SERVER_UPDATE:
|
||||
var server = self.servers.get("id", data.id);
|
||||
if(server && !server.inasync){
|
||||
// server exists
|
||||
server.inasync = true;
|
||||
data.members = data.members || [];
|
||||
data.channels = data.channels || [];
|
||||
var newserver = new Server(data, self);
|
||||
newserver.members = server.members;
|
||||
newserver.memberMap = server.memberMap;
|
||||
newserver.channels = server.channels;
|
||||
if(newserver.equalsStrict(server)){
|
||||
// already the same don't do anything
|
||||
client.emit("debug", "received server update but server already updated");
|
||||
}else{
|
||||
self.servers.update(server, newserver);
|
||||
client.emit("serverUpdated", server, newserver);
|
||||
}
|
||||
server.inasync = false;
|
||||
}else if(!server){
|
||||
client.emit("warn", "server was updated but it was not in the cache");
|
||||
self.servers.add( new Server(data, self) );
|
||||
client.emit("serverCreated", server);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,7 +65,9 @@ var PacketType = {
|
||||
MESSAGE_CREATE : "MESSAGE_CREATE",
|
||||
MESSAGE_UPDATE : "MESSAGE_UPDATE",
|
||||
MESSAGE_DELETE : "MESSAGE_DELETE",
|
||||
SERVER_CREATE : "GUILD_CREATE"
|
||||
SERVER_CREATE : "GUILD_CREATE",
|
||||
SERVER_DELETE : "GUILD_DELETE",
|
||||
SERVER_UPDATE : "GUILD_UPDATE",
|
||||
}
|
||||
|
||||
exports.API_ENDPOINT = API;
|
||||
|
||||
@@ -7,7 +7,6 @@ class Message{
|
||||
constructor(data, channel, client){
|
||||
this.channel = channel;
|
||||
this.client = client;
|
||||
console.log("update", data);
|
||||
this.nonce = data.nonce;
|
||||
this.attachments = data.attachments;
|
||||
this.tts = data.tts;
|
||||
|
||||
@@ -8,6 +8,10 @@ var TextChannel = require("./TextChannel.js");
|
||||
var VoiceChannel = require("./VoiceChannel.js");
|
||||
var Role = require("./Role.js");
|
||||
|
||||
var strictKeys = [
|
||||
"region", "ownerID", "name", "id", "icon", "afkTimeout", "afkChannelID"
|
||||
];
|
||||
|
||||
class Server extends Equality {
|
||||
constructor(data, client) {
|
||||
|
||||
@@ -78,6 +82,19 @@ class Server extends Equality {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
equalsStrict(obj){
|
||||
if(obj instanceof Server){
|
||||
for(var key of strictKeys){
|
||||
if(obj[key] !== this[key]){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
module.exports = Server;
|
||||
@@ -48,8 +48,9 @@ class Cache extends Array {
|
||||
}
|
||||
|
||||
update(old, data) {
|
||||
var index = this.get(this.discrim, old);
|
||||
if (~index) {
|
||||
var item = this.get(this.discrim, old[this.discrim]);
|
||||
if (item) {
|
||||
var index = this.indexOf(item);
|
||||
this[index] = data;
|
||||
return this[index];
|
||||
} else {
|
||||
@@ -62,7 +63,7 @@ class Cache extends Array {
|
||||
if (~index) {
|
||||
this.splice(index, 1);
|
||||
} else {
|
||||
var item = this.get(this.discrim, data.id);
|
||||
var item = this.get(this.discrim, data[this.discrim]);
|
||||
if (item) {
|
||||
this.splice(this.indexOf(item), 1);
|
||||
}
|
||||
|
||||
@@ -24,6 +24,11 @@ class Equality{
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
equalsStrict(object){
|
||||
// override per class type
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Equality;
|
||||
@@ -4,6 +4,7 @@ module.exports = {
|
||||
|
||||
var a = new module.exports.Client();
|
||||
a.on("debug", (m) => console.log("[debug]",m));
|
||||
a.on("warn", (m) => console.log("[warn]", m));
|
||||
|
||||
a.on("message", m => {
|
||||
if(m.content === "$$$")
|
||||
@@ -12,5 +13,8 @@ a.on("message", m => {
|
||||
a.reply(m, srv);
|
||||
});
|
||||
});
|
||||
a.on("serverUpdated", (oldsrv, newsrv) => {
|
||||
console.log(oldsrv.name, "v", newsrv.name);
|
||||
});
|
||||
|
||||
a.login(process.env["discordEmail"], process.env["discordPass"]).catch((e)=>console.log(e));
|
||||
Reference in New Issue
Block a user