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

@@ -357,6 +357,56 @@ class Client extends EventEmitter {
});
}
// def addUserToRole
addUserToRole(member, role, callback=function(err){}){
return this.addMemberToRole(member, role, callback);
}
// def removeMemberFromRole
removeMemberFromRole(member, role, callback=function(err){}){
var self = this;
return new Promise((resolve, reject) => {
self.internal.removeMemberFromRole(member, role)
.then(() => {
callback();
resolve();
})
.catch(e => {
callback(e);
reject(e);
});
});
}
// def removeUserFromRole
removeUserFromRole(member, role, callback=function(err){}){
return this.removeUserFromRole(member, role, callback);
}
// def createInvite
createInvite(chanServ, options, callback=function(err,invite){}){
var self = this;
return new Promise((resolve, reject) => {
if (typeof options === "function") {
// length is the callback
callback = options;
}
self.internal.createInvite(chanServ, options)
.then(invite => {
callback(null, invite);
resolve(invite);
})
.catch(e => {
callback(e);
reject(e);
});
});
}
}
module.exports = Client;

View File

@@ -19,7 +19,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;
@@ -621,6 +622,95 @@ class InternalClient {
});
}
//def removeMemberFromRole
removeMemberFromRole(member, role){
var self = this;
return new Promise((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(r => 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((err) => {
if(err){
reject(err);
}else{
resolve();
}
});
}else{
reject(new Error("member not in server"));
}
});
}
// def createInvite
createInvite(chanServ, options){
var self = this;
return new Promise((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((err, res) => {
if(err){
reject(err);
}else{
resolve(new Invite(res.body, self.channels.get("id", res.body.channel.id), self.client));
}
});
});
}
sendWS(object) {
if (this.websocket)

26
src/Structures/Invite.js Normal file
View File

@@ -0,0 +1,26 @@
"use strict";
var Server = require("./Server.js");
var ServerChannel = require("./ServerChannel.js");
class Invite{
constructor(data, chan, client){
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;
}
toString(){
return `https://discord.gg/${this.code}`;
}
}
module.exports = Invite;

View File

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