mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-12 01:23:31 +01:00
Did this work?
idk
This commit is contained in:
256
lib/ChannelPermissions.js
Normal file
256
lib/ChannelPermissions.js
Normal file
@@ -0,0 +1,256 @@
|
||||
"use strict";
|
||||
|
||||
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
var ChannelPermissions = (function () {
|
||||
function ChannelPermissions(data, channel) {
|
||||
_classCallCheck(this, ChannelPermissions);
|
||||
|
||||
var self = this;
|
||||
|
||||
function getBit(x) {
|
||||
return (self.packed >>> x & 1) === 1;
|
||||
}
|
||||
|
||||
this.type = data.type; //either member or role
|
||||
this.id = data.id;
|
||||
|
||||
if (this.type === "member") {
|
||||
this.packed = channel.server.getMember("id", data.id).evalPerms.packed;
|
||||
} else {
|
||||
this.packed = channel.server.getRole("id", data.id).packed;
|
||||
}
|
||||
|
||||
this.packed = this.packed & ~data.deny;
|
||||
this.packed = this.packed | data.allow;
|
||||
|
||||
this.deny = data.deny;
|
||||
this.allow = data.allow;
|
||||
}
|
||||
|
||||
ChannelPermissions.prototype.serialise = function serialise() {
|
||||
return {
|
||||
createInstantInvite: this.createInstantInvite,
|
||||
manageRoles: this.manageRoles,
|
||||
manageChannels: this.manageChannels,
|
||||
readMessages: this.readMessages,
|
||||
sendMessages: this.sendMessages,
|
||||
sendTTSMessages: this.sendTTSMessages,
|
||||
manageMessages: this.manageMessages,
|
||||
embedLinks: this.embedLinks,
|
||||
attachFiles: this.attachFiles,
|
||||
readMessageHistory: this.readMessageHistory,
|
||||
mentionEveryone: this.mentionEveryone,
|
||||
voiceConnect: this.voiceConnect,
|
||||
voiceSpeak: this.voiceSpeak,
|
||||
voiceMuteMembers: this.voiceMuteMembers,
|
||||
voiceDeafenMembers: this.voiceDeafenMembers,
|
||||
voiceMoveMember: this.voiceMoveMembers,
|
||||
voiceUseVoiceActivation: this.voiceUseVoiceActivation
|
||||
};
|
||||
};
|
||||
|
||||
ChannelPermissions.prototype.serialize = function serialize() {
|
||||
return this.serialise();
|
||||
};
|
||||
|
||||
ChannelPermissions.prototype.getBit = function getBit(x) {
|
||||
if ((this.packed >>> 3 & 1) === 1) {
|
||||
return true;
|
||||
}
|
||||
return (this.packed >>> x & 1) === 1;
|
||||
};
|
||||
|
||||
ChannelPermissions.prototype.setBit = function setBit(location, value) {
|
||||
|
||||
if (value) {
|
||||
// allow that permission
|
||||
this.packed |= 1 << location;
|
||||
} else {
|
||||
// not allowed
|
||||
this.packed &= 1 << location;
|
||||
}
|
||||
};
|
||||
|
||||
_createClass(ChannelPermissions, [{
|
||||
key: "asAllowDisallow",
|
||||
get: function get() {
|
||||
|
||||
var allow = 0,
|
||||
disallow = 0;
|
||||
|
||||
function ad(value, position) {
|
||||
if (value) {
|
||||
allow |= 1 << position;
|
||||
} else {
|
||||
disallow |= 1 << position;
|
||||
}
|
||||
}
|
||||
|
||||
ad(this.createInstantInvite, 0);
|
||||
ad(this.manageRoles, 3);
|
||||
ad(this.manageChannels, 4);
|
||||
ad(this.readMessages, 10);
|
||||
ad(this.sendMessages, 11);
|
||||
ad(this.sendTTSMessages, 12);
|
||||
ad(this.manageMessages, 13);
|
||||
ad(this.embedLinks, 14);
|
||||
ad(this.attachFiles, 15);
|
||||
ad(this.readMessageHistory, 16);
|
||||
ad(this.mentionEveryone, 17);
|
||||
ad(this.voiceConnect, 20);
|
||||
ad(this.voiceSpeak, 21);
|
||||
ad(this.voiceMuteMembers, 22);
|
||||
ad(this.voiceDeafenMembers, 23);
|
||||
ad(this.voiceMoveMembers, 24);
|
||||
ad(this.voiceUseVoiceActivation, 25);
|
||||
|
||||
return {
|
||||
allow: allow,
|
||||
deny: disallow
|
||||
};
|
||||
}
|
||||
}, {
|
||||
key: "createInstantInvite",
|
||||
get: function get() {
|
||||
return this.getBit(0);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(0, val);
|
||||
}
|
||||
}, {
|
||||
key: "manageRoles",
|
||||
get: function get() {
|
||||
return this.getBit(3);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(3, val);
|
||||
}
|
||||
}, {
|
||||
key: "manageChannels",
|
||||
get: function get() {
|
||||
return this.getBit(4);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(4, val);
|
||||
}
|
||||
}, {
|
||||
key: "readMessages",
|
||||
get: function get() {
|
||||
return this.getBit(10);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(10, val);
|
||||
}
|
||||
}, {
|
||||
key: "sendMessages",
|
||||
get: function get() {
|
||||
return this.getBit(11);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(11, val);
|
||||
}
|
||||
}, {
|
||||
key: "sendTTSMessages",
|
||||
get: function get() {
|
||||
return this.getBit(12);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(12, val);
|
||||
}
|
||||
}, {
|
||||
key: "manageMessages",
|
||||
get: function get() {
|
||||
return this.getBit(13);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(13, val);
|
||||
}
|
||||
}, {
|
||||
key: "embedLinks",
|
||||
get: function get() {
|
||||
return this.getBit(14);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(14, val);
|
||||
}
|
||||
}, {
|
||||
key: "attachFiles",
|
||||
get: function get() {
|
||||
return this.getBit(15);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(15, val);
|
||||
}
|
||||
}, {
|
||||
key: "readMessageHistory",
|
||||
get: function get() {
|
||||
return this.getBit(16);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(16, val);
|
||||
}
|
||||
}, {
|
||||
key: "mentionEveryone",
|
||||
get: function get() {
|
||||
return this.getBit(17);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(17, val);
|
||||
}
|
||||
}, {
|
||||
key: "voiceConnect",
|
||||
get: function get() {
|
||||
return this.getBit(20);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(20, val);
|
||||
}
|
||||
}, {
|
||||
key: "voiceSpeak",
|
||||
get: function get() {
|
||||
return this.getBit(21);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(21, val);
|
||||
}
|
||||
}, {
|
||||
key: "voiceMuteMembers",
|
||||
get: function get() {
|
||||
return this.getBit(22);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(22, val);
|
||||
}
|
||||
}, {
|
||||
key: "voiceDeafenMembers",
|
||||
get: function get() {
|
||||
return this.getBit(23);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(23, val);
|
||||
}
|
||||
}, {
|
||||
key: "voiceMoveMembers",
|
||||
get: function get() {
|
||||
return this.getBit(24);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(24, val);
|
||||
}
|
||||
}, {
|
||||
key: "voiceUseVoiceActivation",
|
||||
get: function get() {
|
||||
return this.getBit(25);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(25, val);
|
||||
}
|
||||
}]);
|
||||
|
||||
return ChannelPermissions;
|
||||
})();
|
||||
|
||||
module.exports = ChannelPermissions;
|
||||
2318
lib/Client.js
Normal file
2318
lib/Client.js
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,58 +0,0 @@
|
||||
"use strict";var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if("value" in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _inherits(subClass,superClass){if(typeof superClass !== "function" && superClass !== null){throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}var InternalClient=require("./InternalClient.js");var EventEmitter=require("events");var Client=(function(_EventEmitter){_inherits(Client,_EventEmitter); /*
|
||||
this class is an interface for the internal
|
||||
client.
|
||||
*/function Client(options){_classCallCheck(this,Client);_EventEmitter.call(this);this.options = options || {};this.internal = new InternalClient(this);} // def login
|
||||
Client.prototype.login = function login(email,password){var cb=arguments.length <= 2 || arguments[2] === undefined?function(err,token){}:arguments[2];var self=this;return new Promise(function(resolve,reject){self.internal.login(email,password).then(function(token){cb(null,token);resolve(token);})["catch"](function(e){cb(e);reject(e);});});}; // def logout
|
||||
Client.prototype.logout = function logout(){var cb=arguments.length <= 0 || arguments[0] === undefined?function(err){}:arguments[0];var self=this;return new Promise(function(resolve,reject){self.internal.logout().then(function(){cb();resolve();})["catch"](function(e){cb(e);reject(e);});});}; // def sendMessage
|
||||
Client.prototype.sendMessage = function sendMessage(where,content){var options=arguments.length <= 2 || arguments[2] === undefined?{}:arguments[2];var callback=arguments.length <= 3 || arguments[3] === undefined?function(e,m){}:arguments[3];var self=this;return new Promise(function(resolve,reject){if(typeof options === "function"){ // options is the callback
|
||||
callback = options;}self.internal.sendMessage(where,content,options).then(function(m){callback(null,m);resolve(m);})["catch"](function(e){callback(e);reject(e);});});}; // def sendTTSMessage
|
||||
Client.prototype.sendTTSMessage = function sendTTSMessage(where,content){var callback=arguments.length <= 2 || arguments[2] === undefined?function(e,m){}:arguments[2];var self=this;return new Promise(function(resolve,reject){self.sendMessage(where,content,{tts:true}).then(function(m){callback(null,m);resolve(m);})["catch"](function(e){callback(e);reject(e);});});}; // def reply
|
||||
Client.prototype.reply = function reply(where,content){var options=arguments.length <= 2 || arguments[2] === undefined?{}:arguments[2];var callback=arguments.length <= 3 || arguments[3] === undefined?function(e,m){}:arguments[3];var self=this;return new Promise(function(resolve,reject){if(typeof options === "function"){ // options is the callback
|
||||
callback = options;}var msg=self.internal.resolver.resolveMessage(where);if(msg){content = msg.author + ", " + content;self.internal.sendMessage(msg,content,options).then(function(m){callback(null,m);resolve(m);})["catch"](function(e){callback(e);reject(e);});}else {var err=new Error("Destination not resolvable to a message!");callback(err);reject(err);}});}; // def replyTTS
|
||||
Client.prototype.replyTTS = function replyTTS(where,content){var callback=arguments.length <= 2 || arguments[2] === undefined?function(){}:arguments[2];return new Promise(function(resolve,reject){self.reply(where,content,{tts:true}).then(function(m){callback(null,m);resolve(m);})["catch"](function(e){callback(e);reject(e);});});}; // def deleteMessage
|
||||
Client.prototype.deleteMessage = function deleteMessage(msg){var options=arguments.length <= 1 || arguments[1] === undefined?{}:arguments[1];var callback=arguments.length <= 2 || arguments[2] === undefined?function(e){}:arguments[2];var self=this;return new Promise(function(resolve,reject){if(typeof options === "function"){ // options is the callback
|
||||
callback = options;}self.internal.deleteMessage(msg,options).then(function(){callback();resolve();})["catch"](function(e){callback(e);reject(e);});});}; //def updateMessage
|
||||
Client.prototype.updateMessage = function updateMessage(msg,content){var options=arguments.length <= 2 || arguments[2] === undefined?{}:arguments[2];var callback=arguments.length <= 3 || arguments[3] === undefined?function(err,msg){}:arguments[3];var self=this;return new Promise(function(resolve,reject){if(typeof options === "function"){ // options is the callback
|
||||
callback = options;}self.internal.updateMessage(msg,content,options).then(function(msg){callback(null,msg);resolve(msg);})["catch"](function(e){callback(e);reject(e);});});}; // def getChannelLogs
|
||||
Client.prototype.getChannelLogs = function getChannelLogs(where){var limit=arguments.length <= 1 || arguments[1] === undefined?500:arguments[1];var options=arguments.length <= 2 || arguments[2] === undefined?{}:arguments[2];var callback=arguments.length <= 3 || arguments[3] === undefined?function(err,logs){}:arguments[3];var self=this;return new Promise(function(resolve,reject){if(typeof options === "function"){ // options is the callback
|
||||
callback = options;}self.internal.getChannelLogs(where,limit,options).then(function(logs){callback(null,logs);resolve(logs);})["catch"](function(e){callback(e);reject(e);});});}; // def getBans
|
||||
Client.prototype.getBans = function getBans(where){var callback=arguments.length <= 1 || arguments[1] === undefined?function(err,bans){}:arguments[1];var self=this;return new Promise(function(resolve,reject){self.internal.getBans(where).then(function(bans){callback(null,bans);resolve(bans);})["catch"](function(e){callback(e);reject(e);});});}; // def sendFile
|
||||
Client.prototype.sendFile = function sendFile(where,attachment){var name=arguments.length <= 2 || arguments[2] === undefined?"image.png":arguments[2];var callback=arguments.length <= 3 || arguments[3] === undefined?function(err,m){}:arguments[3];var self=this;return new Promise(function(resolve,reject){self.internal.sendFile(where,attachment,name).then(function(m){callback(null,m);resolve(m);})["catch"](function(e){callback(e);reject(e);});});}; // def joinServer
|
||||
Client.prototype.joinServer = function joinServer(invite){var callback=arguments.length <= 1 || arguments[1] === undefined?function(err,srv){}:arguments[1];var self=this;return new Promise(function(resolve,reject){self.internal.joinServer(invite).then(function(srv){callback(null,srv);resolve(srv);})["catch"](function(e){callback(e);reject(e);});});}; // def createServer
|
||||
Client.prototype.createServer = function createServer(name){var region=arguments.length <= 1 || arguments[1] === undefined?"london":arguments[1];var callback=arguments.length <= 2 || arguments[2] === undefined?function(err,srv){}:arguments[2];var self=this;return new Promise(function(resolve,reject){self.internal.createServer(name,region).then(function(srv){callback(null,srv);resolve(srv);})["catch"](function(e){callback(e);reject(e);});});}; // def leaveServer
|
||||
Client.prototype.leaveServer = function leaveServer(server){var callback=arguments.length <= 1 || arguments[1] === undefined?function(err){}:arguments[1];var self=this;return new Promise(function(resolve,reject){self.internal.leaveServer(server).then(function(){callback();resolve();})["catch"](function(e){callback(e);reject(e);});});}; // def createChannel
|
||||
Client.prototype.createChannel = function createChannel(server,name){var type=arguments.length <= 2 || arguments[2] === undefined?"text":arguments[2];var callback=arguments.length <= 3 || arguments[3] === undefined?function(err,channel){}:arguments[3];var self=this;return new Promise(function(resolve,reject){if(typeof type === "function"){ // options is the callback
|
||||
callback = type;}self.internal.createChannel(server,name,type).then(function(channel){callback(channel);resolve(channel);})["catch"](function(e){callback(e);reject(e);});});}; // def deleteChannel
|
||||
Client.prototype.deleteChannel = function deleteChannel(channel){var callback=arguments.length <= 1 || arguments[1] === undefined?function(err){}:arguments[1];var self=this;return new Promise(function(resolve,reject){self.internal.deleteChannel(channel).then(function(){callback();resolve();})["catch"](function(e){callback(e);reject(e);});});}; //def banMember
|
||||
Client.prototype.banMember = function banMember(user,server){var length=arguments.length <= 2 || arguments[2] === undefined?1:arguments[2];var callback=arguments.length <= 3 || arguments[3] === undefined?function(err){}:arguments[3];var self=this;return new Promise(function(resolve,reject){if(typeof length === "function"){ // length is the callback
|
||||
callback = length;}self.internal.banMember(user,server,length).then(function(){callback();resolve();})["catch"](function(e){callback(e);reject(e);});});}; //def unbanMember
|
||||
Client.prototype.unbanMember = function unbanMember(user,server){var callback=arguments.length <= 2 || arguments[2] === undefined?function(err){}:arguments[2];var self=this;return new Promise(function(resolve,reject){self.internal.unbanMember(user,server).then(function(){callback();resolve();})["catch"](function(e){callback(e);reject(e);});});}; //def kickMember
|
||||
Client.prototype.kickMember = function kickMember(user,server){var callback=arguments.length <= 2 || arguments[2] === undefined?function(err){}:arguments[2];var self=this;return new Promise(function(resolve,reject){self.internal.kickMember(user,server).then(function(){callback();resolve();})["catch"](function(e){callback(e);reject(e);});});}; //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 updateRole
|
||||
Client.prototype.updateRole = function updateRole(role){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.updateRole(role,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);});});}; //def addMemberToRole
|
||||
Client.prototype.addMemberToRole = function addMemberToRole(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.addMemberToRole(member,role).then(function(){callback();resolve();})["catch"](function(e){callback(e);reject(e);});});}; // 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);});});}; // def deleteInvite
|
||||
Client.prototype.deleteInvite = function deleteInvite(invite){var callback=arguments.length <= 1 || arguments[1] === undefined?function(err){}:arguments[1];var self=this;return new Promise(function(resolve,reject){self.internal.deleteInvite(invite).then(function(){callback();resolve();})["catch"](function(e){callback(e);reject(e);});});}; // def overwritePermissions
|
||||
Client.prototype.overwritePermissions = function overwritePermissions(channel,role){var options=arguments.length <= 2 || arguments[2] === undefined?{}:arguments[2];var callback=arguments.length <= 3 || arguments[3] === undefined?function(err){}:arguments[3];var self=this;return new Promise(function(resolve,reject){self.internal.overwritePermissions(channel,role,options).then(function(){callback();resolve();})["catch"](function(e){callback(e);reject(e);});});}; //def setStatus
|
||||
Client.prototype.setStatus = function setStatus(idleStatus,gameID){var callback=arguments.length <= 2 || arguments[2] === undefined?function(err){}:arguments[2];var self=this;return new Promise(function(resolve,reject){if(typeof gameID === "function"){ // gameID is the callback
|
||||
callback = gameID;}else if(typeof idleStatus === "function"){ // idleStatus is the callback
|
||||
callback = idleStatus;}self.internal.setStatus(idleStatus,gameID).then(function(){callback();resolve();})["catch"](function(e){callback(e);reject(e);});});}; //def sendTyping
|
||||
Client.prototype.sendTyping = function sendTyping(channel){var callback=arguments.length <= 1 || arguments[1] === undefined?function(err){}:arguments[1];var self=this;return new Promise(function(resolve,reject){self.internal.sendTyping(channel).then(function(){callback();resolve();})["catch"](function(e){callback(e);reject(e);});});}; // def setTopic
|
||||
Client.prototype.setTopic = function setTopic(channel,topic){var callback=arguments.length <= 2 || arguments[2] === undefined?function(err){}:arguments[2];var self=this;return new Promise(function(resolve,reject){self.internal.setTopic(channel,topic).then(function(){callback();resolve();})["catch"](function(e){callback(e);reject(e);});});}; //def setChannelName
|
||||
Client.prototype.setChannelName = function setChannelName(channel,name){var callback=arguments.length <= 2 || arguments[2] === undefined?function(err){}:arguments[2];var self=this;return new Promise(function(resolve,reject){self.internal.setChannelName(channel,name).then(function(){callback();resolve();})["catch"](function(e){callback(e);reject(e);});});}; //def setChannelNameAndTopic
|
||||
Client.prototype.setChannelNameAndTopic = function setChannelNameAndTopic(channel,name,topic){var callback=arguments.length <= 3 || arguments[3] === undefined?function(err){}:arguments[3];var self=this;return new Promise(function(resolve,reject){self.internal.setChannelNameAndTopic(channel,name,topic).then(function(){callback();resolve();})["catch"](function(e){callback(e);reject(e);});});}; //def updateChannel
|
||||
Client.prototype.updateChannel = function updateChannel(channel,data){var callback=arguments.length <= 2 || arguments[2] === undefined?function(err){}:arguments[2];var self=this;return new Promise(function(resolve,reject){self.internal.updateChannel(channel,data).then(function(){callback();resolve();})["catch"](function(e){callback(e);reject(e);});});}; //def startTyping
|
||||
Client.prototype.startTyping = function startTyping(channel){var callback=arguments.length <= 1 || arguments[1] === undefined?function(err){}:arguments[1];var self=this;return new Promise(function(resolve,reject){self.internal.startTyping(channel).then(function(){callback(null);resolve();})["catch"](function(e){callback(e);reject(e);});});}; //def stopTyping
|
||||
Client.prototype.stopTyping = function stopTyping(channel){var callback=arguments.length <= 1 || arguments[1] === undefined?function(err){}:arguments[1];var self=this;return new Promise(function(resolve,reject){self.internal.stopTyping(channel).then(function(){callback(null);resolve();})["catch"](function(e){callback(e);reject(e);});});}; //def updateDetails
|
||||
Client.prototype.updateDetails = function updateDetails(details){var callback=arguments.length <= 1 || arguments[1] === undefined?function(err){}:arguments[1];var self=this;return new Promise(function(resolve,reject){self.internal.updateDetails(details).then(function(){callback();resolve();})["catch"](function(err){callback(err);reject(err);});});}; //def setUsername
|
||||
Client.prototype.setUsername = function setUsername(name){var callback=arguments.length <= 1 || arguments[1] === undefined?function(err){}:arguments[1];var self=this;return new Promise(function(resolve,reject){self.internal.setUsername(name).then(function(){callback();resolve();})["catch"](function(err){callback(err);reject(err);});});}; //def setAvatar
|
||||
Client.prototype.setAvatar = function setAvatar(avatar){var callback=arguments.length <= 1 || arguments[1] === undefined?function(err){}:arguments[1];var self=this;return new Promise(function(resolve,reject){self.internal.setAvatar(avatar).then(function(){callback();resolve();})["catch"](function(err){callback(err);reject(err);});});}; //def joinVoiceChannel
|
||||
Client.prototype.joinVoiceChannel = function joinVoiceChannel(channel){var callback=arguments.length <= 1 || arguments[1] === undefined?function(err){}:arguments[1];var self=this;return new Promise(function(resolve,reject){self.internal.joinVoiceChannel(channel).then(function(chan){callback(null,chan);resolve(chan);})["catch"](function(err){callback(err);reject(err);});});}; // def leaveVoiceChannel
|
||||
Client.prototype.leaveVoiceChannel = function leaveVoiceChannel(){var callback=arguments.length <= 0 || arguments[0] === undefined?function(err){}:arguments[0];var self=this;return new Promise(function(resolve,reject){self.internal.leaveVoiceChannel().then(function(){callback();resolve();})["catch"](function(err){callback(err);reject(err);});});};_createClass(Client,[{key:"users",get:function get(){return this.internal.users;}},{key:"channels",get:function get(){return this.internal.channels;}},{key:"servers",get:function get(){return this.internal.servers;}},{key:"privateChannels",get:function get(){return this.internal.private_channels;}},{key:"voiceConnection",get:function get(){return this.internal.voiceConnection;}},{key:"readyTime",get:function get(){return this.internal.readyTime;}},{key:"uptime",get:function get(){return this.internal.uptime;}},{key:"user",get:function get(){return this.internal.user;}}]);return Client;})(EventEmitter);module.exports = Client;
|
||||
@@ -1 +0,0 @@
|
||||
"use strict";exports.IDLE = 0;exports.LOGGING_IN = 1;exports.LOGGED_IN = 2;exports.READY = 3;exports.DISCONNECTED = 4;
|
||||
@@ -1,69 +0,0 @@
|
||||
"use strict";var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if("value" in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var EventEmitter=require("events");var request=require("superagent");var WebSocket=require("ws");var ConnectionState=require("./ConnectionState.js");var Constants=require("../Constants.js"),Endpoints=Constants.Endpoints,PacketType=Constants.PacketType;var Cache=require("../Util/Cache.js");var Resolver=require("./Resolver/Resolver.js");var User=require("../Structures/User.js"),Channel=require("../Structures/Channel.js"),TextChannel=require("../Structures/TextChannel.js"),VoiceChannel=require("../Structures/VoiceChannel.js"),PMChannel=require("../Structures/PMChannel.js"),Server=require("../Structures/Server.js"),Message=require("../Structures/Message.js"),Role=require("../Structures/Role.js"),Invite=require("../Structures/Invite.js"),VoiceConnection=require("../Voice/VoiceConnection.js");var zlib;var InternalClient=(function(){function InternalClient(discordClient){_classCallCheck(this,InternalClient);this.client = discordClient;this.state = ConnectionState.IDLE;this.websocket = null;if(this.client.options.compress){zlib = require("zlib");} // creates 4 caches with discriminators based on ID
|
||||
this.users = new Cache();this.channels = new Cache();this.servers = new Cache();this.private_channels = new Cache();this.typingIntervals = [];this.voiceConnection = null;this.resolver = new Resolver(this);this.readyTime = null;} //def leaveVoiceChannel
|
||||
InternalClient.prototype.leaveVoiceChannel = function leaveVoiceChannel(){var self=this;return new Promise(function(resolve,reject){if(self.voiceConnection){self.voiceConnection.destroy();self.voiceConnection = null;resolve();}else {resolve();}});}; //def joinVoiceChannel
|
||||
InternalClient.prototype.joinVoiceChannel = function joinVoiceChannel(chann){var self=this;return new Promise(function(resolve,reject){var channel=self.resolver.resolveVoiceChannel(chann);if(channel){var next=function next(){var session,token,server=channel.server,endpoint;var check=function check(m){var data=JSON.parse(m);if(data.t === "VOICE_STATE_UPDATE"){session = data.d.session_id;}else if(data.t === "VOICE_SERVER_UPDATE"){token = data.d.token;endpoint = data.d.endpoint;var chan=self.voiceConnection = new VoiceConnection(channel,self.client,session,token,server,endpoint);chan.on("ready",function(){return resolve(chan);});chan.on("error",reject);self.client.emit("debug","removed temporary voice websocket listeners");self.websocket.removeListener("message",check);}};self.websocket.on("message",check);self.sendWS({op:4,d:{"guild_id":server.id,"channel_id":channel.id,"self_mute":false,"self_deaf":false}});};self.leaveVoiceChannel().then(next);}else {reject(new Error("voice channel does not exist"));}});}; // def createServer
|
||||
InternalClient.prototype.createServer = function createServer(name){var region=arguments.length <= 1 || arguments[1] === undefined?"london":arguments[1];var self=this;return new Promise(function(resolve,reject){name = self.resolver.resolveString(name);request.post(Endpoints.SERVERS).set("authorization",self.token).send({name:name,region:region}).end(function(err,res){if(err){reject(new Error(err));}else { // valid server, wait until it is cached
|
||||
var inter=setInterval(function(){if(self.servers.get("id",res.body.id)){clearInterval(inter);resolve(self.servers.get("id",res.body.id));}},20);}});});}; //def joinServer
|
||||
InternalClient.prototype.joinServer = function joinServer(invite){var self=this;return new Promise(function(resolve,reject){invite = self.resolver.resolveInviteID(invite);if(invite){request.post(Endpoints.INVITE(invite)).set("authorization",self.token).end(function(err,res){if(err){reject(err);}else { // valid server, wait until it is received via ws and cached
|
||||
var inter=setInterval(function(){if(self.servers.get("id",res.body.guild.id)){clearInterval(inter);resolve(self.servers.get("id",res.body.guild.id));}},20);}});}else {reject(new Error("Not a valid invite"));}});}; //def leaveServer
|
||||
InternalClient.prototype.leaveServer = function leaveServer(srv){var self=this;return new Promise(function(resolve,reject){var server=self.resolver.resolveServer(srv);if(server){request.del(Endpoints.SERVER(server.id)).set("authorization",self.token).end(function(err,res){if(err){reject(new Error(err));}else { // remove channels of server then the server
|
||||
for(var _iterator=server.channels,_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 chan=_ref;self.channels.remove(chan);} // remove server
|
||||
self.servers.remove(server);resolve();}});}else {reject(new Error("server did not resolve"));}});}; // def login
|
||||
InternalClient.prototype.login = function login(email,password){var self=this;var client=self.client;return new Promise(function(resolve,reject){if(self.state === ConnectionState.DISCONNECTED || self.state === ConnectionState.IDLE){self.state = ConnectionState.LOGGING_IN;request.post(Endpoints.LOGIN).send({email:email,password:password}).end(function(err,res){if(err){self.state = ConnectionState.DISCONNECTED;self.websocket = null;client.emit("disconnected");reject(new Error(err));}else {var token=res.body.token;self.state = ConnectionState.LOGGED_IN;self.token = token;self.email = email;self.password = password;self.getGateway().then(function(url){self.createWS(url);resolve(token);})["catch"](function(e){self.state = ConnectionState.DISCONNECTED;client.emit("disconnected");reject(new Error(err));});}});}else {reject(new Error("already logging in/logged in/ready!"));}});}; // def logout
|
||||
InternalClient.prototype.logout = function logout(){var _this=this;var self=this;return new Promise(function(resolve,reject){if(self.state === ConnectionState.DISCONNECTED || self.state === ConnectionState.IDLE){reject(new Error("Client is not logged in!"));return;}request.post(Endpoints.LOGOUT).set("authorization",self.token).end(function(err,res){if(err){reject(new Error(err));}else {if(_this.websocket){_this.websocket.close();_this.websocket = null;}self.token = null;self.email = null;self.password = null;self.state = ConnectionState.DISCONNECTED;resolve();}});});}; // def startPM
|
||||
InternalClient.prototype.startPM = function startPM(resUser){var self=this;return new Promise(function(resolve,reject){var user=self.resolver.resolveUser(resUser);if(user){ // start the PM
|
||||
request.post("" + Endpoints.USER_CHANNELS(user.id)).set("authorization",self.token).send({recipient_id:user.id}).end(function(err,res){if(err){reject(new Error(err));}else {resolve(self.private_channels.add(new PMChannel(res.body,self.client)));}});}else {reject(new Error("Unable to resolve resUser to a User"));}});}; // def getGateway
|
||||
InternalClient.prototype.getGateway = function getGateway(){var self=this;return new Promise(function(resolve,reject){request.get(Endpoints.GATEWAY).set("authorization",self.token).end(function(err,res){if(err)reject(err);else resolve(res.body.url);});});}; // def sendMessage
|
||||
InternalClient.prototype.sendMessage = function sendMessage(where,_content){var options=arguments.length <= 2 || arguments[2] === undefined?{}:arguments[2];var self=this;return new Promise(function(resolve,reject){self.resolver.resolveChannel(where).then(next)["catch"](function(e){return reject(new Error("Error resolving destination - " + e));});function next(destination){ //var destination;
|
||||
var content=self.resolver.resolveString(_content);var mentions=self.resolver.resolveMentions(content);request.post(Endpoints.CHANNEL_MESSAGES(destination.id)).set("authorization",self.token).send({content:content,mentions:mentions,tts:options.tts}).end(function(err,res){if(err){reject(new Error(err));}else {resolve(destination.messages.add(new Message(res.body,destination,self.client)));}});}});}; // def deleteMessage
|
||||
InternalClient.prototype.deleteMessage = function deleteMessage(_message){var options=arguments.length <= 1 || arguments[1] === undefined?{}:arguments[1];var self=this;return new Promise(function(resolve,reject){var message=self.resolver.resolveMessage(_message);if(message){var deleteMsg=function deleteMsg(){request.del(Endpoints.CHANNEL_MESSAGE(message.channel.id,message.id)).set("authorization",self.token).end(function(err,res){if(err){reject(new Error(err));}else {message.channel.messages.remove(message);resolve();}});};if(options.wait){setTimeout(deleteMsg,options.wait);}else {deleteMsg();}}else {reject(new Error("Supplied message did not resolve to a message!"));}});}; // def updateMessage
|
||||
InternalClient.prototype.updateMessage = function updateMessage(msg,_content){var options=arguments.length <= 2 || arguments[2] === undefined?{}:arguments[2];var self=this;return new Promise(function(resolve,reject){var message=self.resolver.resolveMessage(msg);if(message){var content=self.resolver.resolveString(_content);var mentions=self.resolver.resolveMentions(content);request.patch(Endpoints.CHANNEL_MESSAGE(message.channel.id,message.id)).set("authorization",self.token).send({content:content,tts:options.tts,mentions:mentions}).end(function(err,res){if(err){reject(new Error(err));}else {resolve(message.channel.messages.update(message,new Message(res.body,message.channel,self.client)));}});}else {reject(new Error("Supplied message did not resolve to a message!"));}});}; // def sendFile
|
||||
InternalClient.prototype.sendFile = function sendFile(where,_file){var name=arguments.length <= 2 || arguments[2] === undefined?"image.png":arguments[2];var self=this;return new Promise(function(resolve,reject){self.resolver.resolveChannel(where).then(next)["catch"](function(e){return reject(new Error("couldn't resolve to channel - " + e));});function next(channel){var file=self.resolver.resolveFile(_file);request.post(Endpoints.CHANNEL_MESSAGES(channel.id)).set("authorization",self.token).attach("file",file,name).end(function(err,res){if(err){reject(new Error(err));}else {resolve(channel.messages.add(new Message(res.body,channel,self.client)));}});}});}; // def getChannelLogs
|
||||
InternalClient.prototype.getChannelLogs = function getChannelLogs(_channel){var limit=arguments.length <= 1 || arguments[1] === undefined?500:arguments[1];var options=arguments.length <= 2 || arguments[2] === undefined?{}:arguments[2];var self=this;return new Promise(function(resolve,reject){self.resolver.resolveChannel(_channel).then(next)["catch"](function(e){return reject(new Error("couldn't resolve to channel - " + e));});function next(channel){if(options.before)options.before = self.resolver.resolveMessage(options.before);if(options.after)options.after = self.resolver.resolveMessage(options.after);var params=[];if(options.before)params.push("before=" + options.before.id);if(options.after)params.push("after=" + options.after.id);var joinedParams=params.join();if(joinedParams !== "")joinedParams = "&" + params.join();request.get(Endpoints.CHANNEL_MESSAGES(channel.id) + "?limit=" + limit + joinedParams).set("authorization",self.token).end(function(err,res){if(err){reject(new Error(err));}else {var logs=[];res.body.forEach(function(msg){logs.push(channel.messages.add(new Message(msg,channel,self.client)));});resolve(logs);}});}});}; // def getBans
|
||||
InternalClient.prototype.getBans = function getBans(server){var self=this;return new Promise(function(resolve,reject){server = self.resolver.resolveServer(server);request.get("" + Endpoints.SERVER_BANS(server.id)).set("authorization",self.token).end(function(err,res){if(err){reject(new Error(err));}else {var bans=[];res.body.forEach(function(ban){bans.push(self.users.add(new User(ban.user,self.client)));});resolve(bans);}});});}; // def createChannel
|
||||
InternalClient.prototype.createChannel = function createChannel(server,name){var type=arguments.length <= 2 || arguments[2] === undefined?"text":arguments[2];var self=this;return new Promise(function(resolve,reject){server = self.resolver.resolveServer(server);request.post(Endpoints.SERVER_CHANNELS(server.id)).set("authorization",self.token).send({name:name,type:type}).end(function(err,res){if(err){reject(err);}else {var channel;if(res.body.type === "text"){channel = new TextChannel(res.body,self.client,server);}else {channel = new VoiceChannel(res.body,self.client,server);}resolve(server.channels.add(self.channels.add(channel)));}});});}; // def deleteChannel
|
||||
InternalClient.prototype.deleteChannel = function deleteChannel(_channel){var self=this;return new Promise(function(resolve,reject){self.resolver.resolveChannel(_channel).then(next)["catch"](reject);function next(channel){request.del(Endpoints.CHANNEL(channel.id)).set("authorization",self.token).end(function(err,res){if(err){reject(err);}else {channel.server.channels.remove(channel);self.channels.remove(channel);resolve();}});}});}; // def banMember
|
||||
InternalClient.prototype.banMember = function banMember(user,server){var length=arguments.length <= 2 || arguments[2] === undefined?1:arguments[2];var self=this;return new Promise(function(resolve,reject){user = self.resolver.resolveUser(user);server = self.resolver.resolveServer(server);request.put(Endpoints.SERVER_BANS(server.id) + "/" + user.id + "/?delete-message-days=" + length).set("authorization",self.token).end(function(err,res){if(err){reject(err);}else {resolve();}});});}; // def unbanMember
|
||||
InternalClient.prototype.unbanMember = function unbanMember(user,server){var self=this;return new Promise(function(resolve,reject){server = self.resolver.resolveServer(server);user = self.resolver.resolveUser(user);request.del(Endpoints.SERVER_BANS(server.id) + "/" + user.id).set("authorization",self.token).end(function(err,res){if(err){reject(err);}else {resolve();}});});}; // def kickMember
|
||||
InternalClient.prototype.kickMember = function kickMember(user,server){var self=this;return new Promise(function(resolve,reject){user = self.resolver.resolveUser(user);server = self.resolver.resolveServer(server);request.del(Endpoints.SERVER_MEMBERS(server.id) + "/" + user.id).set("authorization",self.token).end(function(err,res){if(err){reject(err);}else {resolve();}});});}; // 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);
|
||||
}});});}; //def addMemberToRole
|
||||
InternalClient.prototype.addMemberToRole = function addMemberToRole(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;}).concat(role.id);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 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;}if(!options){options = {validate:null};}else {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));}});});}; //def deleteInvite
|
||||
InternalClient.prototype.deleteInvite = function deleteInvite(invite){var self=this;return new Promise(function(resolve,reject){invite = self.resolver.resolveInviteID(invite);if(invite){request.del(Endpoints.INVITE(invite)).set("authorization",self.token).end(function(err,res){if(err){reject(err);}else {resolve();}});}else {reject(new Error("Not a valid invite"));}});}; //def overwritePermissions
|
||||
InternalClient.prototype.overwritePermissions = function overwritePermissions(channel,role,updated){var self=this;return new Promise(function(resolve,reject){channel = self.resolver.resolveChannel(channel)["catch"](reject).then(next);function next(channel){var user;if(role instanceof User){user = role;}var data={};data.allow = 0;data.deny = 0;updated.allow = updated.allow || [];updated.deny = updated.deny || [];if(role instanceof Role){data.id = role.id;data.type = "role";}else if(user){data.id = user.id;data.type = "member";}else {reject(new Error("role incorrect"));return;}for(var perm in updated) {if(updated[perm]){if(perm instanceof String || typeof perm === "string"){data.allow |= Constants.Permissions[perm] || 0;}else {data.allow |= perm;}}else {if(perm instanceof String || typeof perm === "string"){data.deny |= Constants.Permissions[perm] || 0;}else {data.deny |= perm;}}}request.put(Endpoints.CHANNEL_PERMISSIONS(channel.id) + "/" + data.id).set("authorization",self.token).send(data).end(function(err){if(err){reject(err);}else {resolve();}});}});}; //def setStatus
|
||||
InternalClient.prototype.setStatus = function setStatus(idleStatus,gameID){var self=this;return new Promise(function(resolve,reject){var packet={op:3,d:{idle_since:null,game_id:null}};if(idleStatus){packet.d.idle_since = Date.now();}if(typeof gameID === "number"){packet.d.game_id = gameID;}self.sendWS(packet);resolve();});}; //def sendTyping
|
||||
InternalClient.prototype.sendTyping = function sendTyping(channel){var self=this;return new Promise(function(resolve,reject){self.resolver.resolveChannel(channel).then(next)["catch"](reject);function next(channel){request.post(Endpoints.CHANNEL(channel.id) + "/typing").set("authorization",self.token).end(function(err,res){if(err){reject(err);}else {resolve();}});}});}; //def startTyping
|
||||
InternalClient.prototype.startTyping = function startTyping(channel){var self=this;return new Promise(function(resolve,reject){self.resolver.resolveChannel(channel).then(next)["catch"](reject);function next(channel){if(self.typingIntervals[channel.id]){ // typing interval already exists, leave it alone
|
||||
reject(new Error("Already typing in that channel"));return;}self.sendTyping(channel);self.typingIntervals[channel.id] = setInterval(function(){return self.sendTyping(channel);},4000);}});}; //def stopTyping
|
||||
InternalClient.prototype.stopTyping = function stopTyping(channel){var self=this;return new Promise(function(resolve,reject){self.resolver.resolveChannel(channel).then(next)["catch"](reject);function next(channel){if(!self.typingIntervals[channel.id]){ // typing interval doesn't exist
|
||||
reject(new Error("Not typing in that channel"));return;}clearInterval(self.typingIntervals[channel.id]);self.typingIntervals[channel.id] = false;}});}; //def updateDetails
|
||||
InternalClient.prototype.updateDetails = function updateDetails(data){var self=this;return new Promise(function(resolve,reject){request.patch(Endpoints.ME).set("authorization",self.token).send({avatar:self.resolver.resolveToBase64(data.avatar) || self.user.avatar,email:data.email || self.email,new_password:data.newPassword || null,password:data.password || self.password,username:data.username || self.user.username}).end(function(err){if(err){reject(err);}else {resolve();}});});}; //def setAvatar
|
||||
InternalClient.prototype.setAvatar = function setAvatar(avatar){return this.updateDetails({avatar:avatar});}; //def setUsername
|
||||
InternalClient.prototype.setUsername = function setUsername(username){return this.updateDetails({username:username});}; //def setTopic
|
||||
InternalClient.prototype.setTopic = function setTopic(chann){var topic=arguments.length <= 1 || arguments[1] === undefined?"":arguments[1];var self=this;return new Promise(function(resolve,reject){self.resolver.resolveChannel(chann).then(next)["catch"](reject);function next(channel){request.patch(Endpoints.CHANNEL(channel.id)).set("authorization",self.token).send({name:channel.name,position:channel.position,topic:topic}).end(function(err,res){if(err){reject(err);}else {channel.topic = res.body.topic;resolve();}});}});}; //def setChannelName
|
||||
InternalClient.prototype.setChannelName = function setChannelName(chann){var name=arguments.length <= 1 || arguments[1] === undefined?"discordjs_is_the_best":arguments[1];var self=this;return new Promise(function(resolve,reject){self.resolver.resolveChannel(chann).then(next)["catch"](reject);function next(channel){request.patch(Endpoints.CHANNEL(channel.id)).set("authorization",self.token).send({name:name,position:channel.position,topic:channel.topic}).end(function(err,res){if(err){reject(err);}else {channel.name = res.body.name;resolve();}});}});}; //def setChannelNameAndTopic
|
||||
InternalClient.prototype.setChannelNameAndTopic = function setChannelNameAndTopic(chann){var name=arguments.length <= 1 || arguments[1] === undefined?"discordjs_is_the_best":arguments[1];var topic=arguments.length <= 2 || arguments[2] === undefined?"":arguments[2];var self=this;return new Promise(function(resolve,reject){self.resolver.resolveChannel(chann).then(next)["catch"](reject);function next(channel){request.patch(Endpoints.CHANNEL(channel.id)).set("authorization",self.token).send({name:name,position:channel.position,topic:topic}).end(function(err,res){if(err){reject(err);}else {channel.name = res.body.name;channel.topic = res.body.topic;resolve();}});}});}; //def updateChannel
|
||||
InternalClient.prototype.updateChannel = function updateChannel(chann,data){return this.setChannelNameAndTopic(chann,data.name,data.topic);}; //def ack
|
||||
InternalClient.prototype.ack = function ack(msg){var self=this;return new Promise(function(resolve,reject){msg = self.resolver.resolveMessage(msg);if(msg){request.post(Endpoints.CHANNEL_MESSAGE(msg.channel.id,msg.id) + "/ack").set("authorization",self.token).end(function(err){if(err){reject(err);}else {resolve();}});}else {reject(new Error("Message does not exist"));}});};InternalClient.prototype.sendWS = function sendWS(object){if(this.websocket)this.websocket.send(JSON.stringify(object));};InternalClient.prototype.createWS = function createWS(url){var self=this;var client=self.client;if(this.websocket)return false;this.websocket = new WebSocket(url);this.websocket.onopen = function(){self.sendWS({op:2,d:{token:self.token,v:3,compress:self.client.options.compress,properties:{"$os":"discord.js","$browser":"discord.js","$device":"discord.js","$referrer":"discord.js","$referring_domain":"discord.js"}}});};this.websocket.onclose = function(){self.websocket = null;self.state = ConnectionState.DISCONNECTED;client.emit("disconnected");};this.websocket.onerror = function(e){client.emit("error",e);};this.websocket.onmessage = function(e){if(e.type === "Binary"){if(!zlib)zlib = require("zlib");e.data = zlib.inflateSync(e.data).toString();}var packet,data;try{packet = JSON.parse(e.data);data = packet.d;}catch(e) {client.emit("error",e);return;}client.emit("raw",packet);switch(packet.t){case PacketType.READY:var startTime=Date.now();self.user = self.users.add(new User(data.user,client));data.guilds.forEach(function(server){self.servers.add(new Server(server,client));});data.private_channels.forEach(function(pm){self.private_channels.add(new PMChannel(pm,client));});self.state = ConnectionState.READY;setInterval(function(){return self.sendWS({op:1,d:Date.now()});},data.heartbeat_interval);client.emit("ready");client.emit("debug","ready packet took " + (Date.now() - startTime) + "ms to process");client.emit("debug","ready with " + self.servers.length + " servers, " + self.channels.length + " channels and " + self.users.length + " users cached.");self.readyTime = Date.now();break;case PacketType.MESSAGE_CREATE: // 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);if(channel){var msg=channel.messages.add(new Message(data,channel,client));client.emit("message",msg);self.ack(msg);}else {client.emit("warn","message created but channel is not cached");}break;case PacketType.MESSAGE_DELETE: // format https://discordapi.readthedocs.org/en/latest/reference/channels/messages.html#message-delete
|
||||
var channel=self.channels.get("id",data.channel_id) || self.private_channels.get("id",data.channel_id);if(channel){ // potentially blank
|
||||
var msg=channel.messages.get("id",data.id);client.emit("messageDeleted",msg);if(msg){channel.messages.remove(msg);}}else {client.emit("warn","message was deleted but channel is not cached");}break;case PacketType.MESSAGE_UPDATE: // 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);if(channel){ // potentially blank
|
||||
var msg=channel.messages.get("id",data.id);if(msg){ // old message exists
|
||||
data.nonce = data.nonce || msg.nonce;data.attachments = data.attachments || msg.attachments;data.tts = data.tts || msg.tts;data.embeds = data.embeds || msg.embeds;data.timestamp = data.timestamp || msg.timestamp;data.mention_everyone = data.mention_everyone || msg.everyoneMentioned;data.content = data.content || msg.content;data.mentions = data.mentions || msg.mentions;data.author = data.author || msg.author;var nmsg=channel.messages.update(msg,new Message(data,channel,client));client.emit("messageUpdated",nmsg,msg);}}else {client.emit("warn","message was updated but channel is not cached");}break;case PacketType.SERVER_CREATE:var server=self.servers.get("id",data.id);if(!server){self.servers.add(new Server(data,client));client.emit("serverCreated",server);}break;case PacketType.SERVER_DELETE:var server=self.servers.get("id",data.id);if(server){for(var _iterator3=server.channels,_isArray3=Array.isArray(_iterator3),_i3=0,_iterator3=_isArray3?_iterator3:_iterator3[Symbol.iterator]();;) {var _ref3;if(_isArray3){if(_i3 >= _iterator3.length)break;_ref3 = _iterator3[_i3++];}else {_i3 = _iterator3.next();if(_i3.done)break;_ref3 = _i3.value;}var channel=_ref3;self.channels.remove(channel);}self.servers.remove(server);client.emit("serverDeleted",server);}else {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 exists
|
||||
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);}}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;case PacketType.CHANNEL_CREATE:var channel=self.channels.get("id",data.id);if(!channel){var server=self.servers.get("id",data.guild_id);if(server){if(data.is_private){client.emit("channelCreated",self.private_channels.add(new PMChannel(data,client)));}else {var chan=null;if(data.type === "text"){chan = self.channels.add(new TextChannel(data,client,server));}else {chan = self.channels.add(new VoiceChannel(data,client,server));}client.emit("channelCreated",server.channels.add(chan));}}else {client.emit("warn","channel created but server does not exist");}}else {client.emit("warn","channel created but already in cache");}break;case PacketType.CHANNEL_DELETE:var channel=self.channels.get("id",data.id);if(channel){if(channel.server) // accounts for PMs
|
||||
channel.server.channels.remove(channel);self.channels.remove(channel);client.emit("channelDeleted",channel);}else {client.emit("warn","channel deleted but already out of cache?");}break;case PacketType.CHANNEL_UPDATE:var channel=self.channels.get("id",data.id) || self.private_channels.get("id",data.id);if(channel){if(channel instanceof PMChannel){ //PM CHANNEL
|
||||
client.emit("channelUpdated",channel,self.private_channels.update(channel,new PMChannel(data,client)));}else {if(channel.server){if(channel.type === "text"){ //TEXT CHANNEL
|
||||
var chan=new TextChannel(data,client,channel.server);chan.messages = channel.messages;channel.server.channels.update(channel,chan);self.channels.update(channel,chan);client.emit("channelUpdated",channel,chan);}else { //VOICE CHANNEL
|
||||
var chan=new VoiceChannel(data,client,channel.server);channel.server.channels.update(channel,chan);self.channels.update(channel,chan);client.emit("channelUpdated",channel,chan);}}else {client.emit("warn","channel updated but server non-existant");}}}else {client.emit("warn","channel updated but not in cache");}break;case PacketType.SERVER_ROLE_CREATE:var server=self.servers.get("id",data.guild_id);if(server){client.emit("serverRoleCreated",server.roles.add(new Role(data.role,server,client)),server);}else {client.emit("warn","server role made but server not in cache");}break;case PacketType.SERVER_ROLE_DELETE:var server=self.servers.get("id",data.guild_id);if(server){var role=server.roles.get("id",data.role_id);if(role){server.roles.remove(role);client.emit("serverRoleDeleted",role);}else {client.emit("warn","server role deleted but role not in cache");}}else {client.emit("warn","server role deleted but server not in cache");}break;case PacketType.SERVER_ROLE_UPDATE:var server=self.servers.get("id",data.guild_id);if(server){var role=server.roles.get("id",data.role.id);if(role){var newRole=new Role(data.role,server,client);server.roles.update(role,newRole);client.emit("serverRoleUpdated",role,newRole);}else {client.emit("warn","server role updated but role not in cache");}}else {client.emit("warn","server role updated but server not in cache");}break;case PacketType.SERVER_MEMBER_ADD:var server=self.servers.get("id",data.guild_id);if(server){server.memberMap[data.user.id] = {roles:data.roles.map(function(pid){return server.roles.get("id",pid);}),mute:false,deaf:false,joinedAt:Date.parse(data.joined_at)};client.emit("serverNewMember",server,server.members.add(self.users.add(new User(data.user,client))));}else {client.emit("warn","server member added but server doesn't exist in cache");}break;case PacketType.SERVER_MEMBER_REMOVE:var server=self.servers.get("id",data.guild_id);if(server){var user=self.users.get("id",data.user.id);if(user){server.memberMap[data.user.id] = null;server.members.remove(user);client.emit("serverMemberRemoved",server,user);}else {client.emit("warn","server member removed but user doesn't exist in cache");}}else {client.emit("warn","server member removed but server doesn't exist in cache");}break;case PacketType.SERVER_MEMBER_UPDATE:var server=self.servers.get("id",data.guild_id);if(server){var user=self.users.get("id",data.user.id);if(user){server.memberMap[data.user.id].roles = data.roles.map(function(pid){return server.roles.get("id",pid);});server.memberMap[data.user.id].mute = data.mute;server.memberMap[data.user.id].deaf = data.deaf;client.emit("serverMemberUpdated",server,user);}else {client.emit("warn","server member removed but user doesn't exist in cache");}}else {client.emit("warn","server member updated but server doesn't exist in cache");}break;case PacketType.PRESENCE_UPDATE:var user=self.users.get("id",data.user.id);if(user){data.user.username = data.user.username || user.username;data.user.id = data.user.id || user.id;data.user.avatar = data.user.avatar || user.avatar;data.user.discriminator = data.user.discriminator || user.discriminator;var presenceUser=new User(data.user,client);if(presenceUser.equalsStrict(user)){ // a real presence update
|
||||
client.emit("presence",user,data.status,data.game_id);user.status = data.status;user.gameID = data.game_id;}else { // a name change or avatar change
|
||||
client.emit("userUpdate",user,presenceUser);self.users.update(user,presenceUser);}}else {client.emit("warn","presence update but user not in cache");}break;case PacketType.TYPING:var user=self.users.get("id",data.user_id);var channel=self.channels.get("id",data.channel_id) || self.private_channels.get("id",data.channel_id);if(user && channel){if(user.typing.since){user.typing.since = Date.now();user.typing.channel = channel;}else {user.typing.since = Date.now();user.typing.channel = channel;client.emit("userTypingStart",user,channel);}setTimeout(function(){if(Date.now() - user.typing.since > 5500){ // they haven't typed since
|
||||
user.typing.since = null;user.typing.channel = null;client.emit("userTypingStop",user,channel);}},6000);}else {client.emit("warn","user typing but user or channel not existant in cache");}break;case PacketType.SERVER_BAN_ADD:var user=self.users.get("id",data.user.id);var server=self.servers.get("id",data.guild_id);if(user && server){client.emit("userBanned",user,server);}else {client.emit("warn","user banned but user/server not in cache.");}break;case PacketType.SERVER_BAN_REMOVE:var user=self.users.get("id",data.user.id);var server=self.servers.get("id",data.guild_id);if(user && server){client.emit("userUnbanned",user,server);}else {client.emit("warn","user unbanned but user/server not in cache.");}break;}};};_createClass(InternalClient,[{key:"uptime",get:function get(){return this.readyTime?Date.now() - this.readyTime:null;}}]);return InternalClient;})();module.exports = InternalClient;
|
||||
@@ -1,13 +0,0 @@
|
||||
"use strict"; /* global Buffer */function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var fs=require("fs");var User=require("../../Structures/User.js"),Channel=require("../../Structures/Channel.js"),TextChannel=require("../../Structures/TextChannel.js"),VoiceChannel=require("../../Structures/VoiceChannel.js"),ServerChannel=require("../../Structures/ServerChannel.js"),PMChannel=require("../../Structures/PMChannel.js"),Server=require("../../Structures/Server.js"),Message=require("../../Structures/Message.js"),Invite=require("../../Structures/Invite.js");var Resolver=(function(){function Resolver(internal){_classCallCheck(this,Resolver);this.internal = internal;}Resolver.prototype.resolveToBase64 = function resolveToBase64(resource){if(resource instanceof Buffer){resource = resource.toString("base64");resource = "data:image/jpg;base64," + resource;}return resource;};Resolver.prototype.resolveInviteID = function resolveInviteID(resource){if(resource instanceof Invite){return resource.id;}else if(typeof resource == "string" || resource instanceof String){if(resource.indexOf("http") === 0){var split=resource.split("/");return split.pop();}else {return resource;}}return null;};Resolver.prototype.resolveServer = function resolveServer(resource){if(resource instanceof Server){return resource;}else if(resource instanceof ServerChannel){return resource.server;}else if(resource instanceof String || typeof resource === "string"){return this.internal.servers.get("id",resource);}else if(resource instanceof Message){if(resource.channel instanceof TextChannel){return resource.server;}}return null;};Resolver.prototype.resolveFile = function resolveFile(resource){if(typeof resource === "string" || resource instanceof String){return fs.createReadStream(resource);}else {return resource;}};Resolver.prototype.resolveMentions = function resolveMentions(resource){ // resource is a string
|
||||
var _mentions=[];for(var _iterator=resource.match(/<@[^>]*>/g) || [],_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 mention=_ref;_mentions.push(mention.substring(2,mention.length - 1));}return _mentions;};Resolver.prototype.resolveString = function resolveString(resource){ // accepts Array, Channel, Server, User, Message, String and anything
|
||||
// toString()-able
|
||||
var final=resource;if(resource instanceof Array){final = resource.join("\n");}return final.toString();};Resolver.prototype.resolveUser = function resolveUser(resource){ /*
|
||||
accepts a Message, Channel, Server, String ID, User, PMChannel
|
||||
*/var found=null;if(resource instanceof User){found = resource;}else if(resource instanceof Message){found = resource.author;}else if(resource instanceof TextChannel){var lmsg=resource.lastMessage;if(lmsg){found = lmsg.author;}}else if(resource instanceof Server){found = resource.owner;}else if(resource instanceof PMChannel){found = resource.recipient;}else if(resource instanceof String || typeof resource === "string"){found = this.client.internal.users.get("id",resource);}return found;};Resolver.prototype.resolveMessage = function resolveMessage(resource){ // accepts a Message, PMChannel & TextChannel
|
||||
var found=null;if(resource instanceof TextChannel || resource instanceof PMChannel){found = resource.lastMessage;}else if(resource instanceof Message){found = resource;}return found;};Resolver.prototype.resolveVoiceChannel = function resolveVoiceChannel(resource){ // resolveChannel will also work but this is more apt
|
||||
if(resource instanceof VoiceChannel){return resource;}return null;};Resolver.prototype.resolveChannel = function resolveChannel(resource){ /*
|
||||
accepts a Message, Channel, Server, String ID, User
|
||||
*/var self=this;return new Promise(function(resolve,reject){var found=null;if(resource instanceof Message){found = resource.channel;}else if(resource instanceof Channel){found = resource;}else if(resource instanceof Server){found = resource.channels.get("id",resource.id);}else if(resource instanceof String || typeof resource === "string"){found = self.internal.channels.get("id",resource);}else if(resource instanceof User){ // see if a PM exists
|
||||
var chatFound=false;for(var _iterator2=self.internal.private_channels,_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 pmchat=_ref2;if(pmchat.recipient.equals(resource)){chatFound = pmchat;break;}}if(chatFound){ // a PM already exists!
|
||||
found = chatFound;}else { // PM does not exist :\
|
||||
self.internal.startPM(resource).then(function(pmchannel){return resolve(pmchannel);})["catch"](function(e){return reject(e);});return;}}if(found)resolve(found);else reject(new Error("Didn't found anything"));});};return Resolver;})();module.exports = Resolver;
|
||||
@@ -1,7 +0,0 @@
|
||||
"use strict";var API="https://discordapp.com/api";var Endpoints={ // general endpoints
|
||||
LOGIN:API + "/auth/login",LOGOUT:API + "/auth/logout",ME:API + "/users/@me",GATEWAY:API + "/gateway",USER_CHANNELS:function USER_CHANNELS(userID){return API + "/users/" + userID + "/channels";},AVATAR:function AVATAR(userID,avatar){return API + "/users/" + userID + "/avatars/" + avatar + ".jpg";},INVITE:function INVITE(id){return API + "/invite/" + id;}, // servers
|
||||
SERVERS:API + "/guilds",SERVER:function SERVER(serverID){return Endpoints.SERVERS + "/" + serverID;},SERVER_ICON:function SERVER_ICON(serverID,hash){return Endpoints.SERVER(serverID) + "/icons/" + hash + ".jpg";},SERVER_PRUNE:function SERVER_PRUNE(serverID){return Endpoints.SERVER(serverID) + "/prune";},SERVER_EMBED:function SERVER_EMBED(serverID){return Endpoints.SERVER(serverID) + "/embed";},SERVER_INVITES:function SERVER_INVITES(serverID){return Endpoints.SERVER(serverID) + "/invites";},SERVER_ROLES:function SERVER_ROLES(serverID){return Endpoints.SERVER(serverID) + "/roles";},SERVER_BANS:function SERVER_BANS(serverID){return Endpoints.SERVER(serverID) + "/bans";},SERVER_INTEGRATIONS:function SERVER_INTEGRATIONS(serverID){return Endpoints.SERVER(serverID) + "/integrations";},SERVER_MEMBERS:function SERVER_MEMBERS(serverID){return Endpoints.SERVER(serverID) + "/members";},SERVER_CHANNELS:function SERVER_CHANNELS(serverID){return Endpoints.SERVER(serverID) + "/channels";}, // channels
|
||||
CHANNELS:API + "/channels",CHANNEL:function CHANNEL(channelID){return Endpoints.CHANNELS + "/" + channelID;},CHANNEL_MESSAGES:function CHANNEL_MESSAGES(channelID){return Endpoints.CHANNEL(channelID) + "/messages";},CHANNEL_INVITES:function CHANNEL_INVITES(channelID){return Endpoints.CHANNEL(channelID) + "/invites";},CHANNEL_TYPING:function CHANNEL_TYPING(channelID){return Endpoints.CHANNEL(channelID) + "/typing";},CHANNEL_PERMISSIONS:function CHANNEL_PERMISSIONS(channelID){return Endpoints.CHANNEL(channelID) + "/permissions";},CHANNEL_MESSAGE:function CHANNEL_MESSAGE(channelID,messageID){return Endpoints.CHANNEL_MESSAGES(channelID) + "/" + messageID;}};var Permissions={ // general
|
||||
createInstantInvite:1 << 0,kickMembers:1 << 1,banMembers:1 << 2,manageRoles:1 << 3,managePermissions:1 << 3,manageChannels:1 << 4,manageChannel:1 << 4,manageServer:1 << 5, // text
|
||||
readMessages:1 << 10,sendMessages:1 << 11,sendTTSMessages:1 << 12,manageMessages:1 << 13,embedLinks:1 << 14,attachFiles:1 << 15,readMessageHistory:1 << 16,mentionEveryone:1 << 17, // voice
|
||||
voiceConnect:1 << 20,voiceSpeak:1 << 21,voiceMuteMembers:1 << 22,voiceDeafenMembers:1 << 23,voiceMoveMembers:1 << 24,voiceUseVAD:1 << 25};var PacketType={READY:"READY",MESSAGE_CREATE:"MESSAGE_CREATE",MESSAGE_UPDATE:"MESSAGE_UPDATE",MESSAGE_DELETE:"MESSAGE_DELETE",SERVER_CREATE:"GUILD_CREATE",SERVER_DELETE:"GUILD_DELETE",SERVER_UPDATE:"GUILD_UPDATE",CHANNEL_CREATE:"CHANNEL_CREATE",CHANNEL_DELETE:"CHANNEL_DELETE",CHANNEL_UPDATE:"CHANNEL_UPDATE",SERVER_ROLE_CREATE:"GUILD_ROLE_CREATE",SERVER_ROLE_DELETE:"GUILD_ROLE_DELETE",SERVER_ROLE_UPDATE:"GUILD_ROLE_UPDATE",SERVER_MEMBER_ADD:"GUILD_MEMBER_ADD",SERVER_MEMBER_REMOVE:"GUILD_MEMBER_REMOVE",SERVER_MEMBER_UPDATE:"GUILD_MEMBER_UPDATE",PRESENCE_UPDATE:"PRESENCE_UPDATE",TYPING:"TYPING_START",SERVER_BAN_ADD:"GUILD_BAN_ADD",SERVER_BAN_REMOVE:"GUILD_BAN_REMOVE"};exports.API_ENDPOINT = API;exports.Endpoints = Endpoints;exports.PacketType = PacketType;exports.Permissions = Permissions;
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
var ServerRole = function ServerRole() {
|
||||
_classCallCheck(this, ServerRole);
|
||||
var Embed = function Embed(data) {
|
||||
_classCallCheck(this, Embed);
|
||||
};
|
||||
|
||||
module.exports = ServerRole;
|
||||
module.exports = Embed;
|
||||
25
lib/Embeds/Embed.js
Normal file
25
lib/Embeds/Embed.js
Normal file
@@ -0,0 +1,25 @@
|
||||
"use strict";
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
var Embed = function Embed(data) {
|
||||
_classCallCheck(this, Embed);
|
||||
|
||||
this.url = data.url;
|
||||
this.type = data.type;
|
||||
this.title = data.title;
|
||||
this.thumbnail = data.thumbnail;
|
||||
//width
|
||||
//height
|
||||
//url
|
||||
//proxy_url
|
||||
this.provider = data.provider;
|
||||
//url
|
||||
//name
|
||||
this.description = data.description;
|
||||
this.author = data.author;
|
||||
//url
|
||||
//name
|
||||
};
|
||||
|
||||
module.exports = Embed;
|
||||
19
lib/Embeds/IEmbed.js
Normal file
19
lib/Embeds/IEmbed.js
Normal file
@@ -0,0 +1,19 @@
|
||||
"use strict";
|
||||
|
||||
var ImageEmbed = require("./ImageEmbed.js"),
|
||||
VideoEmbed = require("./VideoEmbed.js"),
|
||||
LinkEmbed = require("./LinkEmbed.js");
|
||||
|
||||
exports.createEmbed = function (data) {
|
||||
switch (data.type) {
|
||||
case "image":
|
||||
return new ImageEmbed(data);
|
||||
break;
|
||||
case "video":
|
||||
return new VideoEmbed(data);
|
||||
break;
|
||||
case "link":
|
||||
return new LinkEmbed(data);
|
||||
break;
|
||||
}
|
||||
};
|
||||
21
lib/Embeds/ImageEmbed.js
Normal file
21
lib/Embeds/ImageEmbed.js
Normal file
@@ -0,0 +1,21 @@
|
||||
"use strict";
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
||||
|
||||
var Embed = require("./Embed.js");
|
||||
|
||||
var ImageEmbed = (function (_Embed) {
|
||||
_inherits(ImageEmbed, _Embed);
|
||||
|
||||
function ImageEmbed(data) {
|
||||
_classCallCheck(this, ImageEmbed);
|
||||
|
||||
_Embed.call(this, data);
|
||||
}
|
||||
|
||||
return ImageEmbed;
|
||||
})(Embed);
|
||||
|
||||
module.exports = ImageEmbed;
|
||||
21
lib/Embeds/LinkEmbed.js
Normal file
21
lib/Embeds/LinkEmbed.js
Normal file
@@ -0,0 +1,21 @@
|
||||
"use strict";
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
||||
|
||||
var Embed = require("./Embed.js");
|
||||
|
||||
var LinkEmbed = (function (_Embed) {
|
||||
_inherits(LinkEmbed, _Embed);
|
||||
|
||||
function LinkEmbed(data) {
|
||||
_classCallCheck(this, LinkEmbed);
|
||||
|
||||
_Embed.call(this, data);
|
||||
}
|
||||
|
||||
return LinkEmbed;
|
||||
})(Embed);
|
||||
|
||||
module.exports = LinkEmbed;
|
||||
25
lib/Embeds/VideoEmbed.js
Normal file
25
lib/Embeds/VideoEmbed.js
Normal file
@@ -0,0 +1,25 @@
|
||||
"use strict";
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
||||
|
||||
var Embed = require("./Embed.js");
|
||||
|
||||
var VideoEmbed = (function (_Embed) {
|
||||
_inherits(VideoEmbed, _Embed);
|
||||
|
||||
function VideoEmbed(data) {
|
||||
_classCallCheck(this, VideoEmbed);
|
||||
|
||||
_Embed.call(this, data);
|
||||
this.video = data.video;
|
||||
//width
|
||||
//height
|
||||
//url
|
||||
}
|
||||
|
||||
return VideoEmbed;
|
||||
})(Embed);
|
||||
|
||||
module.exports = VideoEmbed;
|
||||
13
lib/Endpoints.js
Normal file
13
lib/Endpoints.js
Normal file
@@ -0,0 +1,13 @@
|
||||
"use strict";
|
||||
|
||||
exports.BASE_DOMAIN = "discordapp.com";
|
||||
exports.BASE = "https://" + exports.BASE_DOMAIN;
|
||||
exports.WEBSOCKET_HUB = "wss://" + exports.BASE_DOMAIN + "/hub";
|
||||
|
||||
exports.API = exports.BASE + "/api";
|
||||
exports.AUTH = exports.API + "/auth";
|
||||
exports.LOGIN = exports.AUTH + "/login";
|
||||
exports.LOGOUT = exports.AUTH + "/logout";
|
||||
exports.USERS = exports.API + "/users";
|
||||
exports.SERVERS = exports.API + "/guilds";
|
||||
exports.CHANNELS = exports.API + "/channels";
|
||||
203
lib/EvaluatedPermissions.js
Normal file
203
lib/EvaluatedPermissions.js
Normal file
@@ -0,0 +1,203 @@
|
||||
"use strict";
|
||||
|
||||
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
var EvaluatedPermissions = (function () {
|
||||
function EvaluatedPermissions(data) {
|
||||
_classCallCheck(this, EvaluatedPermissions);
|
||||
|
||||
var self = this;
|
||||
|
||||
this.packed = data;
|
||||
|
||||
if (this.getBit(3)) this.packed = 4294967295;
|
||||
}
|
||||
|
||||
EvaluatedPermissions.prototype.serialise = function serialise() {
|
||||
return {
|
||||
createInstantInvite: this.createInstantInvite,
|
||||
manageRoles: this.manageRoles,
|
||||
manageChannels: this.manageChannels,
|
||||
readMessages: this.readMessages,
|
||||
sendMessages: this.sendMessage,
|
||||
sendTTSMessages: this.sendTTSMessages,
|
||||
manageMessages: this.manageMessages,
|
||||
embedLinks: this.embedLinks,
|
||||
attachFiles: this.attachFiles,
|
||||
readMessageHistory: this.readMessageHistory,
|
||||
mentionEveryone: this.mentionEveryone,
|
||||
voiceConnect: this.voiceConnect,
|
||||
voiceSpeak: this.voiceSpeak,
|
||||
voiceMuteMembers: this.voiceMuteMembers,
|
||||
voiceDeafenMembers: this.voiceDeafenMembers,
|
||||
voiceMoveMember: this.voiceMoveMembers,
|
||||
voiceUseVoiceActivation: this.voiceUseVoiceActivation
|
||||
};
|
||||
};
|
||||
|
||||
EvaluatedPermissions.prototype.serialize = function serialize() {
|
||||
return this.serialise();
|
||||
};
|
||||
|
||||
EvaluatedPermissions.prototype.getBit = function getBit(x) {
|
||||
if ((this.packed >>> 3 & 1) === 1) {
|
||||
return true;
|
||||
}
|
||||
return (this.packed >>> x & 1) === 1;
|
||||
};
|
||||
|
||||
EvaluatedPermissions.prototype.setBit = function setBit(location, value) {
|
||||
|
||||
if (value) {
|
||||
// allow that permission
|
||||
this.packed |= 1 << location;
|
||||
} else {
|
||||
// not allowed
|
||||
this.packed &= 1 << location;
|
||||
}
|
||||
};
|
||||
|
||||
_createClass(EvaluatedPermissions, [{
|
||||
key: "createInstantInvite",
|
||||
get: function get() {
|
||||
return this.getBit(0);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(0, val);
|
||||
}
|
||||
}, {
|
||||
key: "manageRoles",
|
||||
get: function get() {
|
||||
return this.getBit(3);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(3, val);
|
||||
}
|
||||
}, {
|
||||
key: "manageChannels",
|
||||
get: function get() {
|
||||
return this.getBit(4);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(4, val);
|
||||
}
|
||||
}, {
|
||||
key: "readMessages",
|
||||
get: function get() {
|
||||
return this.getBit(10);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(10, val);
|
||||
}
|
||||
}, {
|
||||
key: "sendMessages",
|
||||
get: function get() {
|
||||
return this.getBit(11);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(11, val);
|
||||
}
|
||||
}, {
|
||||
key: "sendTTSMessages",
|
||||
get: function get() {
|
||||
return this.getBit(12);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(12, val);
|
||||
}
|
||||
}, {
|
||||
key: "manageMessages",
|
||||
get: function get() {
|
||||
return this.getBit(13);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(13, val);
|
||||
}
|
||||
}, {
|
||||
key: "embedLinks",
|
||||
get: function get() {
|
||||
return this.getBit(14);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(14, val);
|
||||
}
|
||||
}, {
|
||||
key: "attachFiles",
|
||||
get: function get() {
|
||||
return this.getBit(15);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(15, val);
|
||||
}
|
||||
}, {
|
||||
key: "readMessageHistory",
|
||||
get: function get() {
|
||||
return this.getBit(16);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(16, val);
|
||||
}
|
||||
}, {
|
||||
key: "mentionEveryone",
|
||||
get: function get() {
|
||||
return this.getBit(17);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(17, val);
|
||||
}
|
||||
}, {
|
||||
key: "voiceConnect",
|
||||
get: function get() {
|
||||
return this.getBit(20);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(20, val);
|
||||
}
|
||||
}, {
|
||||
key: "voiceSpeak",
|
||||
get: function get() {
|
||||
return this.getBit(21);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(21, val);
|
||||
}
|
||||
}, {
|
||||
key: "voiceMuteMembers",
|
||||
get: function get() {
|
||||
return this.getBit(22);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(22, val);
|
||||
}
|
||||
}, {
|
||||
key: "voiceDeafenMembers",
|
||||
get: function get() {
|
||||
return this.getBit(23);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(23, val);
|
||||
}
|
||||
}, {
|
||||
key: "voiceMoveMembers",
|
||||
get: function get() {
|
||||
return this.getBit(24);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(24, val);
|
||||
}
|
||||
}, {
|
||||
key: "voiceUseVoiceActivation",
|
||||
get: function get() {
|
||||
return this.getBit(25);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(25, val);
|
||||
}
|
||||
}]);
|
||||
|
||||
return EvaluatedPermissions;
|
||||
})();
|
||||
|
||||
module.exports = EvaluatedPermissions;
|
||||
213
lib/Member.js
Normal file
213
lib/Member.js
Normal file
@@ -0,0 +1,213 @@
|
||||
"use strict";
|
||||
|
||||
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
||||
|
||||
var User = require("./user.js");
|
||||
var ServerPermissions = require("./ServerPermissions.js");
|
||||
var EvaluatedPermissions = require("./EvaluatedPermissions.js");
|
||||
|
||||
var Member = (function (_User) {
|
||||
_inherits(Member, _User);
|
||||
|
||||
function Member(user, server, roles) {
|
||||
_classCallCheck(this, Member);
|
||||
|
||||
_User.call(this, user); // should work, we are basically creating a Member that has the same properties as user and a few more
|
||||
this.serverID = server.id;
|
||||
this.client = server.client;
|
||||
this.rawRoles = roles;
|
||||
}
|
||||
|
||||
Member.prototype.removeRole = function removeRole(role) {
|
||||
this.rawRoles.splice(this.rawRoles.indexOf(role.id), 1);
|
||||
};
|
||||
|
||||
Member.prototype.addRole = function addRole(role) {
|
||||
if (this.rawRoles.indexOf(role.id) == -1) {
|
||||
this.rawRoles.push(role.id);
|
||||
}
|
||||
};
|
||||
|
||||
Member.prototype.hasRole = function hasRole(role) {
|
||||
for (var _iterator = this.roles, _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 _role = _ref;
|
||||
|
||||
if (role.id === _role.id) return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
Member.prototype.permissionsIn = function permissionsIn(channel) {
|
||||
|
||||
if (channel.server.ownerID === this.id) {
|
||||
return new EvaluatedPermissions(4294967295); //all perms
|
||||
}
|
||||
|
||||
var affectingOverwrites = [];
|
||||
var affectingMemberOverwrites = [];
|
||||
|
||||
for (var _iterator2 = channel.roles, _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 overwrite = _ref2;
|
||||
|
||||
if (overwrite.id == this.serverID) {
|
||||
// @everyone for channel
|
||||
affectingOverwrites.push(overwrite);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (var _iterator3 = channel.roles, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
|
||||
var _ref3;
|
||||
|
||||
if (_isArray3) {
|
||||
if (_i3 >= _iterator3.length) break;
|
||||
_ref3 = _iterator3[_i3++];
|
||||
} else {
|
||||
_i3 = _iterator3.next();
|
||||
if (_i3.done) break;
|
||||
_ref3 = _i3.value;
|
||||
}
|
||||
|
||||
var overwrite = _ref3;
|
||||
|
||||
if (overwrite.id === this.id && overwrite.type === "member") {
|
||||
affectingMemberOverwrites.push(overwrite);
|
||||
} else if (this.rawRoles.indexOf(overwrite.id) !== -1) {
|
||||
affectingOverwrites.push(overwrite);
|
||||
}
|
||||
}
|
||||
|
||||
if (affectingOverwrites.length === 0 && affectingMemberOverwrites.length === 0) {
|
||||
return this.evalPerms;
|
||||
}
|
||||
|
||||
var finalPacked = affectingOverwrites.length !== 0 ? affectingOverwrites[0].packed : affectingMemberOverwrites[0].packed;
|
||||
|
||||
for (var _iterator4 = affectingOverwrites, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
|
||||
var _ref4;
|
||||
|
||||
if (_isArray4) {
|
||||
if (_i4 >= _iterator4.length) break;
|
||||
_ref4 = _iterator4[_i4++];
|
||||
} else {
|
||||
_i4 = _iterator4.next();
|
||||
if (_i4.done) break;
|
||||
_ref4 = _i4.value;
|
||||
}
|
||||
|
||||
var overwrite = _ref4;
|
||||
|
||||
finalPacked = finalPacked & ~overwrite.deny;
|
||||
finalPacked = finalPacked | overwrite.allow;
|
||||
}
|
||||
|
||||
for (var _iterator5 = affectingMemberOverwrites, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
|
||||
var _ref5;
|
||||
|
||||
if (_isArray5) {
|
||||
if (_i5 >= _iterator5.length) break;
|
||||
_ref5 = _iterator5[_i5++];
|
||||
} else {
|
||||
_i5 = _iterator5.next();
|
||||
if (_i5.done) break;
|
||||
_ref5 = _i5.value;
|
||||
}
|
||||
|
||||
var overwrite = _ref5;
|
||||
|
||||
finalPacked = finalPacked & ~overwrite.deny;
|
||||
finalPacked = finalPacked | overwrite.allow;
|
||||
}
|
||||
|
||||
return new EvaluatedPermissions(finalPacked);
|
||||
};
|
||||
|
||||
_createClass(Member, [{
|
||||
key: "server",
|
||||
get: function get() {
|
||||
return this.client.getServer("id", this.serverID);
|
||||
}
|
||||
}, {
|
||||
key: "roles",
|
||||
get: function get() {
|
||||
|
||||
var ufRoles = [this.server.getRole("id", this.server.id)];
|
||||
|
||||
for (var _iterator6 = this.rawRoles, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
|
||||
var _ref6;
|
||||
|
||||
if (_isArray6) {
|
||||
if (_i6 >= _iterator6.length) break;
|
||||
_ref6 = _iterator6[_i6++];
|
||||
} else {
|
||||
_i6 = _iterator6.next();
|
||||
if (_i6.done) break;
|
||||
_ref6 = _i6.value;
|
||||
}
|
||||
|
||||
var rawRole = _ref6;
|
||||
|
||||
ufRoles.push(this.server.getRole("id", rawRole));
|
||||
}
|
||||
|
||||
return ufRoles;
|
||||
}
|
||||
}, {
|
||||
key: "evalPerms",
|
||||
get: function get() {
|
||||
var basePerms = this.roles,
|
||||
//cache roles as it can be slightly expensive
|
||||
basePerm = basePerms[0].packed;
|
||||
|
||||
basePerms = basePerms || [];
|
||||
for (var _iterator7 = basePerms, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {
|
||||
var _ref7;
|
||||
|
||||
if (_isArray7) {
|
||||
if (_i7 >= _iterator7.length) break;
|
||||
_ref7 = _iterator7[_i7++];
|
||||
} else {
|
||||
_i7 = _iterator7.next();
|
||||
if (_i7.done) break;
|
||||
_ref7 = _i7.value;
|
||||
}
|
||||
|
||||
var perm = _ref7;
|
||||
|
||||
basePerm = basePerm | perm.packed;
|
||||
}
|
||||
|
||||
return new EvaluatedPermissions(basePerm);
|
||||
}
|
||||
}]);
|
||||
|
||||
return Member;
|
||||
})(User);
|
||||
|
||||
module.exports = Member;
|
||||
61
lib/PMChannel.js
Normal file
61
lib/PMChannel.js
Normal file
@@ -0,0 +1,61 @@
|
||||
"use strict";
|
||||
|
||||
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
var PMChannel = (function () {
|
||||
function PMChannel(data, client) {
|
||||
_classCallCheck(this, PMChannel);
|
||||
|
||||
this.user = client.getUser("id", data.recipient.id);
|
||||
this.id = data.id;
|
||||
this.messages = [];
|
||||
this.client = client;
|
||||
}
|
||||
|
||||
PMChannel.prototype.addMessage = function addMessage(data) {
|
||||
if (!this.getMessage("id", data.id)) {
|
||||
this.messages.push(data);
|
||||
}
|
||||
return this.getMessage("id", data.id);
|
||||
};
|
||||
|
||||
PMChannel.prototype.getMessage = function getMessage(key, value) {
|
||||
|
||||
if (this.messages.length > 1000) {
|
||||
this.messages.splice(0, 1);
|
||||
}
|
||||
|
||||
for (var _iterator = this.messages, _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 message = _ref;
|
||||
|
||||
if (message[key] === value) {
|
||||
return message;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
_createClass(PMChannel, [{
|
||||
key: "isPrivate",
|
||||
get: function get() {
|
||||
return true;
|
||||
}
|
||||
}]);
|
||||
|
||||
return PMChannel;
|
||||
})();
|
||||
|
||||
module.exports = PMChannel;
|
||||
240
lib/ServerPermissions.js
Normal file
240
lib/ServerPermissions.js
Normal file
@@ -0,0 +1,240 @@
|
||||
"use strict";
|
||||
|
||||
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
var ServerPermissions = (function () {
|
||||
function ServerPermissions(data, server) {
|
||||
_classCallCheck(this, ServerPermissions);
|
||||
|
||||
var self = this;
|
||||
|
||||
function getBit(x) {
|
||||
return (self.packed >>> x & 1) === 1;
|
||||
}
|
||||
|
||||
this.managed = data.managed || false;
|
||||
this.position = data.position || 1;
|
||||
this.hoist = data.hoist || false;
|
||||
this.color = data.color || 0;
|
||||
this.packed = data.permissions || (data.name === "@everyone" ? 36953089 : 0);
|
||||
this.name = data.name || "new role";
|
||||
this.id = data.id || null;
|
||||
this.server = server;
|
||||
}
|
||||
|
||||
ServerPermissions.prototype.serialise = function serialise() {
|
||||
return {
|
||||
createInstantInvite: this.createInstantInvite,
|
||||
manageRoles: this.manageRoles,
|
||||
manageChannels: this.manageChannels,
|
||||
readMessages: this.readMessages,
|
||||
sendMessages: this.sendMessages,
|
||||
sendTTSMessages: this.sendTTSMessages,
|
||||
manageMessages: this.manageMessages,
|
||||
embedLinks: this.embedLinks,
|
||||
attachFiles: this.attachFiles,
|
||||
readMessageHistory: this.readMessageHistory,
|
||||
mentionEveryone: this.mentionEveryone,
|
||||
voiceConnect: this.voiceConnect,
|
||||
voiceSpeak: this.voiceSpeak,
|
||||
voiceMuteMembers: this.voiceMuteMembers,
|
||||
voiceDeafenMembers: this.voiceDeafenMembers,
|
||||
voiceMoveMembers: this.voiceMoveMembers,
|
||||
voiceUseVoiceActivation: this.voiceUseVoiceActivation
|
||||
};
|
||||
};
|
||||
|
||||
ServerPermissions.prototype.serialize = function serialize() {
|
||||
return this.serialise();
|
||||
};
|
||||
|
||||
ServerPermissions.prototype.getBit = function getBit(x) {
|
||||
if ((this.packed >>> 3 & 1) === 1) {
|
||||
return true;
|
||||
}
|
||||
return (this.packed >>> x & 1) === 1;
|
||||
};
|
||||
|
||||
ServerPermissions.prototype.setBit = function setBit(location, value) {
|
||||
|
||||
if (value) {
|
||||
// allow that permission
|
||||
this.packed |= 1 << location;
|
||||
} else {
|
||||
// not allowed
|
||||
this.packed &= ~(1 << location);
|
||||
}
|
||||
};
|
||||
|
||||
ServerPermissions.prototype.toString = function toString() {
|
||||
return this.name;
|
||||
};
|
||||
|
||||
_createClass(ServerPermissions, [{
|
||||
key: "createInstantInvite",
|
||||
get: function get() {
|
||||
return this.getBit(0);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(0, val);
|
||||
}
|
||||
}, {
|
||||
key: "banMembers",
|
||||
get: function get() {
|
||||
return this.getBit(1);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(1, val);
|
||||
}
|
||||
}, {
|
||||
key: "kickMembers",
|
||||
get: function get() {
|
||||
return this.getBit(2);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(2, val);
|
||||
}
|
||||
}, {
|
||||
key: "manageRoles",
|
||||
get: function get() {
|
||||
return this.getBit(3);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(3, val);
|
||||
}
|
||||
}, {
|
||||
key: "manageChannels",
|
||||
get: function get() {
|
||||
return this.getBit(4);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(4, val);
|
||||
}
|
||||
}, {
|
||||
key: "manageServer",
|
||||
get: function get() {
|
||||
return this.getBit(5);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(5, val);
|
||||
}
|
||||
}, {
|
||||
key: "readMessages",
|
||||
get: function get() {
|
||||
return this.getBit(10);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(10, val);
|
||||
}
|
||||
}, {
|
||||
key: "sendMessages",
|
||||
get: function get() {
|
||||
return this.getBit(11);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(11, val);
|
||||
}
|
||||
}, {
|
||||
key: "sendTTSMessages",
|
||||
get: function get() {
|
||||
return this.getBit(12);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(12, val);
|
||||
}
|
||||
}, {
|
||||
key: "manageMessages",
|
||||
get: function get() {
|
||||
return this.getBit(13);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(13, val);
|
||||
}
|
||||
}, {
|
||||
key: "embedLinks",
|
||||
get: function get() {
|
||||
return this.getBit(14);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(14, val);
|
||||
}
|
||||
}, {
|
||||
key: "attachFiles",
|
||||
get: function get() {
|
||||
return this.getBit(15);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(15, val);
|
||||
}
|
||||
}, {
|
||||
key: "readMessageHistory",
|
||||
get: function get() {
|
||||
return this.getBit(16);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(16, val);
|
||||
}
|
||||
}, {
|
||||
key: "mentionEveryone",
|
||||
get: function get() {
|
||||
return this.getBit(17);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(17, val);
|
||||
}
|
||||
}, {
|
||||
key: "voiceConnect",
|
||||
get: function get() {
|
||||
return this.getBit(20);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(20, val);
|
||||
}
|
||||
}, {
|
||||
key: "voiceSpeak",
|
||||
get: function get() {
|
||||
return this.getBit(21);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(21, val);
|
||||
}
|
||||
}, {
|
||||
key: "voiceMuteMembers",
|
||||
get: function get() {
|
||||
return this.getBit(22);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(22, val);
|
||||
}
|
||||
}, {
|
||||
key: "voiceDeafenMembers",
|
||||
get: function get() {
|
||||
return this.getBit(23);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(23, val);
|
||||
}
|
||||
}, {
|
||||
key: "voiceMoveMembers",
|
||||
get: function get() {
|
||||
return this.getBit(24);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(24, val);
|
||||
}
|
||||
}, {
|
||||
key: "voiceUseVoiceActivation",
|
||||
get: function get() {
|
||||
return this.getBit(25);
|
||||
},
|
||||
set: function set(val) {
|
||||
this.setBit(25, val);
|
||||
}
|
||||
}]);
|
||||
|
||||
return ServerPermissions;
|
||||
})();
|
||||
|
||||
module.exports = ServerPermissions;
|
||||
@@ -1 +0,0 @@
|
||||
"use strict";function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _inherits(subClass,superClass){if(typeof superClass !== "function" && superClass !== null){throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}var Equality=require("../Util/Equality.js");var Cache=require("../Util/Cache.js");var PermissionOverwrite=require("./PermissionOverwrite.js");var reg=require("../Util/ArgumentRegulariser.js").reg;var Channel=(function(_Equality){_inherits(Channel,_Equality);function Channel(data,client){_classCallCheck(this,Channel);_Equality.call(this);this.id = data.id;this.client = client;}Channel.prototype["delete"] = function _delete(){return this.client.deleteChannel.apply(this.client,reg(this,arguments));};return Channel;})(Equality);module.exports = Channel;
|
||||
@@ -1,7 +0,0 @@
|
||||
"use strict";function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var Permissions=require("../Constants.js").Permissions;var ChannelPermissions=(function(){function ChannelPermissions(permissions){_classCallCheck(this,ChannelPermissions);this.permissions = permissions;}ChannelPermissions.prototype.serialise = function serialise(explicit){var _this=this;var hp=function hp(perm){return _this.hasPermission(perm,explicit);};return { // general
|
||||
createInstantInvite:hp(Permissions.createInstantInvite),kickMembers:hp(Permissions.kickMembers),banMembers:hp(Permissions.banMembers),managePermissions:hp(Permissions.managePermissions),manageChannel:hp(Permissions.manageChannel),manageServer:hp(Permissions.manageServer), // text
|
||||
readMessages:hp(Permissions.readMessages),sendMessages:hp(Permissions.sendMessages),sendTTSMessages:hp(Permissions.sendTTSMessages),manageMessages:hp(Permissions.manageMessages),embedLinks:hp(Permissions.embedLinks),attachFiles:hp(Permissions.attachFiles),readMessageHistory:hp(Permissions.readMessageHistory),mentionEveryone:hp(Permissions.mentionEveryone), // voice
|
||||
voiceConnect:hp(Permissions.voiceConnect),voiceSpeak:hp(Permissions.voiceSpeak),voiceMuteMembers:hp(Permissions.voiceMuteMembers),voiceDeafenMembers:hp(Permissions.voiceDeafenMembers),voiceMoveMembers:hp(Permissions.voiceMoveMembers),voiceUseVAD:hp(Permissions.voiceUseVAD)};};ChannelPermissions.prototype.serialize = function serialize(){ // ;n;
|
||||
return this.serialise();};ChannelPermissions.prototype.hasPermission = function hasPermission(perm){var explicit=arguments.length <= 1 || arguments[1] === undefined?false:arguments[1];if(perm instanceof String || typeof perm === "string"){perm = Permissions[perm];}if(!perm){return false;}if(!explicit){ // implicit permissions allowed
|
||||
if(!!(this.permissions & Permissions.manageRoles)){ // manageRoles allowed, they have all permissions
|
||||
return true;}}return !!(this.permissions & perm);};return ChannelPermissions;})();module.exports = ChannelPermissions;
|
||||
@@ -1 +0,0 @@
|
||||
"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;
|
||||
@@ -1,31 +0,0 @@
|
||||
"use strict";
|
||||
|
||||
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
||||
|
||||
var User = require("./User.js");
|
||||
|
||||
var Member = (function (_User) {
|
||||
_inherits(Member, _User);
|
||||
|
||||
function Member(data, client, server) {
|
||||
_classCallCheck(this, Member);
|
||||
|
||||
_User.call(this, data, client);
|
||||
this.serverID = server;
|
||||
}
|
||||
|
||||
_createClass(Member, [{
|
||||
key: "server",
|
||||
get: function get() {
|
||||
return this.client.internal.servers.get("id", this.serverID);
|
||||
}
|
||||
}]);
|
||||
|
||||
return Member;
|
||||
})(User);
|
||||
|
||||
module.exports = Member;
|
||||
@@ -1,4 +0,0 @@
|
||||
"use strict";function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _inherits(subClass,superClass){if(typeof superClass !== "function" && superClass !== null){throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}var Cache=require("../Util/Cache.js");var User=require("./User.js");var reg=require("../Util/ArgumentRegulariser.js").reg;var Equality=require("../Util/Equality");var Message=(function(_Equality){_inherits(Message,_Equality);function Message(data,channel,client){var _this=this;_classCallCheck(this,Message);_Equality.call(this);this.channel = channel;this.client = client;this.nonce = data.nonce;this.attachments = data.attachments;this.tts = data.tts;this.embeds = data.embeds;this.timestamp = Date.parse(data.timestamp);this.everyoneMentioned = data.mention_everyone;this.id = data.id;if(data.edited_timestamp)this.editedTimestamp = Date.parse(data.edited_timestamp);if(data.author instanceof User)this.author = data.author;else this.author = client.internal.users.add(new User(data.author,client));this.content = data.content;this.mentions = new Cache();data.mentions.forEach(function(mention){ // this is .add and not .get because it allows the bot to cache
|
||||
// users from messages from logs who may have left the server and were
|
||||
// not previously cached.
|
||||
if(mention instanceof User)_this.mentions.push(mention);else _this.mentions.add(client.internal.users.add(new User(mention,client)));});}Message.prototype.isMentioned = function isMentioned(user){user = this.client.internal.resolver.resolveUser(user);if(user){return this.mentions.has("id",user.id);}else {return false;}};Message.prototype.toString = function toString(){return this.content;};Message.prototype["delete"] = function _delete(){return this.client.deleteMessage.apply(this.client,reg(this,arguments));};Message.prototype.update = function update(){return this.client.updateMessage.apply(this.client,reg(this,arguments));};Message.prototype.reply = function reply(){return this.client.reply.apply(this.client,reg(this,arguments));};Message.prototype.replyTTS = function replyTTS(){return this.client.replyTTS.apply(this.client,reg(this,arguments));};return Message;})(Equality);module.exports = Message;
|
||||
@@ -1 +0,0 @@
|
||||
"use strict";var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if("value" in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _inherits(subClass,superClass){if(typeof superClass !== "function" && superClass !== null){throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}var Channel=require("./Channel.js");var User=require("./User.js");var Equality=require("../Util/Equality.js");var Cache=require("../Util/Cache.js");var reg=require("../Util/ArgumentRegulariser.js").reg;var PMChannel=(function(_Channel){_inherits(PMChannel,_Channel);function PMChannel(data,client){_classCallCheck(this,PMChannel);_Channel.call(this,data,client);this.type = data.type || "text";this.lastMessageId = data.last_message_id;this.messages = new Cache("id",1000);this.recipient = this.client.internal.users.add(new User(data.recipient,this.client));} /* warning! may return null */PMChannel.prototype.toString = function toString(){return this.recipient.toString();};PMChannel.prototype.sendMessage = function sendMessage(){return this.client.sendMessage.apply(this.client,reg(this,arguments));};PMChannel.prototype.sendTTSMessage = function sendTTSMessage(){return this.client.sendTTSMessage.apply(this.client,reg(this,arguments));};_createClass(PMChannel,[{key:"lastMessage",get:function get(){return this.messages.get("id",this.lastMessageID);}}]);return PMChannel;})(Channel);module.exports = PMChannel;
|
||||
@@ -1,6 +0,0 @@
|
||||
"use strict";var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if("value" in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var Permissions=require("../Constants.js").Permissions;var PermissionOverwrite=(function(){function PermissionOverwrite(data){_classCallCheck(this,PermissionOverwrite);this.id = data.id;this.type = data.type; // member or role
|
||||
this.deny = data.deny;this.allow = data.allow;} // returns an array of allowed permissions
|
||||
PermissionOverwrite.prototype.setAllowed = function setAllowed(allowedArray){var _this=this;allowedArray.forEach(function(permission){if(permission instanceof String || typeof permission === "string"){permission = Permissions[permission];}if(permission){_this.allow |= 1 << permission;}});};PermissionOverwrite.prototype.setDenied = function setDenied(deniedArray){var _this2=this;deniedArray.forEach(function(permission){if(permission instanceof String || typeof permission === "string"){permission = Permissions[permission];}if(permission){_this2.deny |= 1 << permission;}});};_createClass(PermissionOverwrite,[{key:"allowed",get:function get(){var allowed=[];for(var permName in Permissions) {if(permName === "manageRoles" || permName === "manageChannels"){ // these permissions do not exist in overwrites.
|
||||
continue;}if(!!(this.allow & Permissions[permName])){allowed.push(permName);}}return allowed;} // returns an array of denied permissions
|
||||
},{key:"denied",get:function get(){var denied=[];for(var permName in Permissions) {if(permName === "manageRoles" || permName === "manageChannels"){ // these permissions do not exist in overwrites.
|
||||
continue;}if(!!(this.deny & Permissions[permName])){denied.push(permName);}}return denied;}}]);return PermissionOverwrite;})();module.exports = PermissionOverwrite;
|
||||
@@ -1,23 +0,0 @@
|
||||
"use strict";function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var Permissions=require("../Constants.js").Permissions; /*
|
||||
|
||||
example data
|
||||
|
||||
{ position: -1,
|
||||
permissions: 36953089,
|
||||
name: '@everyone',
|
||||
managed: false,
|
||||
id: '110007368451915776',
|
||||
hoist: false,
|
||||
color: 0 }
|
||||
*/var DefaultRole=[Permissions.createInstantInvite,Permissions.readMessages,Permissions.readMessageHistory,Permissions.sendMessages,Permissions.sendTTSMessages,Permissions.embedLinks,Permissions.attachFiles,Permissions.readMessageHistory,Permissions.mentionEveryone,Permissions.voiceConnect,Permissions.voiceSpeak,Permissions.voiceUseVAD].reduce(function(previous,current){return previous | current;},0);var Role=(function(){function Role(data,server,client){_classCallCheck(this,Role);this.position = data.position || -1;this.permissions = data.permissions || (data.name === "@everyone"?DefaultRole:0);this.name = data.name || "@everyone";this.managed = data.managed || false;this.id = data.id;this.hoist = data.hoist || false;this.color = data.color || 0;this.server = server;this.client = client;}Role.prototype.serialise = function serialise(explicit){var _this=this;var hp=function hp(perm){return _this.hasPermission(perm,explicit);};return { // general
|
||||
createInstantInvite:hp(Permissions.createInstantInvite),kickMembers:hp(Permissions.kickMembers),banMembers:hp(Permissions.banMembers),manageRoles:hp(Permissions.manageRoles),manageChannels:hp(Permissions.manageChannels),manageServer:hp(Permissions.manageServer), // text
|
||||
readMessages:hp(Permissions.readMessages),sendMessages:hp(Permissions.sendMessages),sendTTSMessages:hp(Permissions.sendTTSMessages),manageMessages:hp(Permissions.manageMessages),embedLinks:hp(Permissions.embedLinks),attachFiles:hp(Permissions.attachFiles),readMessageHistory:hp(Permissions.readMessageHistory),mentionEveryone:hp(Permissions.mentionEveryone), // voice
|
||||
voiceConnect:hp(Permissions.voiceConnect),voiceSpeak:hp(Permissions.voiceSpeak),voiceMuteMembers:hp(Permissions.voiceMuteMembers),voiceDeafenMembers:hp(Permissions.voiceDeafenMembers),voiceMoveMembers:hp(Permissions.voiceMoveMembers),voiceUseVAD:hp(Permissions.voiceUseVAD)};};Role.prototype.serialize = function serialize(){ // ;n;
|
||||
return this.serialise();};Role.prototype.hasPermission = function hasPermission(perm){var explicit=arguments.length <= 1 || arguments[1] === undefined?false:arguments[1];if(perm instanceof String || typeof perm === "string"){perm = Permissions[perm];}if(!perm){return false;}if(!explicit){ // implicit permissions allowed
|
||||
if(!!(this.permissions & Permissions.manageRoles)){ // manageRoles allowed, they have all permissions
|
||||
return true;}} // e.g.
|
||||
// !!(36953089 & Permissions.manageRoles) = not allowed to manage roles
|
||||
// !!(36953089 & (1 << 21)) = voice speak allowed
|
||||
return !!(this.permissions & perm);};Role.prototype.setPermission = function setPermission(permission,value){if(permission instanceof String || typeof permission === "string"){permission = Permissions[permission];}if(permission){ // valid permission
|
||||
if(value){this.permissions |= permission;}else {this.permissions &= ~permission;}}};Role.prototype.setPermissions = function setPermissions(obj){var _this2=this;obj.forEach(function(value,permission){if(permission instanceof String || typeof permission === "string"){permission = Permissions[permission];}if(permission){ // valid permission
|
||||
_this2.setPermission(permission,value);}});};Role.prototype.colorAsHex = function colorAsHex(){var val=this.color.toString();while(val.length < 6) {val = "0" + val;}return "#" + val;};return Role;})();module.exports = Role;
|
||||
@@ -1 +0,0 @@
|
||||
"use strict";var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if("value" in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _inherits(subClass,superClass){if(typeof superClass !== "function" && superClass !== null){throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}var Equality=require("../Util/Equality.js");var Endpoints=require("../Constants.js").Endpoints;var Cache=require("../Util/Cache.js");var User=require("./User.js");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);function Server(data,client){var _this=this;_classCallCheck(this,Server);_Equality.call(this);var self=this;this.client = client;this.region = data.region;this.ownerID = data.owner_id;this.name = data.name;this.id = data.id;this.members = new Cache();this.channels = new Cache();this.roles = new Cache();this.icon = data.icon;this.afkTimeout = data.afkTimeout;this.afkChannelID = data.afk_channel_id;this.memberMap = {};var self=this;data.roles.forEach(function(dataRole){_this.roles.add(new Role(dataRole,_this,client));});data.members.forEach(function(dataUser){_this.memberMap[dataUser.user.id] = {roles:dataUser.roles.map(function(pid){return self.roles.get("id",pid);}),mute:dataUser.mute,deaf:dataUser.deaf,joinedAt:Date.parse(dataUser.joined_at)};var user=client.internal.users.add(new User(dataUser.user,client));_this.members.add(user);});data.channels.forEach(function(dataChannel){if(dataChannel.type === "text"){var channel=client.internal.channels.add(new TextChannel(dataChannel,client,_this));_this.channels.add(channel);}else {var channel=client.internal.channels.add(new VoiceChannel(dataChannel,client,_this));_this.channels.add(channel);}});if(data.presences){for(var _iterator=data.presences,_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 presence=_ref;var user=client.internal.users.get("id",presence.user.id);if(user){user.status = presence.status;user.gameID = presence.game_id;}}}}Server.prototype.rolesOfUser = function rolesOfUser(user){user = this.client.internal.resolver.resolveUser(user);if(user){return this.memberMap[user.id]?this.memberMap[user.id].roles:[];}else {return null;}};Server.prototype.rolesOf = function rolesOf(user){return this.rolesOfUser(user);};Server.prototype.toString = function toString(){return this.name;};Server.prototype.equalsStrict = function equalsStrict(obj){if(obj instanceof Server){for(var _iterator2=strictKeys,_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 key=_ref2;if(obj[key] !== this[key]){return false;}}}else {return false;}return true;};_createClass(Server,[{key:"iconURL",get:function get(){if(!this.icon){return null;}else {return Endpoints.SERVER_ICON(this.id,this.icon);}}},{key:"afkChannel",get:function get(){return this.channels.get("id",this.afkChannelID);}},{key:"defaultChannel",get:function get(){return this.channels.get("id",this.id);}},{key:"owner",get:function get(){return this.members.get("id",this.ownerID);}}]);return Server;})(Equality);module.exports = Server;
|
||||
@@ -1 +0,0 @@
|
||||
"use strict";function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _inherits(subClass,superClass){if(typeof superClass !== "function" && superClass !== null){throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}var Channel=require("./Channel.js");var Cache=require("../Util/Cache.js");var PermissionOverwrite=require("./PermissionOverwrite.js");var ChannelPermissions=require("./ChannelPermissions.js");var reg=require("../Util/ArgumentRegulariser.js").reg;var ServerChannel=(function(_Channel){_inherits(ServerChannel,_Channel);function ServerChannel(data,client,server){var _this=this;_classCallCheck(this,ServerChannel);_Channel.call(this,data,client);this.name = data.name;this.type = data.type;this.position = data.position;this.permissionOverwrites = new Cache();this.server = server;data.permission_overwrites.forEach(function(permission){_this.permissionOverwrites.add(new PermissionOverwrite(permission));});}ServerChannel.prototype.permissionsOf = function permissionsOf(user){user = this.client.internal.resolver.resolveUser(user);if(user){if(this.server.owner.equals(user)){return new ChannelPermissions(4294967295);}var everyoneRole=this.server.roles.get("name","@everyone");var userRoles=[everyoneRole].concat(this.server.rolesOf(user) || []);var userRolesID=userRoles.map(function(v){return v.id;});var roleOverwrites=[],memberOverwrites=[];this.permissionOverwrites.forEach(function(overwrite){if(overwrite.type === "member" && overwrite.id === user.id){memberOverwrites.push(overwrite);}else if(overwrite.type === "role" && overwrite.id in userRolesID){roleOverwrites.push(overwrite);}});var permissions=0;for(var _iterator=userRoles,_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 serverRole=_ref;permissions |= serverRole.permissions;}for(var _iterator2=roleOverwrites.concat(memberOverwrites),_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 overwrite=_ref2;permissions = permissions & ~overwrite.deny;permissions = permissions | overwrite.allow;}return new ChannelPermissions(permissions);}else {return null;}};ServerChannel.prototype.permsOf = function permsOf(user){return this.permissionsOf(user);};ServerChannel.prototype.mention = function mention(){return "<#" + this.id + ">";};ServerChannel.prototype.toString = function toString(){return this.mention();};ServerChannel.prototype.setName = function setName(){return this.client.setChannelName.apply(this.client,reg(this,arguments));};return ServerChannel;})(Channel);module.exports = ServerChannel;
|
||||
@@ -1 +0,0 @@
|
||||
"use strict";var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if("value" in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _inherits(subClass,superClass){if(typeof superClass !== "function" && superClass !== null){throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}var ServerChannel=require("./ServerChannel.js");var Cache=require("../Util/Cache.js");var reg=require("../Util/ArgumentRegulariser.js").reg;var TextChannel=(function(_ServerChannel){_inherits(TextChannel,_ServerChannel);function TextChannel(data,client,server){_classCallCheck(this,TextChannel);_ServerChannel.call(this,data,client,server);this.topic = data.topic;this.lastMessageID = data.last_message_id;this.messages = new Cache("id",client.options.maximumMessages);} /* warning! may return null */TextChannel.prototype.setTopic = function setTopic(){return this.client.setTopic.apply(this.client,reg(this,arguments));};TextChannel.prototype.setNameAndTopic = function setNameAndTopic(){return this.client.setChannelNameAndTopic.apply(this.client,reg(this,arguments));};TextChannel.prototype.update = function update(){return this.client.updateChannel.apply(this.client,reg(this,arguments));};TextChannel.prototype.sendMessage = function sendMessage(){return this.client.sendMessage.apply(this.client,reg(this,arguments));};TextChannel.prototype.sendTTSMessage = function sendTTSMessage(){return this.client.sendTTSMessage.apply(this.client,reg(this,arguments));};_createClass(TextChannel,[{key:"lastMessage",get:function get(){return this.messages.get("id",this.lastMessageID);}}]);return TextChannel;})(ServerChannel);module.exports = TextChannel;
|
||||
@@ -1 +0,0 @@
|
||||
"use strict";var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if("value" in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _inherits(subClass,superClass){if(typeof superClass !== "function" && superClass !== null){throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}var Equality=require("../Util/Equality.js");var Endpoints=require("../Constants.js").Endpoints;var User=(function(_Equality){_inherits(User,_Equality);function User(data,client){_classCallCheck(this,User);_Equality.call(this);this.client = client;this.username = data.username;this.discriminator = data.discriminator;this.id = data.id;this.avatar = data.avatar;this.status = data.status || "offline";this.gameID = data.game_id || null;this.typing = {since:null,channel:null};}User.prototype.mention = function mention(){return "<@" + this.id + ">";};User.prototype.toString = function toString(){return this.mention();};User.prototype.equalsStrict = function equalsStrict(obj){if(obj instanceof User)return this.id === obj.id && this.username === obj.username && this.discriminator === obj.discriminator && this.avatar === obj.avatar && this.status === obj.status && this.gameID === obj.gameID;else return false;};_createClass(User,[{key:"avatarURL",get:function get(){if(!this.avatar){return null;}else {return Endpoints.AVATAR(this.id,this.avatar);}}}]);return User;})(Equality);module.exports = User;
|
||||
@@ -1 +0,0 @@
|
||||
"use strict";function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _inherits(subClass,superClass){if(typeof superClass !== "function" && superClass !== null){throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}var ServerChannel=require("./ServerChannel.js");var VoiceChannel=(function(_ServerChannel){_inherits(VoiceChannel,_ServerChannel);function VoiceChannel(data,client,server){_classCallCheck(this,VoiceChannel);_ServerChannel.call(this,data,client,server);}return VoiceChannel;})(ServerChannel);module.exports = VoiceChannel;
|
||||
@@ -1 +0,0 @@
|
||||
"use strict";exports.reg = function(c,a){return [c].concat(Array.prototype.slice.call(a));};
|
||||
@@ -1 +0,0 @@
|
||||
"use strict";function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _inherits(subClass,superClass){if(typeof superClass !== "function" && superClass !== null){throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}var Cache=(function(_Array){_inherits(Cache,_Array);function Cache(discrim,limit){_classCallCheck(this,Cache);_Array.call(this);this.discrim = discrim || "id";}Cache.prototype.get = function get(key,value){var found=null;this.forEach(function(val,index,array){if(val.hasOwnProperty(key) && val[key] == value){found = val;return;}});return found;};Cache.prototype.has = function has(key,value){return !!this.get(key,value);};Cache.prototype.getAll = function getAll(key,value){var found=new Cache(this.discrim);this.forEach(function(val,index,array){if(val.hasOwnProperty(key) && val[key] == value){found.push(val);return;}});return found;};Cache.prototype.add = function add(data){var exit=false;for(var _iterator=this,_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 item=_ref;if(item[this.discrim] === data[this.discrim]){exit = item;break;}}if(exit){return exit;}else {if(this.limit && this.length >= this.limit){this.splice(0,1);}this.push(data);return data;}};Cache.prototype.update = function update(old,data){var item=this.get(this.discrim,old[this.discrim]);if(item){var index=this.indexOf(item);this[index] = data;return this[index];}else {return false;}};Cache.prototype.remove = function remove(data){var index=this.indexOf(data);if(~index){this.splice(index,1);}else {var item=this.get(this.discrim,data[this.discrim]);if(item){this.splice(this.indexOf(item),1);}}return false;};return Cache;})(Array);module.exports = Cache;
|
||||
@@ -1,12 +0,0 @@
|
||||
/*
|
||||
The Equality Class is just used to show
|
||||
that a Class has an ID that can be used to
|
||||
check for equality.
|
||||
|
||||
Never use == or === when comparing
|
||||
objects in discord.js, they will be different
|
||||
instances sometimes.
|
||||
|
||||
Instead, use objectThatExtendsEquality.equals()
|
||||
*/"use strict";var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if("value" in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var Equality=(function(){function Equality(){_classCallCheck(this,Equality);}Equality.prototype.equals = function equals(object){if(object && object[this.eqDiscriminator] == this[this.eqDiscriminator]){return true;}return false;};Equality.prototype.equalsStrict = function equalsStrict(object){ // override per class type
|
||||
return;};_createClass(Equality,[{key:"eqDiscriminator",get:function get(){return "id";}}]);return Equality;})();module.exports = Equality;
|
||||
@@ -1,4 +0,0 @@
|
||||
"use strict";function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var cpoc=require("child_process");var opus;try{opus = require("node-opus");}catch(e) { // no opus!
|
||||
}var VoicePacket=require("./VoicePacket.js");var AudioEncoder=(function(){function AudioEncoder(){_classCallCheck(this,AudioEncoder);if(opus){this.opus = new opus.OpusEncoder(48000,1);}this.choice = false;}AudioEncoder.prototype.opusBuffer = function opusBuffer(buffer){return this.opus.encode(buffer,1920);};AudioEncoder.prototype.getCommand = function getCommand(force){if(this.choice && force)return choice;var choices=["avconv","ffmpeg"];for(var _iterator=choices,_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 choice=_ref;var p=cpoc.spawnSync(choice);if(!p.error){this.choice = choice;return choice;}}return "help";};AudioEncoder.prototype.encodeStream = function encodeStream(stream){var callback=arguments.length <= 1 || arguments[1] === undefined?function(err,buffer){}:arguments[1];var self=this;return new Promise(function(resolve,reject){var enc=cpoc.spawn(self.getCommand(),["-f","s16le","-ar","48000","-ac","1", // this can be 2 but there's no point, discord makes it mono on playback, wasted bandwidth.
|
||||
"-af","volume=1","pipe:1","-i","-"]);stream.pipe(enc.stdin);enc.stdout.once("readable",function(){callback(null,{proc:enc,stream:enc.stdout,instream:stream});resolve({proc:enc,stream:enc.stdout,instream:stream});});enc.stdout.on("end",function(){callback("end");reject("end");});enc.stdout.on("close",function(){callback("close");reject("close");});});};AudioEncoder.prototype.encodeFile = function encodeFile(file){var callback=arguments.length <= 1 || arguments[1] === undefined?function(err,buffer){}:arguments[1];var self=this;return new Promise(function(resolve,reject){var enc=cpoc.spawn(self.getCommand(),["-f","s16le","-ar","48000","-ac","1", // this can be 2 but there's no point, discord makes it mono on playback, wasted bandwidth.
|
||||
"-af","volume=1","pipe:1","-i",file]);enc.stdout.once("readable",function(){callback(null,{proc:enc,stream:enc.stdout});resolve({proc:enc,stream:enc.stdout});});enc.stdout.on("end",function(){callback("end");reject("end");});enc.stdout.on("close",function(){callback("close");reject("close");});});};return AudioEncoder;})();module.exports = AudioEncoder;
|
||||
@@ -1,2 +0,0 @@
|
||||
"use strict"; // represents an intent of streaming music
|
||||
function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _inherits(subClass,superClass){if(typeof superClass !== "function" && superClass !== null){throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}var EventEmitter=require("events");var StreamIntent=(function(_EventEmitter){_inherits(StreamIntent,_EventEmitter);function StreamIntent(){_classCallCheck(this,StreamIntent);_EventEmitter.call(this);}return StreamIntent;})(EventEmitter);module.exports = StreamIntent;
|
||||
@@ -1,11 +0,0 @@
|
||||
"use strict"; /*
|
||||
Major credit to izy521 who is the creator of
|
||||
https://github.com/izy521/discord.io,
|
||||
|
||||
without his help voice chat in discord.js would not have
|
||||
been possible!
|
||||
*/function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _inherits(subClass,superClass){if(typeof superClass !== "function" && superClass !== null){throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}var WebSocket=require("ws");var dns=require("dns");var udp=require("dgram");var fs=require("fs");var AudioEncoder=require("./AudioEncoder.js");var VoicePacket=require("./VoicePacket.js");var StreamIntent=require("./StreamIntent.js");var EventEmitter=require("events");var VoiceConnection=(function(_EventEmitter){_inherits(VoiceConnection,_EventEmitter);function VoiceConnection(channel,client,session,token,server,endpoint){_classCallCheck(this,VoiceConnection);_EventEmitter.call(this);this.id = channel.id;this.voiceChannel = channel;this.client = client;this.session = session;this.token = token;this.server = server;this.endpoint = endpoint.replace(":80","");this.vWS = null; // vWS means voice websocket
|
||||
this.ready = false;this.vWSData = {};this.encoder = new AudioEncoder();this.udp = null;this.playingIntent = null;this.playing = false;this.streamTime = 0;this.streamProc = null;this.KAI = null;this.init();}VoiceConnection.prototype.destroy = function destroy(){this.stopPlaying();if(this.KAI)clearInterval(this.KAI);this.vWS.close();this.udp.close();this.client.internal.sendWS({op:4,d:{guild_id:null,channel_id:null,self_mute:true,self_deaf:false}});};VoiceConnection.prototype.stopPlaying = function stopPlaying(){this.playing = false;this.playingIntent = null;if(this.instream){this.instream.end();this.instream.destroy();}};VoiceConnection.prototype.playStream = function playStream(stream){var self=this;var startTime=Date.now();var sequence=0;var time=0;var count=0;var length=20;if(self.playingIntent){self.stopPlaying();}self.playing = true;var retStream=new StreamIntent();var onWarning=false;self.playingIntent = retStream;function send(){if(!self.playingIntent || !self.playing){self.setSpeaking(false);retStream.emit("end");self;return;}try{var buffer=stream.read(1920);if(!buffer){setTimeout(send,length * 10); // give chance for some data in 200ms to appear
|
||||
return;}if(buffer.length !== 1920){if(onWarning){retStream.emit("end");stream.destroy();self.setSpeaking(false);return;}else {onWarning = true;setTimeout(send,length * 10); // give chance for some data in 200ms to appear
|
||||
return;}}count++;sequence + 10 < 65535?sequence += 1:sequence = 0;time + 9600 < 4294967295?time += 960:time = 0;self.sendBuffer(buffer,sequence,time,function(e){});var nextTime=startTime + count * length;self.streamTime = count * length;setTimeout(send,length + (nextTime - Date.now()));if(!self.playing)self.setSpeaking(true);retStream.emit("time",self.streamTime);}catch(e) {retStream.emit("error",e);}}self.setSpeaking(true);send();return retStream;};VoiceConnection.prototype.setSpeaking = function setSpeaking(value){this.playing = value;if(this.vWS.readyState === WebSocket.OPEN)this.vWS.send(JSON.stringify({op:5,d:{speaking:value,delay:0}}));};VoiceConnection.prototype.sendPacket = function sendPacket(packet){var callback=arguments.length <= 1 || arguments[1] === undefined?function(err){}:arguments[1];var self=this;self.playing = true;try{if(self.vWS.readyState === WebSocket.OPEN)self.udp.send(packet,0,packet.length,self.vWSData.port,self.endpoint,callback);}catch(e) {self.playing = false;callback(e);return false;}};VoiceConnection.prototype.sendBuffer = function sendBuffer(rawbuffer,sequence,timestamp,callback){var self=this;self.playing = true;try{if(!self.encoder.opus){self.playing = false;self.emit("error","No Opus!");self.client.emit("debug","Tried to use node-opus, but opus not available - install it!");return;}var buffer=self.encoder.opusBuffer(rawbuffer);var packet=new VoicePacket(buffer,sequence,timestamp,self.vWSData.ssrc);return self.sendPacket(packet,callback);}catch(e) {self.playing = false;self.emit("error",e);return false;}};VoiceConnection.prototype.test = function test(){this.playFile("C:/users/amish/desktop/audio.mp3").then(function(stream){stream.on("time",function(time){console.log("Time",time);});});};VoiceConnection.prototype.playFile = function playFile(stream){var _this=this;var callback=arguments.length <= 1 || arguments[1] === undefined?function(err,str){}:arguments[1];var self=this;return new Promise(function(resolve,reject){_this.encoder.encodeFile(stream)["catch"](error).then(function(data){self.streamProc = data.proc;var intent=self.playStream(data.stream);resolve(intent);callback(null,intent);});function error(){var e=arguments.length <= 0 || arguments[0] === undefined?true:arguments[0];reject(e);callback(e);}});};VoiceConnection.prototype.playRawStream = function playRawStream(stream){var _this2=this;var callback=arguments.length <= 1 || arguments[1] === undefined?function(err,str){}:arguments[1];var self=this;return new Promise(function(resolve,reject){_this2.encoder.encodeStream(stream)["catch"](error).then(function(data){self.streamProc = data.proc;self.instream = data.instream;var intent=self.playStream(data.stream);resolve(intent);callback(null,intent);});function error(){var e=arguments.length <= 0 || arguments[0] === undefined?true:arguments[0];reject(e);callback(e);}});};VoiceConnection.prototype.init = function init(){var _this3=this;var self=this;dns.lookup(this.endpoint,function(err,address,family){self.endpoint = address;var vWS=self.vWS = new WebSocket("wss://" + _this3.endpoint,null,{rejectUnauthorized:false});var udpClient=self.udp = udp.createSocket("udp4");var firstPacket=true;var discordIP="",discordPort="";udpClient.bind({exclusive:true});udpClient.on('message',function(msg,rinfo){var buffArr=JSON.parse(JSON.stringify(msg)).data;if(firstPacket === true){for(var i=4;i < buffArr.indexOf(0,i);i++) {discordIP += String.fromCharCode(buffArr[i]);}discordPort = msg.readUIntLE(msg.length - 2,2).toString(10);var wsDiscPayload={"op":1,"d":{"protocol":"udp","data":{"address":discordIP,"port":Number(discordPort),"mode":self.vWSData.modes[0] //Plain
|
||||
}}};vWS.send(JSON.stringify(wsDiscPayload));firstPacket = false;}});vWS.on("open",function(){vWS.send(JSON.stringify({op:0,d:{server_id:self.server.id,user_id:self.client.internal.user.id,session_id:self.session,token:self.token}}));});var KAI;vWS.on("message",function(msg){var data=JSON.parse(msg);switch(data.op){case 2:self.vWSData = data.d;KAI = setInterval(function(){if(vWS && vWS.readyState === WebSocket.OPEN)vWS.send(JSON.stringify({op:3,d:null}));},data.d.heartbeat_interval);self.KAI = KAI;var udpPacket=new Buffer(70);udpPacket.writeUIntBE(data.d.ssrc,0,4);udpClient.send(udpPacket,0,udpPacket.length,data.d.port,self.endpoint,function(err){if(err)self.emit("error",err);});break;case 4:self.ready = true;self.mode = data.d.mode;self.emit("ready",self);break;}});});};return VoiceConnection;})(EventEmitter);module.exports = VoiceConnection;
|
||||
@@ -1 +0,0 @@
|
||||
"use strict";function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var VoicePacket=function VoicePacket(data,sequence,time,ssrc){_classCallCheck(this,VoicePacket);var audioBuffer=data,returnBuffer=new Buffer(audioBuffer.length + 12);returnBuffer.fill(0);returnBuffer[0] = 0x80;returnBuffer[1] = 0x78;returnBuffer.writeUIntBE(sequence,2,2);returnBuffer.writeUIntBE(time,4,4);returnBuffer.writeUIntBE(ssrc,8,4);for(var i=0;i < audioBuffer.length;i++) {returnBuffer[i + 12] = audioBuffer[i];}return returnBuffer;};module.exports = VoicePacket;
|
||||
19
lib/VoiceChannel.js
Normal file
19
lib/VoiceChannel.js
Normal file
@@ -0,0 +1,19 @@
|
||||
"use strict";
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
||||
|
||||
var Channel = require("./channel.js");
|
||||
|
||||
var VoiceChannel = (function (_Channel) {
|
||||
_inherits(VoiceChannel, _Channel);
|
||||
|
||||
function VoiceChannel(data, server) {
|
||||
_classCallCheck(this, VoiceChannel);
|
||||
|
||||
_Channel.call(this, data, server);
|
||||
}
|
||||
|
||||
return VoiceChannel;
|
||||
})(Channel);
|
||||
131
lib/channel.js
Normal file
131
lib/channel.js
Normal file
@@ -0,0 +1,131 @@
|
||||
"use strict";
|
||||
|
||||
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
var ChannelPermissions = require("./ChannelPermissions.js");
|
||||
|
||||
var Channel = (function () {
|
||||
function Channel(data, server) {
|
||||
_classCallCheck(this, Channel);
|
||||
|
||||
this.serverID = server.id;
|
||||
this.client = server.client;
|
||||
this.name = data.name;
|
||||
this.type = data.type;
|
||||
this.topic = data.topic;
|
||||
this.id = data.id;
|
||||
this.messages = [];
|
||||
this.roles = [];
|
||||
|
||||
if (data.permission_overwrites) for (var _iterator = data.permission_overwrites, _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 role = _ref;
|
||||
|
||||
this.roles.push(new ChannelPermissions(role, this));
|
||||
}
|
||||
|
||||
//this.isPrivate = isPrivate; //not sure about the implementation of this...
|
||||
}
|
||||
|
||||
Channel.prototype.permissionsOf = function permissionsOf(member) {
|
||||
|
||||
var mem = this.server.getMember("id", member.id);
|
||||
|
||||
if (mem) {
|
||||
return mem.permissionsIn(this);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
Channel.prototype.equals = function equals(object) {
|
||||
return object && object.id === this.id;
|
||||
};
|
||||
|
||||
Channel.prototype.addMessage = function addMessage(data) {
|
||||
|
||||
if (this.messages.length > 1000) {
|
||||
this.messages.splice(0, 1);
|
||||
}
|
||||
|
||||
if (!this.getMessage("id", data.id)) {
|
||||
this.messages.push(data);
|
||||
}
|
||||
|
||||
return this.getMessage("id", data.id);
|
||||
};
|
||||
|
||||
Channel.prototype.getMessage = function getMessage(key, value) {
|
||||
for (var _iterator2 = this.messages, _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 message = _ref2;
|
||||
|
||||
if (message[key] === value) {
|
||||
return message;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
Channel.prototype.toString = function toString() {
|
||||
return "<#" + this.id + ">";
|
||||
};
|
||||
|
||||
_createClass(Channel, [{
|
||||
key: "server",
|
||||
get: function get() {
|
||||
return this.client.getServer("id", this.serverID);
|
||||
}
|
||||
}, {
|
||||
key: "permissionOverwrites",
|
||||
get: function get() {
|
||||
return this.roles;
|
||||
}
|
||||
}, {
|
||||
key: "permissions",
|
||||
get: function get() {
|
||||
return this.roles;
|
||||
}
|
||||
}, {
|
||||
key: "isPrivate",
|
||||
get: function get() {
|
||||
return false;
|
||||
}
|
||||
}, {
|
||||
key: "users",
|
||||
get: function get() {
|
||||
return this.server.members;
|
||||
}
|
||||
}, {
|
||||
key: "members",
|
||||
get: function get() {
|
||||
return this.server.members;
|
||||
}
|
||||
}]);
|
||||
|
||||
return Channel;
|
||||
})();
|
||||
|
||||
module.exports = Channel;
|
||||
54
lib/index.js
54
lib/index.js
@@ -1 +1,53 @@
|
||||
"use strict";module.exports = {Client:require("./Client/Client"),Channel:require("./Structures/Channel"),ChannelPermissions:require("./Structures/ChannelPermissions"),Invite:require("./Structures/Invite"),Message:require("./Structures/Message"),PermissionOverwrite:require("./Structures/PermissionOverwrite"),PMChannel:require("./Structures/PMChannel"),Role:require("./Structures/Role"),Server:require("./Structures/Server"),ServerChannel:require("./Structures/ServerChannel"),TextChannel:require("./Structures/TextChannel"),User:require("./Structures/User"),VoiceChannel:require("./Structures/VoiceChannel"),Constants:require("./Constants.js")};
|
||||
"use strict";
|
||||
|
||||
var request = require("superagent");
|
||||
var Endpoints = require("./Endpoints.js");
|
||||
var Client = require("./Client.js");
|
||||
var Color = require("../ref/colours.js");
|
||||
|
||||
var Discord = {
|
||||
Endpoints: Endpoints,
|
||||
Client: Client,
|
||||
Color: Color,
|
||||
User: require("./user.js"),
|
||||
Server: require("./server.js"),
|
||||
Channel: require("./channel.js"),
|
||||
Message: require("./message.js"),
|
||||
Invite: require("./invite.js"),
|
||||
PMChannel: require("./PMChannel.js"),
|
||||
ServerPermissions: require("./ServerPermissions.js"),
|
||||
ChannelPermissions: require("./ChannelPermissions.js"),
|
||||
EvaluatedPermissiosn: require("./EvaluatedPermissions.js"),
|
||||
VoiceChannel: require("./VoiceChannel.js"),
|
||||
gameMap: require("../ref/gameMap.json"),
|
||||
Embed: require("./Embeds/Embed.js"),
|
||||
LinkEmbed: require("./Embeds/LinkEmbed.js"),
|
||||
VideoEmbed: require("./Embeds/VideoEmbed.js"),
|
||||
ImageEmbed: require("./Embeds/ImageEmbed.js")
|
||||
};
|
||||
|
||||
Discord.patchStrings = function () {
|
||||
|
||||
defineProperty("bold", "**");
|
||||
defineProperty("underline", "__");
|
||||
defineProperty("strike", "~~");
|
||||
defineProperty("code", "`");
|
||||
defineProperty("codeblock", "```");
|
||||
defineProperty("newline", "\n");
|
||||
|
||||
Object.defineProperty(String.prototype, "italic", {
|
||||
get: function get() {
|
||||
return "*" + this + "*";
|
||||
}
|
||||
});
|
||||
|
||||
function defineProperty(name, joiner) {
|
||||
Object.defineProperty(String.prototype, name, {
|
||||
get: function get() {
|
||||
return joiner + this + joiner;
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = Discord;
|
||||
208
lib/internal.js
Normal file
208
lib/internal.js
Normal file
@@ -0,0 +1,208 @@
|
||||
/*
|
||||
this file is deprecated and should only be used as
|
||||
reference.
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
var request = require("superagent");
|
||||
var Endpoints = require("./endpoints.js");
|
||||
|
||||
var Internal = {};
|
||||
|
||||
Internal.XHR = {};
|
||||
Internal.WebSocket = {};
|
||||
|
||||
Internal.WebSocket.properties = {
|
||||
"$os": "discord.js",
|
||||
"$browser": "discord.js",
|
||||
"$device": "discord.js",
|
||||
"$referrer": "",
|
||||
"$referring_domain": ""
|
||||
};
|
||||
|
||||
Internal.XHR.login = function (email, password, callback) {
|
||||
|
||||
request.post(Endpoints.LOGIN).send({
|
||||
email: email,
|
||||
password: password
|
||||
}).end(function (err, res) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else {
|
||||
callback(null, res.body.token);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Internal.XHR.logout = function (token, callback) {
|
||||
|
||||
request.post(Endpoints.LOGOUT).end(function (err, res) {
|
||||
|
||||
err ? callback(err) : callback(null);
|
||||
});
|
||||
};
|
||||
|
||||
Internal.XHR.createServer = function (token, name, region, callback) {
|
||||
|
||||
request.post(Endpoints.SERVERS).set("authorization", token).send({
|
||||
name: name,
|
||||
region: region
|
||||
}).end(function (err, res) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else {
|
||||
callback(null, res.body);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Internal.XHR.leaveServer = function (token, serverId, callback) {
|
||||
|
||||
request.del(Endpoints.SERVERS + "/" + serverId).set("authorization", token).end(function (err, res) {
|
||||
|
||||
err ? callback(err) : callback(null);
|
||||
});
|
||||
};
|
||||
|
||||
Internal.XHR.createInvite = function (token, channelId, options, callback) {
|
||||
request.post(Endpoints.CHANNELS + "/" + channelId + "/invites").set("authorization", token).send(options).end(function (err, res) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else {
|
||||
callback(null, res.body);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Internal.XHR.startPM = function (token, selfID, userID, callback) {
|
||||
|
||||
request.post(Endpoints.USERS + "/" + selfID + "/channels").set("authorization", token).send({
|
||||
recipient_id: userID
|
||||
}).end(function (err, res) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else {
|
||||
callback(null, res.body);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Internal.XHR.sendMessage = function (token, channelID, messageParameters, callback) {
|
||||
request.post(Endpoints.CHANNELS + "/" + channelID + "/messages").set("authorization", token).send(messageParameters).end(function (err, res) {
|
||||
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else {
|
||||
callback(null, res.body);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Internal.XHR.sendFile = function (token, channelID, file, fileName, callback) {
|
||||
request.post(Endpoints.CHANNELS + "/" + channelID + "/messages").set("authorization", token).attach("file", file, fileName).end(function (err, res) {
|
||||
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else {
|
||||
callback(null, res.body);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Internal.XHR.deleteMessage = function (token, channelID, messageID, callback) {
|
||||
request.del(Endpoints.CHANNELS + "/" + channelID + "/messages/" + messageID).set("authorization", token).end(function (err) {
|
||||
err ? callback(err) : callback(null);
|
||||
});
|
||||
};
|
||||
|
||||
Internal.XHR.updateMessage = function (token, channelID, messageID, messageParameters, callback) {
|
||||
|
||||
request.patch(Endpoints.CHANNELS + "/" + channelID + "/messages/" + messageID).set("authorization", token).send(messageParameters).end(function (err, res) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else {
|
||||
callback(null, res.body);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Internal.XHR.getChannelLogs = function (token, channelID, amount, callback) {
|
||||
request.get(Endpoints.CHANNELS + "/" + channelID + "/messages?limit=" + amount).set("authorization", token).end(function (err, res) {
|
||||
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else {
|
||||
callback(null, res.body);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Internal.XHR.createChannel = function (token, serverID, name, type, callback) {
|
||||
request.post(Endpoints.SERVERS + "/" + serverID + "/channels").set("authorization", token).send({
|
||||
name: name,
|
||||
type: type
|
||||
}).end(function (err, res) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else {
|
||||
callback(null, res.body);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Internal.XHR.deleteChannel = function (token, channelID, callback) {
|
||||
|
||||
request.del(Endpoints.CHANNELS + "/" + channelID).set("authorization", token).end(function (err) {
|
||||
err ? callback(err) : callback(null);
|
||||
});
|
||||
};
|
||||
Internal.XHR.deleteServer = function (token, serverID, callback) {
|
||||
request.del(Endpoints.SERVERS + "/" + serverID).set("authorization", token).end(function (err) {
|
||||
err ? callback(err) : callback(null);
|
||||
});
|
||||
};
|
||||
|
||||
Internal.XHR.getChannels = function (token, serverID, callback) {
|
||||
request.get(Endpoints.SERVERS + "/" + serverID + "/channels").set("authorization", token).end(function (err) {
|
||||
err ? callback(err) : callback(null);
|
||||
});
|
||||
};
|
||||
|
||||
Internal.XHR.getServer = function (token, serverID, callback) {
|
||||
|
||||
request.get(Endpoints.SERVERS + "/" + serverID).set("authorization", token).end(function (err, res) {
|
||||
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else {
|
||||
callback(null, res.body);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Internal.XHR.acceptInvite = function (token, inviteID, callback) {
|
||||
|
||||
request.post(Endpoints.API + "/invite/" + inviteID).set("authorization", token).end(function (err, res) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else {
|
||||
callback(null, res.body);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Internal.XHR.setUsername = function (token, avatar, email, newPassword, password, username, callback) {
|
||||
|
||||
request.patch(Endpoints.API + "/users/@me").set("authorization", token).send({
|
||||
avatar: avatar,
|
||||
email: email,
|
||||
new_password: newPassword,
|
||||
password: password,
|
||||
username: username
|
||||
}).end(function (err) {
|
||||
callback(err);
|
||||
});
|
||||
};
|
||||
|
||||
exports.Internal = Internal;
|
||||
35
lib/invite.js
Normal file
35
lib/invite.js
Normal file
@@ -0,0 +1,35 @@
|
||||
"use strict";
|
||||
|
||||
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
var Invite = (function () {
|
||||
function Invite(data, client) {
|
||||
_classCallCheck(this, Invite);
|
||||
|
||||
this.max_age = data.max_age;
|
||||
this.code = data.code;
|
||||
this.server = client.getServer("id", data.guild.id);
|
||||
this.revoked = data.revoked;
|
||||
this.created_at = Date.parse(data.created_at);
|
||||
this.temporary = data.temporary;
|
||||
this.uses = data.uses;
|
||||
this.max_uses = data.uses;
|
||||
this.inviter = client.addUser(data.inviter);
|
||||
this.xkcd = data.xkcdpass;
|
||||
this.channel = client.getChannel("id", data.channel.id);
|
||||
}
|
||||
|
||||
_createClass(Invite, [{
|
||||
key: "URL",
|
||||
get: function get() {
|
||||
var code = this.xkcd ? this.xkcdpass : this.code;
|
||||
return "https://discord.gg/" + code;
|
||||
}
|
||||
}]);
|
||||
|
||||
return Invite;
|
||||
})();
|
||||
|
||||
module.exports = Invite;
|
||||
95
lib/message.js
Normal file
95
lib/message.js
Normal file
@@ -0,0 +1,95 @@
|
||||
"use strict";
|
||||
|
||||
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
var PMChannel = require("./PMChannel.js");
|
||||
var Embeddable = require("./Embeds/IEmbed.js");
|
||||
|
||||
var Message = (function () {
|
||||
function Message(data, channel, mentions, author) {
|
||||
_classCallCheck(this, Message);
|
||||
|
||||
this.tts = data.tts;
|
||||
this.timestamp = Date.parse(data.timestamp);
|
||||
this.nonce = data.nonce;
|
||||
this.mentions = mentions;
|
||||
this.everyoneMentioned = data.mention_everyone;
|
||||
this.id = data.id;
|
||||
this.embeds = [];
|
||||
if (data.embeds) {
|
||||
for (var _iterator = data.embeds, _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 embed = _ref;
|
||||
|
||||
this.embeds.push(Embeddable.createEmbed(embed));
|
||||
}
|
||||
}
|
||||
|
||||
this.editedTimestamp = data.edited_timestamp;
|
||||
this.content = data.content.trim();
|
||||
this.channel = channel;
|
||||
|
||||
if (this.isPrivate) {
|
||||
this.author = this.channel.client.getUser("id", author.id);
|
||||
} else {
|
||||
this.author = this.channel.server ? this.channel.server.getMember("id", author.id) : this.channel.client.getUser("id", author.id);
|
||||
}
|
||||
|
||||
this.attachments = data.attachments;
|
||||
}
|
||||
|
||||
/*exports.Message.prototype.isPM = function() {
|
||||
return ( this.channel instanceof PMChannel );
|
||||
}*/
|
||||
|
||||
Message.prototype.isMentioned = function isMentioned(user) {
|
||||
var id = user.id ? user.id : user;
|
||||
for (var _iterator2 = this.mentions, _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 mention = _ref2;
|
||||
|
||||
if (mention.id === id) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
_createClass(Message, [{
|
||||
key: "sender",
|
||||
get: function get() {
|
||||
return this.author;
|
||||
}
|
||||
}, {
|
||||
key: "isPrivate",
|
||||
get: function get() {
|
||||
return this.channel.isPrivate;
|
||||
}
|
||||
}]);
|
||||
|
||||
return Message;
|
||||
})();
|
||||
|
||||
module.exports = Message;
|
||||
287
lib/server.js
Normal file
287
lib/server.js
Normal file
@@ -0,0 +1,287 @@
|
||||
"use strict";
|
||||
|
||||
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
var ServerPermissions = require("./ServerPermissions.js");
|
||||
var Member = require("./Member.js");
|
||||
|
||||
var Server = (function () {
|
||||
function Server(data, client) {
|
||||
_classCallCheck(this, Server);
|
||||
|
||||
this.client = client;
|
||||
this.region = data.region;
|
||||
this.ownerID = data.owner_id;
|
||||
this.name = data.name;
|
||||
this.id = data.id;
|
||||
this.members = [];
|
||||
this.channels = [];
|
||||
this.icon = data.icon;
|
||||
this.afkTimeout = data.afk_timeout;
|
||||
this.afkChannelId = data.afk_channel_id;
|
||||
|
||||
this.roles = [];
|
||||
|
||||
for (var _iterator = data.roles, _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 permissionGroup = _ref;
|
||||
|
||||
this.roles.push(new ServerPermissions(permissionGroup, this));
|
||||
}
|
||||
|
||||
if (!data.members) {
|
||||
data.members = [client.user];
|
||||
return;
|
||||
}
|
||||
|
||||
for (var _iterator2 = data.members, _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 member = _ref2;
|
||||
|
||||
// first we cache the user in our Discord Client,
|
||||
// then we add it to our list. This way when we
|
||||
// get a user from this server's member list,
|
||||
// it will be identical (unless an async change occurred)
|
||||
// to the client's cache.
|
||||
if (member.user) this.addMember(client.addUser(member.user), member.roles);
|
||||
}
|
||||
}
|
||||
|
||||
// get/set
|
||||
|
||||
Server.prototype.getRole = function getRole(key, value) {
|
||||
for (var _iterator3 = this.roles, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
|
||||
var _ref3;
|
||||
|
||||
if (_isArray3) {
|
||||
if (_i3 >= _iterator3.length) break;
|
||||
_ref3 = _iterator3[_i3++];
|
||||
} else {
|
||||
_i3 = _iterator3.next();
|
||||
if (_i3.done) break;
|
||||
_ref3 = _i3.value;
|
||||
}
|
||||
|
||||
var role = _ref3;
|
||||
|
||||
if (role[key] === value) {
|
||||
return role;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
};
|
||||
|
||||
Server.prototype.addRole = function addRole(data) {
|
||||
|
||||
if (this.getRole("id", data.id)) {
|
||||
return this.getRole("id", data.id);
|
||||
}
|
||||
|
||||
var perms = new ServerPermissions(data, this);
|
||||
this.roles.push(perms);
|
||||
return perms;
|
||||
};
|
||||
|
||||
Server.prototype.updateRole = function updateRole(data) {
|
||||
|
||||
var oldRole = this.getRole("id", data.id);
|
||||
|
||||
if (oldRole) {
|
||||
var index = this.roles.indexOf(oldRole);
|
||||
this.roles[index] = new ServerPermissions(data, this);
|
||||
|
||||
return this.roles[index];
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
Server.prototype.removeRole = function removeRole(id) {
|
||||
for (var roleId in this.roles) {
|
||||
if (this.roles[roleId].id === id) {
|
||||
this.roles.splice(roleId, 1);
|
||||
}
|
||||
}
|
||||
|
||||
for (var _iterator4 = this.members, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
|
||||
var _ref4;
|
||||
|
||||
if (_isArray4) {
|
||||
if (_i4 >= _iterator4.length) break;
|
||||
_ref4 = _iterator4[_i4++];
|
||||
} else {
|
||||
_i4 = _iterator4.next();
|
||||
if (_i4.done) break;
|
||||
_ref4 = _i4.value;
|
||||
}
|
||||
|
||||
var member = _ref4;
|
||||
|
||||
for (var roleId in member.rawRoles) {
|
||||
if (member.rawRoles[roleId] === id) {
|
||||
member.rawRoles.splice(roleId, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Server.prototype.getChannel = function getChannel(key, value) {
|
||||
for (var _iterator5 = this.channels, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
|
||||
var _ref5;
|
||||
|
||||
if (_isArray5) {
|
||||
if (_i5 >= _iterator5.length) break;
|
||||
_ref5 = _iterator5[_i5++];
|
||||
} else {
|
||||
_i5 = _iterator5.next();
|
||||
if (_i5.done) break;
|
||||
_ref5 = _i5.value;
|
||||
}
|
||||
|
||||
var channel = _ref5;
|
||||
|
||||
if (channel[key] === value) {
|
||||
return channel;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
};
|
||||
|
||||
Server.prototype.getMember = function getMember(key, value) {
|
||||
for (var _iterator6 = this.members, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
|
||||
var _ref6;
|
||||
|
||||
if (_isArray6) {
|
||||
if (_i6 >= _iterator6.length) break;
|
||||
_ref6 = _iterator6[_i6++];
|
||||
} else {
|
||||
_i6 = _iterator6.next();
|
||||
if (_i6.done) break;
|
||||
_ref6 = _i6.value;
|
||||
}
|
||||
|
||||
var member = _ref6;
|
||||
|
||||
if (member[key] === value) {
|
||||
return member;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
};
|
||||
|
||||
Server.prototype.removeMember = function removeMember(key, value) {
|
||||
for (var _iterator7 = this.members, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {
|
||||
var _ref7;
|
||||
|
||||
if (_isArray7) {
|
||||
if (_i7 >= _iterator7.length) break;
|
||||
_ref7 = _iterator7[_i7++];
|
||||
} else {
|
||||
_i7 = _iterator7.next();
|
||||
if (_i7.done) break;
|
||||
_ref7 = _i7.value;
|
||||
}
|
||||
|
||||
var member = _ref7;
|
||||
|
||||
if (member[key] === value) {
|
||||
this.members.splice(key, 1);
|
||||
return member;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
Server.prototype.addChannel = function addChannel(chann) {
|
||||
if (!this.getChannel("id", chann.id)) {
|
||||
this.channels.push(chann);
|
||||
}
|
||||
return chann;
|
||||
};
|
||||
|
||||
Server.prototype.addMember = function addMember(user, roles) {
|
||||
if (!this.getMember("id", user.id)) {
|
||||
var mem = new Member(user, this, roles);
|
||||
this.members.push(mem);
|
||||
}
|
||||
return mem;
|
||||
};
|
||||
|
||||
Server.prototype.toString = function toString() {
|
||||
return this.name;
|
||||
};
|
||||
|
||||
Server.prototype.equals = function equals(object) {
|
||||
return object.id === this.id;
|
||||
};
|
||||
|
||||
_createClass(Server, [{
|
||||
key: "permissionGroups",
|
||||
get: function get() {
|
||||
return this.roles;
|
||||
}
|
||||
}, {
|
||||
key: "permissions",
|
||||
get: function get() {
|
||||
return this.roles;
|
||||
}
|
||||
}, {
|
||||
key: "iconURL",
|
||||
get: function get() {
|
||||
if (!this.icon) return null;
|
||||
return "https://discordapp.com/api/guilds/" + this.id + "/icons/" + this.icon + ".jpg";
|
||||
}
|
||||
}, {
|
||||
key: "afkChannel",
|
||||
get: function get() {
|
||||
if (!this.afkChannelId) return false;
|
||||
|
||||
return this.getChannel("id", this.afkChannelId);
|
||||
}
|
||||
}, {
|
||||
key: "defaultChannel",
|
||||
get: function get() {
|
||||
return this.getChannel("name", "general");
|
||||
}
|
||||
}, {
|
||||
key: "owner",
|
||||
get: function get() {
|
||||
return this.client.getUser("id", this.ownerID);
|
||||
}
|
||||
}, {
|
||||
key: "users",
|
||||
get: function get() {
|
||||
return this.members;
|
||||
}
|
||||
}]);
|
||||
|
||||
return Server;
|
||||
})();
|
||||
|
||||
module.exports = Server;
|
||||
54
lib/user.js
Normal file
54
lib/user.js
Normal file
@@ -0,0 +1,54 @@
|
||||
"use strict";
|
||||
|
||||
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
var User = (function () {
|
||||
function User(data) {
|
||||
_classCallCheck(this, User);
|
||||
|
||||
this.username = data.username;
|
||||
this.discriminator = data.discriminator;
|
||||
this.id = data.id;
|
||||
this.avatar = data.avatar;
|
||||
this.status = data.status || "offline";
|
||||
this.gameId = data.game_id || null;
|
||||
}
|
||||
|
||||
// access using user.avatarURL;
|
||||
|
||||
User.prototype.mention = function mention() {
|
||||
return "<@" + this.id + ">";
|
||||
};
|
||||
|
||||
User.prototype.toString = function toString() {
|
||||
/*
|
||||
if we embed a user in a String - like so:
|
||||
"Yo " + user + " what's up?"
|
||||
It would generate something along the lines of:
|
||||
"Yo @hydrabolt what's up?"
|
||||
*/
|
||||
return this.mention();
|
||||
};
|
||||
|
||||
User.prototype.equals = function equals(object) {
|
||||
return object.id === this.id;
|
||||
};
|
||||
|
||||
User.prototype.equalsStrict = function equalsStrict(object) {
|
||||
return object.id === this.id && object.avatar === this.avatar && object.username === this.username && object.discriminator === this.discriminator;
|
||||
};
|
||||
|
||||
_createClass(User, [{
|
||||
key: "avatarURL",
|
||||
get: function get() {
|
||||
if (!this.avatar) return null;
|
||||
return "https://discordapp.com/api/users/" + this.id + "/avatars/" + this.avatar + ".jpg";
|
||||
}
|
||||
}]);
|
||||
|
||||
return User;
|
||||
})();
|
||||
|
||||
module.exports = User;
|
||||
Reference in New Issue
Block a user