Added createInvite

This commit is contained in:
hydrabolt
2015-11-05 18:39:02 +00:00
parent 164e6b1b7e
commit f6dfea5abd
8 changed files with 343 additions and 30 deletions

View File

@@ -383,6 +383,62 @@ var Client = (function (_EventEmitter) {
});
};
// def addUserToRole
Client.prototype.addUserToRole = function addUserToRole(member, role) {
var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err) {} : arguments[2];
return this.addMemberToRole(member, role, callback);
};
// def removeMemberFromRole
Client.prototype.removeMemberFromRole = function removeMemberFromRole(member, role) {
var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err) {} : arguments[2];
var self = this;
return new Promise(function (resolve, reject) {
self.internal.removeMemberFromRole(member, role).then(function () {
callback();
resolve();
})["catch"](function (e) {
callback(e);
reject(e);
});
});
};
// def removeUserFromRole
Client.prototype.removeUserFromRole = function removeUserFromRole(member, role) {
var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err) {} : arguments[2];
return this.removeUserFromRole(member, role, callback);
};
// def createInvite
Client.prototype.createInvite = function createInvite(chanServ, options) {
var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err, invite) {} : arguments[2];
var self = this;
return new Promise(function (resolve, reject) {
if (typeof options === "function") {
// length is the callback
callback = options;
}
self.internal.createInvite(chanServ, options).then(function (invite) {
callback(null, invite);
resolve(invite);
})["catch"](function (e) {
callback(e);
reject(e);
});
});
};
return Client;
})(EventEmitter);

View File

@@ -21,7 +21,8 @@ var User = require("../Structures/User.js"),
PMChannel = require("../Structures/PMChannel.js"),
Server = require("../Structures/Server.js"),
Message = require("../Structures/Message.js"),
Role = require("../Structures/Role.js");
Role = require("../Structures/Role.js"),
Invite = require("../Structures/Invite.js");
var zlib;
@@ -584,6 +585,88 @@ var InternalClient = (function () {
});
};
//def removeMemberFromRole
InternalClient.prototype.removeMemberFromRole = function removeMemberFromRole(member, role) {
var self = this;
return new Promise(function (resolve, reject) {
member = self.resolver.resolveUser(member);
if (!member || !role) {
reject(new Error("member/role not in server"));
return;
}
if (role.server.memberMap[member.id]) {
var roleIDS = role.server.memberMap[member.id].roles.map(function (r) {
return r.id;
});
for (var item in roleIDS) {
if (roleIDS[item] === role.id) {
roleIDS.splice(item, 1);
}
}
request.patch(Endpoints.SERVER_MEMBERS(role.server.id) + "/" + member.id).set("authorization", self.token).send({
roles: roleIDS
}).end(function (err) {
if (err) {
reject(err);
} else {
resolve();
}
});
} else {
reject(new Error("member not in server"));
}
});
};
// def createInvite
InternalClient.prototype.createInvite = function createInvite(chanServ, options) {
var self = this;
return new Promise(function (resolve, reject) {
if (chanServ instanceof Channel) {
// do something
} else if (chanServ instanceof Server) {
// do something
} else {
chanServ = self.resolver.resolveServer(chanServ) || self.resolver.resolveChannel(chanServ);
}
if (!chanServ) {
reject(new Error("couldn't resolve where"));
return;
}
options = options || {};
options.max_age = options.maxAge || 0;
options.max_uses = options.maxUses || 0;
options.temporary = options.temporary || false;
options.xkcdpass = options.xkcd || false;
var epoint;
if (chanServ instanceof Channel) {
epoint = Endpoints.CHANNEL_INVITES(chanServ.id);
} else {
epoint = Endpoints.SERVER_INVITES(chanServ.id);
}
request.post(epoint).set("authorization", self.token).send(options).end(function (err, res) {
if (err) {
reject(err);
} else {
resolve(new Invite(res.body, self.channels.get("id", res.body.channel.id), self.client));
}
});
});
};
InternalClient.prototype.sendWS = function sendWS(object) {
if (this.websocket) this.websocket.send(JSON.stringify(object));
};

32
lib/Structures/Invite.js Normal file
View File

@@ -0,0 +1,32 @@
"use strict";
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var Server = require("./Server.js");
var ServerChannel = require("./ServerChannel.js");
var Invite = (function () {
function Invite(data, chan, client) {
_classCallCheck(this, Invite);
this.maxAge = data.max_age;
this.code = data.code;
this.server = chan.server;
this.channel = chan;
this.revoked = data.revoked;
this.createdAt = Date.parse(data.created_at);
this.temporary = data.temporary;
this.uses = data.uses;
this.maxUses = data.uses;
this.inviter = client.internal.users.get("id", data.inviter.id);
this.xkcd = data.xkcdpass;
}
Invite.prototype.toString = function toString() {
return "https://discord.gg/" + this.code;
};
return Invite;
})();
module.exports = Invite;

View File

@@ -14,19 +14,10 @@ a.on("warn", function (m) {
a.on("message", function (m) {
if (m.content === "$$$") {
a.createRole(m.channel.server, {
name: "a_role!",
color: 0xFF0000,
hoist: true,
permissions: ["manageRoles"]
}).then(function (role) {
a.addMemberToRole(m.author, role).then(function () {
a.reply(m, "added!");
})["catch"](function (e) {
console.log(e.stack);
});
a.createInvite(m.channel).then(function (invite) {
return a.reply(m, invite);
})["catch"](function (e) {
console.log(e.stack);
return console.log(e.stack);
});
}
});