mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-10 16:43:31 +01:00
added createRole, updateRole and deleteRole
This commit is contained in:
@@ -325,6 +325,46 @@ var Client = (function (_EventEmitter) {
|
||||
});
|
||||
};
|
||||
|
||||
//def createRole
|
||||
|
||||
Client.prototype.createRole = function createRole(server) {
|
||||
var data = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
|
||||
var callback = arguments.length <= 2 || arguments[2] === undefined ? function (err, res) {} : arguments[2];
|
||||
|
||||
var self = this;
|
||||
return new Promise(function (resolve, reject) {
|
||||
if (typeof data === "function") {
|
||||
// data is the callback
|
||||
callback = data;
|
||||
}
|
||||
self.internal.createRole(server, data).then(function (role) {
|
||||
callback(null, role);
|
||||
resolve(role);
|
||||
})["catch"](function (e) {
|
||||
callback(e);
|
||||
reject(e);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
//def deleteRole
|
||||
|
||||
Client.prototype.deleteRole = function deleteRole(role) {
|
||||
var callback = arguments.length <= 1 || arguments[1] === undefined ? function (err) {} : arguments[1];
|
||||
|
||||
var self = this;
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
self.internal.deleteRole(role).then(function () {
|
||||
callback();
|
||||
resolve();
|
||||
})["catch"](function (e) {
|
||||
callback(e);
|
||||
reject(e);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
return Client;
|
||||
})(EventEmitter);
|
||||
|
||||
|
||||
@@ -456,6 +456,100 @@ var InternalClient = (function () {
|
||||
});
|
||||
};
|
||||
|
||||
// def createRole
|
||||
|
||||
InternalClient.prototype.createRole = function createRole(server, data) {
|
||||
var self = this;
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
server = self.resolver.resolveServer(server);
|
||||
|
||||
request.post(Endpoints.SERVER_ROLES(server.id)).set("authorization", self.token).end(function (err, res) {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
|
||||
var role = server.roles.add(new Role(res.body, server, self.client));
|
||||
|
||||
if (data) {
|
||||
|
||||
self.updateRole(role, data).then(resolve)["catch"](reject);
|
||||
} else {
|
||||
resolve(role);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// def updateRole
|
||||
|
||||
InternalClient.prototype.updateRole = function updateRole(role, data) {
|
||||
var self = this;
|
||||
data = data || {};
|
||||
data.permissions = data.permissions || [];
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
var server = self.resolver.resolveServer(role.server);
|
||||
|
||||
var permissions = 0;
|
||||
for (var _iterator2 = data.permissions, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
|
||||
var _ref2;
|
||||
|
||||
if (_isArray2) {
|
||||
if (_i2 >= _iterator2.length) break;
|
||||
_ref2 = _iterator2[_i2++];
|
||||
} else {
|
||||
_i2 = _iterator2.next();
|
||||
if (_i2.done) break;
|
||||
_ref2 = _i2.value;
|
||||
}
|
||||
|
||||
var perm = _ref2;
|
||||
|
||||
if (perm instanceof String || typeof perm === "string") {
|
||||
permissions |= Constants.Permissions[perm] || 0;
|
||||
} else {
|
||||
permissions |= perm;
|
||||
}
|
||||
}
|
||||
|
||||
data.color = data.color || 0;
|
||||
|
||||
request.patch(Endpoints.SERVER_ROLES(server.id) + "/" + role.id).set("authorization", self.token).send({
|
||||
color: data.color || role.color,
|
||||
hoist: data.hoist || role.hoist,
|
||||
name: data.name || role.name,
|
||||
permissions: permissions
|
||||
}).end(function (err, res) {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
var nrole = new Role(res.body, server, self.client);
|
||||
resolve(server.roles.update(role, nrole));
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// def deleteRole
|
||||
|
||||
InternalClient.prototype.deleteRole = function deleteRole(role) {
|
||||
var self = this;
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
request.del(Endpoints.SERVER_ROLES(role.server.id) + "/" + role.id).set("authorization", self.token).end(function (err, res) {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve();
|
||||
// the ws cache will handle it
|
||||
// role.server.roles.remove(role);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
InternalClient.prototype.sendWS = function sendWS(object) {
|
||||
if (this.websocket) this.websocket.send(JSON.stringify(object));
|
||||
};
|
||||
@@ -593,19 +687,19 @@ var InternalClient = (function () {
|
||||
var server = self.servers.get("id", data.id);
|
||||
if (server) {
|
||||
|
||||
for (var _iterator2 = server.channels, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
|
||||
var _ref2;
|
||||
for (var _iterator3 = server.channels, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
|
||||
var _ref3;
|
||||
|
||||
if (_isArray2) {
|
||||
if (_i2 >= _iterator2.length) break;
|
||||
_ref2 = _iterator2[_i2++];
|
||||
if (_isArray3) {
|
||||
if (_i3 >= _iterator3.length) break;
|
||||
_ref3 = _iterator3[_i3++];
|
||||
} else {
|
||||
_i2 = _iterator2.next();
|
||||
if (_i2.done) break;
|
||||
_ref2 = _i2.value;
|
||||
_i3 = _iterator3.next();
|
||||
if (_i3.done) break;
|
||||
_ref3 = _i3.value;
|
||||
}
|
||||
|
||||
var channel = _ref2;
|
||||
var channel = _ref3;
|
||||
|
||||
self.channels.remove(channel);
|
||||
}
|
||||
@@ -841,7 +935,7 @@ var InternalClient = (function () {
|
||||
client.emit("userTypingStart", user, channel);
|
||||
}
|
||||
setTimeout(function () {
|
||||
if (Date.now() - user.typing.since > 5990) {
|
||||
if (Date.now() - user.typing.since > 5500) {
|
||||
// they haven't typed since
|
||||
user.typing.since = null;
|
||||
user.typing.channel = null;
|
||||
|
||||
18
lib/index.js
18
lib/index.js
@@ -13,10 +13,20 @@ a.on("warn", function (m) {
|
||||
});
|
||||
|
||||
a.on("message", function (m) {
|
||||
if (m.content === "$$$") a.createChannel(m.channel.server, "quackducks").then(function (c) {
|
||||
|
||||
a.sendMessage(c, "I'm alive!");
|
||||
});
|
||||
if (m.content === "$$$") {
|
||||
a.createRole(m.channel.server, {
|
||||
name: "a_role!",
|
||||
color: 0xFF0000,
|
||||
hoist: true,
|
||||
permissions: ["manageRoles"]
|
||||
}).then(function (role) {
|
||||
a.deleteRole(role).then(function () {
|
||||
a.reply(m, "deleted!");
|
||||
});
|
||||
})["catch"](function (e) {
|
||||
console.log(e.stack);
|
||||
});
|
||||
}
|
||||
});
|
||||
a.on("userTypingStart", function (user, chan) {
|
||||
console.log(user.username + " typing");
|
||||
|
||||
@@ -298,6 +298,47 @@ class Client extends EventEmitter {
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
//def createRole
|
||||
createRole(server, data=null, callback=function(err,res){}){
|
||||
var self = this;
|
||||
return new Promise((resolve, reject)=>{
|
||||
if (typeof data === "function") {
|
||||
// data is the callback
|
||||
callback = data;
|
||||
}
|
||||
self.internal.createRole(server, data)
|
||||
.then((role) => {
|
||||
callback(null, role);
|
||||
resolve(role);
|
||||
})
|
||||
.catch(e => {
|
||||
callback(e);
|
||||
reject(e);
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
//def deleteRole
|
||||
deleteRole(role, callback=function(err){}){
|
||||
|
||||
var self = this;
|
||||
return new Promise((resolve, reject) => {
|
||||
|
||||
self.internal.deleteRole(role)
|
||||
.then(() => {
|
||||
callback();
|
||||
resolve();
|
||||
})
|
||||
.catch(e => {
|
||||
callback(e);
|
||||
reject(e);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Client;
|
||||
@@ -490,6 +490,100 @@ class InternalClient {
|
||||
});
|
||||
}
|
||||
|
||||
// def createRole
|
||||
createRole(server, data){
|
||||
var self = this;
|
||||
return new Promise((resolve, reject) => {
|
||||
|
||||
server = self.resolver.resolveServer(server);
|
||||
|
||||
request
|
||||
.post(Endpoints.SERVER_ROLES(server.id))
|
||||
.set("authorization", self.token)
|
||||
.end( (err, res) => {
|
||||
if(err){
|
||||
reject(err);
|
||||
}else{
|
||||
|
||||
var role = server.roles.add(new Role(res.body, server, self.client));
|
||||
|
||||
if(data){
|
||||
|
||||
self.updateRole(role, data)
|
||||
.then(resolve)
|
||||
.catch(reject);
|
||||
|
||||
}else{
|
||||
resolve(role);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
// def updateRole
|
||||
updateRole(role, data){
|
||||
var self = this;
|
||||
data = data || {};
|
||||
data.permissions = data.permissions || [];
|
||||
return new Promise((resolve, reject) => {
|
||||
|
||||
var server = self.resolver.resolveServer(role.server);
|
||||
|
||||
var permissions = 0;
|
||||
for(var perm of data.permissions){
|
||||
if(perm instanceof String || typeof perm === "string"){
|
||||
permissions |= (Constants.Permissions[perm] || 0);
|
||||
}else{
|
||||
permissions |= perm;
|
||||
}
|
||||
}
|
||||
|
||||
data.color = data.color || 0;
|
||||
|
||||
request
|
||||
.patch(Endpoints.SERVER_ROLES(server.id)+"/"+role.id)
|
||||
.set("authorization", self.token)
|
||||
.send({
|
||||
color : data.color || role.color,
|
||||
hoist : data.hoist || role.hoist,
|
||||
name : data.name || role.name,
|
||||
permissions : permissions
|
||||
})
|
||||
.end((err, res) => {
|
||||
if(err){
|
||||
reject(err);
|
||||
}else{
|
||||
var nrole = new Role(res.body, server, self.client);
|
||||
resolve(
|
||||
server.roles.update(role, nrole)
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
// def deleteRole
|
||||
deleteRole(role){
|
||||
var self = this;
|
||||
return new Promise((resolve, reject) => {
|
||||
|
||||
request
|
||||
.del(Endpoints.SERVER_ROLES(role.server.id)+"/"+role.id)
|
||||
.set("authorization", self.token)
|
||||
.end((err, res) => {
|
||||
if(err){
|
||||
reject(err);
|
||||
}else{
|
||||
resolve();
|
||||
// the ws cache will handle it
|
||||
// role.server.roles.remove(role);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
sendWS(object) {
|
||||
if (this.websocket)
|
||||
@@ -874,7 +968,7 @@ class InternalClient {
|
||||
client.emit("userTypingStart", user, channel);
|
||||
}
|
||||
setTimeout(() => {
|
||||
if (Date.now() - user.typing.since > 5990) {
|
||||
if (Date.now() - user.typing.since > 5500) {
|
||||
// they haven't typed since
|
||||
user.typing.since = null;
|
||||
user.typing.channel = null;
|
||||
|
||||
22
src/index.js
22
src/index.js
@@ -7,12 +7,22 @@ a.on("debug", (m) => console.log("[debug]",m));
|
||||
a.on("warn", (m) => console.log("[warn]", m));
|
||||
|
||||
a.on("message", m => {
|
||||
if(m.content === "$$$")
|
||||
a.createChannel(m.channel.server, "quackducks").then( c => {
|
||||
|
||||
a.sendMessage(c, "I'm alive!");
|
||||
|
||||
} );
|
||||
if(m.content === "$$$"){
|
||||
a.createRole(m.channel.server, {
|
||||
name : "a_role!",
|
||||
color : 0xFF0000,
|
||||
hoist : true,
|
||||
permissions : [
|
||||
"manageRoles"
|
||||
]
|
||||
}).then( role => {
|
||||
a.deleteRole(role).then(() => {
|
||||
a.reply(m, "deleted!");
|
||||
})
|
||||
}).catch( e => {
|
||||
console.log(e.stack)
|
||||
});
|
||||
}
|
||||
});
|
||||
a.on("userTypingStart", (user, chan) => {
|
||||
console.log(user.username + " typing");
|
||||
|
||||
Reference in New Issue
Block a user